itom  3.0.0
scriptEditorOrganizer.h
1 /* ********************************************************************
2  itom software
3  URL: http://www.uni-stuttgart.de/ito
4  Copyright (C) 2016, Institut fuer Technische Optik (ITO),
5  Universitaet Stuttgart, Germany
6 
7  This file is part of itom.
8 
9  itom is free software; you can redistribute it and/or modify it
10  under the terms of the GNU Library General Public Licence as published by
11  the Free Software Foundation; either version 2 of the Licence, or (at
12  your option) any later version.
13 
14  itom is distributed in the hope that it will be useful, but
15  WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
17  General Public Licence for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with itom. If not, see <http://www.gnu.org/licenses/>.
21 *********************************************************************** */
22 
23 #ifndef SCRIPTEDITORORGANIZER_H
24 #define SCRIPTEDITORORGANIZER_H
25 
26 #include "../widgets/scriptDockWidget.h"
27 #include "../common/sharedStructuresQt.h"
28 
29 
30 namespace ito
31 {
32 QDataStream &operator<<(QDataStream &out, const ito::ScriptEditorStorage &obj);
33 
34 QDataStream &operator>>(QDataStream &in, ito::ScriptEditorStorage &obj);
35 
36 class ScriptEditorOrganizer : public QObject
37 {
38  Q_OBJECT
39 public:
40  ScriptEditorOrganizer( bool dockAvailable);
42 
43  RetVal saveAllScripts(bool askFirst = true, bool ignoreNewScripts = false, int *saveScriptState = NULL);
44  RetVal closeAllScripts(bool saveFirst);
45 
46  void saveScriptState();
48 
49  const QStringList &getRecentlyUsedFiles() const { return m_recentlyUsedFiles; }
50 
51  QStringList openedScripts() const;
52  bool m_dockedNewWidget;
53 
54 protected:
55  ScriptDockWidget* createEmptyScriptDock(bool docked, Qt::DockWidgetArea area = Qt::TopDockWidgetArea, const QString &objectName = QString());
56 
57 private:
61 
62  QList<ScriptDockWidget*> scriptDockElements;
63  QSet<QString> m_usedObjectNames;
65 
67 
68  QStringList m_recentlyUsedFiles;
69 
70 signals:
71  void addScriptDockWidgetToMainWindow(AbstractDockWidget *dockWidget, Qt::DockWidgetArea area);
73 
74  void pythonRunFile(QString filename);
75  void pythonDebugFile(QString filename);
76 
77 public slots:
79 
80  void dockScriptTab(ScriptDockWidget* widget, int index, bool closeDockIfEmpty = false);
81  void undockScriptTab(ScriptDockWidget* widget, int index, bool undockToNewScriptWindow = false, bool closeDockIfEmpty = false);
82 
83  void openNewScriptWindow(bool docked, ItomSharedSemaphore* semaphore = NULL);
84  RetVal newScript(ItomSharedSemaphore* semaphore = NULL);
85  RetVal openScript(const QString &filename, ItomSharedSemaphore* semaphore = NULL, int visibleLineNr = -1, bool errorMessageClick = false);
86 
87  ScriptDockWidget* openScriptRequested(const QString &filename, ScriptDockWidget* widget);
88 
89  void pythonRunFileRequested(QString filename);
90  void pythonDebugFileRequested(QString filename);
91 
92  void pythonDebugPositionChanged(QString filename, int lineNo);
93 
94  void fileOpenedOrSaved(const QString &filename);
95 
96 private slots:
97  void widgetFocusChanged(QWidget* old, QWidget* now);
98 };
99 
100 } //end namespace ito
101 
102 #endif
void fileOpenedOrSaved(const QString &filename)
This slot is called if a file is saved or stored in any widget.
Definition: scriptEditorOrganizer.cpp:266
void pythonRunFile(QString filename)
signal emitted if dockWidget should be removed from main window
QSet< QString > m_usedObjectNames
list with references to all ScriptDockWidgets (docked or windows-style)
Definition: scriptEditorOrganizer.h:63
RetVal saveAllScripts(bool askFirst=true, bool ignoreNewScripts=false, int *saveScriptState=NULL)
saves all opened scripts, if changes exist
Definition: scriptEditorOrganizer.cpp:393
widget containing one or multiple script editors (tabbed). This widget can either be a docking widget...
Definition: scriptDockWidget.h:47
RetVal openScript(const QString &filename, ItomSharedSemaphore *semaphore=NULL, int visibleLineNr=-1, bool errorMessageClick=false)
slot, invoked if python macro file should be opened as new tab in active script editor window ...
Definition: scriptEditorOrganizer.cpp:734
void removeScriptDockWidget(ScriptDockWidget *widget)
signal emitted if macro (filename) should be debugged in python
Definition: scriptEditorOrganizer.cpp:368
RetVal newScript(ItomSharedSemaphore *semaphore=NULL)
slot, invoked if new script should be opened
Definition: scriptEditorOrganizer.cpp:698
RetVal closeAllScripts(bool saveFirst)
tries to close all opened script.
Definition: scriptEditorOrganizer.cpp:480
Class for managing status values (like errors or warning)
Definition: retVal.h:54
organizes script editors, independent on their appearance (docked or window-style) ...
Definition: scriptEditorOrganizer.h:36
Definition: scriptEditorWidget.h:57
void undockScriptTab(ScriptDockWidget *widget, int index, bool undockToNewScriptWindow=false, bool closeDockIfEmpty=false)
slot invoked if tab, defined by its index, in the given widget should be undocked ...
Definition: scriptEditorOrganizer.cpp:652
void pythonRunFileRequested(QString filename)
slot invoked if someone wants to run a python file with filename.
Definition: scriptEditorOrganizer.cpp:848
QStringList m_recentlyUsedFiles
mutex locking any changes to scriptDockElements
Definition: scriptEditorOrganizer.h:68
void openNewScriptWindow(bool docked, ItomSharedSemaphore *semaphore=NULL)
slot invoked if empty new script window should be created and displayed
Definition: scriptEditorOrganizer.cpp:681
Definition: apiFunctionsGraph.cpp:39
RetVal restoreScriptState()
This function is called to get all the saved informations about widgets after itom starts...
Definition: scriptEditorOrganizer.cpp:172
void dockScriptTab(ScriptDockWidget *widget, int index, bool closeDockIfEmpty=false)
slot invoked if tab, defined by its index, if the given widget should be docked
Definition: scriptEditorOrganizer.cpp:621
semaphore which can be used for asychronous thread communication. By using this class it is possible ...
Definition: sharedStructuresQt.h:57
ScriptDockWidget * openScriptRequested(const QString &filename, ScriptDockWidget *widget)
slot invoked if a file open command has been executed in any script window.
Definition: scriptEditorOrganizer.cpp:807
ScriptEditorOrganizer(bool dockAvailable)
constructor
Definition: scriptEditorOrganizer.cpp:63
ScriptDockWidget * getFirstDockedElement()
returns first ScriptDockWidget of the widget-list which is docked. This is also the last activated do...
Definition: scriptEditorOrganizer.cpp:511
ScriptDockWidget * getFirstUndockedElement()
Definition: scriptEditorOrganizer.cpp:552
void widgetFocusChanged(QWidget *old, QWidget *now)
slot is connected to signal "focusChanged" of QApplication and indicates every change in the active w...
Definition: scriptEditorOrganizer.cpp:574
QMutex m_scriptStackMutex
true if docking mode is available, else: false
Definition: scriptEditorOrganizer.h:66
void pythonDebugFileRequested(QString filename)
slot invoked if someone wants to debug a python file with filename.
Definition: scriptEditorOrganizer.cpp:883
abstract dock widget class which inherits QDockWidget. The content of QDockWidget consists of an inst...
Definition: abstractDockWidget.h:45
~ScriptEditorOrganizer()
destructor
Definition: scriptEditorOrganizer.cpp:89
ScriptDockWidget * createEmptyScriptDock(bool docked, Qt::DockWidgetArea area=Qt::TopDockWidgetArea, const QString &objectName=QString())
creates new ScriptDockWidget without any script editor tab.
Definition: scriptEditorOrganizer.cpp:289
void pythonDebugPositionChanged(QString filename, int lineNo)
slot invoked if line in python debugging process has been changed
Definition: scriptEditorOrganizer.cpp:920
void removeScriptDockWidgetFromMainWindow(AbstractDockWidget *dockWidget)
signal emitted if dockWidget should be added to docking area in main window
bool m_dockAvailable
currently used objectNames for script windows
Definition: scriptEditorOrganizer.h:64
void pythonDebugFile(QString filename)
signal emitted if macro (filename) should be executed in python
void saveScriptState()
This function is called to save all the informations about widgets before itom is closed...
Definition: scriptEditorOrganizer.cpp:111
ScriptDockWidget * getActiveDockWidget()
returns the ScriptDockWidget, which actually has the focus or lastly got the focus.
Definition: scriptEditorOrganizer.cpp:533