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.
320 lines
11 KiB
320 lines
11 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.
|
|
*
|
|
**********/
|
|
|
|
|
|
|
|
//BibleTime includes
|
|
#include "clexiconreadwindow.h"
|
|
#include "cmodulechooserbar.h"
|
|
#include "cbuttons.h"
|
|
|
|
#include "backend/cswordkey.h"
|
|
#include "backend/cswordldkey.h"
|
|
|
|
#include "frontend/cbtconfig.h"
|
|
#include "frontend/cexportmanager.h"
|
|
#include "frontend/display/cdisplay.h"
|
|
#include "frontend/display/creaddisplay.h"
|
|
#include "frontend/keychooser/ckeychooser.h"
|
|
|
|
#include "util/ctoolclass.h"
|
|
#include "util/cresmgr.h"
|
|
|
|
//TQt includes
|
|
|
|
//KDE includes
|
|
#include <tdeaccel.h>
|
|
#include <tdetoolbar.h>
|
|
#include <tdelocale.h>
|
|
#include <tdepopupmenu.h>
|
|
#include <tdeversion.h>
|
|
// #include <tdeactionclasses.h>
|
|
|
|
CLexiconReadWindow::CLexiconReadWindow(ListCSwordModuleInfo moduleList, CMDIArea* parent, const char *name) : CReadWindow(moduleList, parent,name) {
|
|
setKey( CSwordKey::createInstance(moduleList.first()) );
|
|
}
|
|
|
|
CLexiconReadWindow::~CLexiconReadWindow() {}
|
|
|
|
void CLexiconReadWindow::insertKeyboardActions( TDEActionCollection* const a ) {
|
|
new TDEAction(
|
|
i18n("Next entry"), CResMgr::displaywindows::lexiconWindow::nextEntry::accel,
|
|
a, "nextEntry"
|
|
);
|
|
new TDEAction(
|
|
i18n("Previous entry"), CResMgr::displaywindows::lexiconWindow::previousEntry::accel,
|
|
a, "previousEntry"
|
|
);
|
|
|
|
// new TDEAction(i18n("Copy reference only"), TDEShortcut(0), a, "copyReferenceOnly");
|
|
new TDEAction(i18n("Copy entry with text"), TDEShortcut(0), a, "copyEntryWithText");
|
|
// new TDEAction(i18n("Copy selected text"), TDEShortcut(0), a, "copySelectedText");
|
|
new TDEAction(i18n("Save entry as plain text"), TDEShortcut(0), a, "saveEntryAsPlainText");
|
|
new TDEAction(i18n("Save entry as HTML"), TDEShortcut(0), a, "saveEntryAsHTML");
|
|
// new TDEAction(i18n("Print reference only"), TDEShortcut(0), a, "printReferenceOnly");
|
|
new TDEAction(i18n("Print entry with text"), TDEShortcut(0), a, "printEntryWithText");
|
|
}
|
|
|
|
void CLexiconReadWindow::initActions() {
|
|
CReadWindow::initActions();
|
|
|
|
m_actions.backInHistory = dynamic_cast<TDEToolBarPopupAction*>(
|
|
actionCollection()->action(
|
|
CResMgr::displaywindows::general::backInHistory::actionName
|
|
)
|
|
);
|
|
Q_ASSERT(m_actions.backInHistory);
|
|
|
|
m_actions.forwardInHistory = dynamic_cast<TDEToolBarPopupAction*>(
|
|
actionCollection()->action(
|
|
CResMgr::displaywindows::general::forwardInHistory::actionName
|
|
)
|
|
);
|
|
|
|
Q_ASSERT(m_actions.forwardInHistory);
|
|
|
|
new TDEAction(
|
|
i18n("Next entry"), CResMgr::displaywindows::lexiconWindow::nextEntry::accel,
|
|
this, TQ_SLOT( nextEntry() ),
|
|
actionCollection(), "nextEntry"
|
|
);
|
|
new TDEAction(
|
|
i18n("Previous entry"), CResMgr::displaywindows::lexiconWindow::previousEntry::accel,
|
|
this, TQ_SLOT( previousEntry() ),
|
|
actionCollection(), "previousEntry"
|
|
);
|
|
|
|
m_actions.selectAll = actionCollection()->action("selectAll");
|
|
Q_ASSERT(m_actions.selectAll);
|
|
|
|
m_actions.findText = actionCollection()->action("findText");
|
|
Q_ASSERT(m_actions.findText);
|
|
|
|
//m_actions.findStrongs = new TDEAction(i18n("Strong's Search"), TDEShortcut(0),this, TQ_SLOT(openSearchStrongsDialog()), actionCollection(), "findStrongs");
|
|
m_actions.findStrongs = new TDEAction(
|
|
i18n("Strong's Search"),
|
|
CResMgr::displaywindows::general::findStrongs::icon,
|
|
CResMgr::displaywindows::general::findStrongs::accel,
|
|
this, TQ_SLOT(openSearchStrongsDialog()),
|
|
actionCollection(),
|
|
CResMgr::displaywindows::general::findStrongs::actionName);
|
|
|
|
m_actions.copy.reference = new TDEAction(i18n("Reference only"), TDEShortcut(0), displayWidget()->connectionsProxy(), TQ_SLOT(copyAnchorOnly()), actionCollection(), "copyReferenceOnly");
|
|
|
|
m_actions.copy.entry = new TDEAction(i18n("Entry with text"), TDEShortcut(0), displayWidget()->connectionsProxy(), TQ_SLOT(copyAll()), actionCollection(), "copyEntryWithText");
|
|
|
|
m_actions.copy.selectedText = actionCollection()->action("copySelectedText");
|
|
Q_ASSERT(m_actions.copy.selectedText);
|
|
|
|
m_actions.save.entryAsPlain = new TDEAction(i18n("Entry as plain text"), TDEShortcut(0), this, TQ_SLOT(saveAsPlain()),actionCollection(), "saveEntryAsPlain");
|
|
|
|
m_actions.save.entryAsHTML = new TDEAction(i18n("Entry as HTML"), TDEShortcut(0), this, TQ_SLOT(saveAsHTML()), actionCollection(), "saveEntryAsHTML");
|
|
|
|
m_actions.print.reference = new TDEAction(i18n("Reference only"), TDEShortcut(0), this, TQ_SLOT(printAnchorWithText()), actionCollection(), "printReferenceOnly");
|
|
|
|
m_actions.print.entry = new TDEAction(i18n("Entry with text"), TDEShortcut(0), this, TQ_SLOT(printAll()), actionCollection(), "printEntryWithText");
|
|
|
|
// init with the user defined settings
|
|
CBTConfig::setupAccelSettings(CBTConfig::lexiconWindow, actionCollection());
|
|
};
|
|
|
|
/** No descriptions */
|
|
void CLexiconReadWindow::initConnections() {
|
|
Q_ASSERT(keyChooser());
|
|
|
|
connect(keyChooser(), TQ_SIGNAL(keyChanged(CSwordKey*)),
|
|
this, TQ_SLOT(lookup(CSwordKey*)));
|
|
connect(keyChooser(), TQ_SIGNAL(historyChanged()),
|
|
this, TQ_SLOT(slotUpdateHistoryButtons()));
|
|
|
|
//connect the history actions to the right slots
|
|
connect(
|
|
m_actions.backInHistory->popupMenu(), TQ_SIGNAL(aboutToShow()),
|
|
this, TQ_SLOT(slotFillBackHistory())
|
|
);
|
|
connect(
|
|
m_actions.backInHistory->popupMenu(), TQ_SIGNAL(activated(int)),
|
|
keyChooser(), TQ_SLOT(backInHistory(int))
|
|
);
|
|
connect(
|
|
m_actions.forwardInHistory->popupMenu(), TQ_SIGNAL(aboutToShow()),
|
|
this, TQ_SLOT(slotFillForwardHistory())
|
|
);
|
|
connect(
|
|
m_actions.forwardInHistory->popupMenu(), TQ_SIGNAL(activated(int)),
|
|
keyChooser(), TQ_SLOT(forwardInHistory(int))
|
|
);
|
|
|
|
|
|
}
|
|
|
|
void CLexiconReadWindow::initView() {
|
|
setDisplayWidget( CDisplay::createReadInstance(this) );
|
|
|
|
setMainToolBar( new TDEToolBar(this) );
|
|
addDockWindow(mainToolBar());
|
|
|
|
setKeyChooser( CKeyChooser::createInstance(modules(), key(), mainToolBar()) );
|
|
|
|
mainToolBar()->insertWidget(0, keyChooser()->sizeHint().width(), keyChooser());
|
|
mainToolBar()->setFullSize(false);
|
|
|
|
setModuleChooserBar( new CModuleChooserBar(modules(), modules().first()->type(), this) );
|
|
addDockWindow(moduleChooserBar());
|
|
|
|
setButtonsToolBar( new TDEToolBar(this) );
|
|
addDockWindow(buttonsToolBar());
|
|
|
|
setIcon(CToolClass::getIconForModule(modules().first()));
|
|
setCentralWidget( displayWidget()->view() );
|
|
}
|
|
|
|
void CLexiconReadWindow::initToolbars() {
|
|
//main toolbar
|
|
Q_ASSERT(m_actions.backInHistory);
|
|
m_actions.backInHistory->plug( mainToolBar(),0 ); //1st button
|
|
m_actions.forwardInHistory->plug( mainToolBar(),1 ); //2nd button
|
|
|
|
//buttons toolbar
|
|
TDEAction* action = actionCollection()->action(
|
|
CResMgr::displaywindows::general::search::actionName);
|
|
Q_ASSERT( action );
|
|
if (action) {
|
|
action->plug(buttonsToolBar());
|
|
}
|
|
#if TDE_VERSION_MINOR < 1
|
|
action->plugAccel( accel() );
|
|
#endif
|
|
|
|
setDisplaySettingsButton( new CDisplaySettingsButton( &displayOptions(), &filterOptions(), modules(), buttonsToolBar()) );
|
|
buttonsToolBar()->insertWidget(2,displaySettingsButton()->size().width(), displaySettingsButton());
|
|
}
|
|
|
|
void CLexiconReadWindow::setupPopupMenu() {
|
|
popup()->insertTitle(CToolClass::getIconForModule(modules().first()), i18n("Lexicon window"));
|
|
|
|
// m_actions.selectAll = new TDEAction(i18n("Select all"), TDEShortcut(0), displayWidget()->connectionsProxy(), TQ_SLOT(selectAll()), actionCollection());
|
|
m_actions.findText->plug(popup());
|
|
m_actions.findStrongs->plug(popup());
|
|
|
|
m_actions.selectAll->plug(popup());
|
|
|
|
|
|
(new TDEActionSeparator(this))->plug( popup() );
|
|
|
|
m_actions.copyMenu = new TDEActionMenu(i18n("Copy..."), CResMgr::displaywindows::lexiconWindow::copyMenu::icon, actionCollection());
|
|
m_actions.copyMenu->setDelayed(false);
|
|
|
|
m_actions.copyMenu->insert(m_actions.copy.reference);
|
|
m_actions.copyMenu->insert(m_actions.copy.entry);
|
|
m_actions.copyMenu->insert(new TDEActionSeparator(this));
|
|
m_actions.copyMenu->insert(m_actions.copy.selectedText);
|
|
m_actions.copyMenu->plug(popup());
|
|
|
|
m_actions.saveMenu = new TDEActionMenu(i18n("Save..."), CResMgr::displaywindows::lexiconWindow::saveMenu::icon, actionCollection());
|
|
m_actions.saveMenu->setDelayed(false);
|
|
m_actions.saveMenu->insert(m_actions.save.entryAsPlain);
|
|
m_actions.saveMenu->insert(m_actions.save.entryAsHTML);
|
|
m_actions.saveMenu->plug(popup());
|
|
|
|
m_actions.printMenu = new TDEActionMenu(i18n("Print..."), CResMgr::displaywindows::lexiconWindow::printMenu::icon, actionCollection());
|
|
m_actions.printMenu->setDelayed(false);
|
|
m_actions.printMenu->insert(m_actions.print.reference);
|
|
m_actions.printMenu->insert(m_actions.print.entry);
|
|
m_actions.printMenu->plug(popup());
|
|
}
|
|
|
|
/** Reimplemented. */
|
|
void CLexiconReadWindow::updatePopupMenu() {
|
|
//enable the action depending on the supported module features
|
|
/* bool hasStrongs = false;
|
|
ListCSwordModuleInfo mods = modules();
|
|
for (ListCSwordModuleInfo::iterator it = mods.begin(); it != mods.end(); ++it) {
|
|
if ( (*it)->has( CSwordModuleInfo::strongNumbers ) ) {
|
|
hasStrongs = true;
|
|
break;
|
|
}
|
|
}
|
|
m_actions.findStrongs->setEnabled( hasStrongs );*/
|
|
m_actions.findStrongs->setEnabled( displayWidget()->getCurrentNodeInfo()[CDisplay::Lemma] != TQString() );
|
|
|
|
m_actions.copy.reference->setEnabled( displayWidget()->hasActiveAnchor() );
|
|
//m_actions.copy.entry->setEnabled( displayWidget()->hasActiveAnchor() );
|
|
m_actions.copy.selectedText->setEnabled( displayWidget()->hasSelection() );
|
|
|
|
m_actions.print.reference->setEnabled( displayWidget()->hasActiveAnchor() );
|
|
}
|
|
|
|
/** No descriptions */
|
|
void CLexiconReadWindow::nextEntry() {
|
|
keyChooser()->setKey(ldKey()->NextEntry());
|
|
}
|
|
|
|
/** No descriptions */
|
|
void CLexiconReadWindow::previousEntry() {
|
|
keyChooser()->setKey(ldKey()->PreviousEntry());
|
|
}
|
|
|
|
/** Reimplementation to return the right key. */
|
|
CSwordLDKey* CLexiconReadWindow::ldKey() {
|
|
return dynamic_cast<CSwordLDKey*>(CDisplayWindow::key());
|
|
}
|
|
|
|
/** This function saves the entry as html using the CExportMgr class. */
|
|
void CLexiconReadWindow::saveAsHTML() {
|
|
CExportManager mgr(i18n("Saving entry ..."), true, i18n("Saving"), filterOptions(), displayOptions());
|
|
mgr.saveKey(key(), CExportManager::HTML, true);
|
|
}
|
|
|
|
/** This function saves the entry as html using the CExportMgr class. */
|
|
void CLexiconReadWindow::saveAsPlain() {
|
|
CExportManager mgr(i18n("Saving entry ..."), true, i18n("Saving"), filterOptions(), displayOptions());
|
|
mgr.saveKey(key(), CExportManager::Text, true);
|
|
}
|
|
|
|
void CLexiconReadWindow::slotFillBackHistory() {
|
|
// tqWarning("fill back history");
|
|
TQStringList keyList = keyChooser()->getPreviousKeys();
|
|
TQPopupMenu* menu = m_actions.backInHistory->popupMenu();
|
|
menu->clear();
|
|
|
|
TQStringList::iterator it;
|
|
int index = 1;
|
|
for (it = keyList.begin(); it != keyList.end(); ++it) {
|
|
menu->insertItem(*it,index, index);
|
|
++index;
|
|
}
|
|
}
|
|
|
|
void CLexiconReadWindow::slotFillForwardHistory() {
|
|
// tqWarning("fill forward history");
|
|
TQStringList keyList = keyChooser()->getNextKeys();
|
|
TQPopupMenu* menu = m_actions.forwardInHistory->popupMenu();
|
|
menu->clear();
|
|
|
|
TQStringList::iterator it;
|
|
int index = 1;
|
|
for (it = keyList.begin(); it != keyList.end(); ++it) {
|
|
menu->insertItem(*it,index, index);
|
|
++index;
|
|
}
|
|
}
|
|
|
|
|
|
void CLexiconReadWindow::slotUpdateHistoryButtons() {
|
|
// tqWarning("updating history buttons");
|
|
Q_ASSERT(m_actions.backInHistory);
|
|
Q_ASSERT(keyChooser());
|
|
|
|
m_actions.backInHistory->setEnabled( keyChooser()->getPreviousKeys().size() > 0 );
|
|
m_actions.forwardInHistory->setEnabled( keyChooser()->getNextKeys().size() > 0 );
|
|
}
|
|
|
|
#include "clexiconreadwindow.moc"
|