File indexing completed on 2024-04-14 03:43:25
0001 /* 0002 SPDX-FileCopyrightText: 2003 Jason Harris <kstars@30doradus.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "scriptargwidgets.h" 0010 #include "ui_scriptbuilder.h" 0011 #include "ui_scriptnamedialog.h" 0012 #include "ui_optionstreeview.h" 0013 0014 #include <QDialog> 0015 #include <QUrl> 0016 0017 #include <memory> 0018 0019 class QTreeWidget; 0020 class QTreeWidgetItem; 0021 class QTextStream; 0022 0023 class ScriptFunction; 0024 0025 class OptionsTreeViewWidget : public QFrame, public Ui::OptionsTreeView 0026 { 0027 Q_OBJECT 0028 public: 0029 explicit OptionsTreeViewWidget(QWidget *p); 0030 }; 0031 0032 class OptionsTreeView : public QDialog 0033 { 0034 Q_OBJECT 0035 public: 0036 explicit OptionsTreeView(QWidget *p); 0037 virtual ~OptionsTreeView() override = default; 0038 0039 QTreeWidget *optionsList() 0040 { 0041 return otvw->OptionsList; 0042 } 0043 void resizeColumns(); 0044 0045 private: 0046 std::unique_ptr<OptionsTreeViewWidget> otvw; 0047 }; 0048 0049 class ScriptNameWidget : public QFrame, public Ui::ScriptNameDialog 0050 { 0051 Q_OBJECT 0052 public: 0053 explicit ScriptNameWidget(QWidget *p); 0054 }; 0055 0056 class ScriptNameDialog : public QDialog 0057 { 0058 Q_OBJECT 0059 public: 0060 explicit ScriptNameDialog(QWidget *p); 0061 ~ScriptNameDialog() override; 0062 QString scriptName() const 0063 { 0064 return snw->ScriptName->text(); 0065 } 0066 QString authorName() const 0067 { 0068 return snw->AuthorName->text(); 0069 } 0070 0071 private slots: 0072 void slotEnableOkButton(); 0073 0074 private: 0075 ScriptNameWidget *snw { nullptr }; 0076 QPushButton *okB { nullptr }; 0077 }; 0078 0079 class ScriptBuilderUI : public QFrame, public Ui::ScriptBuilder 0080 { 0081 Q_OBJECT 0082 public: 0083 explicit ScriptBuilderUI(QWidget *p); 0084 }; 0085 0086 /** 0087 * @class ScriptBuilder 0088 * A GUI tool for building behavioral DBus scripts for KStars. 0089 * 0090 * @author Jason Harris 0091 * @version 1.0 0092 */ 0093 class ScriptBuilder : public QDialog 0094 { 0095 Q_OBJECT 0096 public: 0097 explicit ScriptBuilder(QWidget *parent); 0098 ~ScriptBuilder() override; 0099 0100 bool unsavedChanges() const 0101 { 0102 return UnsavedChanges; 0103 } 0104 void setUnsavedChanges(bool b = true); 0105 void saveWarning(); 0106 void readScript(QTextStream &istream); 0107 void writeScript(QTextStream &ostream); 0108 bool parseFunction(const QString &fn_name, const QString &fn_args); 0109 0110 public slots: 0111 void slotAddFunction(); 0112 void slotMoveFunctionUp(); 0113 void slotMoveFunctionDown(); 0114 void slotArgWidget(); 0115 void slotShowDoc(); 0116 0117 void slotNew(); 0118 void slotOpen(); 0119 void slotSave(); 0120 void slotSaveAs(); 0121 void slotRunScript(); 0122 void slotClose(); 0123 0124 void slotCopyFunction(); 0125 void slotRemoveFunction(); 0126 0127 void slotFindCity(); 0128 void slotFindObject(); 0129 void slotShowOptions(); 0130 void slotLookToward(); 0131 void slotArgFindObject(); 0132 void slotRa(); 0133 void slotDec(); 0134 void slotAz(); 0135 void slotAlt(); 0136 void slotChangeDate(); 0137 void slotChangeTime(); 0138 void slotWaitFor(); 0139 void slotWaitForKey(); 0140 void slotTracking(); 0141 void slotViewOption(); 0142 void slotChangeCity(); 0143 void slotChangeProvince(); 0144 void slotChangeCountry(); 0145 void slotTimeScale(); 0146 void slotZoom(); 0147 void slotExportImage(); 0148 void slotPrintImage(); 0149 void slotChangeColor(); 0150 void slotChangeColorName(); 0151 void slotLoadColorScheme(); 0152 0153 #if 0 0154 void slotINDIWaitCheck(bool toggleState); 0155 void slotINDIFindObject(); 0156 void slotINDIStartDeviceName(); 0157 void slotINDIStartDeviceMode(); 0158 void slotINDISetDevice(); 0159 void slotINDIShutdown(); 0160 void slotINDISwitchDeviceConnection(); 0161 void slotINDISetPortDevicePort(); 0162 void slotINDISetTargetCoordDeviceRA(); 0163 void slotINDISetTargetCoordDeviceDEC(); 0164 void slotINDISetTargetNameTargetName(); 0165 void slotINDISetActionName(); 0166 void slotINDIWaitForActionName(); 0167 void slotINDISetFocusSpeed(); 0168 void slotINDIStartFocusDirection(); 0169 void slotINDISetFocusTimeout(); 0170 void slotINDISetGeoLocationDeviceLong(); 0171 void slotINDISetGeoLocationDeviceLat(); 0172 void slotINDIStartExposureTimeout(); 0173 void slotINDISetUTC(); 0174 void slotINDISetScopeAction(); 0175 void slotINDISetFrameType(); 0176 void slotINDISetCCDTemp(); 0177 void slotINDISetFilterNum(); 0178 #endif 0179 0180 private: 0181 void initViewOptions(); 0182 void warningMismatch(const QString &expected) const; 0183 0184 ScriptBuilderUI *sb { nullptr }; 0185 0186 QList<ScriptFunction *> KStarsFunctionList; 0187 QList<ScriptFunction *> SimClockFunctionList; 0188 0189 #if 0 0190 QList<ScriptFunction *> INDIFunctionList; 0191 #endif 0192 0193 QList<ScriptFunction *> ScriptList; 0194 0195 QWidget *argBlank { nullptr }; 0196 ArgLookToward *argLookToward { nullptr }; 0197 ArgFindObject *argFindObject { nullptr }; 0198 ArgSetRaDec *argSetRaDec { nullptr }; 0199 ArgSetAltAz *argSetAltAz { nullptr }; 0200 ArgSetLocalTime *argSetLocalTime { nullptr }; 0201 ArgWaitFor *argWaitFor { nullptr }; 0202 ArgWaitForKey *argWaitForKey { nullptr }; 0203 ArgSetTrack *argSetTracking { nullptr }; 0204 ArgChangeViewOption *argChangeViewOption { nullptr }; 0205 ArgSetGeoLocation *argSetGeoLocation { nullptr }; 0206 ArgTimeScale *argTimeScale { nullptr }; 0207 ArgZoom *argZoom { nullptr }; 0208 ArgExportImage *argExportImage { nullptr }; 0209 ArgPrintImage *argPrintImage { nullptr }; 0210 ArgSetColor *argSetColor { nullptr }; 0211 ArgLoadColorScheme *argLoadColorScheme { nullptr }; 0212 0213 #if 0 0214 ArgStartINDI * argStartINDI; 0215 ArgSetDeviceINDI * argSetDeviceINDI; 0216 ArgShutdownINDI * argShutdownINDI; 0217 ArgSwitchINDI * argSwitchINDI; 0218 ArgSetPortINDI * argSetPortINDI; 0219 ArgSetTargetCoordINDI * argSetTargetCoordINDI; 0220 ArgSetTargetNameINDI * argSetTargetNameINDI; 0221 ArgSetActionINDI * argSetActionINDI; 0222 ArgSetActionINDI * argWaitForActionINDI; 0223 ArgSetFocusSpeedINDI * argSetFocusSpeedINDI; 0224 ArgStartFocusINDI * argStartFocusINDI; 0225 ArgSetFocusTimeoutINDI * argSetFocusTimeoutINDI; 0226 ArgSetGeoLocationINDI * argSetGeoLocationINDI; 0227 ArgStartExposureINDI * argStartExposureINDI; 0228 ArgSetUTCINDI * argSetUTCINDI; 0229 ArgSetScopeActionINDI * argSetScopeActionINDI; 0230 ArgSetFrameTypeINDI * argSetFrameTypeINDI; 0231 ArgSetCCDTempINDI * argSetCCDTempINDI; 0232 ArgSetFilterNumINDI * argSetFilterNumINDI; 0233 #endif 0234 0235 ScriptNameDialog *snd { nullptr }; 0236 OptionsTreeView *otv { nullptr }; 0237 0238 QTreeWidgetItem *opsGUI { nullptr }; 0239 QTreeWidgetItem *opsToolbar { nullptr }; 0240 QTreeWidgetItem *opsShowObj { nullptr }; 0241 QTreeWidgetItem *opsShowOther { nullptr }; 0242 QTreeWidgetItem *opsCName { nullptr }; 0243 QTreeWidgetItem *opsHide { nullptr }; 0244 QTreeWidgetItem *opsSkymap { nullptr }; 0245 QTreeWidgetItem *opsLimit { nullptr }; 0246 0247 bool UnsavedChanges { false }; 0248 bool checkForChanges { false }; 0249 QUrl currentFileURL; 0250 QString currentDir; 0251 QString currentScriptName, currentAuthor; 0252 };