void RubySupportPart::slotRunTestUnderCursor() { // if we can't save all parts, then the user canceled if ( partController()->saveAllFiles() == false ) return; KParts::ReadOnlyPart *ro_part = dynamic_cast<KParts::ReadOnlyPart*>(partController()->activePart()); QString prog; if (ro_part != 0) { prog = ro_part->url().path(); } else return; KTextEditor::ViewCursorInterface* activeViewCursor = dynamic_cast<KTextEditor::ViewCursorInterface*>( ro_part->widget() ); if (!activeViewCursor) return; unsigned int line, column; activeViewCursor->cursorPositionReal(&line, &column); CodeModelUtils::CodeModelHelper hlp(codeModel(), codeModel()->fileByName(prog)); FunctionDom fun = hlp.functionAt(line, column); if (fun == 0) return; QFileInfo program(prog); QString cmd = QString("%1 -K%2 -C\"%3\" -I\"%4\" \"%5\" %6") .arg(interpreter()) .arg(characterCoding()) .arg(runDirectory()) .arg(program.dirPath()) .arg(program.fileName()) .arg(" -n " + fun->name()); startApplication(cmd); }
void RubyDebuggerPart::slotRunToCursor() { KParts::ReadWritePart *rwpart = dynamic_cast<KParts::ReadWritePart*>(partController()->activePart()); KTextEditor::ViewCursorInterface *cursorIface = dynamic_cast<KTextEditor::ViewCursorInterface*>(partController()->activeWidget()); if (!rwpart || !rwpart->url().isLocalFile() || !cursorIface) return; uint line, col; cursorIface->cursorPosition(&line, &col); controller->slotRunUntil(rwpart->url().path(), line); }
void RubySupportPart::slotRun () { // if we can't save all parts, then the user canceled if ( partController()->saveAllFiles() == false ) return; QFileInfo program(mainProgram()); if (mainProgram().endsWith("script/server")) { QString cmd; QFileInfo server(project()->projectDirectory() + "/script/server"); // Starting WEBrick for a Rails app. Translate a SIGTERM signal sent by KDevelop // to a SIGINT expected by WEBrick (ie control&c) to terminate it. cmd += "script/server& \n trap \"kill -s SIGINT $!\" TERM \n wait \n exit 0"; if (KDevAppFrontend *appFrontend = extension<KDevAppFrontend>("KDevelop/AppFrontend")) appFrontend->startAppCommand(project()->projectDirectory(), cmd, false); } else { QString cmd = QString("%1 -K%2 -C\"%3\" -I\"%4\" \"%5\" %6") .arg(interpreter()) .arg(characterCoding()) .arg(runDirectory()) .arg(program.dirPath()) .arg(program.fileName()) .arg(programArgs()); startApplication(cmd); } }
void PythonSupportPart::slotPydoc() { bool ok; QString key = KInputDialog::getText(i18n("Show Python Documentation"), i18n("Show Python documentation on keyword:"), "", &ok, 0); if (ok && !key.isEmpty()) { QString url = "pydoc:"; url += key; partController()->showDocument(KURL(url)); } }
QString PerforcePart::currentFile() { KParts::ReadOnlyPart *part = dynamic_cast<KParts::ReadOnlyPart*>( partController()->activePart() ); if ( part ) { KURL url = part->url(); if ( url.isLocalFile() ) return url.path(); } return QString::null; }
void BashSupportPart::slotRun () { QString file; KParts::ReadOnlyPart *ro_part = dynamic_cast<KParts::ReadOnlyPart*>(partController()->activePart()); if(ro_part) file = ro_part->url().path(); QString cmd = interpreter() + " " + file; startApplication(cmd); }
void RubySupportPart::slotSwitchToController() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if ((ext == "rb") && !name.endsWith("_controller")) { if (name.endsWith("_test")) { switchTo = name.remove(QRegExp("_test$")); //the file is the test switchTo = name.remove(QRegExp("_controller$")); //remove functional test name parts } else switchTo = name; } else if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view, we need to find the directory of this view and try to find //the controller basing on the directory information switchTo = file.dir().dirName(); } QString controllersDir = project()->projectDirectory() + "/app/controllers/"; if (!switchTo.isEmpty()) { if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length()-1); QString singular = controllersDir + switchTo + "_controller.rb"; QString plural = controllersDir + switchTo + "s_controller.rb"; KURL url = KURL::fromPathOrURL(QFile::exists(singular) ? singular : plural); partController()->editDocument(url); } }
AStylePart::AStylePart(QObject *parent, const char *name, const QStringList &) : KDevSourceFormatter(&data, parent, name ? name : "AStylePart") { setInstance(AStyleFactory::instance()); setXMLFile("kdevpart_astyle.rc"); formatTextAction = new KAction(i18n("&Reformat Source"), 0, this, SLOT(beautifySource()), actionCollection(), "edit_astyle"); formatTextAction->setEnabled(false); formatTextAction->setToolTip(i18n("Reformat source")); formatTextAction->setWhatsThis(i18n("<b>Reformat source</b><p>Source reformatting functionality using <b>astyle</b> library. " "Also available in <b>New Class</b> and <b>Subclassing</b> wizards.")); formatFileAction = new KAction(i18n("Format files"), 0, this, SLOT(formatFilesSelect()), actionCollection(), "tools_astyle"); formatFileAction->setEnabled(false); formatFileAction->setToolTip(i18n("Format files")); formatFileAction->setWhatsThis(i18n("<b>Fomat files</b><p>Formatting functionality using <b>astyle</b> library. " "Also available in <b>New Class</b> and <b>Subclassing</b> wizards.")); formatFileAction->setEnabled ( true ); m_configProxy = new ConfigWidgetProxy(core()); m_configProxy->createGlobalConfigPage(i18n("Formatting"), GLOBALDOC_OPTIONS, info()->icon()); m_configProxy->createProjectConfigPage(i18n("Formatting"), PROJECTDOC_OPTIONS, info()->icon()); connect(m_configProxy, SIGNAL(insertConfigWidget(const KDialogBase* ,QWidget*,unsigned int)), this, SLOT(insertConfigWidget(const KDialogBase*,QWidget*,unsigned int))); connect(partController(), SIGNAL(activePartChanged(KParts::Part*)), this, SLOT(activePartChanged(KParts::Part*))); connect( core(), SIGNAL(contextMenu(QPopupMenu *, const Context *)), this, SLOT(contextMenu(QPopupMenu *, const Context *)) ); loadGlobal(); //use the globals first, project level will override later.. m_project=m_global; m_projectExtensions = m_globalExtensions; setExtensions(m_globalExtensions.join("\n"),false); // maybe there is a file open already activePartChanged( partController()->activePart() ); }
void RubySupportPart::slotSwitchToView() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb") switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); KURL::List urls; QDir viewsDir; QDir viewsDirS = QDir(project()->projectDirectory() + "/app/views/" + switchTo); QDir viewsDirP = QDir(project()->projectDirectory() + "/app/views/" + switchTo + "s"); if (viewsDirS.exists()) viewsDir = viewsDirS; else if (viewsDirP.exists()) viewsDir = viewsDirP; else return; QStringList views = viewsDir.entryList(); for (QStringList::const_iterator it = views.begin(); it != views.end(); ++it) { QString viewName = *it; if ( !(viewName.endsWith("~") || viewName == "." || viewName == "..") ) urls << KURL::fromPathOrURL(viewsDir.absPath() + "/" + viewName); } KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); if (qo) qo->quickOpenFile(urls); }
QString RubySupportPart::runDirectory() { QString cwd = DomUtil::readEntry(*projectDom(), "/kdevscriptproject/run/globalcwd"); if (cwd.isEmpty()) { QString mainProg = DomUtil::readEntry(*projectDom(), "/kdevrubysupport/run/mainprogram"); KParts::ReadOnlyPart *ro_part = dynamic_cast<KParts::ReadOnlyPart*>(partController()->activePart()); if (mainProg.isEmpty() && ro_part) cwd = ro_part->url().directory(); else cwd = project()->buildDirectory(); } return cwd; }
void RubySupportPart::slotSwitchToModel() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb" && (name.endsWith("_controller") || name.endsWith("_test"))) { switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); } if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); QString modelsDir = project()->projectDirectory() + "/app/models/"; QString singular = modelsDir + switchTo + "_controller.rb"; QString plural = modelsDir + switchTo + "s_controller.rb"; KURL url = KURL::fromPathOrURL(QFile::exists(singular) ? singular : plural); partController()->editDocument(KURL::fromPathOrURL(modelsDir + switchTo + ".rb")); }
BashSupportPart::BashSupportPart(QObject *parent, const char *name, const QStringList& ) : KDevLanguageSupport (&data, parent, name ? name : "BashSupportPart" ) { setInstance(BashSupportFactory::instance()); setXMLFile("kdevbashsupport.rc"); KAction *action; action = new KAction( i18n("&Run"), "exec",Key_F9,this, SLOT(slotRun()),actionCollection(), "build_execute" ); action->setToolTip(i18n("Run")); action->setWhatsThis(i18n("<b>Run</b><p>Starts an application.")); kdDebug() << "Creating BashSupportPart" << endl; connect( core(), SIGNAL(projectConfigWidget(KDialogBase*)), this, SLOT(projectConfigWidget(KDialogBase*)) ); connect( core(), SIGNAL(projectOpened()), this, SLOT(projectOpened()) ); connect( core(), SIGNAL(projectClosed()), this, SLOT(projectClosed()) ); connect( partController(), SIGNAL(savedFile(const KURL&)), this, SLOT(savedFile(const KURL&)) ); connect(partController(), SIGNAL(activePartChanged(KParts::Part*)), this, SLOT(slotActivePartChanged(KParts::Part *))); m_cc = new BashCodeCompletion(); }
QString RubySupportPart::mainProgram() { QString prog; int runMainProgram = DomUtil::readIntEntry(*projectDom(), "/kdevrubysupport/run/runmainprogram"); if (runMainProgram == 0) { prog = project()->projectDirectory() + "/" + DomUtil::readEntry(*projectDom(), "/kdevrubysupport/run/mainprogram"); } else { KParts::ReadOnlyPart *ro_part = dynamic_cast<KParts::ReadOnlyPart*>(partController()->activePart()); if (ro_part != 0) { prog = ro_part->url().path(); } } return prog; }
void RubySupportPart::slotSwitchToTest() { KParts::Part *activePart = partController()->activePart(); if (!activePart) return; KParts::ReadOnlyPart *ropart = dynamic_cast<KParts::ReadOnlyPart*>(activePart); if (!ropart) return; QFileInfo file(ropart->url().path()); if (!file.exists()) return; QString ext = file.extension(); QString name = file.baseName(); QString switchTo = ""; if (ext == "rjs" || ext == "rxml" || ext == "rhtml" || ext == "js.rjs" || ext == "xml.builder" || ext == "html.erb") { //this is a view already, let's show the list of all views for this model switchTo = file.dir().dirName(); } else if (ext == "rb") switchTo = name.remove(QRegExp("_controller$")).remove(QRegExp("_controller_test$")).remove(QRegExp("_test$")); if (switchTo.isEmpty()) return; if (switchTo.endsWith("s")) switchTo = switchTo.mid(0, switchTo.length() - 1); KURL::List urls; QString testDir = project()->projectDirectory() + "/test/"; QString functionalTestS = testDir + "functional/" + switchTo + "_controller_test.rb"; QString functionalTestP = testDir + "functional/" + switchTo + "s_controller_test.rb"; QString integrationTestS = testDir + "integration/" + switchTo + "_test.rb"; QString integrationTestP = testDir + "integration/" + switchTo + "s_test.rb"; QString unitTestS = testDir + "unit/" + switchTo + "_test.rb"; QString unitTestP = testDir + "unit/" + switchTo + "s_test.rb"; if (QFile::exists(functionalTestP)) urls << KURL::fromPathOrURL(functionalTestP); if (QFile::exists(integrationTestP)) urls << KURL::fromPathOrURL(integrationTestP); if (QFile::exists(unitTestP)) urls << KURL::fromPathOrURL(unitTestP); if (QFile::exists(functionalTestS)) urls << KURL::fromPathOrURL(functionalTestS); if (QFile::exists(integrationTestS)) urls << KURL::fromPathOrURL(integrationTestS); if (QFile::exists(unitTestS)) urls << KURL::fromPathOrURL(unitTestS); KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); if (qo && !urls.isEmpty()) qo->quickOpenFile(urls); }
void FileSelectorPart::newFile() { KDevCreateFile *creator = extension<KDevCreateFile>("KDevelop/CreateFile"); if (creator) { KDevCreateFile::CreatedFile file = creator->createNewFile("", m_filetree->dirOperator()->url().path()); if (file.status == KDevCreateFile::CreatedFile::STATUS_NOTCREATED) KMessageBox::error(0, i18n("Cannot create file. Check whether the directory and filename are valid.")); else if (file.status != KDevCreateFile::CreatedFile::STATUS_CANCELED) { partController()->editDocument(KURL::fromPathOrURL( file.dir + "/" + file.filename)); } } }
RubySupportPart::RubySupportPart(QObject *parent, const char *name, const QStringList& ) : KDevLanguageSupport (&data, parent, name ? name : "RubySupportPart" ) { setInstance(RubySupportFactory::instance()); setXMLFile("kdevrubysupport.rc"); KAction *action; action = new KAction( i18n("&Run"), "exec", SHIFT + Key_F9, this, SLOT(slotRun()), actionCollection(), "build_execute" ); action->setToolTip(i18n("Run")); action->setWhatsThis(i18n("<b>Run</b><p>Starts an application.")); action->setIcon("ruby_run.png"); action = new KAction( i18n("Run Test Under Cursor"), "exec", ALT + Key_F9, this, SLOT(slotRunTestUnderCursor()), actionCollection(), "build_execute_test_function" ); action->setToolTip(i18n("Run Test Under Cursor")); action->setWhatsThis(i18n("<b>Run Test Under Cursor</b><p>Runs the function under the cursor as test.")); action = new KAction( i18n("Launch Browser"), "network", 0, this, SLOT(slotBrowse()), actionCollection(), "build_launch_browser" ); action->setToolTip(i18n("Launch Browser")); action->setWhatsThis(i18n("<b>Launch Browser</b><p>Opens a web browser pointing to the Ruby Rails server") ); action = new KAction( i18n("Switch To Controller"), 0, CTRL+ALT+Key_1, this, SLOT(slotSwitchToController()), actionCollection(), "switch_to_controller" ); action = new KAction( i18n("Switch To Model"), 0, CTRL+ALT+Key_2, this, SLOT(slotSwitchToModel()), actionCollection(), "switch_to_model" ); action = new KAction( i18n("Switch To View"), 0, CTRL+ALT+Key_3, this, SLOT(slotSwitchToView()), actionCollection(), "switch_to_view" ); action = new KAction( i18n("Switch To Test"), 0, CTRL+ALT+Key_4, this, SLOT(slotSwitchToTest()), actionCollection(), "switch_to_test" ); kdDebug() << "Creating RubySupportPart" << endl; m_shellWidget = new KDevShellWidget( 0, "irb console"); m_shellWidget->setIcon( SmallIcon("ruby_config.png", KIcon::SizeMedium, KIcon::DefaultState, RubySupportPart::instance())); m_shellWidget->setCaption(i18n("Ruby Shell")); mainWindow()->embedOutputView( m_shellWidget, i18n("Ruby Shell"), i18n("Ruby Shell")); mainWindow()->raiseView( m_shellWidget ); connect( core(), SIGNAL(projectOpened()), this, SLOT(projectOpened()) ); connect( core(), SIGNAL(projectClosed()), this, SLOT(projectClosed()) ); connect( core(), SIGNAL(contextMenu(QPopupMenu *, const Context *)), this, SLOT(contextMenu(QPopupMenu *, const Context *)) ); connect( partController(), SIGNAL(savedFile(const KURL&)), this, SLOT(savedFile(const KURL&)) ); connect( core(), SIGNAL(projectConfigWidget(KDialogBase*)), this, SLOT(projectConfigWidget(KDialogBase*)) ); }
PythonSupportPart::PythonSupportPart(QObject *parent, const char *name, const QStringList &) : KDevLanguageSupport(&data, parent, name ? name : "PythonSupportPart") { setInstance(PythonSupportFactory::instance()); setXMLFile("kdevpythonsupport.rc"); connect( core(), SIGNAL(projectOpened()), this, SLOT(projectOpened()) ); connect( core(), SIGNAL(projectClosed()), this, SLOT(projectClosed()) ); connect( partController(), SIGNAL(savedFile(const KURL&)), this, SLOT(savedFile(const KURL&)) ); connect( core(), SIGNAL(projectConfigWidget(KDialogBase*)), this, SLOT(projectConfigWidget(KDialogBase*)) ); connect( core(), SIGNAL(contextMenu(QPopupMenu *, const Context *)), this, SLOT(contextMenu(QPopupMenu *, const Context *)) ); KAction *action; action = new KAction( i18n("Execute Program"), "exec", 0, this, SLOT(slotExecute()), actionCollection(), "build_exec" ); action->setToolTip( i18n("Execute program") ); action->setWhatsThis(i18n("<b>Execute program</b><p>Runs the Python program.")); action = new KAction( i18n("Execute String..."), "exec", 0, this, SLOT(slotExecuteString()), actionCollection(), "build_execstring" ); action->setToolTip( i18n("Execute string") ); action->setWhatsThis(i18n("<b>Execute String</b><p>Executes a string as Python code.")); action = new KAction( i18n("Start Python Interpreter"), "exec", 0, this, SLOT(slotStartInterpreter()), actionCollection(), "build_runinterpreter" ); action->setToolTip( i18n("Start Python interpreter") ); action->setWhatsThis(i18n("<b>Start python interpreter</b><p>Starts the Python interpreter without a program")); action = new KAction( i18n("Python Documentation..."), 0, this, SLOT(slotPydoc()), actionCollection(), "help_pydoc" ); action->setToolTip( i18n("Python documentation") ); action->setWhatsThis(i18n("<b>Python documentation</b><p>Shows a Python documentation page.")); }
FileSelectorPart::FileSelectorPart(QObject *parent, const char *name, const QStringList &) : KDevPlugin(&data, parent, name ? name : "FileSelectorPart") { setInstance(FileSelectorFactory::instance()); m_filetree = new KDevFileSelector( this, mainWindow(), partController(), 0, "fileselectorwidget" ); connect( m_filetree->dirOperator(), SIGNAL(fileSelected(const KFileItem*)), this, SLOT(fileSelected(const KFileItem*))); connect( core(), SIGNAL(projectOpened()), this, SLOT(slotProjectOpened()) ); connect( core(), SIGNAL(configWidget(KDialogBase*)), this, SLOT(slotConfigWidget(KDialogBase*)) ); m_filetree->setCaption( i18n("File Selector") ); m_filetree->setIcon( SmallIcon( info()->icon() ) ); mainWindow()->embedSelectView( m_filetree, i18n("File Selector"), i18n("File selector") ); QWhatsThis::add(m_filetree, i18n("<b>File selector</b><p>This file selector lists directory contents and provides some file management functions.")); m_filetree->readConfig( instance()->config(), "fileselector" ); m_newFileAction = new KAction(i18n("New File..."), CTRL+ALT+SHIFT+Key_N, this, SLOT(newFile()), this); }
bool RubyDebuggerPart::startDebugger() { QString build_dir; // Currently selected build directory QString run_directory; // Directory from where the program should be run QString program; // Absolute path to application QString run_arguments; // Command line arguments to be passed to the application QString ruby_interpreter; // Absolute path to the ruby interpreter QString debuggee_path; // Absolute path to debuggee.rb debugger script bool show_constants; // Show constants in the debugger bool trace_into_ruby; // Trace into the ruby code installed under sitedir if (project()) { build_dir = project()->buildDirectory(); run_directory = DomUtil::readEntry(*projectDom(), "/kdevscriptproject/run/globalcwd"); if (run_directory.isEmpty()) run_directory = project()->buildDirectory(); } int runMainProgram = DomUtil::readIntEntry(*projectDom(), "/kdevrubysupport/run/runmainprogram"); if (runMainProgram == 0) { program = project()->projectDirectory() + "/" + DomUtil::readEntry(*projectDom(), "/kdevrubysupport/run/mainprogram"); } else { KParts::ReadOnlyPart *ro_part = dynamic_cast<KParts::ReadOnlyPart*>(partController()->activePart()); if (ro_part != 0) { program = ro_part->url().path(); } } run_arguments = DomUtil::readEntry(*projectDom(), "/kdevrubysupport/run/programargs"); QString shell = DomUtil::readEntry(*projectDom(), "/kdevrbdebugger/general/dbgshell"); if( !shell.isEmpty() ) { QFileInfo info( shell ); if( info.isRelative() ) { shell = build_dir + "/" + shell; info.setFile( shell ); } if( !info.exists() ) { KMessageBox::error( mainWindow()->main(), i18n("Could not locate the debugging shell '%1'.").arg( shell ), i18n("Debugging Shell Not Found") ); return false; } } core()->running(this, true); stateChanged( QString("active") ); KActionCollection *ac = actionCollection(); ac->action("debug_run")->setText( i18n("&Continue") ); // ac->action("debug_run")->setIcon( "dbgrun" ); ac->action("debug_run")->setToolTip( i18n("Continues the application execution") ); ac->action("debug_run")->setWhatsThis( i18n("Continue application execution\n\n" "Continues the execution of your application in the " "debugger. This only takes effect when the application " "has been halted by the debugger (i.e. a breakpoint has " "been activated or the interrupt was pressed).") ); // mainWindow()->setViewAvailable(variableWidget, true); mainWindow()->setViewAvailable(framestackWidget, true); mainWindow()->setViewAvailable(rdbOutputWidget, true); // variableWidget->setEnabled(true); framestackWidget->setEnabled(true); rdbOutputWidget->clear(); rdbOutputWidget->setEnabled(true); if (DomUtil::readBoolEntry(*projectDom(), "/kdevrbdebugger/general/floatingtoolbar", false)) { floatingToolBar = new DbgToolBar(this, mainWindow()->main()); floatingToolBar->show(); } ruby_interpreter = DomUtil::readEntry(*projectDom(), "/kdevrubysupport/run/interpreter"); int coding = DomUtil::readIntEntry(*projectDom(), "/kdevrubysupport/run/charactercoding"); QString character_coding("-K"); switch (coding) { case 0: character_coding.append("A"); break; case 1: character_coding.append("E"); break; case 2: character_coding.append("S"); break; case 3: character_coding.append("U"); break; } // ruby_interpreter.append(QString(" -K") + code); debuggee_path = ::locate("data", "kdevrbdebugger/debuggee.rb", instance()); show_constants = DomUtil::readBoolEntry(*projectDom(), "/kdevrbdebugger/general/showconstants"); trace_into_ruby = DomUtil::readBoolEntry(*projectDom(), "/kdevrbdebugger/general/traceintoruby"); controller->slotStart(ruby_interpreter, character_coding, run_directory, debuggee_path, program, run_arguments, show_constants, trace_into_ruby); return true; }
void AStylePart::beautifySource() { KTextEditor::EditInterface *iface = dynamic_cast<KTextEditor::EditInterface*>(partController()->activePart()); if (!iface) return; bool has_selection = false; KTextEditor::SelectionInterface *sel_iface = dynamic_cast<KTextEditor::SelectionInterface*>(partController()->activePart()); if (sel_iface && sel_iface->hasSelection()) has_selection = true; //if there is a selection, we only format it. ASStringIterator is(has_selection ? sel_iface->selection() : iface->text()); KDevFormatter formatter(m_project); formatter.init(&is); QString output; QTextStream os(&output, IO_WriteOnly); // put the selection back to the same indent level. // taking note of the config options. unsigned int indentCount=0; QString indentWith(""); if ( has_selection){ QString original = sel_iface->selection(); for (;indentCount<original.length();indentCount++){ QChar ch = original[indentCount]; if ( ch.isSpace()){ if ( ch == QChar('\n') || ch == QChar('\r')){ indentWith=""; } else{ indentWith+=original[indentCount]; } } else{ break; } } int wsCount = m_project["FillCount"].toInt(); if (m_project["Fill"].toString() == "Tabs") { // tabs and wsCount spaces to be a tab QString replace; for (int i =0;i<wsCount;i++) replace+=' '; indentWith=indentWith.replace(replace, QChar('\t')); indentWith=indentWith.remove(' '); } else { if ( m_project["FillForce"].toBool()){ //convert tabs to spaces QString replace; for (int i =0;i<wsCount;i++) replace+=' '; indentWith=indentWith.replace(QChar('\t'),replace); } } } while (formatter.hasMoreLines()){ if ( has_selection ){ os << indentWith; } os << QString::fromUtf8(formatter.nextLine().c_str()) << endl; } uint col = 0; uint line = 0; if(has_selection) //there was a selection, so only change the part of the text related to it { //remove the final newline character, unless it should be there if ( !sel_iface->selection().endsWith( "\n" ) ) output.setLength(output.length()-1); sel_iface->removeSelectedText(); cursorPos( partController()->activePart(), &col, &line ); iface->insertText( col, line, output); return; } cursorPos( partController()->activePart(), &col, &line ); iface->setText( output ); setCursorPos( partController()->activePart(), col, line ); }
void FileSelectorPart::fileSelected( const KFileItem * file ) { KURL u(file->url()); partController()->editDocument( u ); }
void RubyDebuggerPart::slotGotoSource(const QString &fileName, int lineNum) { if ( ! fileName.isEmpty() ) partController()->editDocument(KURL( fileName ), lineNum); }