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.
218 lines
5.8 KiB
218 lines
5.8 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.
|
|
*
|
|
**********/
|
|
|
|
|
|
|
|
#include "cdisplay.h"
|
|
#include "chtmlreaddisplay.h"
|
|
#include "cplainwritedisplay.h"
|
|
#include "chtmlwritedisplay.h"
|
|
|
|
#include "backend/creferencemanager.h"
|
|
|
|
#include "util/ctoolclass.h"
|
|
|
|
|
|
//TQt includes
|
|
#include <tqclipboard.h>
|
|
#include <tqpopupmenu.h>
|
|
#include <tqtimer.h>
|
|
|
|
//TDE includes
|
|
#include <tdeapplication.h>
|
|
#include <tdefiledialog.h>
|
|
#include <tdelocale.h>
|
|
|
|
|
|
CDisplayConnections::CDisplayConnections( CDisplay* display ) : m_display(display) {}
|
|
|
|
void CDisplayConnections::selectAll() {
|
|
m_display->selectAll();
|
|
}
|
|
|
|
void CDisplayConnections::saveAsHTML() {
|
|
m_display->save(CDisplay::HTMLText, CDisplay::Document);
|
|
}
|
|
|
|
void CDisplayConnections::saveAsPlain() {
|
|
m_display->save(CDisplay::PlainText, CDisplay::Document);
|
|
}
|
|
|
|
/** Emits the signal. */
|
|
void CDisplayConnections::emitReferenceClicked( const TQString& module, const TQString& key) {
|
|
emit referenceClicked( module, key );
|
|
}
|
|
|
|
/** Emits the signal. */
|
|
void CDisplayConnections::emitReferenceDropped( const TQString& key) {
|
|
emit referenceDropped(key);
|
|
}
|
|
|
|
/** Emits the signal. */
|
|
void CDisplayConnections::emitTextChanged() {
|
|
emit textChanged();
|
|
}
|
|
|
|
void CDisplayConnections::copyAll() {
|
|
m_display->copy(CDisplay::PlainText, CDisplay::Document);
|
|
}
|
|
|
|
/** No descriptions */
|
|
void CDisplayConnections::copySelection() {
|
|
tqWarning("copyign the selected text");
|
|
m_display->copy(CDisplay::PlainText, CDisplay::SelectedText);
|
|
}
|
|
|
|
void CDisplayConnections::printAll(CSwordBackend::DisplayOptions displayOptions, CSwordBackend::FilterOptions filterOptions) {
|
|
m_display->print(CDisplay::Document, displayOptions, filterOptions);
|
|
}
|
|
|
|
void CDisplayConnections::printAnchorWithText(CSwordBackend::DisplayOptions displayOptions, CSwordBackend::FilterOptions filterOptions) {
|
|
m_display->print(CDisplay::AnchorWithText, displayOptions, filterOptions);
|
|
}
|
|
|
|
void CDisplayConnections::copyAnchorOnly() {
|
|
m_display->copy(CDisplay::PlainText, CDisplay::AnchorOnly);
|
|
}
|
|
|
|
void CDisplayConnections::copyAnchorTextOnly() {
|
|
m_display->copy(CDisplay::PlainText, CDisplay::AnchorTextOnly);
|
|
}
|
|
|
|
void CDisplayConnections::copyAnchorWithText() {
|
|
m_display->copy(CDisplay::PlainText, CDisplay::AnchorWithText);
|
|
}
|
|
|
|
void CDisplayConnections::saveAnchorWithText() {
|
|
m_display->save(CDisplay::PlainText, CDisplay::AnchorWithText);
|
|
}
|
|
|
|
void CDisplayConnections::clear() {
|
|
m_display->setText(TQString());
|
|
}
|
|
|
|
void CDisplayConnections::zoomIn() {
|
|
m_display->zoomIn();
|
|
}
|
|
|
|
void CDisplayConnections::zoomOut() {
|
|
m_display->zoomOut();
|
|
}
|
|
|
|
void CDisplayConnections::openFindTextDialog() {
|
|
m_display->openFindTextDialog();
|
|
}
|
|
|
|
|
|
/*----------------------*/
|
|
|
|
CReadDisplay* CDisplay::createReadInstance( CReadWindow* readWindow, TQWidget* parent ) {
|
|
return new CHTMLReadDisplay(readWindow, parent);
|
|
}
|
|
|
|
CWriteDisplay* CDisplay::createWriteInstance( CWriteWindow* writeWindow, const CWriteDisplay::WriteDisplayType& type, TQWidget* parent ) {
|
|
// tqWarning("CDisplay::createWriteInstance");
|
|
if (type == PlainTextDisplay) {
|
|
return new CPlainWriteDisplay(writeWindow, parent);
|
|
}
|
|
else {
|
|
return new CHTMLWriteDisplay(writeWindow, parent);
|
|
};
|
|
}
|
|
|
|
|
|
CDisplay::CDisplay(CDisplayWindow* parent) :
|
|
m_parentWindow(parent),
|
|
m_connections( new CDisplayConnections( this ) ),
|
|
m_popup(0) {}
|
|
|
|
CDisplay::~CDisplay() {
|
|
delete m_connections;
|
|
}
|
|
|
|
const bool CDisplay::copy( const CDisplay::TextType format, const CDisplay::TextPart part ) {
|
|
const TQString content = text(format, part);
|
|
|
|
TQClipboard* cb = TDEApplication::clipboard();
|
|
cb->setText(content);
|
|
return true;
|
|
}
|
|
|
|
const bool CDisplay::save( const CDisplay::TextType format, const CDisplay::TextPart part ) {
|
|
// tqWarning("CDisplay::save( const CDisplay::TextType format, const CDisplay::TextPart part )");
|
|
const TQString content = text(format, part);
|
|
TQString filter = TQString();
|
|
|
|
switch (format) {
|
|
case HTMLText:
|
|
filter = TQString("*.html *.htm | ") + i18n("HTML files") + TQString("\n *.* | All files (*.*)");
|
|
break;
|
|
case PlainText:
|
|
filter = TQString("*.txt | ") + i18n("Text files") + TQString("\n *.* | All files (*.*)");
|
|
break;
|
|
};
|
|
|
|
const TQString filename = KFileDialog::getSaveFileName(TQString(), filter, 0, i18n("Save document ..."));
|
|
|
|
if (!filename.isEmpty()) {
|
|
CToolClass::savePlainFile(filename, content);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/** Emits the signal which used when a reference was clicked. */
|
|
void CDisplay::emitReferenceClicked( const TQString& reference ) {
|
|
tqWarning("reference clicked %s", reference.latin1());
|
|
TQString module;
|
|
TQString key;
|
|
CReferenceManager::Type type;
|
|
/*const bool ok = */
|
|
CReferenceManager::decodeHyperlink(reference, module, key, type);
|
|
if (module.isEmpty()) {
|
|
module = CReferenceManager::preferredModule( type );
|
|
}
|
|
m_connections->emitReferenceClicked(module, key);
|
|
}
|
|
|
|
/** Used when a reference was dropped onto the widget. */
|
|
void CDisplay::emitReferenceDropped( const TQString& reference ) {
|
|
TQString module;
|
|
TQString key;
|
|
CReferenceManager::Type type;
|
|
/*const bool ok = */
|
|
CReferenceManager::decodeHyperlink(reference, module, key, type);
|
|
// if (module.isEmpty()) {
|
|
// module = CReferenceManager::preferredModule( type );
|
|
// }
|
|
|
|
m_connections->emitReferenceDropped(key);
|
|
}
|
|
|
|
/** Returns the connections obect used for signas and slots. */
|
|
CDisplayConnections* const CDisplay::connectionsProxy() const {
|
|
return m_connections;
|
|
}
|
|
|
|
CDisplayWindow* const CDisplay::parentWindow() const {
|
|
return m_parentWindow;
|
|
}
|
|
|
|
/** Installs the popup which should be opened when the right mouse button was pressed. */
|
|
void CDisplay::installPopup( TQPopupMenu* popup ) {
|
|
m_popup = popup;
|
|
}
|
|
|
|
/** Returns the popup menu which was set by installPopupMenu() */
|
|
TQPopupMenu* const CDisplay::installedPopup() {
|
|
Q_ASSERT(m_popup);
|
|
return m_popup;
|
|
}
|
|
|
|
#include "cdisplay.moc"
|