26#if defined (HAVE_CONFIG_H)
30#include <QApplication>
35#include <QInputDialog>
41#include <QSignalMapper>
54 m_filter_checkbox (new QCheckBox ()),
55 m_filter (new QComboBox (this)),
56 m_filter_widget (new
QWidget (this))
58 setWindowIcon (QIcon (
":/actions/icons/logo.png"));
60 setStatusTip (tr (
"View the variables in the active workspace."));
62 m_filter->setToolTip (tr (
"Enter text to filter the workspace"));
65 m_filter->setInsertPolicy (QComboBox::NoInsert);
66 m_filter->setSizeAdjustPolicy (QComboBox::AdjustToMinimumContentsLengthWithIcon);
67 QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
69 m_filter->completer ()->setCaseSensitivity (Qt::CaseSensitive);
73 m_view->setWordWrap (
false);
74 m_view->setContextMenuPolicy (Qt::CustomContextMenu);
75 m_view->setShowGrid (
false);
76 (
m_view->verticalHeader) ()->hide ();
77 m_view->setAlternatingRowColors (
true);
84 QHBoxLayout *filter_layout =
new QHBoxLayout ();
86 filter_layout->addWidget (filter_label);
89 filter_layout->setMargin (0);
93 QVBoxLayout *ws_layout =
new QVBoxLayout ();
95 ws_layout->addWidget (
m_view);
96 ws_layout->setSpacing (0);
106 ws_layout->setMargin (2);
109 widget ()->setLayout (ws_layout);
114 m_view->setSortingEnabled (
true);
116 m_view->horizontalHeader ()->restoreState
120 m_view->horizontalHeader ()->setSectionsClickable (
true);
121 m_view->horizontalHeader ()->setSectionsMovable (
true);
122 m_view->horizontalHeader ()->setSortIndicator (
128 m_view->horizontalHeader ()->setSortIndicatorShown (
true);
130 m_view->horizontalHeader ()->setContextMenuPolicy (Qt::CustomContextMenu);
131 connect (
m_view->horizontalHeader (),
132 &QTableView::customContextMenuRequested,
146 connect (
m_filter, &QComboBox::editTextChanged,
150 connect (
m_filter->lineEdit (), &QLineEdit::editingFinished,
153 connect (
m_view, &QTableView::customContextMenuRequested,
156 connect (
m_view, &QTableView::activated,
195 tool_tip = QString (tr (
"View the variables in the active workspace.<br>"));
196 tool_tip += QString (tr (
"Colors for variable attributes:"));
201 QString (R
"(<div style="background-color:%1;color:%2">%3</div>)")
209 setToolTip (tool_tip);
222 m_view->horizontalHeader ()->saveState ());
224 int sort_column =
m_view->horizontalHeader ()->sortIndicatorSection ();
225 Qt::SortOrder sort_order =
m_view->horizontalHeader ()->sortIndicatorOrder ();
233 for (
int i = 0; i <
m_filter->count (); i++)
234 mru.append (
m_filter->itemText (i));
280 QString text =
m_filter->currentText ();
281 int index =
m_filter->findText (text);
294 QSignalMapper sig_mapper (
this);
303 &sig_mapper, SLOT (map ()));
304 sig_mapper.setMapping (action, i);
305 action->setCheckable (
true);
323 connect (&sig_mapper, SIGNAL (mapped (
int)),
326 menu.exec (
m_view->mapToGlobal (mpos));
336 bool shown =
settings->value (key,
true).toBool ();
338 m_view->setColumnHidden (col + 1, shown);
351 QModelIndex index =
m_view->indexAt (qpos);
354 if (index.isValid () && index.column () == 0)
358 menu.addAction (tr (
"Open in Variable Editor"),
this,
361 menu.addAction (tr (
"Copy name"),
this,
364 menu.addAction (tr (
"Copy value"),
this,
368 = menu.addAction (tr (
"Rename"),
this,
375 rename->setDisabled (
true);
376 rename->setToolTip (tr (
"Only top-level symbols may be renamed"));
379 menu.addAction (
"Clear " + var_name,
this,
382 menu.addSeparator ();
384 menu.addAction (
"disp (" + var_name +
')',
this,
387 menu.addAction (
"plot (" + var_name +
')',
this,
390 menu.addAction (
"stem (" + var_name +
')',
this,
393 menu.addSeparator ();
398 menu.addAction (tr (
"Hide filter"),
this,
401 menu.addAction (tr (
"Show filter"),
this,
404 menu.exec (
m_view->mapToGlobal (qpos));
410 QModelIndex index =
m_view->currentIndex ();
412 if (index.isValid ())
416 QClipboard *clipboard = QApplication::clipboard ();
418 clipboard->setText (var_name);
425 QModelIndex index =
m_view->currentIndex ();
427 if (index.isValid ())
434 QModelIndex index =
m_view->currentIndex ();
436 if (index.isValid ())
440 QInputDialog *inputDialog =
new QInputDialog ();
442 inputDialog->setOptions (QInputDialog::NoButtons);
447 = inputDialog->getText (
nullptr,
"Rename Variable",
"New name:",
448 QLineEdit::Normal, var_name, &ok);
450 if (ok && ! new_name.isEmpty ())
458 QModelIndex index =
m_view->currentIndex ();
460 if (index.isValid ())
503 QFontMetrics fm =
m_view->fontMetrics ();
504 int row_height = fm.height ();
507 m_view->setRowHeight (i, row_height);
528 QModelIndex index =
m_view->currentIndex ();
530 if (index.isValid ())
549 QAbstractItemModel *m =
m_view->model ();
552 = m->itemData (index.sibling (index.row (), 0));
554 return item_data[0].toString ();
Base class for Octave interfaces that use Qt.
resource_manager & get_resource_manager(void)
gui_settings * get_settings(void) const
bool is_top_level(void) const
QColor storage_class_color(int s_class)
void notice_settings(const gui_settings *)
int m_view_previous_row_count
void handle_contextmenu_stem(void)
void toggle_header(int column)
void rename_variable_signal(const QString &, const QString &)
Signal that user wants to rename a variable.
void set_filter_focus(bool focus)
void header_contextmenu_requested(const QPoint &mpos)
void relay_contextmenu_command(const QString &cmdname, bool str=false)
void handle_contextmenu_filter(void)
void handle_contextmenu_edit(void)
void contextmenu_requested(const QPoint &pos)
void filter_activate(bool enable)
void handle_contextmenu_plot(void)
workspace_model * m_model
void notice_settings(const gui_settings *)
void update_filter_history(void)
void command_requested(const QString &cmd)
Signal that user had requested a command on a variable.
void handle_model_changed(void)
QCheckBox * m_filter_checkbox
void handle_contextmenu_copy_value(void)
void setModel(workspace_model *model)
void handle_contextmenu_clear(void)
void edit_variable_signal(const QString &)
Signal that user wants to edit a variable.
void handle_contextmenu_rename(void)
void handle_contextmenu_disp(void)
void copy_variable_value_to_clipboard(const QString &)
Signal that user wnats to copy a variable value to the clipboard.
void filter_update(const QString &expression)
QWidget * m_filter_widget
workspace_view(QWidget *parent, base_qobject &oct_qobj)
QString get_var_name(const QModelIndex &index)
QSortFilterProxyModel m_filter_model
void handle_contextmenu_copy(void)
void translate(Matrix &m, double x, double y, double z)
const QStringList ws_columns_shown(QStringList()<< QT_TRANSLATE_NOOP("octave::workspace_view", "Class")<< QT_TRANSLATE_NOOP("octave::workspace_view", "Dimension")<< QT_TRANSLATE_NOOP("octave::workspace_view", "Value")<< QT_TRANSLATE_NOOP("octave::workspace_view", "Attribute"))
const gui_pref ws_column_state("workspaceview/column_state", QVariant())
const gui_pref ws_sort_order("workspaceview/sort_order", QVariant(Qt::AscendingOrder))
const gui_pref ws_filter_shown("workspaceview/filter_shown", QVariant(true))
const QStringList ws_color_names(QStringList()<< QT_TRANSLATE_NOOP("octave::settings_dialog", "argument")<< QT_TRANSLATE_NOOP("octave::settings_dialog", "global")<< QT_TRANSLATE_NOOP("octave::settings_dialog", "persistent"))
const gui_pref ws_mru_list("workspaceview/mru_list", QVariant())
const QStringList ws_columns_shown_keys(QStringList()<< "workspaceview/show_class"<< "workspaceview/show_dimension"<< "workspaceview/show_value"<< "workspaceview/show_attribute")
const gui_pref ws_sort_column("workspaceview/sort_by_column", QVariant(0))
const gui_pref ws_enable_colors("workspaceview/enable_colors", QVariant(false))
const gui_pref ws_max_filter_history("workspaceview/max_filter_history", QVariant(10))
const gui_pref ws_filter_active("workspaceview/filter_active", QVariant(false))
const gui_pref ws_hide_tool_tips("workspaceview/hide_tools_tips", QVariant(false))
const int ws_colors_count
int rename(const std::string &from, const std::string &to)
static uint32_t state[624]