# HG changeset patch # User Torsten # Date 1407691902 -7200 # Node ID 00b1d60500bd76f5bd80b3457b3f6c5e7ed0dad2 # Parent 2675b285f55f4710d11c37ab87882f6fad014ffb improved finding a function file for editing in gui (case 1 in bug #41509) * octave-qscintilla.cc (contextmenu_edit): call F__which__ to get the correct path of a function file even it is a class function diff -r 2675b285f55f -r 00b1d60500bd libgui/src/m-editor/octave-qscintilla.cc --- a/libgui/src/m-editor/octave-qscintilla.cc Thu Aug 07 11:44:56 2014 -0400 +++ b/libgui/src/m-editor/octave-qscintilla.cc Sun Aug 10 19:31:42 2014 +0200 @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include "octave-qscintilla.h" #include "file-editor-tab.h" @@ -265,7 +267,40 @@ void octave_qscintilla::contextmenu_edit (bool) { - emit execute_command_in_terminal_signal (QString("edit ") + _word_at_cursor); + octave_value_list fct = F__which__ (ovl (_word_at_cursor.toStdString ()),0); + octave_map map = fct(0).map_value (); + + QString type = QString::fromStdString ( + map.contents ("type").data ()[0].string_value ()); + QString name = QString::fromStdString ( + map.contents ("name").data ()[0].string_value ()); + + QString message = QString (); + + if (type.isEmpty ()) + message = tr ("Can not find function %1"); + else if (type == QString("built-in function")) + message = tr ("%1 is a built-in function"); + + if (! message.isEmpty ()) + { + QMessageBox *msgBox + = new QMessageBox (QMessageBox::Critical, + tr ("Octave Editor"), + message.arg (name), + QMessageBox::Ok, this); + + msgBox->setWindowModality (Qt::NonModal); + msgBox->setAttribute (Qt::WA_DeleteOnClose); + msgBox->show (); + return; + } + + QString filename = QString::fromStdString ( + map.contents ("file").data ()[0].string_value ()); + + emit execute_command_in_terminal_signal (QString("edit ") + + "\""+filename+"\""); } void