1 /* -*- mode: C++; tab-width: 4; c-basic-offset: 4; -*- */ 2 3 /* AbiSource Application Framework 4 * Copyright (C) 1998 AbiSource, Inc. 5 * Copyright (C) 2002 William Lachance 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 * 02110-1301 USA. 21 */ 22 23 #ifndef XAP_FrameImpl_H 24 #define XAP_FrameImpl_H 25 26 #include "ut_types.h" 27 #include "ut_vector.h" 28 #include "gr_Graphics.h" 29 30 #define MAX_TITLE_LENGTH 256 31 32 class XAP_Frame; 33 class XAP_App; 34 class XAP_DialogFactory; 35 class EV_Menu; 36 class EV_Toolbar; 37 class EV_Mouse; 38 class EV_Keyboard; 39 class UT_Timer; 40 class UT_Worker; 41 class GR_Graphics; 42 class AV_View; 43 44 typedef enum _FrameModes 45 { 46 XAP_NormalFrame, // Normal Frame 47 XAP_NoMenusWindowLess, // No toplevel window or menus 48 XAP_WindowLess // No toplevel window but menus are OK. 49 } XAP_FrameMode; 50 51 class ABI_EXPORT XAP_FrameImpl 52 { 53 public: getFrame()54 XAP_Frame* getFrame() { return m_pFrame; }; /* needed for Obj-C access */ 55 virtual XAP_FrameImpl * createInstance(XAP_Frame *pFrame) = 0; _getToolbars()56 const UT_GenericVector<EV_Toolbar*> & _getToolbars() const 57 { return m_vecToolbars; }; 58 59 virtual void notifyViewChanged(AV_View * pView); // default dows nothing 60 61 protected: 62 XAP_FrameImpl(XAP_Frame *pFrame); 63 virtual ~XAP_FrameImpl(void); 64 65 friend class XAP_Frame; 66 67 void _startViewAutoUpdater(void); 68 static void viewAutoUpdater(UT_Worker *wkr); 69 70 virtual bool _updateTitle(); 71 72 virtual void _initialize() = 0; 73 virtual bool _close() = 0; 74 virtual bool _raise() = 0; 75 virtual bool _show() = 0; 76 77 virtual XAP_DialogFactory * _getDialogFactory() = 0; 78 virtual EV_Toolbar * _newToolbar(XAP_Frame *frame, const char *szLayout, const char *szLanguage) = 0; 79 virtual EV_Menu* _getMainMenu() = 0; 80 virtual void _rebuildMenus(void)= 0; 81 virtual void _createToolbars(); 82 virtual void _refillToolbarsInFrameData() = 0; 83 virtual void _rebuildToolbar(UT_uint32 ibar) = 0; 84 // Useful to refresh the size of the Frame. For instance, 85 // when the user selects hide statusbar, the Frame has to be 86 // resized in order to fill the gap leaved by the statusbar 87 virtual void _queue_resize() = 0; 88 89 virtual bool _runModalContextMenu(AV_View * pView, const char * szMenuName, 90 UT_sint32 x, UT_sint32 y) = 0; 91 virtual void _setFullScreen(bool isFullScreen) = 0; 92 virtual void _hideMenuScroll(bool bHideMenuScroll) = 0; 93 virtual void _nullUpdate () const = 0; 94 virtual void _setCursor(GR_Graphics::Cursor cursor) = 0; 95 96 virtual UT_RGBColor getColorSelBackground () const; 97 virtual UT_RGBColor getColorSelForeground () const; 98 99 EV_Mouse * m_pMouse; 100 EV_Keyboard * m_pKeyboard; 101 XAP_FrameMode m_iFrameMode; 102 103 UT_uint32 m_ViewAutoUpdaterID; 104 UT_Timer * m_ViewAutoUpdater; 105 106 UT_Vector m_vecToolbarLayoutNames; 107 const char * m_szToolbarLabelSetName; /* language for toolbars */ 108 const char * m_szToolbarAppearance; 109 UT_GenericVector<EV_Toolbar*> m_vecToolbars; 110 111 const char * m_szMenuLayoutName; 112 const char * m_szMenuLabelSetName; /* language for menus */ 113 dragText()114 virtual void dragText() {} 115 116 private: 117 XAP_Frame * m_pFrame; 118 }; 119 120 #endif 121