From 1af3b165c9377702ca62a64112bc089a6f575c30 Mon Sep 17 00:00:00 2001 From: "Roberto C. Sanchez" Date: Tue, 21 Oct 2014 22:48:19 -0400 Subject: Imported Upstream version 2.0~beta2 --- src/frontend/displaywindow/cplainwritewindow.cpp | 183 +++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 src/frontend/displaywindow/cplainwritewindow.cpp (limited to 'src/frontend/displaywindow/cplainwritewindow.cpp') diff --git a/src/frontend/displaywindow/cplainwritewindow.cpp b/src/frontend/displaywindow/cplainwritewindow.cpp new file mode 100644 index 0000000..9f12020 --- /dev/null +++ b/src/frontend/displaywindow/cplainwritewindow.cpp @@ -0,0 +1,183 @@ +/********* +* +* This file is part of BibleTime's source code, http://www.bibletime.info/. +* +* Copyright 1999-2008 by the BibleTime developers. +* The BibleTime source code is licensed under the GNU General Public License version 2.0. +* +**********/ + +#include "cplainwritewindow.h" +#include "btactioncollection.h" + +#include "frontend/display/cwritedisplay.h" + +#include "frontend/keychooser/ckeychooser.h" +#include "frontend/profile/cprofilewindow.h" +#include "backend/config/cbtconfig.h" + +#include "backend/keys/cswordkey.h" + +#include "util/cresmgr.h" +#include "util/directoryutil.h" + +#include +#include +#include +#include +#include + +using namespace Profile; + +CPlainWriteWindow::CPlainWriteWindow(QList moduleList, CMDIArea* parent) : + CWriteWindow(moduleList, parent) +{ + setKey( CSwordKey::createInstance(moduleList.first()) ); +} + + +CPlainWriteWindow::~CPlainWriteWindow() {} + +/** Initialize the state of this widget. */ +void CPlainWriteWindow::initView() { + // qWarning("CPlainWriteWindow::initView()"); + setDisplayWidget( CDisplay::createWriteInstance(this) ); + setCentralWidget( displayWidget()->view() ); + + setMainToolBar( new QToolBar(this) ); + addToolBar(mainToolBar()); + addToolBarBreak(); + + setKeyChooser( CKeyChooser::createInstance(modules(), key(), mainToolBar()) ); + mainToolBar()->addWidget(keyChooser()); +} + +void CPlainWriteWindow::initToolbars() { + m_actions.syncWindow = new QAction( + //KIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon), + util::filesystem::DirectoryUtil::getIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon), + tr("Sync with active Bible"), + actionCollection() + ); + m_actions.syncWindow->setCheckable(true); + m_actions.syncWindow->setShortcut(CResMgr::displaywindows::commentaryWindow::syncWindow::accel); + m_actions.syncWindow->setToolTip(tr("Synchronize (show the same verse) with the active Bible window")); + mainToolBar()->addAction(m_actions.syncWindow); + actionCollection()->addAction(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName, m_actions.syncWindow); + + + m_actions.saveText = new QAction( + //KIcon(CResMgr::displaywindows::writeWindow::saveText::icon), + util::filesystem::DirectoryUtil::getIcon(CResMgr::displaywindows::writeWindow::saveText::icon), + tr("Save text"), + actionCollection() + ); + m_actions.saveText->setShortcut(CResMgr::displaywindows::writeWindow::saveText::accel); + QObject::connect(m_actions.saveText, SIGNAL(triggered()), this, SLOT(saveCurrentText())); + m_actions.saveText->setToolTip( tr("Save text") ); + actionCollection()->addAction(CResMgr::displaywindows::writeWindow::saveText::actionName, m_actions.saveText); + mainToolBar()->addAction(m_actions.saveText); + + + m_actions.deleteEntry = new QAction( + //KIcon(CResMgr::displaywindows::writeWindow::deleteEntry::icon), + util::filesystem::DirectoryUtil::getIcon(CResMgr::displaywindows::writeWindow::deleteEntry::icon), + tr("Delete current entry"), + actionCollection() + ); + m_actions.deleteEntry->setShortcut(CResMgr::displaywindows::writeWindow::deleteEntry::accel); + QObject::connect(m_actions.deleteEntry, SIGNAL(triggered()), this, SLOT(deleteEntry()) ); + m_actions.deleteEntry->setToolTip( tr("Delete current entry (no undo)") ); + actionCollection()->addAction(CResMgr::displaywindows::writeWindow::deleteEntry::actionName, m_actions.deleteEntry); + mainToolBar()->addAction(m_actions.deleteEntry); + + + m_actions.restoreText = new QAction( + //KIcon(CResMgr::displaywindows::writeWindow::restoreText::icon), + util::filesystem::DirectoryUtil::getIcon(CResMgr::displaywindows::writeWindow::restoreText::icon), + tr("Restore original text"), + actionCollection() + ); + m_actions.restoreText->setShortcut(CResMgr::displaywindows::writeWindow::restoreText::accel); + QObject::connect(m_actions.restoreText, SIGNAL(triggered()), this, SLOT(restoreText()) ); + m_actions.restoreText->setToolTip( tr("Restore original text, new text will be lost") ); + actionCollection()->addAction(CResMgr::displaywindows::writeWindow::restoreText::actionName, m_actions.restoreText); + mainToolBar()->addAction(m_actions.restoreText); +} + +void CPlainWriteWindow::initConnections() { + CWriteWindow::initConnections(); + QObject::connect(keyChooser(), SIGNAL(keyChanged(CSwordKey*)), this, SLOT(lookupSwordKey(CSwordKey*))); + QObject::connect(displayWidget()->connectionsProxy(), SIGNAL(textChanged()), this, SLOT(textChanged()) ); +} + +void CPlainWriteWindow::storeProfileSettings( CProfileWindow* profileWindow ) { + CWriteWindow::storeProfileSettings(profileWindow); + profileWindow->setWindowSettings( m_actions.syncWindow->isChecked() ); +} + +void CPlainWriteWindow::applyProfileSettings( CProfileWindow* profileWindow ) { + CWriteWindow::applyProfileSettings(profileWindow); + if (profileWindow->windowSettings()) { + m_actions.syncWindow->setChecked(true); + } +} + +/** Saves the text for the current key. Directly writes the changed text into the module. */ +void CPlainWriteWindow::saveCurrentText( const QString& /*key*/ ) { + QString t = ((CWriteDisplay*)displayWidget())->plainText(); + //since t is a complete HTML page at the moment, strip away headers and footers of a HTML page + QRegExp re("(?:.+)", Qt::CaseInsensitive); //remove headers, case insensitive + re.setMinimal(true); + t.replace(re, ""); + t.replace(QRegExp("", Qt::CaseInsensitive), "");//remove footer + + const QString& oldKey = this->key()->key(); + if( modules().first()->isWritable() ) { + modules().first()->write(this->key(), t ); + this->key()->key( oldKey ); + + ((CWriteDisplay*)displayWidget())->setModified(false); + textChanged(); + } + else { + QMessageBox::critical( this, tr("Module not writable"), + QString::fromLatin1("%1
%2
") + .arg( tr("Module is not writable.") ) + .arg( tr("Either the module may not be edited, or " + "you do not have write permission.") ) ); + } +} + +/** Loads the original text from the module. */ +void CPlainWriteWindow::restoreText() { + lookupSwordKey(key()); + ((CWriteDisplay*)displayWidget())->setModified(false); + textChanged(); +} + +/** Is called when the current text was changed. */ +void CPlainWriteWindow::textChanged() { + m_actions.saveText->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); + m_actions.restoreText->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); +} + +/** Deletes the module entry and clears the edit widget, */ +void CPlainWriteWindow::deleteEntry() { + modules().first()->deleteEntry( key() ); + lookupSwordKey( key() ); + ((CWriteDisplay*)displayWidget())->setModified(false); +} + +/** Setups the popup menu of this display widget. */ +void CPlainWriteWindow::setupPopupMenu() {} + +bool CPlainWriteWindow::syncAllowed() const { + return m_actions.syncWindow->isChecked(); +} + +void CPlainWriteWindow::initActions() { +} + +void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const ) { +} -- cgit v1.2.3