summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp')
-rw-r--r--tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp338
1 files changed, 338 insertions, 0 deletions
diff --git a/tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp b/tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp
new file mode 100644
index 0000000..736b082
--- /dev/null
+++ b/tqtinterface/qt4/tools/designer/plugins/cppeditor/editorinterfaceimpl.cpp
@@ -0,0 +1,338 @@
+/**********************************************************************
+**
+** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of TQt Designer.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free TQt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing requirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** Licensees holding valid TQt Commercial licenses may use this file in
+** accordance with the TQt Commercial License Agreement provided with
+** the Software.
+**
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#include "editorinterfaceimpl.h"
+#include <viewmanager.h>
+#include "cppeditor.h"
+#include <private/tqrichtext_p.h>
+#include <tqapplication.h>
+#include "completion.h"
+#include <designerinterface.h>
+#include <tqtimer.h>
+
+EditorInterfaceImpl::EditorInterfaceImpl()
+ : EditorInterface(), viewManager( 0 ), dIface( 0 )
+{
+ updateTimer = new TQTimer( this );
+ connect( updateTimer, TQT_SIGNAL( timeout() ),
+ this, TQT_SLOT( update() ) );
+}
+
+EditorInterfaceImpl::~EditorInterfaceImpl()
+{
+ updateTimer->stop();
+ delete (ViewManager*)viewManager;
+ if ( dIface )
+ dIface->release();
+}
+
+TQRESULT EditorInterfaceImpl::queryInterface( const TQUuid &uuid, TQUnknownInterface** iface )
+{
+ *iface = 0;
+ if ( uuid == IID_TQUnknown )
+ *iface = (TQUnknownInterface*)this;
+ else if ( uuid == IID_Editor )
+ *iface = (EditorInterface*)this;
+ else
+ return TQE_NOINTERFACE;
+
+ (*iface)->addRef();
+ return TQS_OK;
+}
+
+TQWidget *EditorInterfaceImpl::editor( bool readonly,
+ TQWidget *tqparent, TQUnknownInterface *iface )
+{
+ if ( !viewManager ) {
+ ( (EditorInterfaceImpl*)this )->viewManager = new ViewManager( tqparent, 0 );
+ ( (EditorInterfaceImpl*)this )->viewManager->showMarkerWidget( FALSE );
+ if ( iface )
+ iface->queryInterface( IID_Designer, (TQUnknownInterface**) &dIface );
+ CppEditor *e = new CppEditor( TQString(), viewManager, "editor", dIface );
+ e->setEditable( !readonly );
+ e->installEventFilter( this );
+ connect( e, TQT_SIGNAL( intervalChanged() ), this, TQT_SLOT( intervalChanged() ) );
+ TQApplication::sendPostedEvents( viewManager, TQEvent::ChildInserted );
+ }
+ return viewManager->currentView();
+}
+
+void EditorInterfaceImpl::setText( const TQString &txt )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ CppEditor *e = (CppEditor*)viewManager->currentView();
+ disconnect( e, TQT_SIGNAL( modificationChanged( bool ) ), this, TQT_SLOT( modificationChanged( bool ) ) );
+ e->setText( txt );
+ e->setModified( FALSE );
+ connect( e, TQT_SIGNAL( modificationChanged( bool ) ), this, TQT_SLOT( modificationChanged( bool ) ) );
+}
+
+TQString EditorInterfaceImpl::text() const
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return TQString();
+ TQString txt = ( (CppEditor*)viewManager->currentView() )->text();
+ if ( !txt.isEmpty() && !txt.endsWith("\n") )
+ txt += "\n";
+ return txt;
+}
+
+bool EditorInterfaceImpl::isUndoAvailable() const
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return FALSE;
+ return ( (CppEditor*)viewManager->currentView() )->isUndoAvailable();
+}
+
+bool EditorInterfaceImpl::isRedoAvailable() const
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return FALSE;
+ return ( (CppEditor*)viewManager->currentView() )->isRedoAvailable();
+}
+
+void EditorInterfaceImpl::undo()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->undo();
+}
+
+void EditorInterfaceImpl::redo()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->redo();
+}
+
+void EditorInterfaceImpl::cut()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->cut();
+}
+
+void EditorInterfaceImpl::copy()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->copy();
+}
+
+void EditorInterfaceImpl::paste()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->paste();
+}
+
+void EditorInterfaceImpl::selectAll()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->selectAll();
+}
+
+bool EditorInterfaceImpl::tqfind( const TQString &expr, bool cs, bool wo, bool forward, bool startAtCursor )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return FALSE;
+ CppEditor *e = (CppEditor*)viewManager->currentView();
+ if ( startAtCursor )
+ return e->tqfind( expr, cs, wo, forward );
+ int dummy = 0;
+ return e->tqfind( expr, cs, wo, forward, &dummy, &dummy );
+}
+
+bool EditorInterfaceImpl::tqreplace( const TQString &tqfind, const TQString &tqreplace, bool cs, bool wo,
+ bool forward, bool startAtCursor, bool tqreplaceAll )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return FALSE;
+ CppEditor *e = (CppEditor*)viewManager->currentView();
+ bool ok = FALSE;
+ if ( startAtCursor ) {
+ ok = e->tqfind( tqfind, cs, wo, forward );
+ } else {
+ int dummy = 0;
+ ok = e->tqfind( tqfind, cs, wo, forward, &dummy, &dummy );
+ }
+
+ if ( ok ) {
+ e->removeSelectedText();
+ e->insert( tqreplace, FALSE, FALSE );
+ }
+
+ if ( !tqreplaceAll || !ok ) {
+ if ( ok )
+ e->setSelection( e->textCursor()->paragraph()->paragId(),
+ e->textCursor()->index() - tqreplace.length(),
+ e->textCursor()->paragraph()->paragId(),
+ e->textCursor()->index() );
+ return ok;
+ }
+
+ bool ok2 = TRUE;
+ while ( ok2 ) {
+ ok2 = e->tqfind( tqfind, cs, wo, forward );
+ if ( ok2 ) {
+ e->removeSelectedText();
+ e->insert( tqreplace, FALSE, FALSE );
+ }
+ }
+
+ return TRUE;
+}
+
+void EditorInterfaceImpl::gotoLine( int line )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->setCursorPosition( line, 0 );
+}
+
+void EditorInterfaceImpl::indent()
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->TQTextEdit::indent();
+}
+
+void EditorInterfaceImpl::splitView()
+{
+#if 0
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ TQTextDocument *doc = ( (CppEditor*)viewManager->currentView() )->document();
+ CppEditor *editor = new CppEditor( TQString(), viewManager, "editor" );
+ editor->setDocument( doc );
+#endif
+}
+
+void EditorInterfaceImpl::scrollTo( const TQString &txt, const TQString & )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->sync();
+ TQTextDocument *doc = ( (CppEditor*)viewManager->currentView() )->document();
+ TQTextParagraph *p = doc->firstParagraph();
+ while ( p ) {
+ if ( p->string()->toString().tqfind( txt ) != -1 ) {
+ ( (CppEditor*)viewManager->currentView() )->setCursorPosition( p->paragId() + 2, 0 );
+ break;
+ }
+ p = p->next();
+ }
+ ( (CppEditor*)viewManager->currentView() )->setFocus();
+}
+
+void EditorInterfaceImpl::setContext( TQObject *this_ )
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->completionManager()->setContext( this_ );
+}
+
+void EditorInterfaceImpl::setError( int line )
+{
+ if ( !viewManager )
+ return;
+ viewManager->setError( line );
+}
+
+void EditorInterfaceImpl::readSettings()
+{
+ if ( !viewManager )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->configChanged();
+}
+
+void EditorInterfaceImpl::modificationChanged( bool m )
+{
+ if ( viewManager && dIface )
+ dIface->setModified( m, viewManager->currentView() );
+}
+
+void EditorInterfaceImpl::setModified( bool m )
+{
+ if ( !viewManager )
+ return;
+ ( (CppEditor*)viewManager->currentView() )->setModified( m );
+}
+
+bool EditorInterfaceImpl::isModified() const
+{
+ if ( !viewManager )
+ return FALSE;
+ return ( (CppEditor*)viewManager->currentView() )->isModified();
+}
+
+bool EditorInterfaceImpl::eventFilter( TQObject *o, TQEvent *e )
+{
+ if ( e->type() == TQEvent::KeyPress )
+ updateTimer->stop();
+ else if ( e->type() == TQEvent::FocusOut )
+ update();
+
+ return TQObject::eventFilter( o, e );
+}
+
+int EditorInterfaceImpl::numLines() const
+{
+ if ( !viewManager || !viewManager->currentView() )
+ return 0;
+ return ( (CppEditor*)viewManager->currentView() )->paragraphs();
+}
+
+void EditorInterfaceImpl::intervalChanged()
+{
+ if ( !dIface )
+ return;
+ updateTimer->start( 2000, TRUE );
+}
+
+void EditorInterfaceImpl::update()
+{
+ if ( !dIface )
+ return;
+ dIface->updateFunctionList();
+}
+
+void EditorInterfaceImpl::onBreakPointChange( TQObject *receiver, const char *slot )
+{
+ if ( !viewManager )
+ return;
+ connect( viewManager, TQT_SIGNAL( markersChanged() ), receiver, slot );
+}