Mercurial > hg > octave-lyh
annotate libgui/src/workspace-view.cc @ 15204:359098ad343e
update copyright notices in libgui directory
* documentation-dockwidget.cc, documentation-dockwidget.h,
files-dockwidget.cc, files-dockwidget.h, history-dockwidget.cc,
history-dockwidget.h, m-editor/file-editor-interface.h,
m-editor/file-editor-tab.cc, m-editor/file-editor-tab.h,
m-editor/file-editor.cc, m-editor/file-editor.h,
m-editor/lexer-octave-gui.cc, m-editor/lexer-octave-gui.h,
main-window.cc, main-window.h, octave-adapter/octave-event-listener.h,
octave-adapter/octave-event-observer.h,
octave-adapter/octave-event.cc, octave-adapter/octave-event.h,
octave-adapter/octave-link.cc, octave-adapter/octave-link.h,
octave-adapter/octave-main-thread.cc,
octave-adapter/octave-main-thread.h, octave-gui.cc,
octave-qt-event-listener.cc, octave-qt-event-listener.h,
resource-manager.cc, resource-manager.h, settings-dialog.cc,
settings-dialog.h, symbol-information.cc, symbol-information.h,
terminal-dockwidget.cc, terminal-dockwidget.h, welcome-wizard.cc,
welcome-wizard.h, workspace-model.cc, workspace-model.h,
workspace-view.cc, workspace-view.h: Use copyright notice format that
is consistent with other files in Octave.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 20 Aug 2012 14:02:08 -0400 |
parents | 017f0b2e6933 |
children | ae9079bbc627 |
rev | line source |
---|---|
15204
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
1 /* |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
2 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
3 Copyright (C) 2011-2012 Jacob Dawid |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
4 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
5 This file is part of Octave. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
6 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
10 option) any later version. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
11 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
15 for more details. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
16 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
20 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
21 */ |
13501 | 22 |
14707
674740c44c09
Changed various files to matche file naming conventions.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14703
diff
changeset
|
23 #include "workspace-view.h" |
14997
2d6766e93f7b
The GUI now remembers when categories in the workspace view have been closed. Bug #36885
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14874
diff
changeset
|
24 #include "resource-manager.h" |
13501 | 25 #include <QHBoxLayout> |
26 #include <QVBoxLayout> | |
27 #include <QPushButton> | |
28 | |
14709
f50591409306
Started to rename class names and methods from camel case to underscore-
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14707
diff
changeset
|
29 workspace_view::workspace_view (QWidget * parent) : QDockWidget |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
30 (parent) |
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
31 { |
13683
25dc40d24a44
Renamed VariablesDockWidget to WorkspaceView and optimized memory footprint for 30%.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13678
diff
changeset
|
32 setObjectName ("WorkspaceView"); |
13523
103b7bebb38f
Moved load/save/clear workspace into main menu.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13506
diff
changeset
|
33 setWindowTitle (tr ("Workspace")); |
103b7bebb38f
Moved load/save/clear workspace into main menu.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13506
diff
changeset
|
34 |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
35 // Create a new workspace model. |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
36 _workspace_model = new workspace_model (); |
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
37 |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
38 _workspace_tree_view = new QTreeView (this); // Create a new tree view. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
39 _workspace_tree_view->setHeaderHidden (false); // Do not show header columns. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
40 _workspace_tree_view->setAlternatingRowColors (true); // Activate alternating row colors. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
41 _workspace_tree_view->setAnimated (false); // Deactivate animations because of strange glitches. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
42 _workspace_tree_view->setTextElideMode (Qt::ElideRight);// Elide text to the right side of the cells. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
43 _workspace_tree_view->setWordWrap (false); // No wordwrapping in cells. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
44 _workspace_tree_view->setModel (_workspace_model); // Assign model. |
13523
103b7bebb38f
Moved load/save/clear workspace into main menu.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13506
diff
changeset
|
45 |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
46 // Set an empty widget, so we can assign a layout to it. |
13523
103b7bebb38f
Moved load/save/clear workspace into main menu.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13506
diff
changeset
|
47 setWidget (new QWidget (this)); |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
48 |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
49 // Create a new layout and add widgets to it. |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
50 QVBoxLayout *layout = new QVBoxLayout (); |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
51 layout->addWidget (_workspace_tree_view); |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
52 layout->setMargin (2); |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
53 |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
54 // Set the empty widget to have our layout. |
13506
c70511cf64ee
Reformatted to GNU Style.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13504
diff
changeset
|
55 widget ()->setLayout (layout); |
13501 | 56 |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
57 // Initialize collapse/expand state of the workspace subcategories. |
15164
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
58 |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
59 QSettings *settings = resource_manager::get_settings (); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
60 |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
61 // FIXME -- what should happen if settings is 0? |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
62 |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
63 _explicit_collapse.local = settings->value ("workspaceview/local_collapsed", false).toBool (); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
64 _explicit_collapse.global = settings->value ("workspaceview/global_collapsed", false).toBool ();; |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
65 _explicit_collapse.persistent = settings->value ("workspaceview/persistent_collapsed", false).toBool ();; |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
66 _explicit_collapse.hidden = settings->value ("workspaceview/hidden_collapsed", false).toBool ();; |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
67 |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
68 // Connect signals and slots. |
14599
97cb9286919c
Cleaned up code.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14290
diff
changeset
|
69 connect (this, SIGNAL (visibilityChanged (bool)), |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
70 this, SLOT(handle_visibility_changed (bool))); |
13501 | 71 |
14761
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
72 connect (_workspace_model, SIGNAL (model_changed ()), |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
73 this, SLOT (model_changed ())); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
74 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
75 connect (_workspace_tree_view, SIGNAL (collapsed (QModelIndex)), |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
76 this, SLOT (collapse_requested (QModelIndex))); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
77 connect (_workspace_tree_view, SIGNAL (expanded (QModelIndex)), |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
78 this, SLOT (expand_requested (QModelIndex))); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
79 |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
80 connect (_workspace_tree_view, SIGNAL (doubleClicked (QModelIndex)), |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
81 this, SLOT (item_double_clicked (QModelIndex))); |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
82 |
13541
b48ac9ad8de0
Highly improved separation of model and view classes.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13536
diff
changeset
|
83 } |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
84 |
14997
2d6766e93f7b
The GUI now remembers when categories in the workspace view have been closed. Bug #36885
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14874
diff
changeset
|
85 workspace_view::~workspace_view () |
2d6766e93f7b
The GUI now remembers when categories in the workspace view have been closed. Bug #36885
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14874
diff
changeset
|
86 { |
15164
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
87 QSettings *settings = resource_manager::get_settings (); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
88 |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
89 // FIXME -- what should happen if settings is 0? |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
90 |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
91 settings->setValue("workspaceview/local_collapsed", _explicit_collapse.local); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
92 settings->setValue("workspaceview/global_collapsed", _explicit_collapse.global); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
93 settings->setValue("workspaceview/persistent_collapsed", _explicit_collapse.persistent); |
bc801a44bb1f
follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents:
14997
diff
changeset
|
94 settings->setValue("workspaceview/hidden_collapsed", _explicit_collapse.hidden); |
14997
2d6766e93f7b
The GUI now remembers when categories in the workspace view have been closed. Bug #36885
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14874
diff
changeset
|
95 } |
2d6766e93f7b
The GUI now remembers when categories in the workspace view have been closed. Bug #36885
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14874
diff
changeset
|
96 |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
97 void |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
98 workspace_view::handle_visibility_changed (bool visible) |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
99 { |
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
100 if (visible) |
14761
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
101 emit active_changed (true); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
102 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
103 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
104 void |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
105 workspace_view::model_changed () |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
106 { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
107 // This code is very quirky and requires some explanation. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
108 // Usually, we should not deal with collapsing or expanding ourselves, |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
109 // because the view itself determines (based on the model) whether it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
110 // is appropriate to collapse or expand items. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
111 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
112 // Now, the logic requires that we update our model item by item, which |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
113 // would make it work correctly, but this is extremely slow and scales |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
114 // very bad (O(n^2)). That's why we throw away our model and rebuild it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
115 // completely from scratch (O(n)), which is why the view renders all |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
116 // displayed data as invalid. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
117 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
118 // In order to make collapsing/expanding work again, we need to set |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
119 // flags ourselves here. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
120 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
121 QModelIndex local_model_index = _workspace_model->index (0, 0); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
122 QModelIndex global_model_index = _workspace_model->index (1, 0); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
123 QModelIndex persistent_model_index = _workspace_model->index (2, 0); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
124 QModelIndex hidden_model_index = _workspace_model->index (3, 0); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
125 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
126 if (_explicit_collapse.local) { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
127 _workspace_tree_view->collapse (local_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
128 } else { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
129 _workspace_tree_view->expand (local_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
130 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
131 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
132 if (_explicit_collapse.global) { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
133 _workspace_tree_view->collapse (global_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
134 } else { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
135 _workspace_tree_view->expand (global_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
136 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
137 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
138 if (_explicit_collapse.persistent) { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
139 _workspace_tree_view->collapse (persistent_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
140 } else { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
141 _workspace_tree_view->expand (persistent_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
142 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
143 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
144 if (_explicit_collapse.hidden) { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
145 _workspace_tree_view->collapse (hidden_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
146 } else { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
147 _workspace_tree_view->expand (hidden_model_index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
148 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
149 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
150 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
151 void |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
152 workspace_view::collapse_requested (QModelIndex index) |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
153 { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
154 // This code is very quirky and requires some explanation. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
155 // Usually, we should not deal with collapsing or expanding ourselves, |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
156 // because the view itself determines (based on the model) whether it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
157 // is appropriate to collapse or expand items. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
158 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
159 // Now, the logic requires that we update our model item by item, which |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
160 // would make it work correctly, but this is extremely slow and scales |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
161 // very bad (O(n^2)). That's why we throw away our model and rebuild it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
162 // completely from scratch (O(n)), which is why the view renders all |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
163 // displayed data as invalid. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
164 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
165 // In order to make collapsing/expanding work again, we need to set |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
166 // flags ourselves here. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
167 QMap<int, QVariant> item_data |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
168 = _workspace_model->itemData (index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
169 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
170 if (item_data[0] == "Local") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
171 _explicit_collapse.local = true; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
172 if (item_data[0] == "Global") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
173 _explicit_collapse.global = true; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
174 if (item_data[0] == "Persistent") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
175 _explicit_collapse.persistent = true; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
176 if (item_data[0] == "Hidden") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
177 _explicit_collapse.hidden = true; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
178 } |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
179 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
180 void |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
181 workspace_view::expand_requested (QModelIndex index) |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
182 { |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
183 // This code is very quirky and requires some explanation. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
184 // Usually, we should not deal with collapsing or expanding ourselves, |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
185 // because the view itself determines (based on the model) whether it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
186 // is appropriate to collapse or expand items. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
187 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
188 // Now, the logic requires that we update our model item by item, which |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
189 // would make it work correctly, but this is extremely slow and scales |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
190 // very bad (O(n^2)). That's why we throw away our model and rebuild it |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
191 // completely from scratch (O(n)), which is why the view renders all |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
192 // displayed data as invalid. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
193 // |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
194 // In order to make collapsing/expanding work again, we need to do set |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
195 // flags ourselves here. |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
196 QMap<int, QVariant> item_data |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
197 = _workspace_model->itemData (index); |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
198 |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
199 if (item_data[0] == "Local") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
200 _explicit_collapse.local = false; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
201 if (item_data[0] == "Global") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
202 _explicit_collapse.global = false; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
203 if (item_data[0] == "Persistent") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
204 _explicit_collapse.persistent = false; |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
205 if (item_data[0] == "Hidden") |
8c4d5029d933
Collapsing/Expanding items now works with a workaround.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14720
diff
changeset
|
206 _explicit_collapse.hidden = false; |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
207 } |
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
208 |
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
209 void |
14874
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
210 workspace_view::item_double_clicked (QModelIndex index) |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
211 { |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
212 Q_UNUSED (index); |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
213 // TODO: Implement opening a dialog that allows the user to change a variable in the workspace. |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
214 } |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
215 |
5d74d8b982a5
Forgot to have a fallback lexer when the file suffix is unknown. Removed unused variable and added comments.
Jacob Dawid <jacob.dawid@gmail.com>
parents:
14783
diff
changeset
|
216 void |
14709
f50591409306
Started to rename class names and methods from camel case to underscore-
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14707
diff
changeset
|
217 workspace_view::closeEvent (QCloseEvent *event) |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
218 { |
14712
5cb54cca8a06
Completion of code reformatting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14709
diff
changeset
|
219 emit active_changed (false); |
13577
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
220 QDockWidget::closeEvent (event); |
e440b3f32f02
Fixed bug with closing subwindows.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
13541
diff
changeset
|
221 } |