annotate libgui/src/files-dock-widget.cc @ 31619:ad014fc78bd6

use individual local gui_settings objects Previously, we created a single gui_settings object (derived from QSettings) and accessed it from the resource_manager object. That design is not necessary and is not the way QSettings was designed to be used. Instead of managing a single object, we should be using individual QSettings objects where needed. Each individual QSettings object manages thread-safe access to a single global collection of settings. The Qt docs say that operations on QSettings are not thread safe, but that means that you can't create a QSettings object in one thread and use it in another without some locking. I'm not sure whether we were doing that correctly, but with this change it no longer matters. Each QSettings object does perform locking when reading or writing the underlying global data. * resource-manager.h, resource-manager.cc (resource_manager::m_settings): Delete data member. (resource_manager::get_settings): Delete. * annotation-dialog.cc, QTerminal.cc, QTerminal.h, command-widget.cc, command-widget.h, community-news.cc, dialog.cc, documentation-bookmarks.cc, documentation-bookmarks.h, documentation-dock-widget.cc, documentation-dock-widget.h, documentation.cc, documentation.h, dw-main-window.cc, dw-main-window.h, external-editor-interface.cc, files-dock-widget.cc, files-dock-widget.h, find-files-dialog.cc, history-dock-widget.cc, history-dock-widget.h, file-editor-interface.h, file-editor-tab.cc, file-editor-tab.h, file-editor.cc, file-editor.h, find-dialog.cc, octave-qscintilla.cc, main-window.cc, main-window.h, news-reader.cc, octave-dock-widget.cc, octave-dock-widget.h, qt-interpreter-events.cc, qt-interpreter-events.h, release-notes.cc, resource-manager.cc, resource-manager.h, set-path-dialog.cc, settings-dialog.cc, settings-dialog.h, shortcut-manager.cc, shortcut-manager.h, terminal-dock-widget.cc, terminal-dock-widget.h, variable-editor.cc, variable-editor.h, welcome-wizard.cc, workspace-model.cc, workspace-model.h, workspace-view.cc: Use local gui_settings objects instead of accessing a pointer to a single gui_settings object owned by the resource_manager object.
author John W. Eaton <jwe@octave.org>
date Fri, 02 Dec 2022 14:23:53 -0500
parents 4869dc33405a
children 0645ea65ca6b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30398
diff changeset
3 // Copyright (C) 2011-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21662
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21203
diff changeset
27 # include "config.h"
15286
ae9079bbc627 Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents: 15204
diff changeset
28 #endif
ae9079bbc627 Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents: 15204
diff changeset
29
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
30 #include <QApplication>
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
31 #include <QClipboard>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
32 #include <QCompleter>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
33 #include <QDebug>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
34 #include <QDesktopServices>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
35 #include <QFileDialog>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36 #include <QFileInfo>
15461
1e64aff609c3 save/restore column state and sorting (column and order) in files-widget
Torsten <ttl@justmail.de>
parents: 15368
diff changeset
37 #include <QHeaderView>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
38 #include <QInputDialog>
16498
605d7f0ee0d8 Added Filesdockwidget recently viewed directory pulldownlist
John Donoghue <john.donoghue@ieee.org>
parents: 16487
diff changeset
39 #include <QLineEdit>
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
40 #include <QMenu>
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
41 #include <QMessageBox>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
42 #include <QProcess>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
43 #include <QSizePolicy>
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
44 #include <QStyledItemDelegate>
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
45 #include <QTimer>
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
46 #include <QToolButton>
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
47 #include <QUrl>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
48
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
49 #include "files-dock-widget.h"
27560
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
50 #include "gui-preferences-fb.h"
27671
61883a1a80a1 don't include gui-preferences-global.h in gui-preferences.h
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
51 #include "gui-preferences-global.h"
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
52 #include "gui-settings.h"
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
53 #include "octave-qobject.h"
29560
5b7e721844df provide QOverload template if it is not in <QtGlobal> (bug #60416)
John W. Eaton <jwe@octave.org>
parents: 29542
diff changeset
54 #include "octave-qtutils.h"
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
55 #include "qt-interpreter-events.h"
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
56
20017
4b7b7ac7af2c use get_home_directory instead of getenv ("HOME") (bug #44694)
John W. Eaton <jwe@octave.org>
parents: 20000
diff changeset
57 #include "oct-env.h"
16555
04fb96f4bea1 allow double-click in file browser to load data files
John W. Eaton <jwe@octave.org>
parents: 16542
diff changeset
58
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
59 namespace octave
15461
1e64aff609c3 save/restore column state and sorting (column and order) in files-widget
Torsten <ttl@justmail.de>
parents: 15368
diff changeset
60 {
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
61 class FileTreeViewer : public QTreeView
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
62 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
63 public:
22177
6e9f5408c0db Save settings in Qt convention, delete all children in destructors (bug #45366)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 22022
diff changeset
64
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
65 FileTreeViewer (QWidget *p) : QTreeView (p) { }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
66
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
67 ~FileTreeViewer (void) = default;
22177
6e9f5408c0db Save settings in Qt convention, delete all children in destructors (bug #45366)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 22022
diff changeset
68
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
69 void mousePressEvent (QMouseEvent *e)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
70 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
71 if (e->button () != Qt::RightButton)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
72 QTreeView::mousePressEvent (e);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
73 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
74 };
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
75
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
76 // to have file renamed in the file tree, it has to be renamed in
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
77 // QFileSystemModel::setData.
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
78 // For the editor to behave correctly, some signals must be sent before
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
79 // and after the rename
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
80 class file_system_model : public QFileSystemModel
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
81 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
82 public:
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
83 file_system_model (files_dock_widget *p) : QFileSystemModel (p) {}
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
84
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
85 ~file_system_model () = default;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
86
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
87 bool setData (const QModelIndex &idx, const QVariant &value,
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
88 int role) override
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
89 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
90 if (!idx.isValid () || idx.column () != 0 || role != Qt::EditRole
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
91 || (flags (idx) & Qt::ItemIsEditable) == 0)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
92 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
93 return false;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
94 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
95
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
96 QString new_name = value.toString ();
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
97 QString old_name = idx.data ().toString ();
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
98 if (new_name == old_name)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
99 return true;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
100 if (new_name.isEmpty ()
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
101 || QDir::toNativeSeparators (new_name).contains (QDir::separator ()))
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
102 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
103 display_rename_failed_message (old_name, new_name);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
104 return false;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
105 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
106
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
107 auto parent_dir = QDir(filePath (parent (idx)));
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
108
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
109 files_dock_widget *fdw = static_cast<files_dock_widget*>(parent());
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
110
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
111
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
112 fdw->file_remove_signal(parent_dir.filePath(old_name), parent_dir.filePath(new_name));
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
113
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
114 if (!parent_dir.rename (old_name, new_name))
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
115 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
116 display_rename_failed_message (old_name, new_name);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
117 fdw->file_renamed_signal(false);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
118 return false;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
119 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
120
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
121 fdw->file_renamed_signal(true);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
122
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
123 emit fileRenamed(parent_dir.absolutePath(), old_name, new_name);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
124 revert();
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
125
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
126 return true;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
127 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
128
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
129 private:
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
130 void display_rename_failed_message (const QString &old_name,
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
131 const QString &new_name)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
132 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
133 const QString message =
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
134
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
135 files_dock_widget::tr ("Could not rename file \"%1\" to \"%2\".")
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
136 .arg (old_name)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
137 .arg (new_name);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
138 QMessageBox::information (static_cast<QWidget *> (parent ()),
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
139 QFileSystemModel::tr ("Invalid filename"),
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
140 message, QMessageBox::Ok);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
141 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
142 };
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
143
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
144 // Delegate to improve ergonomy of file renaming by pre-selecting the text
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
145 // before the extension.
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
146 class RenameItemDelegate : public QStyledItemDelegate
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
147 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
148 public:
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
149 RenameItemDelegate (QObject *parent = nullptr)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
150 : QStyledItemDelegate{ parent }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
151 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
152 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
153
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
154 void setEditorData (QWidget *editor,
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
155 const QModelIndex &index) const override
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
156 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
157 QLineEdit *line_edit = qobject_cast<QLineEdit *> (editor);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
158
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
159 if (!line_edit)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
160 {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
161 QStyledItemDelegate::setEditorData (editor, index);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
162 return;
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
163 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
164
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
165 QString filename = index.data (Qt::EditRole).toString ();
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
166
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
167 int select_len = filename.indexOf (QChar ('.'));
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
168 if (select_len == -1)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
169 select_len = filename.size ();
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
170
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
171 line_edit->setText (filename);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
172
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
173 // Qt calls QLineEdit::selectAll after this function is called, so to
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
174 // actually restrict the selection, we have to post the modification at
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
175 // the end of the event loop.
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
176 // QTimer allows this easily with 0 as timeout.
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
177 QTimer::singleShot (0, [=] () {
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
178 line_edit->setSelection (0, select_len);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
179 });
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
180 }
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
181 };
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
182
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
183 files_dock_widget::files_dock_widget (QWidget *p, base_qobject& oct_qobj)
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
184 : octave_dock_widget ("FilesDockWidget", p, oct_qobj)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
185 {
25508
3edae6ba1fcd use a custom title bar widget for the main dock widgets
Torsten <mttl@mailbox.org>
parents: 25408
diff changeset
186 set_title (tr ("File Browser"));
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
187 setToolTip (tr ("Browse your files"));
16498
605d7f0ee0d8 Added Filesdockwidget recently viewed directory pulldownlist
John Donoghue <john.donoghue@ieee.org>
parents: 16487
diff changeset
188
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
189 m_sig_mapper = nullptr;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
190
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
191 m_columns_shown = QStringList ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
192 m_columns_shown.append (tr ("File size"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
193 m_columns_shown.append (tr ("File type"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
194 m_columns_shown.append (tr ("Date modified"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
195 m_columns_shown.append (tr ("Show hidden"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
196 m_columns_shown.append (tr ("Alternating row colors"));
16498
605d7f0ee0d8 Added Filesdockwidget recently viewed directory pulldownlist
John Donoghue <john.donoghue@ieee.org>
parents: 16487
diff changeset
197
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
198 m_columns_shown_keys = QStringList ();
25851
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
199 m_columns_shown_keys.append (fb_show_size.key);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
200 m_columns_shown_keys.append (fb_show_type.key);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
201 m_columns_shown_keys.append (fb_show_date.key);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
202 m_columns_shown_keys.append (fb_show_hidden.key);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
203 m_columns_shown_keys.append (fb_show_altcol.key);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
204
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
205 m_columns_shown_defs = QList <QVariant> ();
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
206 m_columns_shown_defs.append (fb_show_size.def);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
207 m_columns_shown_defs.append (fb_show_type.def);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
208 m_columns_shown_defs.append (fb_show_date.def);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
209 m_columns_shown_defs.append (fb_show_hidden.def);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
210 m_columns_shown_defs.append (fb_show_altcol.def);
22177
6e9f5408c0db Save settings in Qt convention, delete all children in destructors (bug #45366)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 22022
diff changeset
211
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
212 QWidget *container = new QWidget (this);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
213
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
214 setWidget (container);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
215
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
216 // Create a toolbar
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
217 m_navigation_tool_bar = new QToolBar ("", container);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
218 m_navigation_tool_bar->setAllowedAreas (Qt::TopToolBarArea);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
219 m_navigation_tool_bar->setMovable (false);
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
220
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
221 m_current_directory = new QComboBox (m_navigation_tool_bar);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
222 m_current_directory->setToolTip (tr ("Enter the path or filename"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
223 m_current_directory->setEditable (true);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
224 m_current_directory->setMaxCount (MaxMRUDirs);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
225 m_current_directory->setInsertPolicy (QComboBox::NoInsert);
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
226 m_current_directory->setSizeAdjustPolicy (QComboBox::AdjustToMinimumContentsLengthWithIcon);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
227 QSizePolicy sizePol (QSizePolicy::Expanding, QSizePolicy::Preferred);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
228 m_current_directory->setSizePolicy (sizePol);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
229
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
230 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
231
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
232 QAction *directory_up_action
30811
0e88072e8265 use go-up icon as fallback for non-standard icon folder-up
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30810
diff changeset
233 = new QAction (rmgr.icon ("folder-up", false, "go-up"), "", m_navigation_tool_bar);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
234 directory_up_action->setToolTip (tr ("One directory up"));
14803
625be3eb27c5 Current directories now synchronize on top, in the file browser and the cwd in octave.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14728
diff changeset
235
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
236 m_sync_browser_directory_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
237 = new QAction (rmgr.icon ("go-first"), tr ("Show Octave directory"),
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
238 m_navigation_tool_bar);
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
239 m_sync_browser_directory_action->setToolTip (tr ("Go to current Octave directory"));
26368
7a6f7a81ccd0 files-dock-widget.cc: Fix static analyzer detected V601 issue (bug #55347)
Andreas Weber <octave@josoansi.de>
parents: 26300
diff changeset
240 m_sync_browser_directory_action->setEnabled (false);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
241
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
242 m_sync_octave_directory_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
243 = new QAction (rmgr.icon ("go-last"), tr ("Set Octave directory"),
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
244 m_navigation_tool_bar);
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
245 m_sync_octave_directory_action->setToolTip (tr ("Set Octave directory to current browser directory"));
26368
7a6f7a81ccd0 files-dock-widget.cc: Fix static analyzer detected V601 issue (bug #55347)
Andreas Weber <octave@josoansi.de>
parents: 26300
diff changeset
246 m_sync_octave_directory_action->setEnabled (false);
14803
625be3eb27c5 Current directories now synchronize on top, in the file browser and the cwd in octave.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14728
diff changeset
247
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
248 QToolButton *popdown_button = new QToolButton ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
249 popdown_button->setToolTip (tr ("Actions on current directory"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
250 QMenu *popdown_menu = new QMenu ();
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
251 popdown_menu->addAction (rmgr.icon ("user-home"),
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
252 tr ("Show Home Directory"), this,
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
253 SLOT (popdownmenu_home (bool)));
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
254 popdown_menu->addAction (m_sync_browser_directory_action);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
255 popdown_menu->addAction (m_sync_octave_directory_action);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
256 popdown_button->setMenu (popdown_menu);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
257 popdown_button->setPopupMode (QToolButton::InstantPopup);
30810
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30757
diff changeset
258 popdown_button->setDefaultAction (
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30757
diff changeset
259 new QAction (rmgr.icon ("folder-settings", false, "applications-system"),
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30757
diff changeset
260 "", m_navigation_tool_bar));
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
261
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
262 popdown_menu->addSeparator ();
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
263 popdown_menu->addAction (rmgr.icon ("folder"),
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
264 tr ("Set Browser Directory..."),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
265 this, &files_dock_widget::popdownmenu_search_dir);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
266 popdown_menu->addSeparator ();
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
267 popdown_menu->addAction (rmgr.icon ("edit-find"),
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
268 tr ("Find Files..."),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
269 this, &files_dock_widget::popdownmenu_findfiles);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
270 popdown_menu->addSeparator ();
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
271 popdown_menu->addAction (rmgr.icon ("document-new"),
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
272 tr ("New File..."),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
273 this, &files_dock_widget::popdownmenu_newfile);
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
274 popdown_menu->addAction (rmgr.icon ("folder-new"),
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
275 tr ("New Directory..."),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
276 this, &files_dock_widget::popdownmenu_newdir);
17790
86c6ae5f969e Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents: 17744
diff changeset
277
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
278 m_navigation_tool_bar->addWidget (m_current_directory);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
279 m_navigation_tool_bar->addAction (directory_up_action);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
280 m_navigation_tool_bar->addWidget (popdown_button);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
281
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
282 connect (directory_up_action, &QAction::triggered,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
283 this, &files_dock_widget::change_directory_up);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
284 connect (m_sync_octave_directory_action, &QAction::triggered,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
285 this, &files_dock_widget::do_sync_octave_directory);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
286 connect (m_sync_browser_directory_action, &QAction::triggered,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
287 this, &files_dock_widget::do_sync_browser_directory);
16499
facf00ce97d3 gui: configurable synchronization between file browser and octave directory
Torsten <ttl@justmail.de>
parents: 16498
diff changeset
288
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
289 gui_settings settings;
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
290
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
291 // Create the QFileSystemModel starting in the desired directory
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
292 QDir startup_dir; // take current dir
16499
facf00ce97d3 gui: configurable synchronization between file browser and octave directory
Torsten <ttl@justmail.de>
parents: 16498
diff changeset
293
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
294 if (settings.value (fb_restore_last_dir).toBool ())
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
295 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
296 // restore last dir from previous session
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
297 QStringList last_dirs
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
298 = settings.value (fb_mru_list.key).toStringList ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
299 if (last_dirs.length () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
300 startup_dir = QDir (last_dirs.at (0)); // last dir in previous session
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
301 }
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
302 else if (! settings.value (fb_startup_dir).toString ().isEmpty ())
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
303 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
304 // do not restore but there is a startup dir configured
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
305 startup_dir = QDir (settings.value (fb_startup_dir.key).toString ());
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
306 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
307
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
308 if (! startup_dir.exists ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
309 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
310 // the configured startup dir does not exist, take actual one
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
311 startup_dir = QDir ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
312 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
313
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
314 m_file_system_model = new file_system_model (this);
27960
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
315 m_file_system_model->setResolveSymlinks (false);
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
316 m_file_system_model->setFilter (
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
317 QDir::System | QDir::NoDotAndDotDot | QDir::AllEntries);
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
318 QModelIndex rootPathIndex
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
319 = m_file_system_model->setRootPath (startup_dir.absolutePath ());
16499
facf00ce97d3 gui: configurable synchronization between file browser and octave directory
Torsten <ttl@justmail.de>
parents: 16498
diff changeset
320
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
321 // Attach the model to the QTreeView and set the root index
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
322 m_file_tree_view = new FileTreeViewer (container);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
323 m_file_tree_view->setSelectionMode (QAbstractItemView::ExtendedSelection);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
324 m_file_tree_view->setModel (m_file_system_model);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
325 m_file_tree_view->setRootIndex (rootPathIndex);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
326 m_file_tree_view->setSortingEnabled (true);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
327 m_file_tree_view->setAlternatingRowColors (true);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
328 m_file_tree_view->setAnimated (true);
26300
ef7f95f89407 updated language files for translation (bug #55279)
Torsten <mttl@mailbox.org>
parents: 26096
diff changeset
329 m_file_tree_view->setToolTip (tr ("Double-click to open file/folder, right click for alternatives"));
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
330
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
331 // allow renaming directly in the tree view with
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
332 // m_file_tree_view->edit(index)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
333 m_file_system_model->setReadOnly (false);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
334 // delegate to improve rename ergonomy by pre-selecting text up to the
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
335 // extension
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
336 auto *rename_delegate = new RenameItemDelegate (this);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
337 m_file_tree_view->setItemDelegateForColumn (0, rename_delegate);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
338 // prevent the tree view to override Octave's double-click behavior
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
339 m_file_tree_view->setEditTriggers (QAbstractItemView::NoEditTriggers);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
340 // create the rename action (that will be added to context menu)
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
341 // and associate to F2 key shortcut
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
342 m_rename_action = new QAction (tr ("Rename..."), this);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
343 m_rename_action->setShortcut (Qt::Key_F2);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
344 m_rename_action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
345 connect (m_rename_action, &QAction::triggered, this,
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
346 &files_dock_widget::contextmenu_rename);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
347 addAction(m_rename_action);
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
348
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27726
diff changeset
349 // get sort column and order as well as column state (order and width)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
350
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
351 m_file_tree_view->sortByColumn
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
352 (settings.value (fb_sort_column).toInt (),
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
353 static_cast<Qt::SortOrder> (settings.value (fb_sort_order).toUInt ()));
27726
b2c11742b7ec add FIXMEs for replacing static casts by Qvariants value<T> after Qt 5.4
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27672
diff changeset
354 // FIXME: use value<Qt::SortOrder> instead of static cast after
b2c11742b7ec add FIXMEs for replacing static casts by Qvariants value<T> after Qt 5.4
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27672
diff changeset
355 // dropping support of Qt 5.4
25851
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
356
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
357 if (settings.contains (fb_column_state.key))
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
358 m_file_tree_view->header ()->restoreState
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
359 (settings.value (fb_column_state.key).toByteArray ());
25851
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
360
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
361 // Set header properties for sorting
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
362 m_file_tree_view->header ()->setSectionsClickable (true);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
363 m_file_tree_view->header ()->setSectionsMovable (true);
507cee1b684e removed all initial preferences for file browser from pref file (bug #54606)
Torsten <mttl@mailbox.org>
parents: 25508
diff changeset
364 m_file_tree_view->header ()->setSortIndicatorShown (true);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
365
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
366 QStringList mru_dirs =
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
367 settings.value (fb_mru_list.key).toStringList ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
368 m_current_directory->addItems (mru_dirs);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
369
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
370 m_current_directory->setEditText
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
371 (m_file_system_model->fileInfo (rootPathIndex). absoluteFilePath ());
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
372
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
373 connect (m_file_tree_view, &FileTreeViewer::activated,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
374 this, &files_dock_widget::item_double_clicked);
16498
605d7f0ee0d8 Added Filesdockwidget recently viewed directory pulldownlist
John Donoghue <john.donoghue@ieee.org>
parents: 16487
diff changeset
375
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
376 // add context menu to tree_view
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
377 m_file_tree_view->setContextMenuPolicy (Qt::CustomContextMenu);
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
378 connect (m_file_tree_view, &FileTreeViewer::customContextMenuRequested,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
379 this, &files_dock_widget::contextmenu_requested);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
380
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
381 m_file_tree_view->header ()->setContextMenuPolicy (Qt::CustomContextMenu);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
382 connect (m_file_tree_view->header (),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
383 &QHeaderView::customContextMenuRequested,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
384 this, &files_dock_widget::headercontextmenu_requested);
16555
04fb96f4bea1 allow double-click in file browser to load data files
John W. Eaton <jwe@octave.org>
parents: 16542
diff changeset
385
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
386 // Layout the widgets vertically with the toolbar on top
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
387 QVBoxLayout *vbox_layout = new QVBoxLayout ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
388 vbox_layout->setSpacing (0);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
389 vbox_layout->addWidget (m_navigation_tool_bar);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
390 vbox_layout->addWidget (m_file_tree_view);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
391 vbox_layout->setMargin (1);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
392
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
393 container->setLayout (vbox_layout);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
394
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
395 // FIXME: Add right-click contextual menus for copying, pasting,
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
396 // deleting files (and others).
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
397
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
398 connect (m_current_directory->lineEdit (), &QLineEdit::returnPressed,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
399 this, &files_dock_widget::accept_directory_line_edit);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
400
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
401 // FIXME: We could use
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
402 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
403 // connect (m_current_directory,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
404 // QOverload<const QString&>::of (&QComboBox::activated),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
405 // this, &files_dock_widget::set_current_directory);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
406 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
407 // but referring to QComboBox::activated will generate deprecated
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
408 // function warnings from GCC. We could also use
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
409 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
410 // connect (m_current_directory, &QComboBox::textActivated,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
411 // this, &files_dock_widget::set_current_directory);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
412 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
413 // but the function textActivated was not introduced until Qt 5.14
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
414 // so we'll need a feature test.
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
415
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
416 connect (m_current_directory, SIGNAL (activated (const QString&)),
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
417 this, SLOT (set_current_directory (const QString&)));
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
418
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
419 QCompleter *completer = new QCompleter (m_file_system_model, this);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
420 m_current_directory->setCompleter (completer);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
421
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
422 setFocusProxy (m_current_directory);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
423
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
424 m_sync_octave_dir = true; // default, overwritten with notice_settings ()
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
425 m_octave_dir = "";
29613
9367cba2a6d5 allow most dock widgets to be used from command line
John W. Eaton <jwe@octave.org>
parents: 29596
diff changeset
426
9367cba2a6d5 allow most dock widgets to be used from command line
John W. Eaton <jwe@octave.org>
parents: 29596
diff changeset
427 if (! p)
9367cba2a6d5 allow most dock widgets to be used from command line
John W. Eaton <jwe@octave.org>
parents: 29596
diff changeset
428 make_window ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
429 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
430
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
431 void files_dock_widget::save_settings (void)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
432 {
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
433 gui_settings settings;
13536
869c62c15e95 Few minor improvements, added advanced settings for file browser.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13535
diff changeset
434
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
435 int sort_column = m_file_tree_view->header ()->sortIndicatorSection ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
436 Qt::SortOrder sort_order = m_file_tree_view->header ()->sortIndicatorOrder ();
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
437 settings.setValue (fb_sort_column.key, sort_column);
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
438 settings.setValue (fb_sort_order.key, sort_order);
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
439 settings.setValue (fb_column_state.key,
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
440 m_file_tree_view->header ()->saveState ());
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
441
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
442 QStringList dirs;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
443 for (int i=0; i< m_current_directory->count (); i++)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
444 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
445 dirs.append (m_current_directory->itemText (i));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
446 }
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
447 settings.setValue (fb_mru_list.key, dirs);
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
448
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
449 settings.sync ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
450
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
451 octave_dock_widget::save_settings ();
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
452
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
453 if (m_sig_mapper)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
454 delete m_sig_mapper;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
455 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
456
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
457 void files_dock_widget::item_double_clicked (const QModelIndex& index)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
458 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
459 // Retrieve the file info associated with the model index.
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
460 QFileInfo fileInfo = m_file_system_model->fileInfo (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
461 set_current_directory (fileInfo.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
462 }
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
463
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
464 void files_dock_widget::set_current_directory (const QString& dir)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
465 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
466 display_directory (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
467 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
468
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
469 void files_dock_widget::accept_directory_line_edit (void)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
470 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
471 display_directory (m_current_directory->currentText ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
472 }
20642
3e449f43e708 revised code for header context menu in file browser
Torsten <ttl@justmail.de>
parents: 20017
diff changeset
473
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
474 void files_dock_widget::change_directory_up (void)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
475 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
476 QDir dir
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
477 = QDir (m_file_system_model->filePath (m_file_tree_view->rootIndex ()));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
478
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
479 dir.cdUp ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
480 display_directory (dir.absolutePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
481 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
482
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
483 void files_dock_widget::do_sync_octave_directory (void)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
484 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
485 QDir dir
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
486 = QDir (m_file_system_model->filePath (m_file_tree_view->rootIndex ()));
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
487
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
488 emit displayed_directory_changed (dir.absolutePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
489 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
490
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
491 void files_dock_widget::do_sync_browser_directory (void)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
492 {
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
493 display_directory (m_octave_dir, false); // false: no sync of octave dir
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
494 }
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
495
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
496 void files_dock_widget::update_octave_directory (const QString& dir)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
497 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
498 m_octave_dir = dir;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
499 if (m_sync_octave_dir)
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
500 display_directory (m_octave_dir, false); // false: no sync of octave dir
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
501 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
502
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
503 void files_dock_widget::display_directory (const QString& dir,
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
504 bool set_octave_dir)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
505 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
506 QFileInfo fileInfo (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
507 if (fileInfo.exists ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
508 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
509 if (fileInfo.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
510 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
511 m_file_tree_view->setRootIndex (m_file_system_model->
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
512 index (fileInfo.absoluteFilePath ()));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
513 m_file_system_model->setRootPath (fileInfo.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
514 if (m_sync_octave_dir && set_octave_dir)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
515 process_set_current_dir (fileInfo.absoluteFilePath ());
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
516
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27726
diff changeset
517 // see if it's in the list, and if it is,
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27726
diff changeset
518 // remove it and then put at top of the list
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
519 int index
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
520 = m_current_directory->findText (fileInfo.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
521 if (index != -1)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
522 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
523 m_current_directory->removeItem (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
524 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
525 m_current_directory->insertItem (0, fileInfo.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
526 m_current_directory->setCurrentIndex (0);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
527 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
528 else
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
529 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
530 QString abs_fname = fileInfo.absoluteFilePath ();
20642
3e449f43e708 revised code for header context menu in file browser
Torsten <ttl@justmail.de>
parents: 20017
diff changeset
531
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
532 QString suffix = fileInfo.suffix ().toLower ();
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
533
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
534 gui_settings settings;
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
535
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
536 QString ext = settings.value (fb_txt_file_ext).toString ();
29049
461bd8b9ce91 use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents: 27971
diff changeset
537 #if defined (HAVE_QT_SPLITBEHAVIOR_ENUM)
461bd8b9ce91 use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents: 27971
diff changeset
538 QStringList extensions = ext.split (";", Qt::SkipEmptyParts);
461bd8b9ce91 use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents: 27971
diff changeset
539 #else
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
540 QStringList extensions = ext.split (";", QString::SkipEmptyParts);
29049
461bd8b9ce91 use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents: 27971
diff changeset
541 #endif
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
542 if (QFile::exists (abs_fname))
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
543 {
25408
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25355
diff changeset
544 if (extensions.contains (suffix))
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
545 emit open_file (fileInfo.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
546 else
25408
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25355
diff changeset
547 emit open_any_signal (abs_fname);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
548 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
549 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
550 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
551 }
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
552
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
553 void files_dock_widget::open_item_in_app (const QModelIndex& index)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
554 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
555 // Retrieve the file info associated with the model index.
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
556 QFileInfo fileInfo = m_file_system_model->fileInfo (index);
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
557
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
558 QString file = fileInfo.absoluteFilePath ();
17960
225c7be94c5f Added a context menu changing the visible columns in the file browser
John Swensen <jpswensen@gmail.com>
parents: 17935
diff changeset
559
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
560 QDesktopServices::openUrl (QUrl::fromLocalFile (file));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
561 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
562
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
563 void files_dock_widget::toggle_header (int col)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
564 {
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
565 gui_settings settings;
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
566
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
567 QString key = m_columns_shown_keys.at (col);
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
568 bool shown = settings.value (key, false).toBool ();
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
569 settings.setValue (key, ! shown);
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
570 settings.sync ();
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
571
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
572 switch (col)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
573 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
574 case 0:
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
575 case 1:
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
576 case 2:
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
577 // toggle column visibility
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
578 m_file_tree_view->setColumnHidden (col + 1, shown);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
579 break;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
580 case 3:
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
581 case 4:
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
582 // other actions depending on new settings
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
583 notice_settings ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
584 break;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
585 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
586 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
587
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
588 void files_dock_widget::headercontextmenu_requested (const QPoint& mpos)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
589 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
590 QMenu menu (this);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
591
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
592 if (m_sig_mapper)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
593 delete m_sig_mapper;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
594 m_sig_mapper = new QSignalMapper (this);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
595
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
596 gui_settings settings;
18387
f1312db94896 apply the context menu of the file browser to the correct item (bug #41430)
Torsten <ttl@justmail.de>
parents: 18261
diff changeset
597
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
598 for (int i = 0; i < m_columns_shown.size (); i++)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
599 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
600 QAction *action = menu.addAction (m_columns_shown.at (i),
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
601 m_sig_mapper, SLOT (map ()));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
602 m_sig_mapper->setMapping (action, i);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
603 action->setCheckable (true);
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
604 action->setChecked
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
605 (settings.value (m_columns_shown_keys.at (i),
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
606 m_columns_shown_defs.at (i)).toBool ());
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
607 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
608
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
609 // FIXME: We could use
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
610 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
611 // connect (&m_sig_mapper, QOverload<int>::of (&QSignalMapper::mapped),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
612 // this, &workspace_view::toggle_header);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
613 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
614 // but referring to QSignalMapper::mapped will generate deprecated
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
615 // function warnings from GCC. We could also use
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
616 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
617 // connect (&m_sig_mapper, &QSignalMapper::mappedInt,
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
618 // this, &workspace_view::toggle_header);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
619 //
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
620 // but the function mappedInt was not introduced until Qt 5.15 so
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
621 // we'll need a feature test.
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
622
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
623 connect (m_sig_mapper, SIGNAL (mapped (int)),
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
624 this, SLOT (toggle_header (int)));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
625
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
626 menu.exec (m_file_tree_view->mapToGlobal (mpos));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
627 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
628
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
629 void files_dock_widget::contextmenu_requested (const QPoint& mpos)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
630 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
631
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
632 QMenu menu (this);
18387
f1312db94896 apply the context menu of the file browser to the correct item (bug #41430)
Torsten <ttl@justmail.de>
parents: 18261
diff changeset
633
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
634 QModelIndex index = m_file_tree_view->indexAt (mpos);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
635
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
636 if (index.isValid ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
637 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
638 QFileInfo info = m_file_system_model->fileInfo (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
639
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
640 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
641 QModelIndexList sel = m->selectedRows ();
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
642
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
643 // check if item at mouse position is seleccted
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
644 if (! sel.contains (index))
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
645 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
646 // is not selected -> clear actual selection and select this item
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
647 m->setCurrentIndex (index,
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
648 QItemSelectionModel::Clear
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
649 | QItemSelectionModel::Select
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
650 | QItemSelectionModel::Rows);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
651 }
20706
fec7cc73507b Make the file browser open files more consistently (bug #45844)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20646
diff changeset
652
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
653 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
654
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
655 // construct the context menu depending on item
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
656 menu.addAction (rmgr.icon ("document-open"), tr ("Open"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
657 this, &files_dock_widget::contextmenu_open);
20706
fec7cc73507b Make the file browser open files more consistently (bug #45844)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20646
diff changeset
658
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
659 if (info.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
660 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
661 menu.addAction (tr ("Open in System File Explorer"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
662 this, &files_dock_widget::contextmenu_open_in_app);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
663 }
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
664
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
665 if (info.isFile ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
666 menu.addAction (tr ("Open in Text Editor"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
667 this, &files_dock_widget::contextmenu_open_in_editor);
16507
8cb12cf9ca32 gui: add icons to the context menu of the the file browser
Torsten <ttl@justmail.de>
parents: 16506
diff changeset
668
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
669 menu.addAction (tr ("Copy Selection to Clipboard"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
670 this, &files_dock_widget::contextmenu_copy_selection);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
671
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
672 if (info.isFile () && info.suffix () == "m")
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
673 menu.addAction (rmgr.icon ("media-playback-start"), tr ("Run"),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
674 this, &files_dock_widget::contextmenu_run);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
675
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
676 if (info.isFile ())
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
677 menu.addAction (tr ("Load Data"),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
678 this, &files_dock_widget::contextmenu_load);
16509
14045b872a3d Add set current directory context menu to file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16507
diff changeset
679
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
680 if (info.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
681 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
682 menu.addSeparator ();
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
683 menu.addAction (rmgr.icon ("go-first"), tr ("Set Current Directory"),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
684 this, &files_dock_widget::contextmenu_setcurrentdir);
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
685
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
686 QMenu *add_path_menu = menu.addMenu (tr ("Add to Path"));
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
687
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
688 add_path_menu->addAction (tr ("Selected Directories"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
689 this, [=] (bool checked) { contextmenu_add_to_path (checked); });
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
690 add_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
691 this, &files_dock_widget::contextmenu_add_to_path_subdirs);
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
692
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
693 QMenu *rm_path_menu = menu.addMenu (tr ("Remove from Path"));
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
694
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
695 rm_path_menu->addAction (tr ("Selected Directories"),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
696 this, &files_dock_widget::contextmenu_rm_from_path);
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
697 rm_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
698 this, &files_dock_widget::contextmenu_rm_from_path_subdirs);
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
699
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
700 menu.addSeparator ();
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
701
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
702 menu.addAction (rmgr.icon ("edit-find"), tr ("Find Files..."),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
703 this, &files_dock_widget::contextmenu_findfiles);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
704 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
705
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
706 menu.addSeparator ();
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
707 menu.addAction (m_rename_action);
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
708 menu.addAction (rmgr.icon ("edit-delete"), tr ("Delete..."),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
709 this, &files_dock_widget::contextmenu_delete);
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
710
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
711 if (info.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
712 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
713 menu.addSeparator ();
29542
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
714 menu.addAction (rmgr.icon ("document-new"), tr ("New File..."),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
715 this, &files_dock_widget::contextmenu_newfile);
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
716 menu.addAction (rmgr.icon ("folder-new"), tr ("New Directory..."),
3d34b70b5a49 connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
717 this, &files_dock_widget::contextmenu_newdir);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
718 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
719
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
720 // show the menu
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
721 menu.exec (m_file_tree_view->mapToGlobal (mpos));
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
722
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
723 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
724 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
725
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
726 void files_dock_widget::contextmenu_open (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
727 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
728
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
729 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
730 QModelIndexList rows = m->selectedRows ();
20706
fec7cc73507b Make the file browser open files more consistently (bug #45844)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20646
diff changeset
731
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25336
diff changeset
732 for (auto it = rows.begin (); it != rows.end (); it++)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
733 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
734 QFileInfo file = m_file_system_model->fileInfo (*it);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
735 if (file.exists ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
736 display_directory (file.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
737 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
738 }
20706
fec7cc73507b Make the file browser open files more consistently (bug #45844)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20646
diff changeset
739
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
740 void files_dock_widget::contextmenu_open_in_editor (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
741 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
742
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
743 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
744 QModelIndexList rows = m->selectedRows ();
20706
fec7cc73507b Make the file browser open files more consistently (bug #45844)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 20646
diff changeset
745
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25336
diff changeset
746 for (auto it = rows.begin (); it != rows.end (); it++)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
747 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
748 QFileInfo file = m_file_system_model->fileInfo (*it);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
749 if (file.exists ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
750 emit open_file (file.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
751 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
752 }
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
753
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
754 void files_dock_widget::contextmenu_open_in_app (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
755 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
756 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
757 QModelIndexList rows = m->selectedRows ();
16594
3ce0c312a40b contextmenu for opening files in default applications
John W. Eaton <jwe@octave.org>
parents: 16570
diff changeset
758
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25336
diff changeset
759 for (auto it = rows.begin (); it != rows.end (); it++)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
760 open_item_in_app (*it);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
761 }
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
762
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
763 void files_dock_widget::contextmenu_copy_selection (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
764 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
765 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
766 QModelIndexList rows = m->selectedRows ();
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
767
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
768 QStringList selection;
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
769
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25336
diff changeset
770 for (auto it = rows.begin (); it != rows.end (); it++)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
771 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
772 QFileInfo info = m_file_system_model->fileInfo (*it);
16622
38fef1e833ea handle copying names file browser to clipboard; allow multiple selections
John W. Eaton <jwe@octave.org>
parents: 16613
diff changeset
773
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
774 selection << info.fileName ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
775 }
16504
49b059bf27c7 allow loading files from file browser
John W. Eaton <jwe@octave.org>
parents: 16503
diff changeset
776
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
777 QClipboard *clipboard = QApplication::clipboard ();
16504
49b059bf27c7 allow loading files from file browser
John W. Eaton <jwe@octave.org>
parents: 16503
diff changeset
778
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
779 clipboard->setText (selection.join ("\n"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
780 }
16504
49b059bf27c7 allow loading files from file browser
John W. Eaton <jwe@octave.org>
parents: 16503
diff changeset
781
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
782 void files_dock_widget::contextmenu_load (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
783 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
784 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
785 QModelIndexList rows = m->selectedRows ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
786
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
787 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
788 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
789 QModelIndex index = rows[0];
16504
49b059bf27c7 allow loading files from file browser
John W. Eaton <jwe@octave.org>
parents: 16503
diff changeset
790
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
791 QFileInfo info = m_file_system_model->fileInfo (index);
16506
8a4960f2c7c3 gui: allow running files from the file browser
Torsten <ttl@justmail.de>
parents: 16504
diff changeset
792
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
793 emit load_file_signal (info.fileName ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
794 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
795 }
16506
8a4960f2c7c3 gui: allow running files from the file browser
Torsten <ttl@justmail.de>
parents: 16504
diff changeset
796
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
797 void files_dock_widget::contextmenu_run (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
798 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
799 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
800 QModelIndexList rows = m->selectedRows ();
16506
8a4960f2c7c3 gui: allow running files from the file browser
Torsten <ttl@justmail.de>
parents: 16504
diff changeset
801
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
802 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
803 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
804 QModelIndex index = rows[0];
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
805
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
806 QFileInfo info = m_file_system_model->fileInfo (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
807 emit run_file_signal (info);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
808 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
809 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
810
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
811 void files_dock_widget::contextmenu_rename (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
812 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
813 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
814 QModelIndexList rows = m->selectedRows ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
815 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
816 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
817 QModelIndex index = rows[0];
30757
00ff0dfb4d27 renaming files and directories using inline editing
Remi Thebault <remi.thebault@gmail.com>
parents: 30745
diff changeset
818 m_file_tree_view->edit(index);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
819 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
820 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
821
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
822 void files_dock_widget::contextmenu_delete (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
823 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
824 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
825 QModelIndexList rows = m->selectedRows ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
826
28130
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
827 int file_cnt = rows.size ();
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
828 bool multiple_files = (file_cnt > 1);
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
829
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25336
diff changeset
830 for (auto it = rows.begin (); it != rows.end (); it++)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
831 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
832 QModelIndex index = *it;
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
833
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
834 QFileInfo info = m_file_system_model->fileInfo (index);
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
835
28130
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
836 QMessageBox::StandardButton dlg_answer;
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
837 if (multiple_files)
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
838 if (it == rows.begin ())
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
839 {
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
840 dlg_answer = QMessageBox::question (this,
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
841 tr ("Delete file/directory"),
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
842 tr ("Are you sure you want to delete all %1 selected files?\n").arg (file_cnt),
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
843 QMessageBox::Yes | QMessageBox::No);
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
844 if (dlg_answer != QMessageBox::Yes)
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
845 return;
28130
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
846 }
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
847 else
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
848 dlg_answer = QMessageBox::Yes;
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
849 else
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
850 {
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
851 dlg_answer = QMessageBox::question (this,
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
852 tr ("Delete file/directory"),
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
853 tr ("Are you sure you want to delete\n")
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
854 + info.filePath (),
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
855 QMessageBox::Yes | QMessageBox::No);
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
856 }
712cd23aaa4f Delete multiple files in GUI without multiple dialog boxes (bug #57874).
Rik <rik@octave.org>
parents: 27971
diff changeset
857
31296
42a558ac8c12 Respect confirmation when deleting files in file browser widget (bug #63198).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30564
diff changeset
858 if (dlg_answer == QMessageBox::Yes)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
859 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
860 if (info.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
861 {
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
862 // see if directory is empty
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
863 QDir path (info.absoluteFilePath ());
27960
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
864 QList<QFileInfo> fileLst = path.entryInfoList (
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
865 QDir::Hidden | QDir::AllEntries |
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
866 QDir::NoDotAndDotDot | QDir::System);
17790
86c6ae5f969e Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents: 17744
diff changeset
867
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
868 if (fileLst.count () != 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
869 QMessageBox::warning (this, tr ("Delete file/directory"),
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
870 tr ("Can not delete a directory that is not empty"));
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
871 else
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
872 m_file_system_model->rmdir (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
873 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
874 else
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
875 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
876 // Close the file in the editor if open
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
877 emit file_remove_signal (info.filePath (), QString ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
878 // Remove the file.
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
879 bool st = m_file_system_model->remove (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
880 if (! st)
30210
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
881 {
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
882 QMessageBox::warning (this, tr ("Deletion error"),
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
883 tr ("Could not delete file \"%1\".").
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
884 arg (info.filePath ()));
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
885 // Reload the old file
351dbe4da930 GUI: Display dialog if deleting or renaming a file fails (bug #61225).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29782
diff changeset
886 }
30745
2f6904439d3c fix updating the name of renamed editor files
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30732
diff changeset
887 emit file_renamed_signal (st);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
888 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
889
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
890 m_file_system_model->revert ();
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
891
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
892 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
893 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
894 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
895
27971
ec769a7ab9fb fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27960
diff changeset
896 // Get the currently selected files/dirs and return their file info
ec769a7ab9fb fix more spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27960
diff changeset
897 // in a list.
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
898 QList<QFileInfo> files_dock_widget::get_selected_items_info (bool dir)
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
899 {
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
900 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
901 QModelIndexList rows = m->selectedRows ();
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
902
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
903 QList<QFileInfo> infos;
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
904
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
905 for (auto it = rows.begin (); it != rows.end (); it++)
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
906 {
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
907 QModelIndex index = *it;
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
908
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
909 QFileInfo info = m_file_system_model->fileInfo (index);
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
910
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
911 if (info.exists () &&
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
912 ((dir & info.isDir ()) || (! dir && info.isFile ())))
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
913 infos.append (info);
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
914 }
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
915
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
916 return infos;
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
917 }
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
918
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
919 void files_dock_widget::contextmenu_newfile (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
920 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
921 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
922 QModelIndexList rows = m->selectedRows ();
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
923
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
924 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
925 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
926 QModelIndex index = rows[0];
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
927
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
928 QFileInfo info = m_file_system_model->fileInfo (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
929 QString parent_dir = info.filePath ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
930
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
931 process_new_file (parent_dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
932 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
933 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
934
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
935 void files_dock_widget::contextmenu_newdir (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
936 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
937 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
938 QModelIndexList rows = m->selectedRows ();
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
939
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
940 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
941 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
942 QModelIndex index = rows[0];
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
943
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
944 QFileInfo info = m_file_system_model->fileInfo (index);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
945 QString parent_dir = info.filePath ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
946
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
947 process_new_dir (parent_dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
948 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
949 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
950
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
951 void files_dock_widget::contextmenu_setcurrentdir (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
952 {
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
953 QList<QFileInfo> infos = get_selected_items_info (true);
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
954
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
955 if (infos.length () > 0 && infos.first ().isDir ())
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
956 process_set_current_dir (infos.first ().absoluteFilePath ());
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
957 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
958
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
959 void files_dock_widget::contextmenu_add_to_path (bool, bool rm, bool subdirs)
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
960 {
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
961 QList<QFileInfo> infos = get_selected_items_info (true);
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
962
29782
02461b0ccc00 reduce dependence of files_dock_widget on Octave interpreter
John W. Eaton <jwe@octave.org>
parents: 29613
diff changeset
963 QStringList dir_list;
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
964
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
965 for (int i = 0; i < infos.length (); i++)
29782
02461b0ccc00 reduce dependence of files_dock_widget on Octave interpreter
John W. Eaton <jwe@octave.org>
parents: 29613
diff changeset
966 dir_list.append (infos.at (i).absoluteFilePath ());
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
967
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
968 if (infos.length () > 0)
27308
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
969 emit modify_path_signal (dir_list, rm, subdirs);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
970 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
971
27269
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
972 void files_dock_widget::contextmenu_add_to_path_subdirs (bool)
6a6b5ae3d58d add file browser context menu for adding dirs to the path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27116
diff changeset
973 {
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
974 contextmenu_add_to_path (true, false, true);
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
975 }
16509
14045b872a3d Add set current directory context menu to file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16507
diff changeset
976
27273
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
977 void files_dock_widget::contextmenu_rm_from_path (bool)
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
978 {
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
979 contextmenu_add_to_path (true, true, false);
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
980 }
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
981
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
982 void files_dock_widget::contextmenu_rm_from_path_subdirs (bool)
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
983 {
aaf788e496a3 add file browser context menu for removing dirs from path (bug #55623)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27269
diff changeset
984 contextmenu_add_to_path (true, true, true);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
985 }
16503
c1ff738d606d allow files to be renamed or deleted using the file browser
John Donoghue <john.donoghue@ieee.org>
parents: 16499
diff changeset
986
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
987 void files_dock_widget::contextmenu_findfiles (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
988 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
989 QItemSelectionModel *m = m_file_tree_view->selectionModel ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
990 QModelIndexList rows = m->selectedRows ();
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
991
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
992 if (rows.size () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
993 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
994 QModelIndex index = rows[0];
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
995
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
996 QFileInfo info = m_file_system_model->fileInfo (index);
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
997
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
998 if (info.isDir ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
999 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1000 process_find_files (info.absoluteFilePath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1001 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1002 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1003 }
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
1004
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1005 void files_dock_widget::notice_settings (void)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1006 {
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1007 gui_settings settings;
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1008
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27726
diff changeset
1009 // QSettings pointer is checked before emitting.
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 14812
diff changeset
1010
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1011 int size_idx = settings.value (global_icon_size).toInt ();
26058
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25906
diff changeset
1012 size_idx = (size_idx > 0) - (size_idx < 0) + 1; // Make valid index from 0 to 2
19847
597fc0fd8e54 make size of toolbar icons depending on scaling of display
Torsten <ttl@justmail.de>
parents: 19846
diff changeset
1013
26058
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25906
diff changeset
1014 QStyle *st = style ();
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25906
diff changeset
1015 int icon_size = st->pixelMetric (global_icon_sizes[size_idx]);
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
1016 m_navigation_tool_bar->setIconSize (QSize (icon_size, icon_size));
16525
e192525236ad configurable size of toolbar icons
Torsten <ttl@justmail.de>
parents: 16515
diff changeset
1017
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1018 // filenames are always shown, other columns can be hidden by settings
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1019 for (int i = 0; i < 3; i++)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1020 m_file_tree_view->setColumnHidden (i + 1,
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1021 ! settings.value (m_columns_shown_keys.at (i),false).toBool ());
20642
3e449f43e708 revised code for header context menu in file browser
Torsten <ttl@justmail.de>
parents: 20017
diff changeset
1022
27960
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
1023 QDir::Filters current_filter = m_file_system_model->filter ();
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1024 if (settings.value (m_columns_shown_keys.at (3), false).toBool ())
27960
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
1025 m_file_system_model->setFilter (current_filter | QDir::Hidden);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1026 else
27960
6a37ebaeeb28 fix handling of broken symlinks in file browser (bug #57588)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27957
diff changeset
1027 m_file_system_model->setFilter (current_filter & (~QDir::Hidden));
20642
3e449f43e708 revised code for header context menu in file browser
Torsten <ttl@justmail.de>
parents: 20017
diff changeset
1028
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27273
diff changeset
1029 m_file_tree_view->setAlternatingRowColors
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1030 (settings.value (m_columns_shown_keys.at (4),true).toBool ());
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1031 m_file_tree_view->setModel (m_file_system_model);
16499
facf00ce97d3 gui: configurable synchronization between file browser and octave directory
Torsten <ttl@justmail.de>
parents: 16498
diff changeset
1032
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1033 // enable the buttons to sync octave/browser dir
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1034 // only if this is not done by default
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1035 m_sync_octave_dir
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1036 = settings.value (fb_sync_octdir).toBool ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1037 m_sync_octave_directory_action->setEnabled (! m_sync_octave_dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1038 m_sync_browser_directory_action->setEnabled (! m_sync_octave_dir);
25906
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1039
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1040 // If m_sync_octave_dir is enabled, then we want the file browser to
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1041 // update to match the current working directory of the
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1042 // interpreter. We don't want to queue any signal to change the
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1043 // interpreter's current working directory. In this case, we just
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1044 // want the GUI to match the state of the interpreter.
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1045
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1046 if (m_sync_octave_dir)
e980aef0e1db do sync file browser when settings change (bug #54718)
John W. Eaton <jwe@octave.org>
parents: 25898
diff changeset
1047 do_sync_browser_directory ();
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1048 }
20017
4b7b7ac7af2c use get_home_directory instead of getenv ("HOME") (bug #44694)
John W. Eaton <jwe@octave.org>
parents: 20000
diff changeset
1049
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1050 void files_dock_widget::popdownmenu_home (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1051 {
25336
389757b7b6af eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents: 25103
diff changeset
1052 QString dir = QString::fromStdString (sys::env::get_home_directory ());
17790
86c6ae5f969e Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents: 17744
diff changeset
1053
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1054 if (dir.isEmpty ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1055 dir = QDir::homePath ();
16762
42555422e326 Add Show home directory to files window popdown.
John Donoghue <john.donoghue@ieee.org>
parents: 16709
diff changeset
1056
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1057 set_current_directory (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1058 }
16613
99a57611d58a add menu for searching the next directory shown by the file browser
Torsten <ttl@justmail.de>
parents: 16611
diff changeset
1059
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1060 void files_dock_widget::popdownmenu_search_dir (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1061 {
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26058
diff changeset
1062 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26058
diff changeset
1063 int opts = QFileDialog::ShowDirsOnly;
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1064
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1065 gui_settings settings;
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1066
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 31297
diff changeset
1067 if (! settings.value (global_use_native_dialogs).toBool ())
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26058
diff changeset
1068 opts |= QFileDialog::DontUseNativeDialog;
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26058
diff changeset
1069
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1070 QString dir = QFileDialog::getExistingDirectory (this,
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1071 tr ("Set directory of file browser"),
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1072 m_file_system_model->rootPath (),
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26058
diff changeset
1073 QFileDialog::Option (opts));
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1074 set_current_directory (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1075 }
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
1076
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1077 void files_dock_widget::popdownmenu_findfiles (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1078 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1079 process_find_files (m_file_system_model->rootPath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1080 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1081
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1082 void files_dock_widget::popdownmenu_newdir (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1083 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1084 process_new_dir (m_file_system_model->rootPath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1085 }
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1086
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1087 void files_dock_widget::popdownmenu_newfile (bool)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1088 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1089 process_new_file (m_file_system_model->rootPath ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1090 }
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1091
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1092 void files_dock_widget::process_new_file (const QString& parent_dir)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1093 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1094 bool ok;
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1095
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1096 QString name = QInputDialog::getText (this, tr ("Create File"),
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
1097 tr ("Create file in\n", "String ends with \\n!") + parent_dir,
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1098 QLineEdit::Normal,
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1099 tr ("New File.txt"), &ok);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1100 if (ok && name.length () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1101 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1102 name = parent_dir + '/' + name;
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1103
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1104 QFile file (name);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1105 file.open (QIODevice::WriteOnly);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1106 m_file_system_model->revert ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1107 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1108 }
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1109
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1110 void files_dock_widget::process_new_dir (const QString& parent_dir)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1111 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1112 bool ok;
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1113
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1114 QString name = QInputDialog::getText (this, tr ("Create Directory"),
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
1115 tr ("Create folder in\n", "String ends with \\n!") + parent_dir,
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1116 QLineEdit::Normal,
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
1117 tr ("New Directory"), &ok);
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1118 if (ok && name.length () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1119 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1120 QDir dir (parent_dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1121 dir.mkdir (name);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1122 m_file_system_model->revert ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1123 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1124 }
16542
016073c0cb94 Add popdown toolbutton to files-dock-window toolbar.
John Donoghue <john.donoghue@ieee.org>
parents: 16525
diff changeset
1125
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
1126 void files_dock_widget::process_set_current_dir (const QString& dir)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1127 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1128 emit displayed_directory_changed (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1129 }
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
1130
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30210
diff changeset
1131 void files_dock_widget::process_find_files (const QString& dir)
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1132 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1133 emit find_files_signal (dir);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1134 }
16699
d4bcb38ad056 Added find files context menu to files-dock-widget
John Donoghue <john.donoghue@ieee.org>
parents: 16635
diff changeset
1135
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1136 void files_dock_widget::copyClipboard ()
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1137 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1138 if (m_file_tree_view->hasFocus ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1139 contextmenu_copy_selection (true);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1140 if (m_current_directory->hasFocus ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1141 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1142 QClipboard *clipboard = QApplication::clipboard ();
16881
944ade6e7f66 Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents: 16865
diff changeset
1143
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1144 QLineEdit *edit = m_current_directory->lineEdit ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1145 if (edit && edit->hasSelectedText ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1146 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1147 clipboard->setText (edit->selectedText ());
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1148 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1149 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1150 }
16881
944ade6e7f66 Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents: 16865
diff changeset
1151
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1152 void files_dock_widget::pasteClipboard ()
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1153 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1154 if (m_current_directory->hasFocus ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1155 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1156 QClipboard *clipboard = QApplication::clipboard ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1157 QString str = clipboard->text ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1158 QLineEdit *edit = m_current_directory->lineEdit ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1159 if (edit && str.length () > 0)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1160 edit->insert (str);
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1161 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1162 }
16881
944ade6e7f66 Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents: 16865
diff changeset
1163
24733
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1164 void files_dock_widget::selectAll ()
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1165 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1166 if (m_file_tree_view->hasFocus ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1167 m_file_tree_view->selectAll ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1168 if (m_current_directory->hasFocus ())
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1169 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1170 QLineEdit *edit = m_current_directory->lineEdit ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1171 if (edit)
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1172 {
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1173 edit->selectAll ();
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1174 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1175 }
e15d53d2de1e move more GUI classse inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1176 }
18555
2d5d0d86432e gui: Add select all menu (Bug #41797)
John Donoghue <john.donoghue@ieee.org>
parents: 18408
diff changeset
1177 }