Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
bibletime/bibletime/frontend/displaywindow/cdisplaywindow.h

277 řádky
6.7 KiB

/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2006 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/
#ifndef CDISPLAYWINDOW_H
#define CDISPLAYWINDOW_H
//BibleTime includes
#include "util/cpointers.h"
#include "backend/cswordmoduleinfo.h"
#include "backend/cswordbackend.h"
#include "backend/cswordkey.h"
#include "backend/cswordversekey.h"
#include "backend/cswordtreekey.h"
#include "backend/cswordldkey.h"
#include "frontend/cprofilewindow.h"
//TQt includes
#include <tqwidget.h>
//KDE includes
#include <kmainwindow.h>
//Forward declarations
class CMDIArea;
class CReadWindow;
class CWriteWindow;
class CMDIArea;
class CDisplaySettingsButton;
class CDisplay;
class CKeyChooser;
class CModuleChooserBar;
class CDisplaySettingsButton;
class TDEAccel;
class TDEToolBar;
class TDEPopupMenu;
/** The base class for all display windows of BibleTime.
* @author The BibleTime team
*/
class CDisplayWindow : public TDEMainWindow, public CPointers {
Q_OBJECT
public:
enum WriteWindowType {
HTMLWindow = 1,
PlainTextWindow = 2
};
static CReadWindow* createReadInstance(ListCSwordModuleInfo modules, CMDIArea* parent, const char* name = 0);
static CWriteWindow* createWriteInstance(ListCSwordModuleInfo modules, CMDIArea* parent, const WriteWindowType type = HTMLWindow, const char* name = 0);
/**
* Insert the keyboard accelerators of this window into the given TDEAccel object.
*/
// static void insertKeyboardActions( TDEAccel* const accel );
static void insertKeyboardActions( TDEActionCollection* const a );
CMDIArea* const mdi() const;
/**
* Returns the right window caption.
*/
const TQString windowCaption();
/**
* Returns the used modules as a TQPtrList
*/
ListCSwordModuleInfo modules();
/**
* Store the settings of this window in the given CProfileWindow object.
*/
virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ) = 0;
/**
* Store the settings of this window in the given profile window.
*/
virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ) = 0;
/**
* Set the window caption.
*/
virtual void setCaption( const TQString& );
/**
* Sets the new filter options of this window.
*/
void setFilterOptions( CSwordBackend::FilterOptions& filterOptions );
/**
* Sets the new display options for this window.
*/
void setDisplayOptions( const CSwordBackend::DisplayOptions& displayOptions );
/**
* Returns the display options used by this display window.
*/
CSwordBackend::DisplayOptions& displayOptions();
/**
* Returns the filter options used by this window.
*/
CSwordBackend::FilterOptions& filterOptions();
/**
* Set the ready status
*/
void setReady( const bool& ready );
/**
* Returns true if the widget is ready for use.
*/
const bool isReady() const;
/**
* Returns true if the window may be closed.
*/
virtual bool queryClose();
/**
* Returns the keychooser widget of this display window.
*/
CKeyChooser* const keyChooser() const;
/**
* Sets the new sword key.
*/
void setKey( CSwordKey* key );
/**
* Returns the key of this display window.
*/
CSwordKey* key() const;
/**
* Initialize the window. Call this method from the outside, because calling this in the constructor is not possible!
*/
virtual const bool init();
/**
* Sets the main toolbar.
*/
void setMainToolBar( TDEToolBar* bar );
/**
* Sets the buttons toolbar.
*/
void setButtonsToolBar( TDEToolBar* bar );
/**
* Returns the main toolbar.
*/
TDEToolBar* const mainToolBar() const;
/**
* Returns the buttons toolbar.
*/
TDEToolBar* const buttonsToolBar() const;
/**
* Initialize the toolbars
*/
virtual void initToolbars() = 0;
/**
* Returns the display settings button
*/
CDisplaySettingsButton* const displaySettingsButton() const;
/**
* Sets the display settings button.
*/
void setDisplaySettingsButton( CDisplaySettingsButton* button );
virtual void setupPopupMenu() = 0;
/**
* Returns the display widget used by this implementation of CDisplayWindow.
*/
virtual CDisplay* const displayWidget() const;
/**
* Sets the display widget used by this display window.
*/
virtual void setDisplayWidget( CDisplay* newDisplay );
/** Returns whether syncs to the active window are allowed at this time for this display window
* @return boolean value whether sync is allowed
*/
virtual const bool syncAllowed() const {
return false;
};
public slots:
/**
* Lookup the specified key in the given module. If the module is not chosen withing
* this display window create a new displaywindow with the right module in it.
*/
virtual void lookup( const TQString& module, const TQString& key );
/**
* Lookup the key in the chosen modules.
*/
virtual void lookup( const TQString& key );
/**
* Refresh the settings of this window.
*/
virtual void reload();
protected:
friend class CMDIArea;
friend class CBibleReadWindow;
CDisplayWindow(ListCSwordModuleInfo modules, CMDIArea* parent, const char *name=0);
virtual ~CDisplayWindow();
/**
* Initializes the intern keyboard actions.
*/
virtual void initActions();
/**
Is called when this window gets the focus or looses the focus.
*/
virtual void windowActivated( const bool hasFocus );
/**
* Sets the keychooser widget for this display window.
*/
void setKeyChooser( CKeyChooser* ck );
/**
* Returns the module chooser bar.
*/
CModuleChooserBar* const moduleChooserBar() const;
/**
* Lookup the given key.
*/
virtual void lookup( CSwordKey* ) = 0;
/**
* Sets the module chooser bar.
*/
void setModuleChooserBar( CModuleChooserBar* bar );
/**
* Sets the modules.
*/
void setModules( const ListCSwordModuleInfo& modules );
/**
* Initializes the signal / slot connections of this display window.
*/
virtual void initConnections() = 0;
/**
* Initialize the view of this display window.
*/
virtual void initView() = 0;
/**
* Returns the installed popup menu.
*/
TDEPopupMenu* const popup();
virtual void closeEvent(TQCloseEvent* e);
protected slots:
virtual void modulesChanged();
/**
* Lookup the current key. Used to refresh the display.
*/
void lookup();
virtual void updatePopupMenu();
void slotSearchInModules();
void printAll();
void printAnchorWithText();
private:
CMDIArea* m_mdi;
//we may only cache the module names bacause after a backend relaod the pointers are invalid!
TQStringList m_modules;
CSwordBackend::FilterOptions m_filterOptions;
CSwordBackend::DisplayOptions m_displayOptions;
CDisplaySettingsButton* m_displaySettingsButton;
CKeyChooser* m_keyChooser;
CSwordKey* m_swordKey;
bool m_isReady;
CModuleChooserBar* m_moduleChooserBar;
TDEToolBar* m_mainToolBar;
TDEToolBar* m_buttonsToolBar;
TDEPopupMenu* m_popupMenu;
CDisplay* m_displayWidget;
};
#endif