void Core::selectEditor(Komposer::Editor *editor) { if(!editor) return; KParts::Part *part = editor->part(); editor->select(); QPtrList<KParts::Part> *partList = const_cast<QPtrList<KParts::Part>*>( m_partManager->parts()); if(partList->find(part) == -1) addPart(part); m_partManager->setActivePart(part); QWidget *view = part->widget(); Q_ASSERT(view); kdDebug() << "Raising view " << view << endl; if(view) { m_stack->raiseWidget(view); view->show(); view->setFocus(); m_currentEditor = editor; } }
void KstJS::showConsole() { #ifdef KST_HAVE_READLINE if (!_konsolePart) { strcpy(shellStr, "SHELL=kstcmd"); putenv(shellStr); KLibFactory *f = KLibLoader::self()->factory("libkonsolepart"); if (!f) { KMessageBox::sorry(app(), i18n("Could not load konsole part. Please install kdebase.")); _showAction->setChecked(false); return; } if (!_splitter) { _splitter = new QSplitter(Qt::Vertical, app()); _oldCentralWidget = app()->centralWidget(); _oldCentralWidget->reparent(_splitter, QPoint(0, 0)); _splitter->show(); app()->setCentralWidget(_splitter); } KParts::Part *p = dynamic_cast<KParts::Part*>(f->create(_splitter, "kstcmd")); if (!p) { KMessageBox::sorry(app(), i18n("Konsole part appears to be incompatible. Please install kdebase correctly.")); _showAction->setChecked(false); return; } _splitter->moveToLast(p->widget()); connect(p, SIGNAL(destroyed()), this, SLOT(shellExited())); _konsolePart = p; } _konsolePart->widget()->show(); #endif }
void PartManualTest::testShortcutOverride() { // FIXME: This test asks the user to press shortcut key sequences manually because // the result is different than when sending the key press via QTest::keyClick() // // When the key presses are sent manually, Konsole::TerminalDisplay::event() is called // and the overrideShortcut() signal is emitted by the part. // When the key presses are sent automatically, the shortcut is triggered but // Konsole::TerminalDisplay::event() is not called and the overrideShortcut() signal is // not emitted by the part. // Create a main window with a menu and a test // action with a shortcut set to Ctrl+S, which is also used by the terminal KMainWindow* mainWindow = new KMainWindow(); QMenu* fileMenu = mainWindow->menuBar()->addMenu("File"); QAction* testAction = fileMenu->addAction("Test"); testAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); connect(testAction, SIGNAL(triggered()), this, SLOT(shortcutTriggered())); // Create terminal part and embed in into the main window KParts::Part* terminalPart = createPart(); QVERIFY(terminalPart); mainWindow->setCentralWidget(terminalPart->widget()); TerminalInterface* terminal = qobject_cast<TerminalInterface*>(terminalPart); QVERIFY(terminal); terminal->sendInput("Press Ctrl+S twice.\n"); mainWindow->show(); // Test shortcut with override disabled, so the shortcut will be triggered _shortcutTriggered = false; _override = false; _overrideCalled = false; QVERIFY(connect(terminalPart, SIGNAL(overrideShortcut(QKeyEvent*,bool&)), this, SLOT(overrideShortcut(QKeyEvent*,bool&)))); //QTest::keyClick(terminalPart->widget(),Qt::Key_S,Qt::ControlModifier); _shortcutEventLoop = new QEventLoop(); _shortcutEventLoop->exec(); QVERIFY(_overrideCalled); QVERIFY(_shortcutTriggered); QVERIFY(!_override); // Test shortcut with override enabled, so the shortcut will not be triggered _override = true; _overrideCalled = false; _shortcutTriggered = false; //QTest::keyClick(terminalPart->widget(),Qt::Key_S,Qt::ControlModifier); _shortcutEventLoop->exec(); QVERIFY(_overrideCalled); QVERIFY(!_shortcutTriggered); QVERIFY(_override); delete _shortcutEventLoop; delete terminalPart; delete mainWindow; }
void KompareWidgets::hideWidget(int index) { if(d->partExists(index)) { KParts::Part * part = d->m_parts[index]; part->widget()->setVisible(false); d->m_usedWidgets[index] = false; } }
bool KompareWidgets::compare(const IndexedString & original, const QString & modified, QWidget * widget, int index) { //If there is no current part created, Create it if( !d->partExists(index) && !d->createWidget(index, widget)) return false; //Prepare the part KParts::Part * part = d->m_parts[index]; KompareInterface * ipart = qobject_cast<KompareInterface * >(part); Q_ASSERT(part); part->widget()->setVisible(true); part->widget()->resize(part->widget()->parentWidget()->size()); part->widget()->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); //Compare ipart->compareFileString(original.toUrl(), modified); //Set to used d->m_usedWidgets[index] = true; return true; }
void MainWindow::selectPlugin( Kontact::Plugin *plugin ) { if ( !plugin ) return; if ( plugin->isRunningStandalone() ) { statusBar()->message( i18n( "Application is running standalone. Foregrounding..." ), 1000 ); mSidePane->indicateForegrunding( plugin ); plugin->bringToForeground(); return; } KApplication::setOverrideCursor( QCursor( Qt::WaitCursor ) ); KParts::Part *part = plugin->part(); if ( !part ) { KApplication::restoreOverrideCursor(); KMessageBox::error( this, i18n( "Cannot load part for %1." ) .arg( plugin->title() ) + "\n" + lastErrorMessage() ); plugin->setDisabled( true ); mSidePane->updatePlugins(); return; } // store old focus widget QWidget *focusWidget = kapp->focusWidget(); if ( mCurrentPlugin && focusWidget ) { // save the focus widget only when it belongs to the activated part QWidget *parent = focusWidget->parentWidget(); while ( parent ) { if ( parent == mCurrentPlugin->part()->widget() ) mFocusWidgets.insert( mCurrentPlugin->identifier(), QGuardedPtr<QWidget>( focusWidget ) ); parent = parent->parentWidget(); } } if ( mSidePane ) mSidePane->selectPlugin( plugin ); plugin->select(); mPartManager->setActivePart( part ); QWidget *view = part->widget(); Q_ASSERT( view ); if ( view ) { mPartsStack->raiseWidget( view ); view->show(); if ( mFocusWidgets.contains( plugin->identifier() ) ) { focusWidget = mFocusWidgets[ plugin->identifier() ]; if ( focusWidget ) focusWidget->setFocus(); } else view->setFocus(); mCurrentPlugin = plugin; KAction *newAction = plugin->newActions()->first(); KAction *syncAction = plugin->syncActions()->first(); createGUI( plugin->part() ); KToolBar* navigatorToolBar = findToolBar( "navigatorToolBar" ); // Let the navigator toolbar be always the last one, if it's in the top dockwindow if ( navigatorToolBar && !navigatorToolBar->isHidden() && navigatorToolBar->barPos() == KToolBar::Top ) { topDock()->moveDockWindow( navigatorToolBar, -1 ); } setCaption( i18n( "Plugin dependent window title" ,"%1 - Kontact" ).arg( plugin->title() ) ); if ( newAction ) { mNewActions->setIcon( newAction->icon() ); mNewActions->setText( newAction->text() ); } else { // we'll use the action of the first plugin which offers one PluginList::Iterator it; for ( it = mPlugins.begin(); it != mPlugins.end(); ++it ) { newAction = (*it)->newActions()->first(); if ( newAction ) { mNewActions->setIcon( newAction->icon() ); mNewActions->setText( newAction->text() ); break; } } } if ( mSyncActionsEnabled ) { if ( syncAction ) { mSyncActions->setIcon( syncAction->icon() ); mSyncActions->setText( syncAction->text() ); } else { // we'll use the action of the first plugin which offers one PluginList::Iterator it; for ( it = mPlugins.begin(); it != mPlugins.end(); ++it ) { syncAction = (*it)->syncActions()->first(); if ( syncAction ) { mSyncActions->setIcon( syncAction->icon() ); mSyncActions->setText( syncAction->text() ); break; } } } } } QStringList invisibleActions = plugin->invisibleToolbarActions(); QStringList::ConstIterator it; for ( it = invisibleActions.begin(); it != invisibleActions.end(); ++it ) { KAction *action = part->actionCollection()->action( (*it).latin1() ); if ( action ) { QPtrListIterator<KToolBar> it( toolBarIterator() ); for ( ; it.current() ; ++it ) { action->unplug( it.current() ); } } } KApplication::restoreOverrideCursor(); }