You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kchmviewer/src/kchmmainwindow.h

193 lines
6.3 KiB

/***************************************************************************
* Copyright (C) 2004-2007 by Georgy Yunaev, gyunaev@ulduzsoft.com *
* Please do not use email address above for bug reports; see *
* the README file *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifndef KCHMMAINWINDOW_H
#define KCHMMAINWINDOW_H
#include "tde-tqt.h"
#include "libchmfile.h"
#include "forwarddeclarations.h"
#include "kchmviewwindow.h"
#define ENABLE_AUTOTEST_SUPPORT
//! OpenPage extra flags, specifying extra behavior
//! Locate this page in the content tree, and move the cursor there
static const unsigned int OPF_CONTENT_TREE = 1 << 0;
//! Add the previous page into the history
static const unsigned int OPF_ADD2HISTORY = 1 << 1;
//! Open the page in a new tab
static const unsigned int OPF_NEW_TAB = 1 << 2;
//! Open the page in a new tab in background
static const unsigned int OPF_BACKGROUND = 1 << 3;
//! Those events could be sent to main window to do useful things. See handleUserEvents()
class KCHMUserEvent : public TQEvent
{
public:
KCHMUserEvent( const TQString& action, const TQStringList& args = TQStringList())
: TQEvent( TQEvent::User ), m_action(action), m_args(args) {};
TQString m_action;
TQStringList m_args;
};
class KCHMMainWindow : public KQMainWindow
{
Q_OBJECT
public:
KCHMMainWindow();
~KCHMMainWindow();
bool openPage ( const TQString &url, unsigned int flags = OPF_CONTENT_TREE );
LCHMFile * chmFile() const { return m_chmFile; }
const TQString& getOpenedFileName () { return m_chmFilename; }
KCHMViewWindow * currentBrowser() const;
KCHMContentsWindow * contentsWindow() const { return m_contentsWindow; }
KCHMSettings * currentSettings() const { return m_currentSettings; }
KCHMViewWindowMgr* viewWindowMgr() const { return m_viewWindowMgr; }
KCHMNavToolbar * navigationToolbar() const { return m_navToolbar; }
KCHMSearchWindow * searchWindow() const { return m_searchWindow; }
void showInStatusBar (const TQString& text) { statusBar()->message( text, 2000 ); }
void setTextEncoding (const LCHMTextEncoding * enc);
public slots:
void slotOnTreeClicked( TQListViewItem *item );
void slotOnTreeDoubleClicked( TQListViewItem *item, const TQPoint &, int );
void slotAddBookmark ( );
void slotOpenPageInNewTab( );
void slotOpenPageInNewBackgroundTab( );
void slotEnableFullScreenMode( bool enable );
void slotShowContentsWindow( bool show );
void slotLocateInContentWindow( );
void slotBrowserChanged( KCHMViewWindow * newbrowser );
private slots:
void slotLinkClicked ( const TQString & link, bool& follow_link );
void slotOpenMenuItemActivated();
void slotPrintMenuItemActivated();
void slotAboutMenuItemActivated();
void slotAboutQtMenuItemActivated();
void slotActivateContentTab();
void slotActivateIndexTab();
void slotActivateSearchTab();
void slotActivateBookmarkTab();
void slotBrowserSelectAll();
void slotBrowserCopy();
void slotExtractCHM();
void slotChangeSettingsMenuItemActivated();
void slotHistoryMenuItemActivated ( int );
void slotToggleFullScreenMode( );
void slotNavigateBack() { currentBrowser()->navigateBack(); }
void slotNavigateHome() { currentBrowser()->navigateHome(); }
void slotNavigateForward(){ currentBrowser()->navigateForward(); }
private:
bool parseCmdLineArgs();
void showEvent( TQShowEvent * );
void closeEvent ( TQCloseEvent * e );
void setupSignals ();
void setupToolbarsAndMenu ( );
bool loadChmFile ( const TQString &fileName, bool call_open_page = true );
void closeChmFile();
void refreshCurrentBrowser();
void updateHistoryMenu();
void showOrHideContextWindow( int tabindex );
void showOrHideIndexWindow( int tabindex );
void showOrHideSearchWindow( int tabindex );
// User events
bool event ( TQEvent * e );
bool handleUserEvent( const KCHMUserEvent * event );
void locateInContentTree( const TQString& url );
TQString m_chmFilename;
TQString m_aboutDlgMenuText; // to show in KDE or TQt about dialogs
KCHMViewWindowMgr * m_viewWindowMgr;
KCHMIndexWindow * m_indexWindow;
KCHMSearchWindow * m_searchWindow;
KCHMBookmarkWindow * m_bookmarkWindow;
KCHMContentsWindow * m_contentsWindow;
KTQTabWidget * m_tabWidget;
TQSplitter * m_windowSplitter;
KCHMSearchAndViewToolbar * m_searchToolbar;
KCHMNavToolbar * m_navToolbar;
KCHMSettings * m_currentSettings;
LCHMFile * m_chmFile;
bool m_FirstTimeShow;
KTQPopupMenu * m_menuHistory;
int m_tabContextPage;
int m_tabIndexPage;
int m_tabSearchPage;
int m_tabBookmarkPage;
#if defined (ENABLE_AUTOTEST_SUPPORT)
enum auto_test_state_t
{
STATE_OFF,
STATE_INITIAL,
STATE_CONTENTS_OPENNEXTPAGE,
STATE_OPEN_INDEX,
STATE_SHUTDOWN
};
bool m_useShortAutotest;
auto_test_state_t m_autoteststate;
TQListViewItemIterator m_autotestlistiterator;
private slots:
void runAutoTest();
#endif /* defined (ENABLE_AUTOTEST_SUPPORT) */
};
extern KCHMMainWindow * mainWindow;
#endif // KCHMMAINWINDOW_H