diff options
Diffstat (limited to 'lib/widgets/kdevhtmlpart.cpp')
-rw-r--r-- | lib/widgets/kdevhtmlpart.cpp | 512 |
1 files changed, 0 insertions, 512 deletions
diff --git a/lib/widgets/kdevhtmlpart.cpp b/lib/widgets/kdevhtmlpart.cpp deleted file mode 100644 index 76697cfa..00000000 --- a/lib/widgets/kdevhtmlpart.cpp +++ /dev/null @@ -1,512 +0,0 @@ -#include <tqfile.h> -#include <tqclipboard.h> -#include <tqapplication.h> - -#include <kxmlguiclient.h> -#include <tdeaction.h> -#include <kstdaction.h> -#include <kstandarddirs.h> -#include <tdelocale.h> -#include <tdepopupmenu.h> -#include <kiconloader.h> -#include <tdemainwindow.h> -#include <tdehtmlview.h> -#include <tdehtml_settings.h> -#include <tdeconfig.h> - -#include <kdevmainwindow.h> - - -#include "kdevhtmlpart.h" - -KDevHTMLPart::KDevHTMLPart() - : TDEHTMLPart(0L, 0L, 0L, "KDevHTMLPart", DefaultGUI ) -{ - setXMLFile(locate("data", "tdevelop/kdevhtml_partui.rc"), true); - - connect(browserExtension(), TQT_SIGNAL(openURLRequestDelayed(const KURL &,const KParts::URLArgs &)), - this, TQT_SLOT(openURLRequest(const KURL &)) ); - - connect(this, TQT_SIGNAL(started(TDEIO::Job *)), this, TQT_SLOT(slotStarted(TDEIO::Job* ))); - connect(this, TQT_SIGNAL(completed()), this, TQT_SLOT(slotCompleted())); - connect(this, TQT_SIGNAL(canceled(const TQString &)), this, TQT_SLOT(slotCancelled(const TQString &))); - - TDEActionCollection * actions = actionCollection();// new TDEActionCollection( this ); - reloadAction = new TDEAction( i18n( "Reload" ), "reload", 0, - this, TQT_SLOT( slotReload() ), actions, "doc_reload" ); - reloadAction->setWhatsThis(i18n("<b>Reload</b><p>Reloads the current document.")); - stopAction = new TDEAction( i18n( "Stop" ), "stop", 0, - this, TQT_SLOT( slotStop() ), actions, "doc_stop" ); - stopAction->setWhatsThis(i18n("<b>Stop</b><p>Stops the loading of current document.")); - duplicateAction = new TDEAction( i18n( "Duplicate Tab" ), "window_new", 0, - this, TQT_SLOT( slotDuplicate() ), actions, "doc_dup" ); - duplicateAction->setWhatsThis(i18n("<b>Duplicate window</b><p>Opens current document in a new window.")); - printAction = KStdAction::print(this, TQT_SLOT(slotPrint()), actions, "print_doc"); - copyAction = KStdAction::copy(this, TQT_SLOT(slotCopy()), actions, "copy_doc_selection"); - - connect( this, TQT_SIGNAL(popupMenu(const TQString &, const TQPoint &)), this, TQT_SLOT(popup(const TQString &, const TQPoint &))); - connect(this, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(slotSelectionChanged())); - -//BEGIN documentation history stuff - - m_backAction = new TDEToolBarPopupAction(i18n("Back"), "back", 0, - this, TQT_SLOT(slotBack()), - actions, "browser_back"); - m_backAction->setEnabled( false ); - m_backAction->setToolTip(i18n("Back")); - m_backAction->setWhatsThis(i18n("<b>Back</b><p>Moves backwards one step in the <b>documentation</b> browsing history.")); - - connect(m_backAction->popupMenu(), TQT_SIGNAL(aboutToShow()), - this, TQT_SLOT(slotBackAboutToShow())); - connect(m_backAction->popupMenu(), TQT_SIGNAL(activated(int)), - this, TQT_SLOT(slotPopupActivated(int))); - - m_forwardAction = new TDEToolBarPopupAction(i18n("Forward"), "forward", 0, - this, TQT_SLOT(slotForward()), - actions, "browser_forward"); - m_forwardAction->setEnabled( false ); - m_forwardAction->setToolTip(i18n("Forward")); - m_forwardAction->setWhatsThis(i18n("<b>Forward</b><p>Moves forward one step in the <b>documentation</b> browsing history.")); - - connect(m_forwardAction->popupMenu(), TQT_SIGNAL(aboutToShow()), - this, TQT_SLOT(slotForwardAboutToShow())); - connect(m_forwardAction->popupMenu(), TQT_SIGNAL(activated(int)), - this, TQT_SLOT(slotPopupActivated(int))); - - m_restoring = false; - m_Current = m_history.end(); -//END documentation history stuff - - //settings: - TDEConfig *appConfig = TDEGlobal::config(); - appConfig->setGroup("TDEHTMLPart"); - setStandardFont(appConfig->readEntry("StandardFont", - settings()->stdFontName())); - setFixedFont(appConfig->readEntry("FixedFont", - settings()->fixedFontName())); - setZoomFactor(appConfig->readEntry("Zoom", "100").toInt()); -} - -void KDevHTMLPart::popup( const TQString & url, const TQPoint & p ) -{ -// TDEPopupMenu popup( i18n( "Documentation Viewer" ), this->widget() ); - TDEPopupMenu popup(this->widget()); - - bool needSep = false; - int idNewWindow = -2; - if (!url.isEmpty() && (m_options & CanOpenInNewWindow)) - { - idNewWindow = popup.insertItem(SmallIcon("window_new"),i18n("Open in New Tab")); - popup.TQMenuData::setWhatsThis(idNewWindow, i18n("<b>Open in new window</b><p>Opens current link in a new window.")); - needSep = true; - } - if (m_options & CanDuplicate) - { - duplicateAction->plug(&popup); - needSep = true; - } - if (needSep) - popup.insertSeparator(); - - m_backAction->plug( &popup ); - m_forwardAction->plug( &popup ); - reloadAction->plug(&popup); -// stopAction->plug(&popup); - popup.insertSeparator(); - - copyAction->plug( &popup ); - popup.insertSeparator(); - - printAction->plug(&popup); - popup.insertSeparator(); - - TDEAction * incFontAction = this->action("incFontSizes"); - TDEAction * decFontAction = this->action("decFontSizes"); - if ( incFontAction && decFontAction ) - { - incFontAction->plug( &popup ); - decFontAction->plug( &popup ); - popup.insertSeparator(); - } - - TDEAction *ac = action("setEncoding"); - if (ac) - ac->plug(&popup); - - int r = popup.exec(p); - - if (r == idNewWindow) - { - KURL kurl; - if (!KURL(url).path().startsWith("/")) - { - kdDebug() << "processing relative url: " << url << endl; - if (url.startsWith("#")) - { - kurl = KURL(KDevHTMLPart::url()); - kurl.setRef(url.mid(1)); - } - else - kurl = KURL(KDevHTMLPart::url().upURL().url(true)+url); - } - else - kurl = KURL(url); - - if (kurl.isValid()) - slotOpenInNewWindow(kurl); - } -} - -void KDevHTMLPart::setContext(const TQString &context) -{ - m_context = context; -} - - -TQString KDevHTMLPart::context() const -{ - return m_context; -} - - -// Note: this function is a copy of code in tdecore/tdeconfigbase.cpp ;) -static bool isUtf8(const char *buf) { - int i, n; - register unsigned char c; - bool gotone = false; - -#define F 0 /* character never appears in text */ -#define T 1 /* character appears in plain ASCII text */ -#define I 2 /* character appears in ISO-8859 text */ -#define X 3 /* character appears in non-ISO extended ASCII (Mac, IBM PC) */ - - static const unsigned char text_chars[256] = { - /* BEL BS HT LF FF CR */ - F, F, F, F, F, F, F, T, T, T, T, F, T, T, F, F, /* 0x0X */ - /* ESC */ - F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, /* 0x1X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x2X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x3X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x4X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x5X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x6X */ - T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, F, /* 0x7X */ - /* NEL */ - X, X, X, X, X, T, X, X, X, X, X, X, X, X, X, X, /* 0x8X */ - X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, /* 0x9X */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, /* 0xaX */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, /* 0xbX */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, /* 0xcX */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, /* 0xdX */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, /* 0xeX */ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I /* 0xfX */ - }; - - /* *ulen = 0; */ - for (i = 0; (c = buf[i]); i++) { - if ((c & 0x80) == 0) { /* 0xxxxxxx is plain ASCII */ - /* - * Even if the whole file is valid UTF-8 sequences, - * still reject it if it uses weird control characters. - */ - - if (text_chars[c] != T) - return false; - - } else if ((c & 0x40) == 0) { /* 10xxxxxx never 1st byte */ - return false; - } else { /* 11xxxxxx begins UTF-8 */ - int following; - - if ((c & 0x20) == 0) { /* 110xxxxx */ - following = 1; - } else if ((c & 0x10) == 0) { /* 1110xxxx */ - following = 2; - } else if ((c & 0x08) == 0) { /* 11110xxx */ - following = 3; - } else if ((c & 0x04) == 0) { /* 111110xx */ - following = 4; - } else if ((c & 0x02) == 0) { /* 1111110x */ - following = 5; - } else - return false; - - for (n = 0; n < following; n++) { - i++; - if (!(c = buf[i])) - goto done; - - if ((c & 0x80) == 0 || (c & 0x40)) - return false; - } - gotone = true; - } - } -done: - return gotone; /* don't claim it's UTF-8 if it's all 7-bit */ -} -#undef F -#undef T -#undef I -#undef X - -TQString KDevHTMLPart::resolveEnvVarsInURL(const TQString& url) -{ - // check for environment variables and make necessary translations - TQString path = url; - int nDollarPos = path.find( '$' ); - - // Note: the while loop below is a copy of code in tdecore/tdeconfigbase.cpp ;) - while( nDollarPos != -1 && nDollarPos+1 < static_cast<int>(path.length())) { - // there is at least one $ - if( (path)[nDollarPos+1] == '(' ) { - uint nEndPos = nDollarPos+1; - // the next character is no $ - while ( (nEndPos <= path.length()) && (path[nEndPos]!=')') ) - nEndPos++; - nEndPos++; - TQString cmd = path.mid( nDollarPos+2, nEndPos-nDollarPos-3 ); - - TQString result; - FILE *fs = popen(TQFile::encodeName(cmd).data(), "r"); - if (fs) - { - TQTextStream ts(fs, IO_ReadOnly); - result = ts.read().stripWhiteSpace(); - pclose(fs); - } - path.replace( nDollarPos, nEndPos-nDollarPos, result ); - } else if( (path)[nDollarPos+1] != '$' ) { - uint nEndPos = nDollarPos+1; - // the next character is no $ - TQString aVarName; - if (path[nEndPos]=='{') - { - while ( (nEndPos <= path.length()) && (path[nEndPos]!='}') ) - nEndPos++; - nEndPos++; - aVarName = path.mid( nDollarPos+2, nEndPos-nDollarPos-3 ); - } - else - { - while ( nEndPos <= path.length() && (path[nEndPos].isNumber() - || path[nEndPos].isLetter() || path[nEndPos]=='_' ) ) - nEndPos++; - aVarName = path.mid( nDollarPos+1, nEndPos-nDollarPos-1 ); - } - const char* pEnv = 0; - if (!aVarName.isEmpty()) - pEnv = getenv( aVarName.ascii() ); - if( pEnv ) { - // !!! Sergey A. Sukiyazov <corwin@micom.don.ru> !!! - // A environment variables may contain values in 8bit - // locale cpecified encoding or in UTF8 encoding. - if (isUtf8( pEnv )) - path.replace( nDollarPos, nEndPos-nDollarPos, TQString::fromUtf8(pEnv) ); - else - path.replace( nDollarPos, nEndPos-nDollarPos, TQString::fromLocal8Bit(pEnv) ); - } else - path.remove( nDollarPos, nEndPos-nDollarPos ); - } else { - // remove one of the dollar signs - path.remove( nDollarPos, 1 ); - nDollarPos++; - } - nDollarPos = path.find( '$', nDollarPos ); - } - - return path; -} - -bool KDevHTMLPart::openURL(const KURL &url) -{ - TQString path = resolveEnvVarsInURL(url.url()); - KURL newUrl(path); - - bool retval = TDEHTMLPart::openURL(newUrl); - if ( retval ) - { - emit fileNameChanged(this); - if ( !m_restoring ) - { - addHistoryEntry(); - } - } - - m_backAction->setEnabled( m_Current != m_history.begin() ); - m_forwardAction->setEnabled( m_Current != m_history.fromLast() ); - - return retval; -} - -void KDevHTMLPart::openURLRequest(const KURL &url) -{ - openURL( url ); -} - -void KDevHTMLPart::slotReload( ) -{ - openURL( url() ); -} - -void KDevHTMLPart::slotStop( ) -{ - closeURL(); -} - -void KDevHTMLPart::slotStarted( TDEIO::Job * ) -{ - stopAction->setEnabled(true); -} - -void KDevHTMLPart::slotCompleted( ) -{ - stopAction->setEnabled(false); -} - -void KDevHTMLPart::slotCancelled( const TQString & /*errMsg*/ ) -{ - stopAction->setEnabled(false); -} - -/*void KDevHTMLPart::slotDuplicate( ) -{ - PartController::getInstance()->showDocument(url(), true); -}*/ - -void KDevHTMLPart::slotPrint( ) -{ - view()->print(); -} - -void KDevHTMLPart::slotBack() -{ - if ( m_Current != m_history.begin() ) - { - --m_Current; - m_restoring = true; - openURL( (*m_Current).url ); - m_restoring = false; - } -} - -void KDevHTMLPart::slotForward() -{ - if ( m_Current != m_history.fromLast() ) - { - ++m_Current; - m_restoring = true; - openURL( (*m_Current).url ); - m_restoring = false; - } -} - -void KDevHTMLPart::slotBackAboutToShow() -{ - TDEPopupMenu *popup = m_backAction->popupMenu(); - popup->clear(); - - if ( m_Current == m_history.begin() ) return; - - TQValueList<DocumentationHistoryEntry>::Iterator it = m_Current; - --it; - - int i = 0; - while( i < 10 ) - { - if ( it == m_history.begin() ) - { - popup->insertItem( (*it).url.url(), (*it).id ); - return; - } - - popup->insertItem( (*it).url.url(), (*it).id ); - ++i; - --it; - } -} - -void KDevHTMLPart::slotForwardAboutToShow() -{ - TDEPopupMenu *popup = m_forwardAction->popupMenu(); - popup->clear(); - - if ( m_Current == m_history.fromLast() ) return; - - TQValueList<DocumentationHistoryEntry>::Iterator it = m_Current; - ++it; - - int i = 0; - while( i < 10 ) - { - if ( it == m_history.fromLast() ) - { - popup->insertItem( (*it).url.url(), (*it).id ); - return; - } - - popup->insertItem( (*it).url.url(), (*it).id ); - ++i; - ++it; - } -} - -void KDevHTMLPart::slotPopupActivated( int id ) -{ - kdDebug(9000) << "id: " << id << endl; - - TQValueList<DocumentationHistoryEntry>::Iterator it = m_history.begin(); - while( it != m_history.end() ) - { - kdDebug(9000) << "(*it).id: " << (*it).id << endl; - if ( (*it).id == id ) - { - m_Current = it; - m_restoring = true; - openURL( (*m_Current).url ); - m_restoring = false; - return; - } - ++it; - } -} - -void KDevHTMLPart::addHistoryEntry() -{ - TQValueList<DocumentationHistoryEntry>::Iterator it = m_Current; - - // if We're not already the last entry, we truncate the list here before adding an entry - if ( it != m_history.end() && it != m_history.fromLast() ) - { - m_history.erase( ++it, m_history.end() ); - } - - DocumentationHistoryEntry newEntry( url() ); - - // Only save the new entry if it is different from the last - if ( newEntry.url != (*m_Current).url ) - { - m_history.append( newEntry ); - m_Current = m_history.fromLast(); - } -} - -void KDevHTMLPart::slotCopy( ) -{ - TQString text = selectedText(); - text.replace( TQChar( 0xa0 ), ' ' ); - TQClipboard *cb = TQApplication::clipboard(); - disconnect( cb, TQT_SIGNAL( selectionChanged() ), this, TQT_SLOT( slotClearSelection() ) ); - cb->setText(text); - connect( cb, TQT_SIGNAL( selectionChanged() ), this, TQT_SLOT( slotClearSelection() ) ); -} - -void KDevHTMLPart::slotSelectionChanged( ) -{ - if (selectedText().isEmpty()) - copyAction->setEnabled(false); - else - copyAction->setEnabled(true); -} - -#include "kdevhtmlpart.moc" |