Loading cmd/xfe/src/ToolbarNavigation.cpp 0 → 100644 +218 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ ////////////////////////////////////////////////////////////////////////// // // // Name: ToolbarNavigation.cpp // // // // Description: XFE_ToolbarNavigation class implementation. // // The Back/Forward toolbar buttons. // // // // Author: Ramiro Estrugo <ramiro@netscape.com> // // // ////////////////////////////////////////////////////////////////////////// #include "ToolbarNavigation.h" #include "RDFUtils.h" #include "BackForwardMenu.h" #include <Xfe/Cascade.h> #include "prefapi.h" #include "xpgetstr.h" // for XP_GetString() extern int XFE_UNTITLED; ////////////////////////////////////////////////////////////////////////// XFE_ToolbarNavigation::XFE_ToolbarNavigation(XFE_Frame * frame, Widget parent, HT_Resource htResource, const String name, int forward) : XFE_ToolbarButton(frame,parent,htResource,name), m_submenu(NULL), m_forward(forward) { } ////////////////////////////////////////////////////////////////////////// XFE_ToolbarNavigation::~XFE_ToolbarNavigation() { } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Initialize // ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::initialize() { Widget navigation = createBaseWidget(getParent(),getName()); setBaseWidget(navigation); XtVaGetValues(navigation,XmNsubMenuId,&m_submenu,NULL); XP_ASSERT( XfeIsAlive(m_submenu) ); XFE_BackForwardMenu::generate(m_widget, (XtPointer) m_forward, getAncestorFrame()); } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Accessors // ////////////////////////////////////////////////////////////////////////// Widget XFE_ToolbarNavigation::getSubmenu() { return m_submenu; } ////////////////////////////////////////////////////////////////////////// int XFE_ToolbarNavigation::getForward() { return m_forward; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Widget creation interface // ////////////////////////////////////////////////////////////////////////// /* virtual */ Widget XFE_ToolbarNavigation::createBaseWidget(Widget parent, const String name) { XP_ASSERT( XfeIsAlive(parent) ); XP_ASSERT( name != NULL ); Widget navigation; navigation = XtVaCreateWidget(name, xfeCascadeWidgetClass, parent, NULL); return navigation; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // ToolTip interface // ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::tipStringObtain(XmString * stringReturn, Boolean * needToFreeString) { entryStringObtain(stringReturn,needToFreeString); if (*stringReturn == NULL) { XFE_ToolbarItem::tipStringObtain(stringReturn,needToFreeString); } } ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::docStringObtain(XmString * stringReturn, Boolean * needToFreeString) { entryStringObtain(stringReturn,needToFreeString); if (*stringReturn == NULL) { XFE_ToolbarItem::docStringObtain(stringReturn,needToFreeString); } } ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::entryStringObtain(XmString * stringReturn, Boolean * needToFreeString) { MWContext * context = getAncestorContext(); XP_ASSERT( context != NULL ); // Get the session history list XP_List* list = SHIST_GetList(context); XP_ASSERT( list != NULL ); if (list != NULL) { // Get the pointer to the current history entry History_entry * current_entry = context->hist.cur_doc_ptr; XP_List * current = XP_ListFindObject(list, current_entry); if (current != NULL) { // Find the target node XP_List * target = m_forward ? current->next : current->prev; if (target != NULL) { // Find the target entry History_entry * entry = (History_entry *) (target ? target->object : NULL); // Determine the label char * label = NULL; if (entry != NULL) { if (entry->title != NULL) { label = entry->title; } else if (entry->address != NULL) { label = entry->address; } else { label = XP_GetString(XFE_UNTITLED); } } if (label != NULL) { *stringReturn = XmStringCreateLtoR(label, XmFONTLIST_DEFAULT_TAG); *needToFreeString = True; return; } } // (target != NULL) } // (current != NULL) } // (list != NULL) *stringReturn = NULL; *needToFreeString = False; } ////////////////////////////////////////////////////////////////////////// cmd/xfe/src/ToolbarNavigation.h 0 → 100644 +98 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ ////////////////////////////////////////////////////////////////////////// // // // Name: ToolbarNavigation.h // // // // Description: XFE_ToolbarNavigation class header. // // The Back/Forward toolbar buttons. // // // // Author: Ramiro Estrugo <ramiro@netscape.com> // // // ////////////////////////////////////////////////////////////////////////// #ifndef _xfe_toolbar_navigation_h_ #define _xfe_toolbar_navigation_h_ #include "ToolbarButton.h" class XFE_ToolbarNavigation : public XFE_ToolbarButton { public: XFE_ToolbarNavigation(XFE_Frame * frame, Widget parent, HT_Resource htResource, const String name, int forward); virtual ~XFE_ToolbarNavigation(); ////////////////////////////////////////////////////////////////////// // // // Accessors // // // ////////////////////////////////////////////////////////////////////// Widget getSubmenu(); int getForward(); ////////////////////////////////////////////////////////////////////// // // // Initialize // // // ////////////////////////////////////////////////////////////////////// virtual void initialize (); protected: ////////////////////////////////////////////////////////////////////// // // // Widget creation interface // // // ////////////////////////////////////////////////////////////////////// virtual Widget createBaseWidget (Widget parent, const String name); ////////////////////////////////////////////////////////////////////// // // // ToolTip interface // // // ////////////////////////////////////////////////////////////////////// virtual void tipStringObtain (XmString * stringReturn, Boolean * needToFreeString); virtual void docStringObtain (XmString * stringReturn, Boolean * needToFreeString); virtual void entryStringObtain (XmString * stringReturn, Boolean * needToFreeString); private: ////////////////////////////////////////////////////////////////////// // // // Private data // // // ////////////////////////////////////////////////////////////////////// Widget m_submenu; XP_Bool m_forward; }; #endif // _xfe_toolbar_navigation_h_ Loading
cmd/xfe/src/ToolbarNavigation.cpp 0 → 100644 +218 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ ////////////////////////////////////////////////////////////////////////// // // // Name: ToolbarNavigation.cpp // // // // Description: XFE_ToolbarNavigation class implementation. // // The Back/Forward toolbar buttons. // // // // Author: Ramiro Estrugo <ramiro@netscape.com> // // // ////////////////////////////////////////////////////////////////////////// #include "ToolbarNavigation.h" #include "RDFUtils.h" #include "BackForwardMenu.h" #include <Xfe/Cascade.h> #include "prefapi.h" #include "xpgetstr.h" // for XP_GetString() extern int XFE_UNTITLED; ////////////////////////////////////////////////////////////////////////// XFE_ToolbarNavigation::XFE_ToolbarNavigation(XFE_Frame * frame, Widget parent, HT_Resource htResource, const String name, int forward) : XFE_ToolbarButton(frame,parent,htResource,name), m_submenu(NULL), m_forward(forward) { } ////////////////////////////////////////////////////////////////////////// XFE_ToolbarNavigation::~XFE_ToolbarNavigation() { } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Initialize // ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::initialize() { Widget navigation = createBaseWidget(getParent(),getName()); setBaseWidget(navigation); XtVaGetValues(navigation,XmNsubMenuId,&m_submenu,NULL); XP_ASSERT( XfeIsAlive(m_submenu) ); XFE_BackForwardMenu::generate(m_widget, (XtPointer) m_forward, getAncestorFrame()); } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Accessors // ////////////////////////////////////////////////////////////////////////// Widget XFE_ToolbarNavigation::getSubmenu() { return m_submenu; } ////////////////////////////////////////////////////////////////////////// int XFE_ToolbarNavigation::getForward() { return m_forward; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // Widget creation interface // ////////////////////////////////////////////////////////////////////////// /* virtual */ Widget XFE_ToolbarNavigation::createBaseWidget(Widget parent, const String name) { XP_ASSERT( XfeIsAlive(parent) ); XP_ASSERT( name != NULL ); Widget navigation; navigation = XtVaCreateWidget(name, xfeCascadeWidgetClass, parent, NULL); return navigation; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // // ToolTip interface // ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::tipStringObtain(XmString * stringReturn, Boolean * needToFreeString) { entryStringObtain(stringReturn,needToFreeString); if (*stringReturn == NULL) { XFE_ToolbarItem::tipStringObtain(stringReturn,needToFreeString); } } ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::docStringObtain(XmString * stringReturn, Boolean * needToFreeString) { entryStringObtain(stringReturn,needToFreeString); if (*stringReturn == NULL) { XFE_ToolbarItem::docStringObtain(stringReturn,needToFreeString); } } ////////////////////////////////////////////////////////////////////////// /* virtual */ void XFE_ToolbarNavigation::entryStringObtain(XmString * stringReturn, Boolean * needToFreeString) { MWContext * context = getAncestorContext(); XP_ASSERT( context != NULL ); // Get the session history list XP_List* list = SHIST_GetList(context); XP_ASSERT( list != NULL ); if (list != NULL) { // Get the pointer to the current history entry History_entry * current_entry = context->hist.cur_doc_ptr; XP_List * current = XP_ListFindObject(list, current_entry); if (current != NULL) { // Find the target node XP_List * target = m_forward ? current->next : current->prev; if (target != NULL) { // Find the target entry History_entry * entry = (History_entry *) (target ? target->object : NULL); // Determine the label char * label = NULL; if (entry != NULL) { if (entry->title != NULL) { label = entry->title; } else if (entry->address != NULL) { label = entry->address; } else { label = XP_GetString(XFE_UNTITLED); } } if (label != NULL) { *stringReturn = XmStringCreateLtoR(label, XmFONTLIST_DEFAULT_TAG); *needToFreeString = True; return; } } // (target != NULL) } // (current != NULL) } // (list != NULL) *stringReturn = NULL; *needToFreeString = False; } //////////////////////////////////////////////////////////////////////////
cmd/xfe/src/ToolbarNavigation.h 0 → 100644 +98 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ ////////////////////////////////////////////////////////////////////////// // // // Name: ToolbarNavigation.h // // // // Description: XFE_ToolbarNavigation class header. // // The Back/Forward toolbar buttons. // // // // Author: Ramiro Estrugo <ramiro@netscape.com> // // // ////////////////////////////////////////////////////////////////////////// #ifndef _xfe_toolbar_navigation_h_ #define _xfe_toolbar_navigation_h_ #include "ToolbarButton.h" class XFE_ToolbarNavigation : public XFE_ToolbarButton { public: XFE_ToolbarNavigation(XFE_Frame * frame, Widget parent, HT_Resource htResource, const String name, int forward); virtual ~XFE_ToolbarNavigation(); ////////////////////////////////////////////////////////////////////// // // // Accessors // // // ////////////////////////////////////////////////////////////////////// Widget getSubmenu(); int getForward(); ////////////////////////////////////////////////////////////////////// // // // Initialize // // // ////////////////////////////////////////////////////////////////////// virtual void initialize (); protected: ////////////////////////////////////////////////////////////////////// // // // Widget creation interface // // // ////////////////////////////////////////////////////////////////////// virtual Widget createBaseWidget (Widget parent, const String name); ////////////////////////////////////////////////////////////////////// // // // ToolTip interface // // // ////////////////////////////////////////////////////////////////////// virtual void tipStringObtain (XmString * stringReturn, Boolean * needToFreeString); virtual void docStringObtain (XmString * stringReturn, Boolean * needToFreeString); virtual void entryStringObtain (XmString * stringReturn, Boolean * needToFreeString); private: ////////////////////////////////////////////////////////////////////// // // // Private data // // // ////////////////////////////////////////////////////////////////////// Widget m_submenu; XP_Bool m_forward; }; #endif // _xfe_toolbar_navigation_h_