Kstars

scriptbuilder.h
1 /*
2  SPDX-FileCopyrightText: 2003 Jason Harris <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "scriptargwidgets.h"
10 #include "ui_scriptbuilder.h"
11 #include "ui_scriptnamedialog.h"
12 #include "ui_optionstreeview.h"
13 
14 #include <QDialog>
15 #include <QUrl>
16 
17 #include <memory>
18 
19 class QTreeWidget;
20 class QTreeWidgetItem;
21 class QTextStream;
22 
23 class ScriptFunction;
24 
25 class OptionsTreeViewWidget : public QFrame, public Ui::OptionsTreeView
26 {
27  Q_OBJECT
28  public:
29  explicit OptionsTreeViewWidget(QWidget *p);
30 };
31 
32 class OptionsTreeView : public QDialog
33 {
34  Q_OBJECT
35  public:
36  explicit OptionsTreeView(QWidget *p);
37  virtual ~OptionsTreeView() override = default;
38 
39  QTreeWidget *optionsList()
40  {
41  return otvw->OptionsList;
42  }
43  void resizeColumns();
44 
45  private:
46  std::unique_ptr<OptionsTreeViewWidget> otvw;
47 };
48 
49 class ScriptNameWidget : public QFrame, public Ui::ScriptNameDialog
50 {
51  Q_OBJECT
52  public:
53  explicit ScriptNameWidget(QWidget *p);
54 };
55 
56 class ScriptNameDialog : public QDialog
57 {
58  Q_OBJECT
59  public:
60  explicit ScriptNameDialog(QWidget *p);
61  ~ScriptNameDialog() override;
62  QString scriptName() const
63  {
64  return snw->ScriptName->text();
65  }
66  QString authorName() const
67  {
68  return snw->AuthorName->text();
69  }
70 
71  private slots:
72  void slotEnableOkButton();
73 
74  private:
75  ScriptNameWidget *snw { nullptr };
76  QPushButton *okB { nullptr };
77 };
78 
79 class ScriptBuilderUI : public QFrame, public Ui::ScriptBuilder
80 {
81  Q_OBJECT
82  public:
83  explicit ScriptBuilderUI(QWidget *p);
84 };
85 
86 /**
87  * @class ScriptBuilder
88  * A GUI tool for building behavioral DBus scripts for KStars.
89  *
90  * @author Jason Harris
91  * @version 1.0
92  */
93 class ScriptBuilder : public QDialog
94 {
95  Q_OBJECT
96  public:
97  explicit ScriptBuilder(QWidget *parent);
98  ~ScriptBuilder() override;
99 
100  bool unsavedChanges() const
101  {
102  return UnsavedChanges;
103  }
104  void setUnsavedChanges(bool b = true);
105  void saveWarning();
106  void readScript(QTextStream &istream);
107  void writeScript(QTextStream &ostream);
108  bool parseFunction(const QString &fn_name, const QString &fn_args);
109 
110  public slots:
111  void slotAddFunction();
112  void slotMoveFunctionUp();
113  void slotMoveFunctionDown();
114  void slotArgWidget();
115  void slotShowDoc();
116 
117  void slotNew();
118  void slotOpen();
119  void slotSave();
120  void slotSaveAs();
121  void slotRunScript();
122  void slotClose();
123 
124  void slotCopyFunction();
125  void slotRemoveFunction();
126 
127  void slotFindCity();
128  void slotFindObject();
129  void slotShowOptions();
130  void slotLookToward();
131  void slotArgFindObject();
132  void slotRa();
133  void slotDec();
134  void slotAz();
135  void slotAlt();
136  void slotChangeDate();
137  void slotChangeTime();
138  void slotWaitFor();
139  void slotWaitForKey();
140  void slotTracking();
141  void slotViewOption();
142  void slotChangeCity();
143  void slotChangeProvince();
144  void slotChangeCountry();
145  void slotTimeScale();
146  void slotZoom();
147  void slotExportImage();
148  void slotPrintImage();
149  void slotChangeColor();
150  void slotChangeColorName();
151  void slotLoadColorScheme();
152 
153 #if 0
154  void slotINDIWaitCheck(bool toggleState);
155  void slotINDIFindObject();
156  void slotINDIStartDeviceName();
157  void slotINDIStartDeviceMode();
158  void slotINDISetDevice();
159  void slotINDIShutdown();
160  void slotINDISwitchDeviceConnection();
161  void slotINDISetPortDevicePort();
162  void slotINDISetTargetCoordDeviceRA();
163  void slotINDISetTargetCoordDeviceDEC();
164  void slotINDISetTargetNameTargetName();
165  void slotINDISetActionName();
166  void slotINDIWaitForActionName();
167  void slotINDISetFocusSpeed();
168  void slotINDIStartFocusDirection();
169  void slotINDISetFocusTimeout();
170  void slotINDISetGeoLocationDeviceLong();
171  void slotINDISetGeoLocationDeviceLat();
172  void slotINDIStartExposureTimeout();
173  void slotINDISetUTC();
174  void slotINDISetScopeAction();
175  void slotINDISetFrameType();
176  void slotINDISetCCDTemp();
177  void slotINDISetFilterNum();
178 #endif
179 
180  private:
181  void initViewOptions();
182  void warningMismatch(const QString &expected) const;
183 
184  ScriptBuilderUI *sb { nullptr };
185 
186  QList<ScriptFunction *> KStarsFunctionList;
187  QList<ScriptFunction *> SimClockFunctionList;
188 
189 #if 0
190  QList<ScriptFunction *> INDIFunctionList;
191 #endif
192 
193  QList<ScriptFunction *> ScriptList;
194 
195  QWidget *argBlank { nullptr };
196  ArgLookToward *argLookToward { nullptr };
197  ArgFindObject *argFindObject { nullptr };
198  ArgSetRaDec *argSetRaDec { nullptr };
199  ArgSetAltAz *argSetAltAz { nullptr };
200  ArgSetLocalTime *argSetLocalTime { nullptr };
201  ArgWaitFor *argWaitFor { nullptr };
202  ArgWaitForKey *argWaitForKey { nullptr };
203  ArgSetTrack *argSetTracking { nullptr };
204  ArgChangeViewOption *argChangeViewOption { nullptr };
205  ArgSetGeoLocation *argSetGeoLocation { nullptr };
206  ArgTimeScale *argTimeScale { nullptr };
207  ArgZoom *argZoom { nullptr };
208  ArgExportImage *argExportImage { nullptr };
209  ArgPrintImage *argPrintImage { nullptr };
210  ArgSetColor *argSetColor { nullptr };
211  ArgLoadColorScheme *argLoadColorScheme { nullptr };
212 
213 #if 0
214  ArgStartINDI * argStartINDI;
215  ArgSetDeviceINDI * argSetDeviceINDI;
216  ArgShutdownINDI * argShutdownINDI;
217  ArgSwitchINDI * argSwitchINDI;
218  ArgSetPortINDI * argSetPortINDI;
219  ArgSetTargetCoordINDI * argSetTargetCoordINDI;
220  ArgSetTargetNameINDI * argSetTargetNameINDI;
221  ArgSetActionINDI * argSetActionINDI;
222  ArgSetActionINDI * argWaitForActionINDI;
223  ArgSetFocusSpeedINDI * argSetFocusSpeedINDI;
224  ArgStartFocusINDI * argStartFocusINDI;
225  ArgSetFocusTimeoutINDI * argSetFocusTimeoutINDI;
226  ArgSetGeoLocationINDI * argSetGeoLocationINDI;
227  ArgStartExposureINDI * argStartExposureINDI;
228  ArgSetUTCINDI * argSetUTCINDI;
229  ArgSetScopeActionINDI * argSetScopeActionINDI;
230  ArgSetFrameTypeINDI * argSetFrameTypeINDI;
231  ArgSetCCDTempINDI * argSetCCDTempINDI;
232  ArgSetFilterNumINDI * argSetFilterNumINDI;
233 #endif
234 
235  ScriptNameDialog *snd { nullptr };
236  OptionsTreeView *otv { nullptr };
237 
238  QTreeWidgetItem *opsGUI { nullptr };
239  QTreeWidgetItem *opsToolbar { nullptr };
240  QTreeWidgetItem *opsShowObj { nullptr };
241  QTreeWidgetItem *opsShowOther { nullptr };
242  QTreeWidgetItem *opsCName { nullptr };
243  QTreeWidgetItem *opsHide { nullptr };
244  QTreeWidgetItem *opsSkymap { nullptr };
245  QTreeWidgetItem *opsLimit { nullptr };
246 
247  bool UnsavedChanges { false };
248  bool checkForChanges { false };
249  QUrl currentFileURL;
250  QString currentDir;
251  QString currentScriptName, currentAuthor;
252 };
Q_OBJECTQ_OBJECT
Jason Harris.
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Aug 18 2022 03:56:45 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.