1 /* 2 SPDX-FileCopyrightText: 2003 Jason Harris <kstars@30doradus.org> 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 optionsList()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; scriptName()62 QString scriptName() const 63 { 64 return snw->ScriptName->text(); 65 } authorName()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 unsavedChanges()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 }; 253