/*3:*/ #line 522 "./typica.w" #define PROGRAM_NAME "Typica" /*5:*/ #line 616 "./typica.w" #include #include #include #include #include #include #include #include #include /*:5*//*6:*/ #line 631 "./typica.w" #include "helpmenu.h" /*:6*//*265:*/ #line 6005 "./typica.w" #include "units.h" #line 1 "./measurement.w" /*:265*//*534:*/ #line 197 "./webview.w" #include "webview.h" /*:534*//*547:*/ #line 375 "./webview.w" #include "webelement.h" #line 11934 "./typica.w" /*:547*//*658:*/ #line 478 "./daterangeselector.w" #include "daterangeselector.h" #line 13650 "./typica.w" /*:658*//*766:*/ #line 16151 "./typica.w" #include "qextserialport.h" #include "qextserialenumerator.h" /*:766*//*920:*/ #line 124 "./dataqsdk.w" #ifdef Q_OS_WIN32 #include #else #define PASCAL #endif /*:920*//*944:*/ #line 862 "./dataqsdk.w" #include /*:944*//*959:*/ #line 62 "./scales.w" #include "draglabel.h" /*:959*//*974:*/ #line 335 "./scales.w" #include "scale.h" /*:974*/ #line 525 "./typica.w" /*20:*/ #line 946 "./typica.w" class ScriptQMainWindow:public QMainWindow { Q_OBJECT Q_PROPERTY(QString closePrompt READ closePrompt WRITE setClosePrompt) public: ScriptQMainWindow(); QString closePrompt(); public slots: void show(); void saveSizeAndPosition(const QString&key); void restoreSizeAndPosition(const QString&key); void displayStatus(const QString&message= QString()); void setClosePrompt(QString prompt); protected: void closeEvent(QCloseEvent*event); void showEvent(QShowEvent*event); signals: void aboutToClose(void); private: QString cprompt; }; /*:20*//*148:*/ #line 3435 "./typica.w" class SqlQueryConnection:public QSqlQuery { public: SqlQueryConnection(const QString&query= QString()); ~SqlQueryConnection(); QSqlQuery*operator->()const; private: QString connection; QSqlQuery*q; }; /*:148*//*219:*/ #line 5284 "./typica.w" class NumericDelegate:public QItemDelegate { Q_OBJECT public: NumericDelegate(QObject*parent= NULL); QWidget*createEditor(QWidget*parent, const QStyleOptionViewItem&option, const QModelIndex&index)const; void setEditorData(QWidget*editor,const QModelIndex&index)const; void setModelData(QWidget*editor,QAbstractItemModel*model, const QModelIndex&index)const; void updateEditorGeometry(QWidget*editor, const QStyleOptionViewItem&option, const QModelIndex&index)const; }; /*:219*//*261:*/ #line 425 "./units.w" Q_DECLARE_METATYPE(Units::Unit) /*:261*//*266:*/ #line 19 "./measurement.w" class Measurement:public QVariantMap { public: Measurement(double temperature= 0,QTime time= QTime(), Units::Unit sc= Units::Fahrenheit); Measurement(double temperature); double temperature()const; QTime time()const; void setTemperature(double temperature); void setTime(QTime time); void setUnit(Units::Unit scale); Units::Unit scale()const; Measurement toFahrenheit(); Measurement toCelsius(); Measurement toKelvin(); Measurement toRankine(); }; /*:266*//*270:*/ #line 128 "./measurement.w" Q_DECLARE_METATYPE(Measurement) /*:270*//*277:*/ #line 6069 "./typica.w" class Channel; class DAQImplementation; class DAQ:public QObject { Q_OBJECT Q_ENUMS(ThermocoupleType) DAQImplementation*imp; private slots: void threadFinished(); public: DAQ(QString device,const QString&driver= QString("nidaqmxbase")); ~DAQ(); Channel*newChannel(int units,int thermocouple); Q_INVOKABLE void setClockRate(double Hz); Q_INVOKABLE void start(); Q_INVOKABLE void stop(); enum ThermocoupleType { TypeJ= 10072, TypeK= 10073, TypeN= 10077, TypeR= 10082, TypeS= 10085, TypeT= 10086, TypeB= 10047, TypeE= 10055 }; }; /*:277*//*278:*/ #line 6107 "./typica.w" class DAQImplementation:public QThread { Q_OBJECT public: DAQImplementation(const QString&driverinfo); ~DAQImplementation(); void run(); void measure(); /*279:*/ #line 6127 "./typica.w" typedef int(*daqfp)(...); daqfp read; daqfp errorInfo; daqfp startTask; daqfp createTask; daqfp createChannel; daqfp setClock; daqfp stopTask; daqfp clearTask; daqfp resetDevice; daqfp waitForMeasurement; /*:279*/ #line 6116 "./typica.w" /*280:*/ #line 6143 "./typica.w" bool useBase; QString device; QVector channelMap; unsigned int handle; int error; int channels; bool ready; QLibrary driver; QVector unitMap; /*:280*/ #line 6117 "./typica.w" }; /*:278*//*296:*/ #line 6647 "./typica.w" class FakeDAQImplementation:public QThread { Q_OBJECT public: FakeDAQImplementation(); ~FakeDAQImplementation(); void run(); void measure(); QVector channelMap; int channels; bool ready; double clockRate; }; class FakeDAQ:public QObject { Q_OBJECT FakeDAQImplementation*imp; public: FakeDAQ(QString device); ~FakeDAQ(); Channel*newChannel(int units,int thermocouple); Q_INVOKABLE void setClockRate(double Hz); Q_INVOKABLE void start(); }; /*:296*//*303:*/ #line 6834 "./typica.w" class Channel:public QObject { Q_OBJECT public: Channel(); ~Channel(); public slots: void input(Measurement measurement); signals: void newData(Measurement); }; /*:303*//*307:*/ #line 6901 "./typica.w" class LinearCalibrator:public QObject { Q_OBJECT Q_PROPERTY(double measuredLower READ measuredLower WRITE setMeasuredLower) Q_PROPERTY(double measuredUpper READ measuredUpper WRITE setMeasuredUpper) Q_PROPERTY(double mappedLower READ mappedLower WRITE setMappedLower) Q_PROPERTY(double mappedUpper READ mappedUpper WRITE setMappedUpper) Q_PROPERTY(bool closedRange READ isClosedRange WRITE setClosedRange) Q_PROPERTY(double sensitivity READ sensitivity WRITE setSensitivity) public: LinearCalibrator(QObject*parent= NULL); double measuredLower(); double measuredUpper(); double mappedLower(); double mappedUpper(); bool isClosedRange(); double sensitivity(); public slots: void setMeasuredLower(double lower); void setMeasuredUpper(double upper); void setMappedLower(double lower); void setMappedUpper(double upper); void setClosedRange(bool closed); void setSensitivity(double sensitivity); Measurement newMeasurement(Measurement measure); signals: void measurement(Measurement measure); void newData(Measurement measure); private: double Lo1; double Lo2; double Up1; double Up2; double sensitivitySetting; bool clamp; }; /*:307*//*314:*/ #line 7097 "./typica.w" class LinearSplineInterpolator:public QObject { Q_OBJECT public: LinearSplineInterpolator(QObject*parent= NULL); Q_INVOKABLE void add_pair(double source,double destination); public slots: Measurement newMeasurement(Measurement measure); signals: void newData(Measurement measure); private: void make_interpolators(); QMap *pairs; QList *interpolators; }; /*:314*//*319:*/ #line 7233 "./typica.w" class TemperatureDisplay:public QLCDNumber { Q_OBJECT int unit; bool r; public: TemperatureDisplay(QWidget*parent= NULL); ~TemperatureDisplay(); public slots: void setValue(Measurement temperature); void invalidate(); void setDisplayUnits(Units::Unit scale); void setRelativeMode(bool relative); }; /*:319*//*330:*/ #line 7449 "./typica.w" class MeasurementTimeOffset:public QObject { Q_OBJECT QTime epoch; QTime previous; bool hasPrevious; public: MeasurementTimeOffset(QTime zero); QTime zeroTime(); public slots: void newMeasurement(Measurement measure); void setZeroTime(QTime zero); signals: void measurement(Measurement measure); }; /*:330*//*337:*/ #line 7601 "./typica.w" class ThresholdDetector:public QObject { Q_OBJECT Q_ENUMS(EdgeDirection) public: enum EdgeDirection{ Ascending,Descending }; ThresholdDetector(double value); public slots: void newMeasurement(Measurement measure); void setThreshold(double value); void setEdgeDirection(EdgeDirection direction); signals: void timeForValue(double); private: double previousValue; double threshold; EdgeDirection currentDirection; }; /*:337*//*342:*/ #line 7707 "./typica.w" class ZeroEmitter:public QObject { Q_OBJECT Q_PROPERTY(int column READ column WRITE setColumn) Measurement cache; int col; public: ZeroEmitter(int tempcolumn= 1); int column(); double lastTemperature(); public slots: void newMeasurement(Measurement measure); void setColumn(int column); void emitZero(); signals: void measurement(Measurement measure,int tempcolumn); }; /*:342*//*347:*/ #line 7801 "./typica.w" class MeasurementAdapter:public QObject { Q_OBJECT int col; public: MeasurementAdapter(int tempcolumn); int column(); public slots: void newMeasurement(Measurement measure); void setColumn(int column); signals: void measurement(Measurement measure,int tempcolumn); }; /*:347*//*352:*/ #line 7890 "./typica.w" class GraphView:public QGraphicsView { Q_OBJECT QGraphicsScene*theScene; QMap *> *graphLines; QMap *prevPoints; QMap *translations; QList *gridLinesF; QList *gridLinesC; QList *relativeGridLines; bool relativeEnabled; bool timeIndicatorEnabled; QGraphicsLineItem*timeLine; LinearSplineInterpolator*relativeAdjuster; public: GraphView(QWidget*parent= NULL); void removeSeries(int column); protected: void resizeEvent(QResizeEvent*event); public slots: void newMeasurement(Measurement measure,int tempcolumn); void setSeriesTranslation(int column,double offset); void setTimeIndicatorEnabled(bool enabled); void clear(); void showF(); void showC(); }; /*:352*//*369:*/ #line 8355 "./typica.w" class MeasurementModel; class ZoomLog:public QTableView { Q_OBJECT /*370:*/ #line 8404 "./typica.w" MeasurementModel*model_ms; MeasurementModel*model_1s; MeasurementModel*model_5s; MeasurementModel*model_10s; MeasurementModel*model_15s; MeasurementModel*model_30s; MeasurementModel*model_1m; QList modelSet; QHash lastMeasurement; MeasurementModel*currentModel; QList saveTempCols; QList saveControlCols; QList saveNoteCols; QList currentColumnSet; /*:370*/ #line 8360 "./typica.w" void switchLOD(MeasurementModel*m); private slots: void centerOn(int row); void persistColumnResize(int column,int oldsize,int newsize); void restoreColumnWidths(); public: ZoomLog(); QVariant data(int row,int column)const; int rowCount(); bool saveXML(QIODevice*device); bool saveCSV(QIODevice*device); QString lastTime(int series); Q_INVOKABLE Units::Unit displayUnits(); public slots: void setVisible(bool visibility); void setHeaderData(int section,QString text); void LOD_ms(); void LOD_1s(); void LOD_5s(); void LOD_10s(); void LOD_15s(); void LOD_30s(); void LOD_1m(); void newMeasurement(Measurement measure,int tempcolumn); void newAnnotation(QString annotation,int tempcolumn, int annotationcolumn); void clear(); void addOutputTemperatureColumn(int column); void addOutputControlColumn(int column); void addOutputAnnotationColumn(int column); void clearOutputColumns(); void setDisplayUnits(Units::Unit scale); void addToCurrentColumnSet(int column); void clearCurrentColumnSet(); protected: virtual void showEvent(QShowEvent*event); }; /*:369*//*395:*/ #line 9100 "./typica.w" class MeasurementList; class MeasurementModel:public QAbstractItemModel { Q_OBJECT Units::Unit unit; QList *entries; QStringList*hData; int colcount; QHash *lastTemperature; QList ::iterator lastInsertion; QHash *controlColumns; public: MeasurementModel(QObject*parent= NULL); ~MeasurementModel(); int rowCount(const QModelIndex&parent= QModelIndex())const; int columnCount(const QModelIndex&parent= QModelIndex())const; bool setHeaderData(int section,Qt::Orientation orientation, const QVariant&value,int role= Qt::DisplayRole); QVariant data(const QModelIndex&index,int role)const; bool setData(const QModelIndex&index,const QVariant&value, int role= Qt::EditRole); Qt::ItemFlags flags(const QModelIndex&index)const; QVariant headerData(int section,Qt::Orientation orientation, int role= Qt::DisplayRole)const; QModelIndex index(int row,int column, const QModelIndex&parent= QModelIndex())const; QModelIndex parent(const QModelIndex&index)const; Units::Unit displayUnits(); public slots: void newMeasurement(Measurement measure,int tempcolumn); void newAnnotation(QString annotation,int tempcolumn, int annotationColumn); void clear(); void setDisplayUnits(Units::Unit scale); signals: void rowChanged(int); }; /*:395*//*396:*/ #line 9144 "./typica.w" class MeasurementList:public QVariantList { public: bool operator<(const MeasurementList&other)const; bool operator==(const MeasurementList&other)const; }; /*:396*//*422:*/ #line 9802 "./typica.w" class AnnotationButton:public QPushButton { Q_OBJECT QString note; int tc; int ac; int count; public: AnnotationButton(const QString&text,QWidget*parent= NULL); public slots: void setAnnotation(const QString&annotation); void setTemperatureColumn(int tempcolumn); void setAnnotationColumn(int annotationcolumn); void annotate(); void resetCount(); signals: void annotation(QString annotation,int tempcolumn, int notecolumn); }; /*:422*//*430:*/ #line 9927 "./typica.w" class AnnotationSpinBox:public QDoubleSpinBox { Q_OBJECT QString pretext; QString posttext; int tc; int ac; bool change; public: AnnotationSpinBox(const QString&pret,const QString&postt, QWidget*parent= NULL); public slots: void setPretext(const QString&pret); void setPosttext(const QString&postt); void setTemperatureColumn(int tempcolumn); void setAnnotationColumn(int annotationcolumn); void annotate(); void resetChange(); signals: void annotation(QString annotation,int tempcolumn, int notecolumn); }; /*:430*//*438:*/ #line 10086 "./typica.w" class TimerDisplay:public QLCDNumber { Q_OBJECT /*439:*/ #line 10136 "./typica.w" Q_PROPERTY(QTime seconds READ seconds WRITE setTimer) Q_PROPERTY(TimerMode mode READ mode WRITE setMode) Q_PROPERTY(bool running READ isRunning) Q_PROPERTY(QTime resetValue READ resetValue WRITE setResetValue) Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat) Q_PROPERTY(bool autoReset READ autoReset WRITE setAutoReset) /*:439*/ #line 10090 "./typica.w" private slots: void updateTime(); void setCountUpMode(); void setCountDownMode(); void setClockMode(); public: TimerDisplay(QWidget*parent= NULL); ~TimerDisplay(); enum TimerMode { CountUp, CountDown, Clock }; QString value(); QTime seconds(); TimerMode mode(); bool isRunning(); QTime resetValue(); QString displayFormat(); bool autoReset(); public slots: void setTimer(QTime value= QTime(0,0,0)); void setMode(TimerMode mode); void startTimer(); void stopTimer(); void copyTimer(); void setResetValue(QTime value= QTime(0,0,0)); void reset(); void setDisplayFormat(QString format); void setAutoReset(bool reset); void updateDisplay(); signals: void valueChanged(QTime); void runStateChanged(bool); private: /*440:*/ #line 10146 "./typica.w" QTime s; QTime r; QTimer clock; TimerDisplay::TimerMode m; bool running; bool ar; QAction*startAction; QAction*stopAction; QAction*resetAction; QString f; QTime relative; QTime base; /*:440*/ #line 10127 "./typica.w" }; /*:438*//*460:*/ #line 10505 "./typica.w" class PackLayout:public QLayout { int doLayout(const QRect&rect,bool testOnly)const; QList itemList; Qt::Orientations orientation; public: PackLayout(QWidget*parent,int margin= 0,int spacing= -1); PackLayout(int spacing= -1); ~PackLayout(); void addItem(QLayoutItem*item); Qt::Orientations expandingDirections()const; bool hasHeightForWidth()const; int heightForWidth(int width)const; int count()const; QLayoutItem*itemAt(int index)const; QSize minimumSize()const; void setGeometry(const QRect&rect); void setOrientation(Qt::Orientations direction); QSize sizeHint()const; QLayoutItem*takeAt(int index); }; /*:460*//*473:*/ #line 10783 "./typica.w" class SceneButton:public QGraphicsScene { Q_OBJECT public: SceneButton(); ~SceneButton(); protected: void mousePressEvent(QGraphicsSceneMouseEvent*mouseEvent); signals: void clicked(QPoint pos); }; /*:473*//*475:*/ #line 10825 "./typica.w" class WidgetDecorator:public QWidget { Q_OBJECT PackLayout*layout; QGraphicsView*label; QGraphicsTextItem*text; SceneButton*scene; public: WidgetDecorator(QWidget*widget,const QString&labeltext, Qt::Orientations orientation= Qt::Horizontal, QWidget*parent= NULL,Qt::WindowFlags f= 0); ~WidgetDecorator(); void setBackgroundBrush(QBrush background); void setTextColor(QColor color); }; /*:475*//*486:*/ #line 11000 "./typica.w" class LogEditWindow:public QMainWindow { Q_OBJECT QWidget*centralWidget; PackLayout*mainLayout; QHBoxLayout*addRowsLayout; QLabel*startTimeLabel; QTimeEdit*startTime; QLabel*endTimeLabel; QTimeEdit*endTime; QLabel*intervalLabel; QSpinBox*interval; QPushButton*addRows; QAction*saveXml; QAction*saveCsv; QAction*openXml; MeasurementModel*model; QTableView*log; private slots: void addTheRows(); void saveXML(); void saveCSV(); void openXML(); protected: void closeEvent(QCloseEvent*event); public: LogEditWindow(); }; /*:486*//*500:*/ #line 11308 "./typica.w" class XMLOutput:public QObject { Q_OBJECT MeasurementModel*data; QIODevice*out; int time; QMap temperatureColumns; QMap controlColumns; QMap annotationColumns; public: XMLOutput(MeasurementModel*model,QIODevice*device,int timec= 0); void addTemperatureColumn(const QString&series,int column); void addControlColumn(const QString&series,int column); void addAnnotationColumn(const QString&series,int column); void setModel(MeasurementModel*model); void setTimeColumn(int column); void setDevice(QIODevice*device); bool output(); }; /*:500*//*507:*/ #line 11544 "./typica.w" class XMLInput:public QObject { Q_OBJECT int firstc; QIODevice*in; public: XMLInput(QIODevice*input,int c); void setFirstColumn(int column); void setDevice(QIODevice*device); bool input(); signals: void measure(Measurement,int); void annotation(QString,int,int); void newTemperatureColumn(int,QString); void newAnnotationColumn(int,QString); void lastColumn(int); }; /*:507*//*518:*/ #line 11799 "./typica.w" class CSVOutput { MeasurementModel*data; QIODevice*out; int time; QMap temperatureColumns; QMap controlColumns; QMap annotationColumns; public: CSVOutput(MeasurementModel*model,QIODevice*device,int timec= 0); void addTemperatureColumn(const QString&series,int column); void addControlColumn(const QString&series,int column); void addAnnotationColumn(const QString&series,int column); void setModel(MeasurementModel*model); void setTimeColumn(int column); void setDevice(QIODevice*device); bool output(); }; /*:518*//*548:*/ #line 11942 "./typica.w" #define AppInstance (qobject_cast (qApp)) class NodeInserter; class DeviceTreeModel; class Application:public QApplication { Q_OBJECT public: Application(int&argc,char**argv); QDomDocument*configuration(); /*690:*/ #line 14496 "./typica.w" QDomDocument deviceConfiguration(); /*:690*//*723:*/ #line 15169 "./typica.w" void registerDeviceConfigurationWidget(QString driver,QMetaObject widget); QWidget*deviceConfigurationWidget(DeviceTreeModel*model, const QModelIndex&index); /*:723*//*728:*/ #line 15273 "./typica.w" QList topLevelNodeInserters; /*:728*/ #line 11953 "./typica.w" QSqlDatabase database(); QScriptEngine*engine; public slots: /*691:*/ #line 14503 "./typica.w" void saveDeviceConfiguration(); /*:691*/ #line 11957 "./typica.w" private: /*689:*/ #line 14487 "./typica.w" QDomDocument deviceConfigurationDocument; /*:689*//*722:*/ #line 15163 "./typica.w" QHash deviceConfigurationWidgets; /*:722*/ #line 11959 "./typica.w" QDomDocument conf; }; /*:548*//*556:*/ #line 12084 "./typica.w" class SaltModel:public QAbstractItemModel { Q_OBJECT QList > > modelData; QStringList hData; int colcount; public: SaltModel(int columns); ~SaltModel(); int rowCount(const QModelIndex&parent= QModelIndex())const; int columnCount(const QModelIndex&parent= QModelIndex())const; bool setHeaderData(int section,Qt::Orientation orientation, const QVariant&value,int role= Qt::DisplayRole); QVariant data(const QModelIndex&index,int role)const; bool setData(const QModelIndex&index,const QVariant&value, int role= Qt::EditRole); Qt::ItemFlags flags(const QModelIndex&index)const; QVariant headerData(int section,Qt::Orientation orientation, int role= Qt::DisplayRole)const; QModelIndex index(int row,int column, const QModelIndex&parent= QModelIndex())const; QModelIndex parent(const QModelIndex&index)const; QString arrayLiteral(int column,int role)const; QString quotedArrayLiteral(int column,int role)const; void clear(); bool removeRows(int row,int count, const QModelIndex&parent= QModelIndex()); int findData(const QVariant&value,int column,int role= Qt::UserRole); }; /*:556*//*572:*/ #line 12469 "./typica.w" class SqlComboBox:public QComboBox { Q_OBJECT int dataColumn; int displayColumn; bool dataColumnShown; QString specialNullText; QVariant specialNullData; public: SqlComboBox(); ~SqlComboBox(); SqlComboBox*clone(QWidget*parent); public slots: void addNullOption(); void addSqlOptions(QString query); void setDataColumn(int column); void setDisplayColumn(int column); void showData(bool show); void setNullText(QString nullText); void setNullData(QVariant nullData); }; /*:572*//*579:*/ #line 12616 "./typica.w" class SqlComboBoxDelegate:public QItemDelegate { Q_OBJECT SqlComboBox*delegate; public: SqlComboBoxDelegate(QObject*parent= NULL); QWidget*createEditor(QWidget*parent, const QStyleOptionViewItem&option, const QModelIndex&index)const; void setEditorData(QWidget*editor,const QModelIndex&index)const; void setModelData(QWidget*editor,QAbstractItemModel*model, const QModelIndex&index)const; void setWidget(SqlComboBox*widget); virtual QSize sizeHint()const; void updateEditorGeometry(QWidget*editor, const QStyleOptionViewItem&option, const QModelIndex&index)const; }; /*:579*//*594:*/ #line 12827 "./typica.w" class SqlConnectionSetup:public QDialog { Q_OBJECT public: SqlConnectionSetup(); ~SqlConnectionSetup(); public slots: void testConnection(); private: QFormLayout*formLayout; QComboBox*driver; QLineEdit*hostname; QLineEdit*dbname; QLineEdit*user; QLineEdit*password; QVBoxLayout*layout; QHBoxLayout*buttons; QPushButton*cancelButton; QPushButton*connectButton; }; /*:594*//*599:*/ #line 12962 "./typica.w" class SqlQueryView:public QTableView { Q_OBJECT public: SqlQueryView(QWidget*parent= NULL); void setQuery(const QString&query); bool setHeaderData(int section,Qt::Orientation orientation, const QVariant&value,int role); Q_INVOKABLE QVariant data(int row,int column, int role= Qt::DisplayRole); signals: void openEntry(QString key); void openEntryRow(int row); protected: virtual void showEvent(QShowEvent*event); private slots: void openRow(const QModelIndex&index); void persistColumnResize(int column,int oldsize,int newsize); }; /*:599*//*614:*/ #line 13217 "./typica.w" class ReportAction:public QAction { Q_OBJECT public: ReportAction(const QString&fileName,const QString&reportName, QObject*parent= NULL); private slots: void createReport(); private: QString reportFile; }; /*:614*//*626:*/ #line 13426 "./typica.w" class ReportTable:public QObject { Q_OBJECT QTextFrame*area; QDomElement configuration; QMap bindings; public: ReportTable(QTextFrame*frame,QDomElement description); ~ReportTable(); Q_INVOKABLE void bind(QString placeholder,QVariant value); public slots: void refresh(); }; /*:626*//*659:*/ #line 13665 "./typica.w" class FormArray:public QScrollArea { Q_OBJECT QDomElement configuration; QWidget itemContainer; QVBoxLayout itemLayout; int maxwidth; int maxheight; public: FormArray(QDomElement description); Q_INVOKABLE QWidget*elementAt(int index); Q_INVOKABLE int elements(); public slots: void addElements(int copies= 1); void removeAllElements(); void setMaximumElementWidth(int width); void setMaximumElementHeight(int height); }; /*:659*//*669:*/ #line 13881 "./typica.w" class ScaleControl:public QGraphicsView { Q_OBJECT Q_PROPERTY(double initialValue READ initialValue WRITE setInitialValue) Q_PROPERTY(double finalValue READ finalValue WRITE setFinalValue) /*670:*/ #line 13907 "./typica.w" QGraphicsScene scene; QGraphicsPolygonItem initialDecrement; QGraphicsPolygonItem initialIncrement; QGraphicsPolygonItem finalDecrement; QGraphicsPolygonItem finalIncrement; QGraphicsPolygonItem initialIndicator; QGraphicsPolygonItem finalIndicator; QGraphicsPathItem scaleLine; QPolygonF left; QPolygonF right; QPolygonF down; QPolygonF up; QPainterPath scalePath; QBrush initialBrush; QBrush finalBrush; double nonScoredValue; double scoredValue; bool initialSet; bool finalSet; bool scaleDown; /*:670*/ #line 13887 "./typica.w" public: ScaleControl(); double initialValue(void); double finalValue(void); virtual QSize sizeHint()const; public slots: void setInitialValue(double value); void setFinalValue(double value); signals: void initialChanged(double); void finalChanged(double); protected: virtual void mousePressEvent(QMouseEvent*event); virtual void mouseReleaseEvent(QMouseEvent*event); }; /*:669*//*681:*/ #line 14204 "./typica.w" class IntensityControl:public QGraphicsView { Q_OBJECT Q_PROPERTY(double value READ value WRITE setValue) QGraphicsScene scene; QGraphicsPolygonItem decrement; QGraphicsPolygonItem increment; QGraphicsPolygonItem indicator; QGraphicsPathItem scaleLine; QPolygonF left; QPolygonF up; QPolygonF down; QPainterPath scalePath; QBrush theBrush; double theValue; bool valueSet; bool scaleDown; public: IntensityControl(); double value(); virtual QSize sizeHint()const; public slots: void setValue(double val); signals: void valueChanged(double); protected: virtual void mousePressEvent(QMouseEvent*event); virtual void mouseReleaseEvent(QMouseEvent*event); }; /*:681*//*697:*/ #line 14592 "./typica.w" class DeviceTreeModelNode { public: DeviceTreeModelNode(QDomNode&node,int row, DeviceTreeModelNode*parent= NULL); ~DeviceTreeModelNode(); DeviceTreeModelNode*child(int index); DeviceTreeModelNode*parent(); QDomNode node()const; int row(); private: QDomNode domNode; QHash children; int rowNumber; DeviceTreeModelNode*parentItem; }; /*:697*//*699:*/ #line 14667 "./typica.w" class DeviceTreeModel:public QAbstractItemModel { Q_OBJECT public: DeviceTreeModel(QObject*parent= NULL); ~DeviceTreeModel(); QVariant data(const QModelIndex&index,int role)const; Qt::ItemFlags flags(const QModelIndex&index)const; QVariant headerData(int section,Qt::Orientation orientation, int role= Qt::DisplayRole)const; QModelIndex index(int row,int column, const QModelIndex&parent= QModelIndex())const; QModelIndex parent(const QModelIndex&child)const; int rowCount(const QModelIndex&parent= QModelIndex())const; int columnCount(const QModelIndex&parent= QModelIndex())const; bool setData(const QModelIndex&index,const QVariant&value, int role); bool removeRows(int row,int count,const QModelIndex&parent); QDomElement referenceElement(const QString&id); public slots: void newNode(const QString&name,const QString&driver, const QModelIndex&parent); private: QDomDocument document; DeviceTreeModelNode*root; QDomNode referenceSection; QDomNode treeRoot; }; /*:699*//*718:*/ #line 15121 "./typica.w" Q_DECLARE_METATYPE(QModelIndex) /*:718*//*726:*/ #line 15228 "./typica.w" class NodeInserter:public QAction { Q_OBJECT public: NodeInserter(const QString&title,const QString&name, const QString&driver,QObject*parent= NULL); signals: void triggered(QString name,QString driver); private slots: void onTriggered(); private: QString defaultNodeName; QString driverString; }; /*:726*//*729:*/ #line 15283 "./typica.w" class DeviceConfigurationWindow:public QWidget { Q_OBJECT public: DeviceConfigurationWindow(); public slots: void addDevice(); void removeNode(); void newSelection(const QModelIndex&index); private slots: void resizeColumn(); private: QDomDocument document; DeviceTreeModel*model; QTreeView*view; QScrollArea*configArea; }; /*:729*//*738:*/ #line 15453 "./typica.w" class BasicDeviceConfigurationWidget:public QWidget { Q_OBJECT public: BasicDeviceConfigurationWidget(DeviceTreeModel*model, const QModelIndex&index); public slots: void insertChildNode(const QString&name,const QString&driver); void updateAttribute(const QString&name,const QString&value); protected: DeviceTreeModel*deviceModel; QModelIndex currentNode; }; /*:738*//*742:*/ #line 15538 "./typica.w" class RoasterConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE RoasterConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateRoasterId(int id); }; /*:742*//*747:*/ #line 15673 "./typica.w" class NiDaqMxBaseDriverConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NiDaqMxBaseDriverConfWidget(DeviceTreeModel*model, const QModelIndex&index); }; /*:747*//*749:*/ #line 15719 "./typica.w" class NiDaqMxBase9211ConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NiDaqMxBase9211ConfWidget(DeviceTreeModel*device, const QModelIndex&index); private slots: void addChannel(); void updateDeviceId(const QString&newId); }; /*:749*//*753:*/ #line 15805 "./typica.w" class Ni9211TcConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE Ni9211TcConfWidget(DeviceTreeModel*device, const QModelIndex&index); private slots: void updateThermocoupleType(const QString&type); void updateColumnName(const QString&name); void updateHidden(bool hidden); }; /*:753*//*758:*/ #line 15921 "./typica.w" class NiDaqMxDriverConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NiDaqMxDriverConfWidget(DeviceTreeModel*model, const QModelIndex&index); }; /*:758*//*760:*/ #line 15962 "./typica.w" class NiDaqMx9211ConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NiDaqMx9211ConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void addChannel(); void updateDeviceId(const QString&newId); }; /*:760*//*762:*/ #line 16031 "./typica.w" class NiDaqMxTc01ConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NiDaqMxTc01ConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateDeviceId(const QString&newId); void updateThermocoupleType(const QString&type); void updateColumnName(const QString&name); void updateHidden(bool hidden); }; /*:762*//*767:*/ #line 16162 "./typica.w" class PortSelector:public QComboBox { Q_OBJECT public: PortSelector(QWidget*parent= NULL); private slots: void addDevice(QextPortInfo port); private: QextSerialEnumerator*lister; }; /*:767*//*769:*/ #line 16210 "./typica.w" class BaudSelector:public QComboBox { Q_OBJECT Q_ENUMS(BaudRateType) public: BaudSelector(QWidget*parent= NULL); enum BaudRateType { #if defined(Q_OS_UNIX) || defined(qdoc) BAUD50= 50, BAUD75= 75, BAUD134= 134, BAUD150= 150, BAUD200= 200, BAUD1800= 1800, #if defined(B76800) || defined(qdoc) BAUD76800= 76800, #endif #if (defined(B230400) && defined(B4000000)) || defined(qdoc) BAUD230400= 230400, BAUD460800= 460800, BAUD500000= 500000, BAUD576000= 576000, BAUD921600= 921600, BAUD1000000= 1000000, BAUD1152000= 1152000, BAUD1500000= 1500000, BAUD2000000= 2000000, BAUD2500000= 2500000, BAUD3000000= 3000000, BAUD3500000= 3500000, BAUD4000000= 4000000, #endif #endif #if defined(Q_OS_WIN) || defined(qdoc) BAUD14400= 14400, BAUD56000= 56000, BAUD128000= 128000, BAUD256000= 256000, #endif BAUD110= 110, BAUD300= 300, BAUD600= 600, BAUD1200= 1200, BAUD2400= 2400, BAUD4800= 4800, BAUD9600= 9600, BAUD19200= 19200, BAUD38400= 38400, BAUD57600= 57600, BAUD115200= 115200 }; }; /*:769*//*771:*/ #line 16281 "./typica.w" class ParitySelector:public QComboBox { Q_OBJECT Q_ENUMS(ParityType) public: ParitySelector(QWidget*parent= NULL); enum ParityType { PAR_NONE, PAR_ODD, PAR_EVEN, #if defined(Q_OS_WIN) || defined(qdoc) PAR_MARK, #endif PAR_SPACE }; }; /*:771*//*773:*/ #line 16319 "./typica.w" class FlowSelector:public QComboBox { Q_OBJECT Q_ENUMS(FlowType) public: FlowSelector(QWidget*parent= NULL); enum FlowType { FLOW_OFF, FLOW_HARDWARE, FLOW_XONXOFF }; }; /*:773*//*775:*/ #line 16352 "./typica.w" class StopSelector:public QComboBox { Q_OBJECT Q_ENUMS(StopBitsType) public: StopSelector(QWidget*parent= NULL); enum StopBitsType { STOP_1, #if defined(Q_OS_WIN) || defined(qdoc) STOP_1_5, #endif STOP_2 }; }; /*:775*//*778:*/ #line 16405 "./typica.w" class ShortHexSpinBox:public QSpinBox { Q_OBJECT public: ShortHexSpinBox(QWidget*parent= NULL); virtual QValidator::State validate(QString&input,int&pos)const; protected: virtual int valueFromText(const QString&text)const; virtual QString textFromValue(int value)const; }; /*:778*//*780:*/ #line 16467 "./typica.w" class ModbusRtuPortConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ModbusRtuPortConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updatePort(const QString&newPort); void updateBaudRate(const QString&newRate); void updateParity(const QString&newParity); void updateFlowControl(const QString&newFlow); void updateStopBits(const QString&newStopBits); }; /*:780*//*782:*/ #line 16618 "./typica.w" class ModbusRtuDeviceConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ModbusRtuDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateStationNumber(int newStation); void updateFixedUnit(bool newFixed); void updateFixedDecimal(bool newFixed); void updateUnit(const QString&newUnit); void updateUnitAddress(int newAddress); void updateValueF(int newValue); void updateValueC(int newValue); void updatePrecisionAddress(int newAddress); void updatePrecisionValue(int newValue); private: QStackedLayout*unitSpecificationLayout; QStackedLayout*decimalSpecificationLayout; }; /*:782*//*784:*/ #line 16877 "./typica.w" class ModbusRtuDeviceTPvConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ModbusRtuDeviceTPvConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateAddress(int newAddress); }; /*:784*//*786:*/ #line 16923 "./typica.w" class ModbusRtuDeviceTSvConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ModbusRtuDeviceTSvConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateReadAddress(int newAddress); void updateWriteAddress(int newAddress); void updateFixedRange(bool fixed); void updateLower(const QString&lower); void updateUpper(const QString&upper); void updateLowerAddress(int newAddress); void updateUpperAddress(int newAddress); private: QStackedLayout*boundsLayout; }; /*:786*//*790:*/ #line 17117 "./typica.w" class AnnotationButtonConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE AnnotationButtonConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateButtonText(const QString&text); void updateAnnotationText(const QString&text); }; /*:790*//*794:*/ #line 17185 "./typica.w" class ReconfigurableAnnotationButtonConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ReconfigurableAnnotationButtonConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateButtonText(const QString&text); void updateAnnotationText(const QString&text); }; /*:794*//*797:*/ #line 17259 "./typica.w" class NoteSpinConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE NoteSpinConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateLabel(const QString&text); void updateMinimum(const QString&minimum); void updateMaximum(const QString&maximum); void updatePrecision(int precision); void updatePretext(const QString&text); void updatePosttext(const QString&text); }; /*:797*//*800:*/ #line 12 "./freeannotation.w" class FreeAnnotationConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE FreeAnnotationConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateLabel(const QString&text); }; /*:800*//*804:*/ #line 11 "./settings.w" class SettingsWindow:public QMainWindow { Q_OBJECT public: SettingsWindow(); }; /*:804*//*809:*/ #line 8 "./graphsettings.w" class GraphSettingsWidget:public QWidget { Q_OBJECT public: GraphSettingsWidget(); }; /*:809*//*811:*/ #line 46 "./graphsettings.w" class GraphSettingsRelativeTab:public QWidget { Q_OBJECT public: GraphSettingsRelativeTab(); public slots: void updateEnableSetting(bool enable); void updateColorSetting(const QString&color); void updateAxisSetting(const QString&gridList); void updateUnit(int unit); void showColorPicker(); private: QLineEdit*colorEdit; }; /*:811*//*815:*/ #line 7 "./advancedsettings.w" class AdvancedSettingsWidget:public QWidget { Q_OBJECT public: AdvancedSettingsWidget(); public slots: void enableDiagnosticLogging(bool enabled); }; /*:815*//*819:*/ #line 17384 "./typica.w" class ModbusRTUDevice:public QObject { Q_OBJECT public: ModbusRTUDevice(DeviceTreeModel*model,const QModelIndex&index); ~ModbusRTUDevice(); void queueMessage(QByteArray request,QObject*object,const char*callback); Q_INVOKABLE double SVLower(); Q_INVOKABLE double SVUpper(); Q_INVOKABLE int decimals(); QList channels; public slots: void outputSV(double sv); signals: void SVLowerChanged(double); void SVUpperChanged(double); void SVDecimalChanged(int); void queueEmpty(); private slots: void dataAvailable(); void sendNextMessage(); void decimalResponse(QByteArray response); void unitResponse(QByteArray response); void svlResponse(QByteArray response); void svuResponse(QByteArray response); void requestMeasurement(); void mResponse(QByteArray response); void ignore(QByteArray response); void timeout(); private: QextSerialPort*port; QByteArray responseBuffer; QList messageQueue; QList retObjQueue; QList callbackQueue; quint16 calculateCRC(QByteArray data); QTimer*messageDelayTimer; QTimer*commTimeout; int delayTime; char station; int decimalPosition; int valueF; int valueC; bool unitIsF; double outputSVLower; double outputSVUpper; QByteArray outputSVStub; QByteArray pvStub; QByteArray svStub; QByteArray mStub; quint16 pvaddress; quint16 svaddress; bool svenabled; bool readingsv; double savedpv; bool waiting; }; /*:819*//*835:*/ #line 18087 "./typica.w" class ModbusConfigurator:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ModbusConfigurator(DeviceTreeModel*model,const QModelIndex&index); private slots: void updatePort(const QString&newPort); void updateBaudRate(const QString&newRate); void updateParity(const QString&newParity); void updateFlowControl(const QString&newFlow); void updateStopBits(const QString&newStopBits); void updateStation(int station); void updateFixedDecimal(bool fixed); void updateDecimalAddress(int address); void updateDecimalPosition(int position); void updateFixedUnit(bool fixed); void updateUnitAddress(int address); void updateValueForF(int value); void updateValueForC(int value); void updateUnit(const QString&newUnit); void updatePVAddress(int address); void updateSVEnabled(bool enabled); void updateSVReadAddress(int address); void updateDeviceLimit(bool query); void updateSVLowerAddress(int address); void updateSVUpperAddress(int address); void updateSVLower(double value); void updateSVUpper(double value); void updateSVWritable(bool canWriteSV); void updateSVWriteAddress(int address); void updatePVColumnName(const QString&name); void updateSVColumnName(const QString&name); void updatePVHidden(bool hidden); void updateSVHidden(bool hidden); private: PortSelector*port; BaudSelector*baud; ParitySelector*parity; FlowSelector*flow; StopSelector*stop; QSpinBox*station; QCheckBox*decimalQuery; ShortHexSpinBox*decimalAddress; QSpinBox*decimalPosition; QCheckBox*unitQuery; ShortHexSpinBox*unitAddress; QSpinBox*valueF; QSpinBox*valueC; QComboBox*fixedUnit; ShortHexSpinBox*pVAddress; QCheckBox*sVEnabled; ShortHexSpinBox*sVReadAddress; QCheckBox*deviceLimit; ShortHexSpinBox*sVLowerAddr; ShortHexSpinBox*sVUpperAddr; QDoubleSpinBox*sVLower; QDoubleSpinBox*sVUpper; QCheckBox*sVWritable; ShortHexSpinBox*sVOutputAddr; QLineEdit*pVColumnName; QLineEdit*sVColumnName; }; /*:835*//*839:*/ #line 36 "./unsupportedserial.w" class UnsupportedSerialDeviceConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE UnsupportedSerialDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateConfiguration(); void saveScript(); void addChannel(); private: SaltModel*deviceSettingsModel; QTextEdit*scriptEditor; }; /*:839*//*844:*/ #line 166 "./unsupportedserial.w" class UnsupportedDeviceChannelConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE UnsupportedDeviceChannelConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateColumnName(const QString&value); void updateHidden(bool hidden); void updateConfiguration(); private: SaltModel*channelSettingsModel; }; /*:844*//*849:*/ #line 298 "./unsupportedserial.w" class JavaScriptDevice:public QObject { Q_OBJECT public: Q_INVOKABLE JavaScriptDevice(const QModelIndex&deviceIndex, QScriptEngine*engine); Q_INVOKABLE int channelCount(); Channel*getChannel(int channel); Q_INVOKABLE bool isChannelHidden(int channel); Q_INVOKABLE Units::Unit expectedChannelUnit(int channel); Q_INVOKABLE QString channelColumnName(int channel); Q_INVOKABLE QString channelIndicatorText(int channel); public slots: void setTemperatureColumn(int tcol); void setAnnotationColumn(int ncol); void start(); void stop(); signals: void annotation(QString note,int tcol,int ncol); void triggerStartBatch(); void triggerStopBatch(); void deviceStopRequested(); private: QVariantMap deviceSettings; QString deviceScript; QList channelList; QList hiddenState; QList channelUnits; QList columnNames; QList indicatorTexts; QList channelSettings; int annotationTemperatureColumn; int annotationNoteColumn; QScriptEngine*scriptengine; }; /*:849*//*871:*/ #line 11 "./phidgets.w" class PhidgetsTemperatureSensorConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE PhidgetsTemperatureSensorConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void addChannel(); void updateRate(int ms); }; /*:871*//*875:*/ #line 82 "./phidgets.w" class PhidgetTemperatureSensorChannelConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE PhidgetTemperatureSensorChannelConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateColumnName(const QString&value); void updateHidden(bool hidden); void updateTC(int index); void updateChannel(int channel); private: QComboBox*tcType; }; /*:875*//*880:*/ #line 213 "./phidgets.w" class PhidgetsTemperatureSensor:public QObject { Q_OBJECT public: Q_INVOKABLE PhidgetsTemperatureSensor(const QModelIndex&deviceIndex); Q_INVOKABLE int channelCount(); Channel*getChannel(int channel); Q_INVOKABLE bool isChannelHidden(int channel); Q_INVOKABLE QString channelColumnName(int channel); Q_INVOKABLE QString channelIndicatorText(int channel); public slots: void start(); void stop(); private slots: void getMeasurements(); private: QList channelIndices; QList tctypes; QList channelList; QMap channelMap; QList hiddenState; QList columnNames; QList indicatorTexts; QLibrary driver; QTimer sampleTimer; void*device; /*884:*/ #line 349 "./phidgets.w" typedef int(*PhidgetHandleOnly)(void*); typedef int(*PhidgetHandleInt)(void*,int); typedef int(*PhidgetHandleIntInt)(void*,int,int); typedef int(*PhidgetHandleIntDoubleOut)(void*,int,double*); PhidgetHandleOnly createDevice; PhidgetHandleInt openDevice; PhidgetHandleInt waitForOpen; PhidgetHandleIntInt setTCType; PhidgetHandleIntDoubleOut getTemperature; PhidgetHandleOnly closeDevice; PhidgetHandleOnly deleteDevice; /*:884*/ #line 240 "./phidgets.w" }; /*:880*//*893:*/ #line 18625 "./typica.w" class LinearSplineInterpolationConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE LinearSplineInterpolationConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateSourceColumn(const QString&source); void updateDestinationColumn(const QString&dest); void updateKnots(); private: SaltModel*tablemodel; }; /*:893*//*899:*/ #line 18749 "./typica.w" class TranslationConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE TranslationConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateMatchingColumn(const QString&column); void updateTemperature(); private: QDoubleSpinBox*temperatureValue; QComboBox*unitSelector; }; /*:899*//*903:*/ #line 16 "./rate.w" class RateOfChange:public QObject { Q_OBJECT public: RateOfChange(int cachetime= 1,int scaletime= 1); public slots: void newMeasurement(Measurement measure); void setCacheTime(int seconds); void setScaleTime(int seconds); signals: void newData(Measurement measure); private: int ct; int st; QList cache; }; /*:903*//*911:*/ #line 177 "./rate.w" class RateOfChangeConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE RateOfChangeConfWidget(DeviceTreeModel*model,const QModelIndex&index); private slots: void updateColumn(const QString&column); void updateCacheTime(const QString&seconds); void updateScaleTime(const QString&seconds); }; /*:911*//*917:*/ #line 19 "./dataqsdk.w" class DataqSdkDeviceImplementation; class DataqSdkDevice:public QObject { Q_OBJECT DataqSdkDeviceImplementation*imp; private slots: void threadFinished(); public: DataqSdkDevice(QString device); ~DataqSdkDevice(); Channel*newChannel(Units::Unit scale); Q_INVOKABLE void setClockRate(double Hz); Q_INVOKABLE void start(); static QStringList detectPorts(); static QStringList detectHardware(); }; /*:917*//*918:*/ #line 49 "./dataqsdk.w" class DataqSdkDeviceImplementation:public QThread { Q_OBJECT public: DataqSdkDeviceImplementation(); ~DataqSdkDeviceImplementation(); void run(); /*919:*/ #line 70 "./dataqsdk.w" typedef struct di_inlist_struct{ unsigned short chan; unsigned short diff; unsigned short gain; unsigned short unipolar; unsigned short dig_out_enable; unsigned short dig_out; unsigned short ave; unsigned short counter; }DI_INLIST_STRUCT; typedef int(PASCAL*FPDIOPEN)(unsigned); typedef int(PASCAL*FPDICLOSE)(void); typedef double(PASCAL*FPDISAMPLERATE)(double,long*,long*); typedef double(PASCAL*FPDIMAXIMUMRATE)(double); typedef int(PASCAL*FPDILISTLENGTH)(unsigned,unsigned); typedef int(PASCAL*FPDIINLIST)(di_inlist_struct*); typedef int*(PASCAL*FPDIBUFFERALLOC)(unsigned,unsigned); typedef int(PASCAL*FPDISTARTSCAN)(void); typedef unsigned(PASCAL*FPDISTATUSREAD)(short*,unsigned); typedef unsigned(PASCAL*FPDIBUFFERSTATUS)(unsigned); typedef int(PASCAL*FPDIBURSTRATE)(unsigned); typedef int(PASCAL*FPDISTOPSCAN)(void); FPDIOPEN di_open; FPDICLOSE di_close; FPDISAMPLERATE di_sample_rate; FPDIMAXIMUMRATE di_maximum_rate; FPDILISTLENGTH di_list_length; FPDIINLIST di_inlist; FPDIBUFFERALLOC di_buffer_alloc; FPDISTARTSCAN di_start_scan; FPDISTATUSREAD di_status_read; FPDIBUFFERSTATUS di_buffer_status; FPDIBURSTRATE di_burst_rate; FPDISTOPSCAN di_stop_scan; /*:919*/ #line 57 "./dataqsdk.w" /*921:*/ #line 134 "./dataqsdk.w" bool isOpen; double sampleRate; long oversample; long burstDivisor; QString device; unsigned deviceNumber; QVector channelMap; int error; int channels; bool ready; QLibrary*driver; QVector unitMap; int*input_buffer; QTimer*eventClock; QMultiMap smoother; /*:921*/ #line 58 "./dataqsdk.w" public slots: void measure(); private: qint16*buffer; }; /*:918*//*938:*/ #line 663 "./dataqsdk.w" class DataqSdkDeviceConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE DataqSdkDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateAutoSelect(bool automatic); void updateDeviceNumber(int deviceNumber); void updatePort(QString portId); void addChannel(); private: QStackedWidget*deviceIdStack; }; /*:938*//*943:*/ #line 808 "./dataqsdk.w" class DataqSdkChannelConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE DataqSdkChannelConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateUnits(const QString&unit); void updateColumnName(const QString&value); void updateMeasuredLower(const QString&value); void updateMeasuredUpper(const QString&value); void updateMappedLower(const QString&value); void updateMappedUpper(const QString&value); void updateClosedInterval(bool closed); void updateSmoothingEnabled(bool enabled); void updateSensitivity(const QString&value); void startCalibration(); void stopCalibration(); void resetCalibration(); void updateInput(Measurement measure); void updateOutput(Measurement measure); void updateHidden(bool hidden); private: QPushButton*startButton; QPushButton*resetButton; QPushButton*stopButton; /*948:*/ #line 1098 "./dataqsdk.w" bool autoSelect; QString deviceID; unsigned int channelOfInterest; /*:948*/ #line 835 "./dataqsdk.w" DataqSdkDevice*calibrationDevice; LinearCalibrator*calibrator; QLineEdit*currentMeasurement; QLineEdit*minimumMeasurement; QLineEdit*maximumMeasurement; QLineEdit*averageMeasurement; QLineEdit*currentMapped; QLineEdit*minimumMapped; QLineEdit*maximumMapped; QLineEdit*averageMapped; int rmCount; int cmCount; double rmin; double rmax; double rmean; double cmin; double cmax; double cmean; }; /*:943*//*970:*/ #line 247 "./scales.w" Q_DECLARE_METATYPE(BaudRateType) Q_DECLARE_METATYPE(DataBitsType) Q_DECLARE_METATYPE(ParityType) Q_DECLARE_METATYPE(StopBitsType) Q_DECLARE_METATYPE(FlowType) /*:970*//*977:*/ #line 370 "./scales.w" class SerialScaleConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE SerialScaleConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updatePort(const QString&newPort); void updateBaudRate(const QString&rate); void updateParity(int index); void updateFlowControl(int index); void updateStopBits(int index); private: PortSelector*port; BaudSelector*baud; ParitySelector*parity; FlowSelector*flow; StopSelector*stop; }; /*:977*//*982:*/ #line 14 "./valueannotation.w" class ValueAnnotationConfWidget:public BasicDeviceConfigurationWidget { Q_OBJECT public: Q_INVOKABLE ValueAnnotationConfWidget(DeviceTreeModel*model, const QModelIndex&index); private slots: void updateSourceColumn(const QString&source); void updateAnnotations(); void updateStart(bool noteOnStart); private: SaltModel*tablemodel; }; /*:982*//*990:*/ #line 165 "./valueannotation.w" class ValueAnnotation:public QObject { Q_OBJECT public: ValueAnnotation(); Q_INVOKABLE void setAnnotation(double value,const QString&annotation); public slots: void newMeasurement(Measurement measure); void annotate(); void setAnnotationColumn(int column); void setTemperatureColumn(int column); void setTolerance(double epsilon); signals: void annotation(QString annotation,int tempcolumn,int notecolumn); private: int lastIndex; int annotationColumn; int measurementColumn; QList values; QStringList annotations; double tolerance; }; /*:990*/ #line 526 "./typica.w" /*12:*/ #line 807 "./typica.w" void setQObjectProperties(QScriptValue value,QScriptEngine*engine); /*:12*//*14:*/ #line 822 "./typica.w" void setQPaintDeviceProperties(QScriptValue value,QScriptEngine*engine); void setQLayoutItemProperties(QScriptValue value,QScriptEngine*engine); /*:14*//*16:*/ #line 847 "./typica.w" void setQWidgetProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQWidget(QScriptContext*context,QScriptEngine*engine); QScriptValue QWidget_setLayout(QScriptContext*context,QScriptEngine*engine); QScriptValue QWidget_activateWindow(QScriptContext*context, QScriptEngine*engine); /*:16*//*27:*/ #line 1091 "./typica.w" QScriptValue constructQMainWindow(QScriptContext*context, QScriptEngine*engine); QScriptValue QMainWindow_setCentralWidget(QScriptContext*context, QScriptEngine*engine); QScriptValue QMainWindow_menuBar(QScriptContext*context, QScriptEngine*engine); void setQMainWindowProperties(QScriptValue value,QScriptEngine*engine); /*:27*//*32:*/ #line 1190 "./typica.w" void setQMenuBarProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QMenuBar_addMenu(QScriptContext*context,QScriptEngine*engine); /*:32*//*35:*/ #line 1235 "./typica.w" void setQMenuProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QMenu_addAction(QScriptContext*context,QScriptEngine*engine); QScriptValue QMenu_addSeparator(QScriptContext*context,QScriptEngine*engine); /*:35*//*38:*/ #line 1301 "./typica.w" void setQFrameProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQFrame(QScriptContext*context,QScriptEngine*engine); /*:38*//*41:*/ #line 1334 "./typica.w" void setQLabelProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQLabel(QScriptContext*context,QScriptEngine*engine); /*:41*//*44:*/ #line 1372 "./typica.w" void setQLineEditProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQLineEdit(QScriptContext*context,QScriptEngine*engine); /*:44*//*48:*/ #line 1411 "./typica.w" QScriptValue constructQSplitter(QScriptContext*context,QScriptEngine*engine); QScriptValue QSplitter_addWidget(QScriptContext*context, QScriptEngine*engine); QScriptValue QSplitter_saveState(QScriptContext*context, QScriptEngine*engine); QScriptValue QSplitter_restoreState(QScriptContext*context, QScriptEngine*engine); QScriptValue QSplitter_count(QScriptContext*context, QScriptEngine*engine); void setQSplitterProperties(QScriptValue value,QScriptEngine*engine); /*:48*//*54:*/ #line 1550 "./typica.w" void setQLayoutProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QLayout_addWidget(QScriptContext*context,QScriptEngine*engine); /*:54*//*56:*/ #line 1605 "./typica.w" QScriptValue constructQBoxLayout(QScriptContext*context, QScriptEngine*engine); void setQBoxLayoutProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QBoxLayout_addLayout(QScriptContext*context,QScriptEngine*engine); QScriptValue QBoxLayout_addWidget(QScriptContext*context,QScriptEngine*engine); /*:56*//*60:*/ #line 1718 "./typica.w" QScriptValue constructQAction(QScriptContext*context,QScriptEngine*engine); QScriptValue QAction_setShortcut(QScriptContext*context, QScriptEngine*engine); void setQActionProperties(QScriptValue value,QScriptEngine*engine); /*:60*//*63:*/ #line 1774 "./typica.w" QScriptValue QFileDialog_getOpenFileName(QScriptContext*context, QScriptEngine*engine); QScriptValue QFileDialog_getSaveFileName(QScriptContext*context, QScriptEngine*engine); void setQFileDialogProperties(QScriptValue value,QScriptEngine*engine); void setQDialogProperties(QScriptValue value,QScriptEngine*engine); /*:63*//*68:*/ #line 1885 "./typica.w" QScriptValue constructQFile(QScriptContext*context,QScriptEngine*engine); void setQFileProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QFile_remove(QScriptContext*context,QScriptEngine*engine); void setQIODeviceProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QIODevice_open(QScriptContext*context,QScriptEngine*engine); QScriptValue QIODevice_close(QScriptContext*context,QScriptEngine*engine); QScriptValue QIODevice_readToString(QScriptContext*context, QScriptEngine*engine); QScriptValue QIODevice_putChar(QScriptContext*context,QScriptEngine*engine); QScriptValue QIODevice_writeString(QScriptContext*context,QScriptEngine*engine); QScriptValue QIODevice_writeBytes(QScriptContext*context,QScriptEngine*engine); /*:68*//*77:*/ #line 2072 "./typica.w" QScriptValue constructQProcess(QScriptContext*context,QScriptEngine*engine); void setQProcessProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QProcess_execute(QScriptContext*context,QScriptEngine*engine); QScriptValue QProcess_startDetached(QScriptContext*context,QScriptEngine*engine); QScriptValue QProcess_setWorkingDirectory(QScriptContext*context,QScriptEngine*engine); QScriptValue QProcess_start(QScriptContext*context,QScriptEngine*engine); /*:77*//*85:*/ #line 2190 "./typica.w" QScriptValue QByteArray_toScriptValue(QScriptEngine*engine,const QByteArray&bytes); void QByteArray_fromScriptValue(const QScriptValue&value,QByteArray&bytes); QScriptValue constructQByteArray(QScriptContext*context,QScriptEngine*engine); void setQByteArrayProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QByteArray_fromHex(QScriptContext*context,QScriptEngine*engine); /*:85*//*91:*/ #line 2260 "./typica.w" QScriptValue constructQBuffer(QScriptContext*context,QScriptEngine*engine); void setQBufferProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QBuffer_setData(QScriptContext*context,QScriptEngine*engine); /*:91*//*94:*/ #line 2305 "./typica.w" QScriptValue constructXQuery(QScriptContext*context,QScriptEngine*engine); QScriptValue XQuery_bind(QScriptContext*context,QScriptEngine*engine); QScriptValue XQuery_exec(QScriptContext*context,QScriptEngine*engine); QScriptValue XQuery_setQuery(QScriptContext*context,QScriptEngine*engine); QScriptValue XQuery_invalidate(QScriptContext*context,QScriptEngine*engine); void setXQueryProperties(QScriptValue value,QScriptEngine*engine); /*:94*//*100:*/ #line 2387 "./typica.w" QScriptValue constructXmlWriter(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlWriter_setDevice(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeAttribute(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeCDATA(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeCharacters(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeDTD(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlWriter_writeEmptyElement(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeEndDocument(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeEndElement(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeEntityReference(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeProcessingInstruction(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeStartDocument(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeStartElement(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlWriter_writeTextElement(QScriptContext*context, QScriptEngine*engine); void setXmlWriterProperties(QScriptValue value,QScriptEngine*engine); /*:100*//*109:*/ #line 2605 "./typica.w" QScriptValue constructXmlReader(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlReader_atEnd(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlReader_attribute(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlReader_hasAttribute(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlReader_isDTD(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlReader_isStartElement(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlReader_name(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlReader_readElementText(QScriptContext*context, QScriptEngine*engine); QScriptValue XmlReader_readNext(QScriptContext*context,QScriptEngine*engine); QScriptValue XmlReader_text(QScriptContext*context,QScriptEngine*engine); void setXmlReaderProperties(QScriptValue value,QScriptEngine*engine); /*:109*//*116:*/ #line 2740 "./typica.w" QScriptValue QSettings_value(QScriptContext*context,QScriptEngine*engine); QScriptValue QSettings_setValue(QScriptContext*context,QScriptEngine*engine); void setQSettingsProperties(QScriptValue value,QScriptEngine*engine); /*:116*//*120:*/ #line 2822 "./typica.w" QScriptValue constructQLCDNumber(QScriptContext*context, QScriptEngine*engine); void setQLCDNumberProperties(QScriptValue value,QScriptEngine*engine); /*:120*//*123:*/ #line 2860 "./typica.w" QScriptValue constructQTime(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_addMSecs(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_addSecs(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_elapsed(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_hour(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_isNull(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_isValid(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_minute(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_msec(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_msecsTo(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_restart(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_second(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_secsTo(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_setHMS(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_start(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_toString(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_currentTime(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_fromString(QScriptContext*context,QScriptEngine*engine); QScriptValue QTime_valueOf(QScriptContext*context,QScriptEngine*engine); void setQTimeProperties(QScriptValue value,QScriptEngine*engine); /*:123*//*139:*/ #line 3338 "./typica.w" void setQAbstractScrollAreaProperties(QScriptValue value, QScriptEngine*engine); /*:139*//*141:*/ #line 3353 "./typica.w" void setQAbstractItemViewProperties(QScriptValue value,QScriptEngine*engine); /*:141*//*143:*/ #line 3366 "./typica.w" void setQGraphicsViewProperties(QScriptValue value,QScriptEngine*engine); void setQTableViewProperties(QScriptValue value,QScriptEngine*engine); /*:143*//*145:*/ #line 3390 "./typica.w" void setQAbstractButtonProperties(QScriptValue value,QScriptEngine*engine); void setQPushButtonProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQPushButton(QScriptContext*context, QScriptEngine*engine); /*:145*//*152:*/ #line 3489 "./typica.w" void setQSqlQueryProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructQSqlQuery(QScriptContext*context,QScriptEngine*engine); QScriptValue QSqlQuery_bind(QScriptContext*context,QScriptEngine*engine); QScriptValue QSqlQuery_bindDeviceData(QScriptContext*context, QScriptEngine*engine); QScriptValue QSqlQuery_bindFileData(QScriptContext*context, QScriptEngine*engine); QScriptValue QSqlQuery_exec(QScriptContext*context, QScriptEngine*engine); QScriptValue QSqlQuery_executedQuery(QScriptContext*context, QScriptEngine*engine); QScriptValue QSqlQuery_invalidate(QScriptContext*context,QScriptEngine*engine); QScriptValue QSqlQuery_next(QScriptContext*context,QScriptEngine*engine); QScriptValue QSqlQuery_prepare(QScriptContext*context,QScriptEngine*engine); QScriptValue QSqlQuery_value(QScriptContext*context,QScriptEngine*engine); /*:152*//*159:*/ #line 3660 "./typica.w" QScriptValue baseName(QScriptContext*context,QScriptEngine*engine); QScriptValue dir(QScriptContext*context,QScriptEngine*engine); QScriptValue sqlToArray(QScriptContext*context,QScriptEngine*engine); QScriptValue setFont(QScriptContext*context,QScriptEngine*engine); QScriptValue annotationFromRecord(QScriptContext*context, QScriptEngine*engine); QScriptValue setTabOrder(QScriptContext*context,QScriptEngine*engine); QScriptValue saveFileFromDatabase(QScriptContext*context,QScriptEngine*engine); /*:159*//*171:*/ #line 3972 "./typica.w" QScriptValue createWindow(QScriptContext*context,QScriptEngine*engine); QScriptValue createReport(QScriptContext*context,QScriptEngine*engine); void addLayoutToWidget(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addLayoutToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSplitterToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSplitterToSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack); void populateGridLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void populateBoxLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void populateSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack); void populateWidget(QDomElement element,QStack *widgetStack, QStack *layoutStack); void populateStackedLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addTemperatureDisplayToSplitter(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addTemperatureDisplayToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addTimerDisplayToSplitter(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addTimerDisplayToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addDecorationToSplitter(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addDecorationToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addWidgetToSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addButtonToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addZoomLogToSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addGraphToSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSqlDropToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSaltToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addLineToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addTextToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSqlQueryViewToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addCalendarToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); void addSpinBoxToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); /*:171*//*231:*/ #line 5562 "./typica.w" void setQDateEditProperties(QScriptValue value,QScriptEngine*engine); void setQDateTimeEditProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QDateTimeEdit_setDate(QScriptContext*context, QScriptEngine*engine); QScriptValue QDateTimeEdit_day(QScriptContext*context,QScriptEngine*engine); QScriptValue QDateTimeEdit_month(QScriptContext*context, QScriptEngine*engine); QScriptValue QDateTimeEdit_year(QScriptContext*context,QScriptEngine*engine); /*:231*//*232:*/ #line 5577 "./typica.w" QScriptValue findChildObject(QScriptContext*context,QScriptEngine*engine); /*:232*//*236:*/ #line 5712 "./typica.w" void setSaltTableProperties(QScriptValue value,QScriptEngine*engine); QScriptValue SaltTable_bindableColumnArray(QScriptContext*context, QScriptEngine*engine); QScriptValue SaltTable_bindableQuotedColumnArray(QScriptContext*context, QScriptEngine*engine); QScriptValue SaltTable_columnSum(QScriptContext*context, QScriptEngine*engine); QScriptValue SaltTable_columnArray(QScriptContext*context, QScriptEngine*engine); QScriptValue SaltTable_data(QScriptContext*context,QScriptEngine*engine); QScriptValue SaltTable_model(QScriptContext*context,QScriptEngine*engine); QScriptValue SaltTable_quotedColumnArray(QScriptContext*context, QScriptEngine*engine); QScriptValue SaltTable_setData(QScriptContext*context,QScriptEngine*engine); QScriptValue SaltTable_clear(QScriptContext*context,QScriptEngine*engine); QScriptValue SaltTable_removeRow(QScriptContext*context,QScriptEngine*engine); QScriptValue SaltTable_findData(QScriptContext*context,QScriptEngine*engine); /*:236*//*246:*/ #line 5928 "./typica.w" void setSqlComboBoxProperties(QScriptValue value,QScriptEngine*engine); void setQComboBoxProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QComboBox_currentData(QScriptContext*context, QScriptEngine*engine); QScriptValue QComboBox_addItem(QScriptContext*context,QScriptEngine*engine); QScriptValue QComboBox_setModel(QScriptContext*context,QScriptEngine*engine); QScriptValue QComboBox_findText(QScriptContext*context,QScriptEngine*engine); QScriptValue QComboBox_findData(QScriptContext*context,QScriptEngine*engine); /*:246*//*258:*/ #line 366 "./units.w" QScriptValue Units_convertTemperature(QScriptContext*context,QScriptEngine*engine); QScriptValue Units_convertRelativeTemperature(QScriptContext*context, QScriptEngine*engine); QScriptValue Units_isTemperatureUnit(QScriptContext*context,QScriptEngine*engine); QScriptValue Units_convertWeight(QScriptContext*context,QScriptEngine*engine); QScriptValue Units_isWeightUnit(QScriptContext*context,QScriptEngine*engine); /*:258*//*262:*/ #line 430 "./units.w" QScriptValue Unit_toScriptValue(QScriptEngine*engine,const Units::Unit&value); void Unit_fromScriptValue(const QScriptValue&sv,Units::Unit&value); /*:262*//*271:*/ #line 133 "./measurement.w" QScriptValue constructMeasurement(QScriptContext*context,QScriptEngine*engine); void setMeasurementProperties(QScriptValue value,QScriptEngine*engine); QScriptValue Measurement_toScriptValue(QScriptEngine*engine,const Measurement&measurement); void Measurement_fromScriptValue(const QScriptValue&value,Measurement&measurement); /*:271*//*291:*/ #line 6562 "./typica.w" QScriptValue constructDAQ(QScriptContext*context,QScriptEngine*engine); QScriptValue DAQ_newChannel(QScriptContext*context,QScriptEngine*engine); void setDAQProperties(QScriptValue value,QScriptEngine*engine); /*:291*//*300:*/ #line 6767 "./typica.w" QScriptValue constructFakeDAQ(QScriptContext*context,QScriptEngine*engine); QScriptValue FakeDAQ_newChannel(QScriptContext*context,QScriptEngine*engine); void setFakeDAQProperties(QScriptValue value,QScriptEngine*engine); /*:300*//*305:*/ #line 6868 "./typica.w" void setChannelProperties(QScriptValue value,QScriptEngine*engine); /*:305*//*311:*/ #line 7050 "./typica.w" QScriptValue constructLinearCalibrator(QScriptContext*context, QScriptEngine*engine); void setLinearCalibratorProperties(QScriptValue value,QScriptEngine*engine); /*:311*//*316:*/ #line 7190 "./typica.w" QScriptValue constructLinearSplineInterpolator(QScriptContext*context,QScriptEngine*engine); void setLinearSplineInterpolatorProperties(QScriptValue value,QScriptEngine*engine); /*:316*//*326:*/ #line 7392 "./typica.w" QScriptValue constructTemperatureDisplay(QScriptContext*context, QScriptEngine*engine); void setTemperatureDisplayProperties(QScriptValue value,QScriptEngine*engine); QScriptValue TemperatureDisplay_setDisplayUnits(QScriptContext*context, QScriptEngine*engine); /*:326*//*334:*/ #line 7551 "./typica.w" QScriptValue constructMeasurementTimeOffset(QScriptContext*context, QScriptEngine*engine); void setMeasurementTimeOffsetProperties(QScriptValue value, QScriptEngine*engine); /*:334*//*339:*/ #line 7664 "./typica.w" QScriptValue constructThresholdDetector(QScriptContext*context,QScriptEngine*engine); void setThresholdDetectorProperties(QScriptValue value,QScriptEngine*engine); /*:339*//*344:*/ #line 7762 "./typica.w" QScriptValue constructZeroEmitter(QScriptContext*context, QScriptEngine*engine); void setZeroEmitterProperties(QScriptValue value,QScriptEngine*engine); /*:344*//*349:*/ #line 7841 "./typica.w" QScriptValue constructMeasurementAdapter(QScriptContext*context, QScriptEngine*engine); void setMeasurementAdapterProperties(QScriptValue value,QScriptEngine*engine); /*:349*//*366:*/ #line 8305 "./typica.w" void setGraphViewProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructGraphView(QScriptContext*context,QScriptEngine*engine); /*:366*//*389:*/ #line 8932 "./typica.w" void setZoomLogProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructZoomLog(QScriptContext*context,QScriptEngine*engine); QScriptValue ZoomLog_saveXML(QScriptContext*context,QScriptEngine*engine); QScriptValue ZoomLog_saveCSV(QScriptContext*context,QScriptEngine*engine); QScriptValue ZoomLog_saveState(QScriptContext*context,QScriptEngine*engine); QScriptValue ZoomLog_restoreState(QScriptContext*context, QScriptEngine*engine); QScriptValue ZoomLog_lastTime(QScriptContext*context,QScriptEngine*engine); QScriptValue ZoomLog_saveTemporary(QScriptContext*context, QScriptEngine*engnie); QScriptValue ZoomLog_setDisplayUnits(QScriptContext*context, QScriptEngine*engine); /*:389*//*427:*/ #line 9889 "./typica.w" QScriptValue constructAnnotationButton(QScriptContext*context, QScriptEngine*engine); void setAnnotationButtonProperties(QScriptValue value,QScriptEngine*engine); /*:427*//*435:*/ #line 10029 "./typica.w" QScriptValue constructAnnotationSpinBox(QScriptContext*context, QScriptEngine*engine); void setAnnotationSpinBoxProperties(QScriptValue value,QScriptEngine*engine); void setQDoubleSpinBoxProperties(QScriptValue value,QScriptEngine*engine); void setQAbstractSpinBoxProperties(QScriptValue value,QScriptEngine*engine); /*:435*//*456:*/ #line 10452 "./typica.w" QScriptValue constructTimerDisplay(QScriptContext*context, QScriptEngine*engine); void setTimerDisplayProperties(QScriptValue value,QScriptEngine*engine); /*:456*//*483:*/ #line 10946 "./typica.w" void setWidgetDecoratorProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructWidgetDecorator(QScriptContext*context, QScriptEngine*engine); /*:483*//*496:*/ #line 11229 "./typica.w" QScriptValue constructLogEditWindow(QScriptContext*context, QScriptEngine*engine); /*:496*//*515:*/ #line 11757 "./typica.w" QScriptValue constructXMLInput(QScriptContext*context,QScriptEngine*engine); QScriptValue XMLInput_input(QScriptContext*context,QScriptEngine*engine); /*:515*//*533:*/ #line 189 "./webview.w" QScriptValue constructWebView(QScriptContext*context,QScriptEngine*engine); void setQWebViewProperties(QScriptValue value,QScriptEngine*engine); void addWebViewToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); /*:533*//*536:*/ #line 219 "./webview.w" QScriptValue QWebElement_toScriptValue(QScriptEngine*engine,const QWebElement&element); void QWebElement_fromScriptValue(const QScriptValue&value,QWebElement&element); /*:536*//*540:*/ #line 277 "./webview.w" QScriptValue constructWebElement(QScriptContext*context, QScriptEngine*engine); /*:540*//*609:*/ #line 13096 "./typica.w" void setSqlQueryViewProperties(QScriptValue value,QScriptEngine*engine); QScriptValue constructSqlQueryView(QScriptContext*context, QScriptEngine*engine); QScriptValue SqlQueryView_setQuery(QScriptContext*context, QScriptEngine*engine); QScriptValue SqlQueryView_setHeaderData(QScriptContext*context, QScriptEngine*engine); /*:609*//*619:*/ #line 13333 "./typica.w" void addReportToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); /*:619*//*635:*/ #line 13618 "./typica.w" void setQTextEditProperties(QScriptValue value,QScriptEngine*engine); QScriptValue QTextEdit_print(QScriptContext*context,QScriptEngine*engine); /*:635*//*657:*/ #line 471 "./daterangeselector.w" void addDateRangeToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); /*:657*//*666:*/ #line 13815 "./typica.w" void addFormArrayToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack); /*:666*//*687:*/ #line 14399 "./typica.w" void addScaleControlToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); void addIntensityControlToLayout(QDomElement element, QStack *widgetStack, QStack *layoutStack); /*:687*//*713:*/ #line 14985 "./typica.w" QScriptValue constructDeviceTreeModel(QScriptContext*context, QScriptEngine*engine); void setDeviceTreeModelProperties(QScriptValue value,QScriptEngine*engine); void setQAbstractItemModelProperties(QScriptValue value,QScriptEngine*engine); QScriptValue DeviceTreeModel_referenceElement(QScriptContext*context, QScriptEngine*engine); QScriptValue QAbstractItemModel_data(QScriptContext*context,QScriptEngine*engine); QScriptValue QAbstractItemModel_index(QScriptContext*context,QScriptEngine*engine); QScriptValue QAbstractItemModel_rowCount(QScriptContext*context,QScriptEngine*engine); QScriptValue QAbstractItemModel_hasChildren(QScriptContext*context,QScriptEngine*engine); /*:713*//*719:*/ #line 15127 "./typica.w" QScriptValue QModelIndex_toScriptValue(QScriptEngine*engine,const QModelIndex&index); void QModelIndex_fromScriptValue(const QScriptValue&value,QModelIndex&index); /*:719*//*735:*/ #line 15425 "./typica.w" QScriptValue constructDeviceConfigurationWindow(QScriptContext*context, QScriptEngine*engine); /*:735*//*806:*/ #line 42 "./settings.w" QScriptValue constructSettingsWindow(QScriptContext*context,QScriptEngine*engine); /*:806*//*830:*/ #line 17994 "./typica.w" QScriptValue constructModbusRTUDevice(QScriptContext*context,QScriptEngine*engine); QScriptValue ModbusRTUDevice_pVChannel(QScriptContext*context,QScriptEngine*engine); QScriptValue ModbusRTUDevice_sVChannel(QScriptContext*context,QScriptEngine*engine); void setModbusRTUDeviceProperties(QScriptValue value,QScriptEngine*engine); /*:830*//*850:*/ #line 345 "./unsupportedserial.w" QScriptValue createDevice(QScriptContext*context,QScriptEngine*engine); /*:850*//*856:*/ #line 425 "./unsupportedserial.w" QScriptValue JavaScriptDevice_getChannel(QScriptContext*context,QScriptEngine*engine); /*:856*//*862:*/ #line 617 "./unsupportedserial.w" QScriptValue getMeasurementTimestamp(QScriptContext*context,QScriptEngine*engine); /*:862*//*866:*/ #line 651 "./unsupportedserial.w" QScriptValue constructSerialPort(QScriptContext*context,QScriptEngine*engine); void setSerialPortProperties(QScriptValue value,QScriptEngine*engine); QScriptValue SerialPort_flush(QScriptContext*context,QScriptEngine*engine); /*:866*//*890:*/ #line 450 "./phidgets.w" QScriptValue constructPhidgetsTemperatureSensor(QScriptContext*context,QScriptEngine*engine); QScriptValue Phidgets_getChannel(QScriptContext*context,QScriptEngine*engine); /*:890*//*908:*/ #line 138 "./rate.w" QScriptValue constructRateOfChange(QScriptContext*context,QScriptEngine*engine); void setRateOfChangeProperties(QScriptValue value,QScriptEngine*engine); /*:908*//*933:*/ #line 597 "./dataqsdk.w" QScriptValue constructDataqSdkDevice(QScriptContext*context,QScriptEngine*engine); QScriptValue DataqSdkDevice_newChannel(QScriptContext*context,QScriptEngine*engine); void setDataqSdkDeviceProperties(QScriptValue value,QScriptEngine*engine); /*:933*//*960:*/ #line 67 "./scales.w" QScriptValue constructDragLabel(QScriptContext*context,QScriptEngine*engine); void setDragLabelProperties(QScriptValue value,QScriptEngine*engine); /*:960*//*968:*/ #line 233 "./scales.w" QScriptValue constructSerialScale(QScriptContext*context,QScriptEngine*engine); void setSerialScaleProperties(QScriptValue value,QScriptEngine*engine); /*:968*//*971:*/ #line 258 "./scales.w" QScriptValue BaudRateType_toScriptValue(QScriptEngine*engine,const BaudRateType&value); void BaudRateType_fromScriptValue(const QScriptValue&sv,BaudRateType&value); QScriptValue DataBitsType_toScriptValue(QScriptEngine*engine,const DataBitsType&value); void DataBitsType_fromScriptValue(const QScriptValue&sv,DataBitsType&value); QScriptValue ParityType_toScriptValue(QScriptEngine*engine,const ParityType&value); void ParityType_fromScriptValue(const QScriptValue&sv,ParityType&value); QScriptValue StopBitsType_toScriptValue(QScriptEngine*engine,const StopBitsType&value); void StopBitsType_fromScriptValue(const QScriptValue&sv,StopBitsType&value); QScriptValue FlowType_toScriptValue(QScriptEngine*engine,const FlowType&value); void FlowType_fromScriptValue(const QScriptValue&sv,FlowType&value); /*:971*//*996:*/ #line 265 "./valueannotation.w" QScriptValue constructValueAnnotation(QScriptContext*context,QScriptEngine*engine); void setValueAnnotationProperties(QScriptValue value,QScriptEngine*engine); /*:996*/ #line 527 "./typica.w" /*589:*/ #line 12753 "./typica.w" void messageFileOutput(QtMsgType type,const char*msg); /*:589*/ #line 528 "./typica.w" /*4:*/ #line 537 "./typica.w" /*727:*/ #line 15248 "./typica.w" NodeInserter::NodeInserter(const QString&title,const QString&name, const QString&driver,QObject*parent): QAction(title,parent),defaultNodeName(name),driverString(driver) { connect(this,SIGNAL(triggered()),this,SLOT(onTriggered())); } void NodeInserter::onTriggered() { emit triggered(defaultNodeName,driverString); } /*:727*/ #line 538 "./typica.w" /*267:*/ #line 40 "./measurement.w" Measurement::Measurement(double temperature,QTime time,Units::Unit sc) { insert("measurement",temperature); insert("time",time); insert("unit",sc); } Measurement::Measurement(double temperature) { insert("measurement",temperature); insert("time",QTime::currentTime()); insert("unit",Units::Fahrenheit); } void Measurement::setTemperature(double temperature) { insert("measurement",temperature); } void Measurement::setTime(QTime time) { insert("time",time); } void Measurement::setUnit(Units::Unit scale) { insert("unit",scale); } double Measurement::temperature()const { return value("measurement").toDouble(); } QTime Measurement::time()const { return value("time").toTime(); } Units::Unit Measurement::scale()const { return(Units::Unit)(value("unit").toInt()); } /*:267*//*268:*/ #line 88 "./measurement.w" Measurement Measurement::toFahrenheit() { return Measurement(Units::convertTemperature(this->temperature(), this->scale(),Units::Fahrenheit), this->time(),Units::Fahrenheit); } Measurement Measurement::toCelsius() { return Measurement(Units::convertTemperature(this->temperature(), this->scale(),Units::Celsius), this->time(),Units::Celsius); } Measurement Measurement::toKelvin() { return Measurement(Units::convertTemperature(this->temperature(), this->scale(),Units::Kelvin), this->time(),Units::Kelvin); } Measurement Measurement::toRankine() { return Measurement(Units::convertTemperature(this->temperature(), this->scale(),Units::Rankine), this->time(),Units::Rankine); } /*:268*/ #line 539 "./typica.w" /*281:*/ #line 6168 "./typica.w" void DAQImplementation::measure() { int samplesRead= 0; double buffer[channels]; error= read((unsigned int)(handle),(signed long)(1),(double)(10.0), (unsigned long)(0),buffer,(unsigned long)(channels), &samplesRead,(signed long)(0)); if(error) { ready= false; } else { if(samplesRead) { QTime time= QTime::currentTime(); for(int i= 0;iinput(measure); } } } } } /*:281*//*282:*/ #line 6210 "./typica.w" void DAQImplementation::run() { setPriority(QThread::TimeCriticalPriority); while(ready) { measure(); } } /*:282*//*283:*/ #line 6226 "./typica.w" void DAQ::threadFinished() { if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6231 "./typica.w" } } /*:283*//*285:*/ #line 6302 "./typica.w" void DAQ::start() { if(imp->ready) { imp->error= imp->startTask(imp->handle); if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6310 "./typica.w" } else { connect(imp,SIGNAL(finished()),this,SLOT(threadFinished())); imp->start(); } } } void DAQ::stop() { if(imp->useBase) { imp->ready= false; imp->wait(ULONG_MAX); imp->stopTask(imp->handle); } else { imp->ready= false; imp->error= imp->stopTask(imp->handle); if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6334 "./typica.w" } imp->error= imp->clearTask(imp->handle); if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6339 "./typica.w" } } } /*:285*//*286:*/ #line 6349 "./typica.w" DAQ::DAQ(QString device,const QString&driver):imp(new DAQImplementation(driver)) { imp->device= device; imp->error= imp->createTask(device.toAscii().data(),&(imp->handle)); if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6356 "./typica.w" } else { imp->ready= true; } } /*:286*//*287:*/ #line 6370 "./typica.w" Channel*DAQ::newChannel(int units,int thermocouple) { Channel*retval= new Channel(); imp->channelMap[imp->channels]= retval; imp->unitMap[imp->channels]= (Units::Unit)units; imp->channels++; if(imp->ready) { if(imp->useBase) { imp->error= imp->createChannel(imp->handle, QString("%1/ai%2").arg(imp->device). arg(imp->channels-1). toAscii().data(), "",(double)(-1.0),(double)(100.0), (signed long)(units), (signed long)(thermocouple), (signed long)(10200),(double)(0), ""); } else { imp->error= imp->createChannel(imp->handle, QString("%1/ai%2").arg(imp->device). arg(imp->channels-1). toAscii().data(), "",(double)(50.0),(double)(500.0), (signed long)(units), (signed long)(thermocouple), (signed long)(10200),(double)(0), ""); } if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6405 "./typica.w" } } return retval; } /*:287*//*288:*/ #line 6419 "./typica.w" void DAQ::setClockRate(double Hz) { if(imp->ready) { imp->error= imp->setClock(imp->handle,"OnboardClock",Hz, (signed long)(10280),(signed long)(10123), (unsigned long long)(1)); if(imp->error) { /*284:*/ #line 6277 "./typica.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); unsigned long bytes= imp->errorInfo(NULL,0); char string[bytes]; imp->errorInfo(string,bytes); warning.setInformativeText(QString(string)); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:284*/ #line 6429 "./typica.w" } } } /*:288*//*289:*/ #line 6439 "./typica.w" DAQ::~DAQ() { if(imp->useBase) { imp->resetDevice(imp->device.toAscii().data()); imp->clearTask(imp->handle); } else { if(imp->ready) { imp->ready= false; imp->wait(ULONG_MAX); imp->stopTask(imp->handle); imp->resetDevice(imp->device.toAscii().data()); imp->clearTask(imp->handle); } } delete imp; } /*:289*//*290:*/ #line 6470 "./typica.w" DAQImplementation::DAQImplementation(const QString&driverinfo) :QThread(NULL),channelMap(4),handle(0),error(0),channels(0),ready(false), unitMap(4) { if(driverinfo=="nidaqmxbase") { useBase= true; } else { useBase= false; } if(useBase) { driver.setFileName("nidaqmxbase.framework/nidaqmxbase"); if(!driver.load()) { driver.setFileName("nidaqmxbase"); if(!driver.load()) { QMessageBox::critical(NULL,tr("Typica: Driver not found"), tr("Failed to find nidaqmxbase. Please install it.")); QApplication::quit(); } } } else { driver.setFileName("nicaiu"); if(!driver.load()) { QMessageBox::critical(NULL,tr("Typica: Driver not found"), tr("Failed to find nidaqmx. Please install it.")); QApplication::quit(); } } if(useBase) { if((createTask= (daqfp)driver.resolve("DAQmxBaseCreateTask"))==0|| (startTask= (daqfp)driver.resolve("DAQmxBaseStartTask"))==0|| (stopTask= (daqfp)driver.resolve("DAQmxBaseStopTask"))==0|| (clearTask= (daqfp)driver.resolve("DAQmxBaseClearTask"))==0|| (createChannel= (daqfp)driver.resolve("DAQmxBaseCreateAIThrmcplChan")) ==0|| (setClock= (daqfp)driver.resolve("DAQmxBaseCfgSampClkTiming"))== 0|| (read= (daqfp)driver.resolve("DAQmxBaseReadAnalogF64"))==0|| (errorInfo= (daqfp)driver.resolve("DAQmxBaseGetExtendedErrorInfo"))== 0|| (resetDevice= (daqfp)driver.resolve("DAQmxBaseResetDevice"))==0) { waitForMeasurement= NULL; QMessageBox::critical(NULL,tr("Typica: Link error"), tr("Failed to link a required symbol in NI-DAQmxBase.")); QApplication::quit(); } } else { if((createTask= (daqfp)driver.resolve("DAQmxCreateTask"))==0|| (startTask= (daqfp)driver.resolve("DAQmxStartTask"))==0|| (stopTask= (daqfp)driver.resolve("DAQmxStopTask"))==0|| (clearTask= (daqfp)driver.resolve("DAQmxClearTask"))==0|| (createChannel= (daqfp)driver.resolve("DAQmxCreateAIThrmcplChan")) ==0|| (setClock= (daqfp)driver.resolve("DAQmxCfgSampClkTiming"))==0|| (read= (daqfp)driver.resolve("DAQmxReadAnalogF64"))==0|| (errorInfo= (daqfp)driver.resolve("DAQmxGetExtendedErrorInfo"))== 0|| (resetDevice= (daqfp)driver.resolve("DAQmxResetDevice"))==0|| (waitForMeasurement= (daqfp)driver.resolve("DAQmxWaitUntilTaskDone"))==0) { QMessageBox::critical(NULL,tr("Typica: Link error"), tr("Failed to link a required symbol in NI-DAQmx.")); QApplication::quit(); } } } DAQImplementation::~DAQImplementation() { driver.unload(); } /*:290*/ #line 540 "./typica.w" /*922:*/ #line 197 "./dataqsdk.w" void DataqSdkDeviceImplementation::measure() { unsigned count= channels*40; di_status_read(buffer,count); QTime time= QTime::currentTime(); for(unsigned int i= 0;i countList; for(unsigned int i= 0;i<(unsigned)channels;i++) { QList channelBuffer; for(unsigned int j= 0;j<40;j++) { channelBuffer<<((double)buffer[i+(channels*j)]*10.0)/32768.0; if(i==0) { countList< smoothingList; smoothingList< smoothingKeys= smoother.uniqueKeys(); for(int j= 0;j keyValues= smoother.values(smoothingKeys[j]); for(int k= 0;kinput(measure); } } /*:922*//*923:*/ #line 290 "./dataqsdk.w" void DataqSdkDeviceImplementation::run() { if(!ready) { error= 9; return; } driver= new QLibrary(device); if(!driver->load()) { error= 1; qDebug()<<"Failed to load driver: "<resolve("di_open"); di_close= (FPDICLOSE)driver->resolve("di_close"); di_sample_rate= (FPDISAMPLERATE)driver->resolve("di_sample_rate"); di_maximum_rate= (FPDIMAXIMUMRATE)driver->resolve("di_maximum_rate"); di_list_length= (FPDILISTLENGTH)driver->resolve("di_list_length"); di_inlist= (FPDIINLIST)driver->resolve("di_inlist"); di_buffer_alloc= (FPDIBUFFERALLOC)driver->resolve("di_buffer_alloc"); di_start_scan= (FPDISTARTSCAN)driver->resolve("di_start_scan"); di_status_read= (FPDISTATUSREAD)driver->resolve("di_status_read"); di_buffer_status= (FPDIBUFFERSTATUS)driver->resolve("di_buffer_status"); di_burst_rate= (FPDIBURSTRATE)driver->resolve("di_burst_rate"); di_stop_scan= (FPDISTOPSCAN)driver->resolve("di_stop_scan"); if((!di_open)||(!di_close)||(!di_sample_rate)||(!di_maximum_rate)|| (!di_list_length)||(!di_inlist)||(!di_buffer_alloc)|| (!di_start_scan)||(!di_status_read)||(!di_buffer_status)|| (!di_burst_rate)||(!di_stop_scan)) { error= 2; return; } error= di_open(deviceNumber); if(error) { di_close(); error= di_open(deviceNumber); if(error) { error= 3; di_close(); return; } } isOpen= true; di_maximum_rate(240.0); sampleRate= di_sample_rate(sampleRate*channels*40,&oversample, &burstDivisor); buffer= new qint16[(int)sampleRate]; di_inlist_struct inlist[16]= {{0,0,0,0,0,0,0,0}}; for(unsigned short i= 0;ierror) { /*925:*/ #line 400 "./dataqsdk.w" imp->ready= false; QMessageBox warning; warning.setStandardButtons(QMessageBox::Cancel); warning.setIcon(QMessageBox::Warning); warning.setText(QString(tr("Error: %1")).arg(imp->error)); warning.setInformativeText(tr("An error occurred")); warning.setWindowTitle(QString(PROGRAM_NAME)); warning.exec(); /*:925*/ #line 391 "./dataqsdk.w" } } /*:924*//*926:*/ #line 417 "./dataqsdk.w" void DataqSdkDevice::start() { connect(imp,SIGNAL(finished()),this,SLOT(threadFinished())); imp->start(); } /*:926*//*927:*/ #line 428 "./dataqsdk.w" QStringList DataqSdkDevice::detectHardware() { QSettings deviceLookup("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\services\\usbser\\Enum", QSettings::NativeFormat); QStringList keys= deviceLookup.childKeys(); QStringList devices; for(int i= 0;i 0&&autoIndex<=portList.size()) { finalizedPort= portList.at(autoIndex-1); } else { imp->error= 8; qDebug()<<"Failed to detect port."; } } else { finalizedPort= device; } int rstart= finalizedPort.indexOf("COM"); finalizedPort.remove(0,rstart+3); bool chopFinished= false; int finalizedPortNumber= 0; while(finalizedPort.size()> 0&&!chopFinished) { finalizedPortNumber= finalizedPort.toInt(&chopFinished); if(!chopFinished) { finalizedPort.chop(1); } } if(finalizedPortNumber<10) { imp->device= QString("DI10%1NT.DLL").arg(finalizedPort); } else { imp->device= QString("DI1%1NT.DLL").arg(finalizedPort); } imp->deviceNumber= 0x12C02D00; imp->deviceNumber+= finalizedPortNumber; imp->ready= true; } /*:928*//*929:*/ #line 523 "./dataqsdk.w" Channel*DataqSdkDevice::newChannel(Units::Unit scale) { Channel*retval= NULL; if(imp->ready) { retval= new Channel(); imp->channelMap[imp->channels]= retval; imp->unitMap[imp->channels]= scale; imp->channels++; } return retval; } /*:929*//*930:*/ #line 547 "./dataqsdk.w" void DataqSdkDevice::setClockRate(double Hz) { imp->sampleRate= Hz; } /*:930*//*931:*/ #line 557 "./dataqsdk.w" DataqSdkDevice::~DataqSdkDevice() { if(imp->ready) { imp->ready= false; } imp->wait(ULONG_MAX); delete imp; } /*:931*//*932:*/ #line 575 "./dataqsdk.w" DataqSdkDeviceImplementation::DataqSdkDeviceImplementation():QThread(NULL), channelMap(4),error(0),channels(0),ready(false),unitMap(4) { } DataqSdkDeviceImplementation::~DataqSdkDeviceImplementation() { if(isOpen) { di_stop_scan(); di_close(); } if(driver->isLoaded()) { driver->unload(); } } /*:932*/ #line 541 "./typica.w" /*297:*/ #line 6679 "./typica.w" void FakeDAQImplementation::measure() { msleep((int)(1000/clockRate)); QTime time= QTime::currentTime(); for(int i= 0;iinput(measure); } } /*:297*//*298:*/ #line 6693 "./typica.w" void FakeDAQImplementation::run() { setPriority(QThread::TimeCriticalPriority); while(ready) { measure(); } } FakeDAQImplementation::FakeDAQImplementation():QThread(NULL),channelMap(4), channels(0),ready(false),clockRate(1) { } FakeDAQImplementation::~FakeDAQImplementation() { } /*:298*//*299:*/ #line 6718 "./typica.w" void FakeDAQ::start() { if(imp->ready) { imp->start(); } } FakeDAQ::FakeDAQ(QString):imp(new FakeDAQImplementation()) { imp->ready= true; } Channel*FakeDAQ::newChannel(int,int) { Channel*retval; if(imp->ready) { retval= new Channel(); imp->channelMap[imp->channels]= retval; imp->channels++; } else { return NULL; } return retval; } void FakeDAQ::setClockRate(double Hz) { if(imp->ready) { imp->clockRate= Hz; } } FakeDAQ::~FakeDAQ() { imp->ready= false; imp->wait(ULONG_MAX); delete imp; } /*:299*/ #line 542 "./typica.w" /*304:*/ #line 6849 "./typica.w" Channel::Channel():QObject(NULL) { } Channel::~Channel() { } void Channel::input(Measurement measurement) { emit newData(measurement); } /*:304*/ #line 543 "./typica.w" /*320:*/ #line 7254 "./typica.w" void TemperatureDisplay::setRelativeMode(bool relative) { r= relative; } /*:320*//*321:*/ #line 7271 "./typica.w" void TemperatureDisplay::setValue(Measurement temperature) { QString number; switch(unit) { case Units::Fahrenheit: display(QString("%1'F"). arg(number.setNum(temperature.toFahrenheit().temperature(),'f', 2))); break; case Units::Celsius: if(!r){ display(QString("%1'C"). arg(number.setNum(temperature.toCelsius().temperature(),'f', 2))); }else{ number.setNum(temperature.temperature()*(5.0/9.0),'f',2); display(QString("%1'C").arg(number)); } break; case Units::Kelvin: if(!r){ display(QString("%1"). arg(number.setNum(temperature.toKelvin().temperature(),'f', 2))); }else{ number.setNum(temperature.temperature()*(5.0/9.0),'f',2); display(QString("%1").arg(number)); } break; case Units::Rankine: display(QString("%1'r"). arg(number.setNum(temperature.toRankine().temperature(),'f', 2))); break; case Units::Unitless: display(QString("%1").arg(number.setNum(temperature.temperature(),'f',0))); break; default: switch(temperature.scale()) { case Units::Fahrenheit: display(QString("%1'F"). arg(number.setNum(temperature.temperature(),'f',2))); break; case Units::Celsius: display(QString("%1'C"). arg(number.setNum(temperature.temperature(),'f',2))); break; case Units::Kelvin: display(QString("%1"). arg(number.setNum(temperature.temperature(),'f',2))); break; case Units::Rankine: display(QString("%1'r"). arg(number.setNum(temperature.temperature(),'f',2))); break; case Units::Unitless: display(QString("%1").arg(number.setNum(temperature.temperature(),'f',0))); break; } break; } } /*:321*//*322:*/ #line 7347 "./typica.w" TemperatureDisplay::TemperatureDisplay(QWidget*parent): QLCDNumber(8,parent),unit(Units::Fahrenheit),r(false) { setSegmentStyle(Filled); display("---.--'F"); } /*:322*//*323:*/ #line 7363 "./typica.w" void TemperatureDisplay::invalidate() { display("---.--'F"); } /*:323*//*324:*/ #line 7375 "./typica.w" void TemperatureDisplay::setDisplayUnits(Units::Unit scale) { unit= scale; } /*:324*//*325:*/ #line 7383 "./typica.w" TemperatureDisplay::~TemperatureDisplay() { } /*:325*/ #line 544 "./typica.w" /*331:*/ #line 7483 "./typica.w" void MeasurementTimeOffset::newMeasurement(Measurement measure) { if(measure.time() 0) { newTime.setHMS(0,newTime.minute(),newTime.second(),newTime.msec()); } Measurement rel= measure; rel.setTime(newTime); emit measurement(rel); /*:332*/ #line 7495 "./typica.w" } else { Measurement rel= measure; rel.setTime(QTime(0,0,0,0)); emit measurement(rel); } } else { int relTime= epoch.msecsTo(measure.time()); /*332:*/ #line 7517 "./typica.w" QTime newTime(0,0,0,0); newTime= newTime.addMSecs(relTime); if(newTime.hour()> 0) { newTime.setHMS(0,newTime.minute(),newTime.second(),newTime.msec()); } Measurement rel= measure; rel.setTime(newTime); emit measurement(rel); /*:332*/ #line 7507 "./typica.w" } hasPrevious= true; previous= measure.time(); } /*:331*//*333:*/ #line 7530 "./typica.w" MeasurementTimeOffset::MeasurementTimeOffset(QTime zero):epoch(zero), previous(0,0,0,0),hasPrevious(false) { } QTime MeasurementTimeOffset::zeroTime() { return epoch; } void MeasurementTimeOffset::setZeroTime(QTime zero) { epoch= zero; hasPrevious= false; } /*:333*/ #line 545 "./typica.w" /*343:*/ #line 7728 "./typica.w" ZeroEmitter::ZeroEmitter(int tempcolumn):QObject(NULL),col(tempcolumn) { } int ZeroEmitter::column() { return col; } double ZeroEmitter::lastTemperature() { return cache.temperature(); } void ZeroEmitter::newMeasurement(Measurement measure) { cache= measure; } void ZeroEmitter::setColumn(int column) { col= column; } void ZeroEmitter::emitZero() { cache.setTime(QTime(0,0,0,0)); emit measurement(cache,col); } /*:343*/ #line 546 "./typica.w" /*348:*/ #line 7818 "./typica.w" MeasurementAdapter::MeasurementAdapter(int tempcolumn):col(tempcolumn) { } int MeasurementAdapter::column() { return col; } void MeasurementAdapter::newMeasurement(Measurement measure) { emit measurement(measure,col); } void MeasurementAdapter::setColumn(int column) { col= column; } /*:348*/ #line 547 "./typica.w" /*353:*/ #line 7940 "./typica.w" GraphView::GraphView(QWidget*parent):QGraphicsView(parent), theScene(new QGraphicsScene), graphLines(new QMap *> ), prevPoints(new QMap ), translations(new QMap ), gridLinesF(new QList ), gridLinesC(new QList ), relativeGridLines(new QList ), relativeEnabled(false), timeIndicatorEnabled(false), timeLine(new QGraphicsLineItem), relativeAdjuster(new LinearSplineInterpolator) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setScene(theScene); setViewportUpdateMode(QGraphicsView::FullViewportUpdate); QPen timePen; timePen.setColor(QColor(160,160,164,127)); timeLine->setPen(timePen); timeLine->setLine(0,0,0,-500); timeLine->hide(); theScene->addItem(timeLine); /*354:*/ #line 7980 "./typica.w" QGraphicsLineItem*tempaxis= new QGraphicsLineItem; tempaxis->setLine(-10,-500,-10,0); theScene->addItem(tempaxis); QGraphicsLineItem*gridLine; QGraphicsTextItem*label; for(int y= -100;y> -600;y-= 100) { gridLine= new QGraphicsLineItem; gridLine->setLine(0,y,1200,y); theScene->addItem(gridLine); label= new QGraphicsTextItem; label->setHtml(QString("%1°F").arg(-y)); label->setPos(-55,y-(label->boundingRect().height()/2)); theScene->addItem(label); gridLinesF->append(gridLine); gridLinesF->append(label); } for(int degC= 50;degC<=250;degC+= 50) { gridLine= new QGraphicsLineItem; int y= -(degC*(9.0/5.0)+32); gridLine->setLine(0,y,1200,y); gridLine->hide(); theScene->addItem(gridLine); gridLinesC->append(gridLine); label= new QGraphicsTextItem; label->setHtml(QString("%1°C").arg(degC)); label->setPos(-55,y-(label->boundingRect().height()/2)); label->hide(); theScene->addItem(label); gridLinesC->append(label); } /*:354*/ #line 7964 "./typica.w" ; /*355:*/ #line 8021 "./typica.w" QSettings settings; if(settings.contains("settings/graph/relative/enable")) { if(settings.value("settings/graph/relative/enable").toBool()) { relativeEnabled= true; QColor relativeColor= QColor(settings.value("settings/graph/relative/color").toString()); QString unit= QString(settings.value("settings/graph/relative/unit").toInt()==0?"F":"C"); QMap relativeAxisPairs; QStringList relativeAxisLabels= settings.value("settings/graph/relative/grid").toString().split(QRegExp("[\\s,]+"),QString::SkipEmptyParts); foreach(QString item,relativeAxisLabels) { relativeAxisPairs.insert(item.toDouble(),item); } if(relativeAxisPairs.size()> 1) { double skip= 500.0/(relativeAxisPairs.size()-1); double y= 0; foreach(double key,relativeAxisPairs.keys()) { gridLine= new QGraphicsLineItem; gridLine->setLine(0,y,1205,y); gridLine->setPen(QPen(relativeColor)); theScene->addItem(gridLine); relativeGridLines->append(gridLine); label= new QGraphicsTextItem; label->setHtml(QString("%1°%2").arg(relativeAxisPairs.value(key)).arg(unit)); label->setPos(1210,y-(label->boundingRect().height()/2)); theScene->addItem(label); relativeGridLines->append(label); if(unit=="F") { relativeAdjuster->add_pair(key,-y); } else { relativeAdjuster->add_pair(key*(9.0/5.0),-y); } y-= skip; } } } } /*:355*/ #line 7965 "./typica.w" /*357:*/ #line 8098 "./typica.w" QGraphicsLineItem*timeaxis= new QGraphicsLineItem; timeaxis->setLine(0,10,1200,10); theScene->addItem(timeaxis); for(int x= 0;x<1201;x+= 120) { QGraphicsLineItem*tick= new QGraphicsLineItem; tick->setLine(x,0,x,20); theScene->addItem(tick); QGraphicsTextItem*label= new QGraphicsTextItem; label->setPlainText(QString("%1").arg(x/60)); label->setPos(x-(label->boundingRect().width()/2),20); theScene->addItem(label); } /*:357*/ #line 7966 "./typica.w" ; fitInView(theScene->sceneRect().adjusted(-50,-50,50,50)); } /*:353*//*356:*/ #line 8068 "./typica.w" void GraphView::showF() { for(int i= 0;isize();i++) { gridLinesF->at(i)->show(); } for(int i= 0;isize();i++) { gridLinesC->at(i)->hide(); } } void GraphView::showC() { for(int i= 0;isize();i++) { gridLinesF->at(i)->hide(); } for(int i= 0;isize();i++) { gridLinesC->at(i)->show(); } } /*:356*//*358:*/ #line 8117 "./typica.w" void GraphView::resizeEvent(QResizeEvent*) { fitInView(theScene->sceneRect().adjusted(-50,-50,50,50)); } /*:358*//*359:*/ #line 8131 "./typica.w" #define FULLTIMETOINT(t) (t.msec() + (t.second() * 1000) + (t.minute() * 60 * 1000)) void GraphView::newMeasurement(Measurement measure,int tempcolumn) { double offset= 0; if(measure.contains("relative")) { if(measure.value("relative").toBool()) { if(relativeEnabled) { measure.setTemperature(relativeAdjuster->newMeasurement(measure).temperature()); } else { return; } } } if(translations->contains(tempcolumn)) { offset= translations->value(tempcolumn); } if(prevPoints->contains(tempcolumn)) { /*361:*/ #line 8208 "./typica.w" QGraphicsLineItem*segment= new QGraphicsLineItem; QPointF nextPoint(FULLTIMETOINT(measure.time())/1000,measure.temperature()); segment->setLine(prevPoints->value(tempcolumn).x()+offset, -(prevPoints->value(tempcolumn).y()), nextPoint.x()+offset,-(nextPoint.y())); static QColor p[12]= {Qt::yellow,Qt::blue,Qt::cyan,Qt::red,Qt::magenta, Qt::green,Qt::darkGreen,Qt::darkMagenta, Qt::darkRed,Qt::darkCyan,Qt::darkBlue, Qt::darkYellow}; segment->setPen(p[tempcolumn%12]); theScene->addItem(segment); prevPoints->insert(tempcolumn,nextPoint); if(timeIndicatorEnabled) { timeLine->setLine(nextPoint.x()+offset,0,nextPoint.x()+offset,-500); } /*:361*/ #line 8157 "./typica.w" if(graphLines->contains(tempcolumn)) { graphLines->value(tempcolumn)->append(segment); } else { QList *newLine= new QList ; newLine->append(segment); graphLines->insert(tempcolumn,newLine); } } else { /*360:*/ #line 8193 "./typica.w" int x= FULLTIMETOINT(measure.time())/1000; prevPoints->insert(tempcolumn,QPointF(x,measure.temperature())); if(timeIndicatorEnabled) { timeLine->setLine(x,0,x,-500); } /*:360*/ #line 8174 "./typica.w" } } /*:359*//*362:*/ #line 8229 "./typica.w" void GraphView::clear() { int i; foreach(i,prevPoints->keys()) { removeSeries(i); } translations->clear(); } /*:362*//*363:*/ #line 8243 "./typica.w" void GraphView::removeSeries(int column) { if(graphLines->contains(column)) { QList *series= graphLines->value(column); QGraphicsLineItem*segment; foreach(segment,*series) { theScene->removeItem(segment); } qDeleteAll(*series); } graphLines->remove(column); prevPoints->remove(column); } /*:363*//*364:*/ #line 8262 "./typica.w" void GraphView::setSeriesTranslation(int column,double offset) { if(graphLines->contains(column)) { QList *series= graphLines->value(column); QGraphicsLineItem*segment; foreach(segment,*series) { segment->setPos(segment->pos().x()+offset,segment->pos().y()); } } if(translations->contains(column)) { translations->insert(column,offset+translations->value(column)); } else { translations->insert(column,offset); } } /*:364*//*365:*/ #line 8289 "./typica.w" void GraphView::setTimeIndicatorEnabled(bool enabled) { timeIndicatorEnabled= enabled; if(enabled) { timeLine->show(); } else { timeLine->hide(); } } /*:365*/ #line 548 "./typica.w" /*371:*/ #line 8433 "./typica.w" void ZoomLog::newMeasurement(Measurement measure,int tempcolumn) { if(measure.time()!=QTime(0,0,0,0)) { /*373:*/ #line 8507 "./typica.w" if(lastMeasurement.contains(tempcolumn)) { if(lastMeasurement[tempcolumn].time() timelist; for(QTime i= lastMeasurement.value(tempcolumn).time().addSecs(1);inewMeasurement(measure,tempcolumn); if(lastMeasurement.contains(tempcolumn)) { if(measure.time().second()!= lastMeasurement.value(tempcolumn).time().second()) { Measurement adjusted= measure; QTime adjtime(0,measure.time().minute(),measure.time().second(),0); adjusted.setTime(adjtime); model_1s->newMeasurement(adjusted,tempcolumn); if(adjusted.time().second()%5==0) { model_5s->newMeasurement(adjusted,tempcolumn); if(adjusted.time().second()%10==0) { model_10s->newMeasurement(adjusted,tempcolumn); } if(adjusted.time().second()%15==0) { model_15s->newMeasurement(adjusted,tempcolumn); if(adjusted.time().second()%30==0) { model_30s->newMeasurement(adjusted,tempcolumn); if(adjusted.time().second()==0) { model_1m->newMeasurement(adjusted,tempcolumn); } } } } } /*375:*/ #line 8551 "./typica.w" if(currentColumnSet.contains(tempcolumn)) { int replicationcolumn; foreach(replicationcolumn,currentColumnSet) { if(replicationcolumn!=tempcolumn) { if(lastMeasurement.contains(replicationcolumn)) { if(measure.time()> lastMeasurement.value(replicationcolumn).time()) { Measurement synthetic= lastMeasurement.value(replicationcolumn); synthetic.setTime(measure.time()); model_ms->newMeasurement(synthetic,replicationcolumn); if(synthetic.time().second()!=lastMeasurement.value(replicationcolumn).time().second()) { Measurement adjusted= synthetic; adjusted.setTime(QTime(0,synthetic.time().minute(),synthetic.time().second(),0)); model_1s->newMeasurement(adjusted,replicationcolumn); if(adjusted.time().second()%5==0) { model_5s->newMeasurement(adjusted,replicationcolumn); if(adjusted.time().second()%10==0) { model_10s->newMeasurement(adjusted,replicationcolumn); } if(adjusted.time().second()%15==0) { model_15s->newMeasurement(adjusted,replicationcolumn); if(adjusted.time().second()%30==0) { model_30s->newMeasurement(adjusted,replicationcolumn); if(adjusted.time().second()==0) { model_1m->newMeasurement(adjusted,replicationcolumn); } } } } } lastMeasurement[replicationcolumn]= synthetic; } } } } } /*:375*/ #line 8471 "./typica.w" } else { /*372:*/ #line 8483 "./typica.w" MeasurementModel*m; foreach(m,modelSet) { m->newMeasurement(measure,tempcolumn); } /*:372*/ #line 8475 "./typica.w" } lastMeasurement.insert(tempcolumn,measure); } /*:371*//*374:*/ #line 8537 "./typica.w" void ZoomLog::addToCurrentColumnSet(int column) { currentColumnSet.append(column); } void ZoomLog::clearCurrentColumnSet() { currentColumnSet.clear(); } /*:374*//*376:*/ #line 8621 "./typica.w" void ZoomLog::newAnnotation(QString annotation,int tempcolumn, int annotationcolumn) { model_ms->newAnnotation(annotation,tempcolumn,annotationcolumn); MeasurementModel*m; if(lastMeasurement.contains(tempcolumn)) { foreach(m,modelSet) { m->newMeasurement(lastMeasurement.value(tempcolumn),tempcolumn); } } foreach(m,modelSet) { m->newAnnotation(annotation,tempcolumn,annotationcolumn); } } /*:376*//*377:*/ #line 8645 "./typica.w" void ZoomLog::centerOn(int row) { scrollTo(currentModel->index(row,0),QAbstractItemView::PositionAtCenter); } /*:377*//*378:*/ #line 8655 "./typica.w" void ZoomLog::clear() { MeasurementModel*m; foreach(m,modelSet) { m->clear(); } lastMeasurement.clear(); saveTempCols.clear(); saveControlCols.clear(); saveNoteCols.clear(); } /*:378*//*379:*/ #line 8673 "./typica.w" QVariant ZoomLog::data(int row,int column)const { return model_ms->data(model_ms->index(row,column,QModelIndex()), Qt::DisplayRole); } int ZoomLog::rowCount() { return model_ms->rowCount(); } /*:379*//*380:*/ #line 8696 "./typica.w" bool ZoomLog::saveXML(QIODevice*device) { Units::Unit prevUnits= model_ms->displayUnits(); if(prevUnits!=Units::Fahrenheit) { model_ms->setDisplayUnits(Units::Fahrenheit); } XMLOutput writer(model_ms,device,0); int c; foreach(c,saveTempCols) { writer.addTemperatureColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } foreach(c,saveControlCols) { writer.addControlColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } foreach(c,saveNoteCols) { writer.addAnnotationColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } bool retval= writer.output(); if(prevUnits!=Units::Fahrenheit) { model_ms->setDisplayUnits(prevUnits); } return retval; } /*:380*//*381:*/ #line 8732 "./typica.w" bool ZoomLog::saveCSV(QIODevice*device) { CSVOutput writer(currentModel,device,0); int c; foreach(c,saveTempCols) { writer.addTemperatureColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } foreach(c,saveControlCols) { writer.addControlColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } foreach(c,saveNoteCols) { writer.addAnnotationColumn(model_ms->headerData(c,Qt::Horizontal). toString(),c); } return writer.output(); } /*:381*//*382:*/ #line 8761 "./typica.w" void ZoomLog::switchLOD(MeasurementModel*m) { disconnect(currentModel,SIGNAL(rowChanged(int)),this,0); setModel(m); currentModel= m; connect(currentModel,SIGNAL(rowChanged(int)),this,SLOT(centerOn(int))); } void ZoomLog::LOD_ms() { switchLOD(model_ms); } void ZoomLog::LOD_1s() { switchLOD(model_1s); } void ZoomLog::LOD_5s() { switchLOD(model_5s); } void ZoomLog::LOD_10s() { switchLOD(model_10s); } void ZoomLog::LOD_15s() { switchLOD(model_15s); } void ZoomLog::LOD_30s() { switchLOD(model_30s); } void ZoomLog::LOD_1m() { switchLOD(model_1m); } /*:382*//*383:*/ #line 8809 "./typica.w" void ZoomLog::setDisplayUnits(Units::Unit scale) { model_ms->setDisplayUnits(scale); model_1s->setDisplayUnits(scale); model_5s->setDisplayUnits(scale); model_10s->setDisplayUnits(scale); model_15s->setDisplayUnits(scale); model_30s->setDisplayUnits(scale); model_1m->setDisplayUnits(scale); } Units::Unit ZoomLog::displayUnits() { return model_ms->displayUnits(); } /*:383*//*384:*/ #line 8829 "./typica.w" QString ZoomLog::lastTime(int series) { Measurement measure= lastMeasurement.value(series); QTime time= measure.time(); return time.toString("h:mm:ss.zzz"); } /*:384*//*385:*/ #line 8839 "./typica.w" ZoomLog::ZoomLog():QTableView(NULL),model_ms(new MeasurementModel(this)), model_1s(new MeasurementModel(this)),model_5s(new MeasurementModel(this)), model_10s(new MeasurementModel(this)),model_15s(new MeasurementModel(this)), model_30s(new MeasurementModel(this)),model_1m(new MeasurementModel(this)) { setEditTriggers(QAbstractItemView::NoEditTriggers); setSelectionMode(QAbstractItemView::NoSelection); modelSet<setHeaderData(section,Qt::Horizontal,QVariant(text)); } } /*:386*//*387:*/ #line 8880 "./typica.w" void ZoomLog::addOutputTemperatureColumn(int column) { saveTempCols.append(column); } void ZoomLog::addOutputControlColumn(int column) { saveControlCols.append(column); } void ZoomLog::addOutputAnnotationColumn(int column) { saveNoteCols.append(column); } void ZoomLog::clearOutputColumns() { saveTempCols.clear(); saveControlCols.clear(); saveNoteCols.clear(); } /*:387*//*388:*/ #line 8906 "./typica.w" void ZoomLog::persistColumnResize(int column,int,int newsize) { /*602:*/ #line 13011 "./typica.w" QSettings settings; /*603:*/ #line 13024 "./typica.w" QWidget*topLevelWidget= this; while(topLevelWidget->parentWidget()) { topLevelWidget= topLevelWidget->parentWidget(); } /*:603*/ #line 13013 "./typica.w" settings.setValue(QString("columnWidths/%1/%2/%3"). arg(topLevelWidget->objectName()). arg(objectName()).arg(column), QVariant(newsize)); /*:602*/ #line 8909 "./typica.w" } void ZoomLog::restoreColumnWidths() { /*605:*/ #line 13044 "./typica.w" QSettings settings; /*603:*/ #line 13024 "./typica.w" QWidget*topLevelWidget= this; while(topLevelWidget->parentWidget()) { topLevelWidget= topLevelWidget->parentWidget(); } /*:603*/ #line 13046 "./typica.w" QString baseKey= QString("columnWidths/%1/%2").arg(topLevelWidget->objectName()). arg(objectName()); for(int i= 0;icolumnCount();i++) { QString key= QString("%1/%2").arg(baseKey).arg(i); if(settings.contains(key)) { setColumnWidth(i,settings.value(key).toInt()); } } /*:605*/ #line 8914 "./typica.w" } void ZoomLog::setVisible(bool visibility) { QTableView::setVisible(visibility); } void ZoomLog::showEvent(QShowEvent*) { /*605:*/ #line 13044 "./typica.w" QSettings settings; /*603:*/ #line 13024 "./typica.w" QWidget*topLevelWidget= this; while(topLevelWidget->parentWidget()) { topLevelWidget= topLevelWidget->parentWidget(); } /*:603*/ #line 13046 "./typica.w" QString baseKey= QString("columnWidths/%1/%2").arg(topLevelWidget->objectName()). arg(objectName()); for(int i= 0;icolumnCount();i++) { QString key= QString("%1/%2").arg(baseKey).arg(i); if(settings.contains(key)) { setColumnWidth(i,settings.value(key).toInt()); } } /*:605*/ #line 8924 "./typica.w" } /*:388*/ #line 549 "./typica.w" /*397:*/ #line 9157 "./typica.w" bool MeasurementList::operator<(const MeasurementList&other)const { return this->first().toTime()first().toTime()==other.first().toTime(); } /*:397*//*398:*/ #line 9173 "./typica.w" QModelIndex MeasurementModel::parent(const QModelIndex&)const { return QModelIndex(); } /*:398*//*399:*/ #line 9183 "./typica.w" void MeasurementModel::newMeasurement(Measurement measure,int tempcolumn) { if(measure.scale()==Units::Unitless) { controlColumns->insert(tempcolumn,true); } else { controlColumns->insert(tempcolumn,false); } MeasurementList*temp; temp= new MeasurementList; temp->append(QVariant(measure.time())); /*400:*/ #line 9242 "./typica.w" /*401:*/ #line 9287 "./typica.w" QList ::iterator i= lastInsertion; bool quickscan= false; if(entries->size()> 5) { if(**i<*temp) { i+= 1; for(int j= 10;j> 0;j--) { if(i!=entries->end()) { if(**i<*temp) { i+= 1; } else { quickscan= true; break; } } else { quickscan= true; break; } } } else { if(**i==*temp) { quickscan= true; } } } /*:401*/ #line 9243 "./typica.w" if(quickscan==false) { i= entries->begin(); QList ::iterator u= entries->end(); QList ::iterator midpoint; int n= u-i; int rA; while(n> 0) { rA= n>>1; midpoint= i+rA; if(**midpoint<*temp) { i= midpoint+1; n-= rA+1; } else { n= rA; } } } /*:400*/ #line 9197 "./typica.w" MeasurementList*newEntry; int insertion; if(i!=entries->end()) { insertion= entries->indexOf(*i); if((*i)->first().toTime()==measure.time()) { /*402:*/ #line 9329 "./typica.w" if((*i)->size()size()-1;jappend(QVariant()); } } (*i)->replace(tempcolumn,measure); lastInsertion= i; emit dataChanged(createIndex(insertion,tempcolumn), createIndex(insertion,tempcolumn)); lastTemperature->insert(tempcolumn,insertion); /*:402*/ #line 9205 "./typica.w" } else { /*403:*/ #line 9347 "./typica.w" beginInsertRows(QModelIndex(),insertion,insertion); newEntry= new MeasurementList; newEntry->append(QVariant(measure.time())); for(int j= 0;jappend(QVariant()); } newEntry->replace(tempcolumn,measure); lastInsertion= entries->insert(i,newEntry); endInsertRows(); lastTemperature->insert(tempcolumn,insertion); /*:403*/ #line 9209 "./typica.w" } } else { /*404:*/ #line 9365 "./typica.w" insertion= entries->size(); /*403:*/ #line 9347 "./typica.w" beginInsertRows(QModelIndex(),insertion,insertion); newEntry= new MeasurementList; newEntry->append(QVariant(measure.time())); for(int j= 0;jappend(QVariant()); } newEntry->replace(tempcolumn,measure); lastInsertion= entries->insert(i,newEntry); endInsertRows(); lastTemperature->insert(tempcolumn,insertion); /*:403*/ #line 9367 "./typica.w" /*:404*/ #line 9214 "./typica.w" } if(tempcolumn>=colcount) { colcount= tempcolumn+1; } emit rowChanged(insertion); delete temp; } /*:399*//*405:*/ #line 9377 "./typica.w" void MeasurementModel::newAnnotation(QString annotation,int tempcolumn, int annotationColumn) { int r; if(lastTemperature->contains(tempcolumn)) { r= lastTemperature->value(tempcolumn); } else { r= 0; } if(r==0&&entries->size()==0) { /*406:*/ #line 9415 "./typica.w" beginInsertRows(QModelIndex(),0,0); MeasurementList*newEntry= new MeasurementList; newEntry->append(QVariant(QTime(0,0,0,0))); entries->append(newEntry); endInsertRows(); /*:406*/ #line 9392 "./typica.w" } MeasurementList*row= entries->at(r); if(row->size()<=annotationColumn) { for(int i= row->size()-1;iappend(QVariant()); } } row->replace(annotationColumn,annotation); emit dataChanged(createIndex(r,annotationColumn), createIndex(r,annotationColumn)); emit rowChanged(r); if(annotationColumn> colcount-1) { colcount= annotationColumn+1; } } /*:405*//*407:*/ #line 9426 "./typica.w" void MeasurementModel::clear() { beginRemoveRows(QModelIndex(),0,entries->size()); while(entries->size()!=0) { MeasurementList*row= entries->takeFirst(); delete row; } endRemoveRows(); colcount= hData->size(); lastTemperature->clear(); reset(); } /*:407*//*408:*/ #line 9459 "./typica.w" bool MeasurementModel::setData(const QModelIndex&index, const QVariant&value,int role) { if(role!=Qt::EditRole&&role!=Qt::DisplayRole) { return false; } /*409:*/ #line 9491 "./typica.w" bool valid= false; if(index.isValid()) { if(index.row()size()) { if(index.column()at(index.row()); if(index.column()>=row->size()) { /*410:*/ #line 9508 "./typica.w" for(int i= row->size()-1;iappend(QVariant()); } /*:410*/ #line 9475 "./typica.w" } if(index.column()==0) { /*411:*/ #line 9523 "./typica.w" QTime time; if(!(time= QTime::fromString(value.toString(),"m:s.z")).isValid()) { if(!(time= QTime::fromString(value.toString(),"m:s")).isValid()) { return false; } } row= entries->takeAt(index.row()); row->replace(index.column(),QVariant(time)); MeasurementList*temp= row; /*400:*/ #line 9242 "./typica.w" /*401:*/ #line 9287 "./typica.w" QList ::iterator i= lastInsertion; bool quickscan= false; if(entries->size()> 5) { if(**i<*temp) { i+= 1; for(int j= 10;j> 0;j--) { if(i!=entries->end()) { if(**i<*temp) { i+= 1; } else { quickscan= true; break; } } else { quickscan= true; break; } } } else { if(**i==*temp) { quickscan= true; } } } /*:401*/ #line 9243 "./typica.w" if(quickscan==false) { i= entries->begin(); QList ::iterator u= entries->end(); QList ::iterator midpoint; int n= u-i; int rA; while(n> 0) { rA= n>>1; midpoint= i+rA; if(**midpoint<*temp) { i= midpoint+1; n-= rA+1; } else { n= rA; } } } /*:400*/ #line 9535 "./typica.w" entries->insert(i,row); int newRow= entries->indexOf(*i); if(newRowreplace(index.column(),value); emit dataChanged(index,index); /*:412*/ #line 9483 "./typica.w" } return true; } /*:408*//*413:*/ #line 9557 "./typica.w" MeasurementModel::MeasurementModel(QObject*parent):QAbstractItemModel(parent), unit(Units::Fahrenheit),hData(new QStringList), lastTemperature(new QHash ), controlColumns(new QHash ) { colcount= 1; entries= new QList ; lastInsertion= entries->begin(); hData->append(tr("Time")); } /*:413*//*414:*/ #line 9571 "./typica.w" MeasurementModel::~MeasurementModel() { clear(); delete entries; delete hData; } /*:414*//*415:*/ #line 9583 "./typica.w" int MeasurementModel::rowCount(const QModelIndex&parent)const { if(parent==QModelIndex()) { return entries->size(); } return 0; } int MeasurementModel::columnCount(const QModelIndex&parent)const { if(parent==QModelIndex()) { return colcount; } return 0; } /*:415*//*416:*/ #line 9610 "./typica.w" bool MeasurementModel::setHeaderData(int section,Qt::Orientation orientation, const QVariant&value,int) { if(orientation==Qt::Horizontal) { if(hData->size()size();iappend(QString()); if(colcountreplace(section,value.toString()); emit headerDataChanged(orientation,section,section); if(colcountsize()) { if(index.column()at(index.row()); if(role==Qt::UserRole) { return QVariant(row->at(index.column())); } if(role==Qt::DisplayRole||role==Qt::EditRole) { if(index.column()> row->size()) { return QVariant(); } else { if(index.column()==0) { return QVariant(row->at(0).toTime().toString("mm:ss.zzz")); } else if(lastTemperature->contains(index.column())) { QVariantMap v= row->at(index.column()).toMap(); if(!v.contains("measurement")) { return QVariant(); } if((Units::Unit)(v.value("unit").toInt())==Units::Unitless) { return v.value("measurement"); } else { if(v.contains("relative")) { if(v.value("relative").toBool()) { return QVariant(QString("%1").arg(Units::convertRelativeTemperature(v.value("measurement"). toDouble(),(Units::Unit)(v.value("unit").toInt()),unit))); } } return QVariant(QString("%1"). arg(Units::convertTemperature(v.value("measurement").toDouble(), (Units::Unit)(v.value("unit").toInt()),unit))); } } return QVariant(row->at(index.column()).toString()); } } return QVariant(); } /*:418*//*419:*/ #line 9735 "./typica.w" QVariant MeasurementModel::headerData(int section,Qt::Orientation orientation, int role)const { if(orientation==Qt::Horizontal) { if(role==Qt::DisplayRole) { if(sectionsize()) { return QVariant(hData->at(section)); } } } return QVariant(); } /*:419*//*420:*/ #line 9762 "./typica.w" Qt::ItemFlags MeasurementModel::flags(const QModelIndex&index)const { /*409:*/ #line 9491 "./typica.w" bool valid= false; if(index.isValid()) { if(index.row()size()) { if(index.column()size()&&entries->isEmpty()==false) { if(columnat(row)->size()) { return createIndex(row,column); } } } return QModelIndex(); } /*:421*/ #line 550 "./typica.w" /*423:*/ #line 9828 "./typica.w" AnnotationButton::AnnotationButton(const QString&text,QWidget*parent): QPushButton(text,parent),note(""),tc(0),ac(0),count(0) { connect(this,SIGNAL(clicked()),this,SLOT(annotate())); } /*:423*//*424:*/ #line 9843 "./typica.w" void AnnotationButton::annotate() { if(note.contains("%1")) { count++; emit annotation(note.arg(count),tc,ac); } else { emit annotation(note,tc,ac); } } /*:424*//*425:*/ #line 9861 "./typica.w" void AnnotationButton::setTemperatureColumn(int tempcolumn) { tc= tempcolumn; } void AnnotationButton::setAnnotationColumn(int annotationcolumn) { ac= annotationcolumn; } void AnnotationButton::setAnnotation(const QString&annotation) { note= annotation; } /*:425*//*426:*/ #line 9880 "./typica.w" void AnnotationButton::resetCount() { count= 0; } /*:426*/ #line 551 "./typica.w" /*431:*/ #line 9963 "./typica.w" AnnotationSpinBox::AnnotationSpinBox(const QString&pret, const QString&postt, QWidget*parent) :QDoubleSpinBox(parent),pretext(pret),posttext(postt) { resetChange(); connect(this,SIGNAL(editingFinished()),this,SLOT(annotate())); connect(this,SIGNAL(valueChanged(double)),this,SLOT(resetChange())); } /*:431*//*432:*/ #line 9980 "./typica.w" void AnnotationSpinBox::resetChange() { change= true; } /*:432*//*433:*/ #line 9991 "./typica.w" void AnnotationSpinBox::annotate() { if(change) { change= false; emit annotation(QString("%1%2%3").arg(pretext). arg(value()).arg(posttext),tc,ac); } } /*:433*//*434:*/ #line 10004 "./typica.w" void AnnotationSpinBox::setTemperatureColumn(int tempcolumn) { tc= tempcolumn; } void AnnotationSpinBox::setAnnotationColumn(int annotationcolumn) { ac= annotationcolumn; } void AnnotationSpinBox::setPretext(const QString&pret) { pretext= pret; } void AnnotationSpinBox::setPosttext(const QString&postt) { posttext= postt; } /*:434*/ #line 552 "./typica.w" /*441:*/ #line 10172 "./typica.w" TimerDisplay::TimerDisplay(QWidget*parent):QLCDNumber(8,parent), s(QTime(0,0,0)),r(QTime(0,0,0)),clock(NULL),m(TimerDisplay::CountUp), running(false),ar(false),startAction(new QAction(tr("Start"),NULL)), stopAction(new QAction(tr("Stop"),NULL)), resetAction(new QAction(tr("Reset"),NULL)),f(QString("hh:mm:ss")), relative(QTime::currentTime()),base(QTime(0,0,0)) { connect(startAction,SIGNAL(triggered(bool)),this,SLOT(startTimer())); connect(stopAction,SIGNAL(triggered(bool)),this,SLOT(stopTimer())); connect(resetAction,SIGNAL(triggered(bool)),this,SLOT(reset())); clock.setInterval(500); clock.setSingleShot(false); connect(&clock,SIGNAL(timeout()),this,SLOT(updateTime())); setSegmentStyle(Filled); updateDisplay(); } /*:441*//*442:*/ #line 10193 "./typica.w" void TimerDisplay::updateTime() { QTime time; int cseconds= 0; int oseconds= 0; int r= 0; QTime nt= QTime(0,0,0); int n= 0; int bseconds= 0; switch(m) { case TimerDisplay::CountUp: /*443:*/ #line 10225 "./typica.w" /*444:*/ #line 10238 "./typica.w" #define TIMETOINT(t) ((t.hour() * 60 * 60) + (t.minute() * 60) + (t.second())) time= QTime::currentTime(); cseconds= TIMETOINT(time); oseconds= TIMETOINT(relative); r= cseconds-oseconds; /*:444*/ #line 10226 "./typica.w" nt= nt.addSecs(r); if(nt!=s) { s= nt; emit valueChanged(s); } /*:443*/ #line 10206 "./typica.w" ; break; case TimerDisplay::CountDown: /*445:*/ #line 10250 "./typica.w" if(s> QTime(0,0,0)) { /*444:*/ #line 10238 "./typica.w" #define TIMETOINT(t) ((t.hour() * 60 * 60) + (t.minute() * 60) + (t.second())) time= QTime::currentTime(); cseconds= TIMETOINT(time); oseconds= TIMETOINT(relative); r= cseconds-oseconds; /*:444*/ #line 10253 "./typica.w" bseconds= TIMETOINT(base); n= bseconds-r; nt= nt.addSecs(n); if(nt!=s) { s= nt; emit valueChanged(s); } } /*:445*/ #line 10209 "./typica.w" ; break; case TimerDisplay::Clock: /*446:*/ #line 10267 "./typica.w" time= QTime::currentTime(); if(time!=s) { s= time; emit valueChanged(s); } /*:446*/ #line 10212 "./typica.w" ; break; default: Q_ASSERT_X(false,"updateTime","invalid timer mode"); break; } updateDisplay(); } /*:442*//*447:*/ #line 10279 "./typica.w" #define TIMESUBTRACT(t1, t2) (t1.addSecs(-(TIMETOINT(t2))).addSecs(-t2.msec())) void TimerDisplay::startTimer() { if(!running) { relative= QTime::currentTime(); if(ar) { reset(); } else { relative= TIMESUBTRACT(relative,s); } if(m==Clock) { updateTime(); } base= s; clock.start(); running= true; emit runStateChanged(true); } } /*:447*//*448:*/ #line 10309 "./typica.w" void TimerDisplay::stopTimer() { if(running) { clock.stop(); running= false; emit runStateChanged(false); } } /*:448*//*449:*/ #line 10322 "./typica.w" TimerDisplay::~TimerDisplay() { clock.stop(); } /*:449*//*450:*/ #line 10331 "./typica.w" void TimerDisplay::setCountUpMode() { m= TimerDisplay::CountUp; } void TimerDisplay::setCountDownMode() { m= TimerDisplay::CountDown; } void TimerDisplay::setClockMode() { m= TimerDisplay::Clock; } /*:450*//*451:*/ #line 10349 "./typica.w" QString TimerDisplay::value() { return s.toString(f); } QTime TimerDisplay::seconds() { return s; } TimerDisplay::TimerMode TimerDisplay::mode() { return m; } bool TimerDisplay::isRunning() { return running; } QTime TimerDisplay::resetValue() { return r; } QString TimerDisplay::displayFormat() { return f; } bool TimerDisplay::autoReset() { return ar; } /*:451*//*452:*/ #line 10387 "./typica.w" void TimerDisplay::setTimer(QTime value) { if(value.isValid()) { s= value; updateDisplay(); emit valueChanged(value); } } void TimerDisplay::setMode(TimerDisplay::TimerMode mode) { m= mode; } void TimerDisplay::setResetValue(QTime value) { r= value; } void TimerDisplay::setDisplayFormat(QString format) { f= format; setNumDigits(format.length()); } void TimerDisplay::setAutoReset(bool reset) { ar= reset; } /*:452*//*453:*/ #line 10422 "./typica.w" void TimerDisplay::copyTimer() { QApplication::clipboard()->setText(value()); } /*:453*//*454:*/ #line 10431 "./typica.w" void TimerDisplay::reset() { if(!running) { s= r; updateDisplay(); } } /*:454*//*455:*/ #line 10444 "./typica.w" void TimerDisplay::updateDisplay() { display(value()); } /*:455*/ #line 553 "./typica.w" /*461:*/ #line 10538 "./typica.w" int PackLayout::doLayout(const QRect&rect,bool testOnly)const { int x= rect.x(); int y= rect.y(); QLayoutItem*item; if(orientation==Qt::Horizontal) { /*462:*/ #line 10562 "./typica.w" foreach(item,itemList) { int nextX= x+item->sizeHint().width()+spacing(); int right= x+item->sizeHint().width(); if(item==itemList.last()) { right= rect.right(); } int bottom= rect.bottom(); if(!testOnly) { item->setGeometry(QRect(QPoint(x,y),QPoint(right,bottom))); } x= nextX; } /*:462*/ #line 10546 "./typica.w" } else { /*463:*/ #line 10581 "./typica.w" foreach(item,itemList) { int nextY= y+item->sizeHint().height()+spacing(); int bottom= y+item->sizeHint().height(); if(item==itemList.last()) { bottom= rect.bottom(); } int right= rect.right(); if(!testOnly) { item->setGeometry(QRect(QPoint(x,y),QPoint(right,bottom))); } y= nextY; } /*:463*/ #line 10550 "./typica.w" } return y; } /*:461*//*464:*/ #line 10605 "./typica.w" QSize PackLayout::minimumSize()const { QSize size; QLayoutItem*item; foreach(item,itemList) { if(orientation==Qt::Horizontal) { size+= QSize(item->minimumSize().width(),0); if(size.height()minimumSize().height()) { size.setHeight(item->minimumSize().height()); } } else { size+= QSize(0,item->minimumSize().height()); if(size.width()minimumSize().width()) { size.setWidth(item->minimumSize().width()); } } } size+= QSize(2*margin(),2*margin()); return size; } /*:464*//*465:*/ #line 10637 "./typica.w" PackLayout::PackLayout(QWidget*parent,int margin,int spacing): QLayout(parent) { setMargin(margin); setSpacing(spacing); setOrientation(Qt::Horizontal); } PackLayout::PackLayout(int spacing) { setSpacing(spacing); setOrientation(Qt::Horizontal); } /*:465*//*466:*/ #line 10655 "./typica.w" PackLayout::~PackLayout() { QLayoutItem*item; while((item= takeAt(0))) { delete item; } } /*:466*//*467:*/ #line 10669 "./typica.w" QLayoutItem*PackLayout::takeAt(int index) { if(index>=0&&index=0&&indexbuttonDownScreenPos(mouseEvent->button())); } /*:474*/ #line 555 "./typica.w" /*476:*/ #line 10844 "./typica.w" WidgetDecorator::WidgetDecorator(QWidget*widget,const QString&labeltext, Qt::Orientations orientation, QWidget*parent,Qt::WindowFlags f): QWidget(parent,f),label(new QGraphicsView()), scene(new SceneButton()) { layout= new PackLayout(this); layout->setOrientation(orientation); /*477:*/ #line 10864 "./typica.w" label->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); label->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); label->setFrameShape(QFrame::NoFrame); label->setInteractive(true); /*:477*/ #line 10853 "./typica.w" /*478:*/ #line 10875 "./typica.w" scene->setBackgroundBrush(Qt::cyan); text= scene->addText(labeltext); if(orientation==Qt::Horizontal) { text->rotate(270.0); } label->setScene(scene); /*:478*/ #line 10854 "./typica.w" /*479:*/ #line 10893 "./typica.w" if(orientation==Qt::Horizontal) { label->setMaximumWidth((int)(text->boundingRect().height()+1)); } else { label->setMaximumHeight((int)(text->boundingRect().height()+1)); } label->centerOn(text); /*:479*/ #line 10855 "./typica.w" /*480:*/ #line 10908 "./typica.w" layout->addWidget(label); layout->addWidget(widget); if(orientation==Qt::Horizontal) { setMinimumSize(widget->sizeHint().width()+label->sizeHint().width(), widget->sizeHint().height()); } else { setMinimumSize(widget->sizeHint().width(), widget->sizeHint().height()+label->sizeHint().height()); } /*:480*/ #line 10856 "./typica.w" } /*:476*//*481:*/ #line 10925 "./typica.w" void WidgetDecorator::setBackgroundBrush(QBrush background) { scene->setBackgroundBrush(background); } void WidgetDecorator::setTextColor(QColor color) { text->setDefaultTextColor(color); } /*:481*//*482:*/ #line 10938 "./typica.w" WidgetDecorator::~WidgetDecorator() { } /*:482*/ #line 556 "./typica.w" /*487:*/ #line 11037 "./typica.w" void LogEditWindow::addTheRows() { QTime s= startTime->time(); while(stime()) { model->newMeasurement(Measurement(0,s),1); s= s.addSecs(interval->value()); } model->newMeasurement(Measurement(0,endTime->time()),1); } /*:487*//*488:*/ #line 11051 "./typica.w" LogEditWindow::LogEditWindow():QMainWindow(NULL), centralWidget(new QWidget(NULL)),mainLayout(new PackLayout(0)), addRowsLayout(new QHBoxLayout(NULL)), startTimeLabel(new QLabel("Start Time")), startTime(new QTimeEdit(QTime(0,0,0,0))), endTimeLabel(new QLabel("End Time")), endTime(new QTimeEdit(QTime(0,20,0,0))), intervalLabel(new QLabel("Interval (seconds)")), interval(new QSpinBox()), addRows(new QPushButton("Add Rows")), saveXml(new QAction(tr("Save Profile As..."),NULL)), saveCsv(new QAction(tr("Export CSV"),NULL)), openXml(new QAction(tr("Load Target Profile..."),NULL)), model(new MeasurementModel()), log(new QTableView()) { /*489:*/ #line 11088 "./typica.w" QSettings settings; resize(settings.value("logSize",QSize(620,400)).toSize()); move(settings.value("logPos",QPoint(200,60)).toPoint()); /*:489*/ #line 11068 "./typica.w" /*490:*/ #line 11101 "./typica.w" mainLayout->setOrientation(Qt::Vertical); addRowsLayout->addSpacing(10); addRowsLayout->addWidget(startTimeLabel); addRowsLayout->addWidget(startTime); addRowsLayout->addSpacing(10); startTime->setDisplayFormat("mm:ss"); addRowsLayout->addWidget(endTimeLabel); addRowsLayout->addWidget(endTime); addRowsLayout->addSpacing(10); endTime->setDisplayFormat("mm:ss"); addRowsLayout->addWidget(intervalLabel); addRowsLayout->addWidget(interval); addRowsLayout->addSpacing(10); interval->setRange(0,60); interval->setValue(30); addRowsLayout->addWidget(addRows); addRowsLayout->addSpacing(10); connect(addRows,SIGNAL(clicked()),this,SLOT(addTheRows())); /*:490*/ #line 11069 "./typica.w" /*491:*/ #line 11124 "./typica.w" model->setHeaderData(0,Qt::Horizontal,"Time"); model->setHeaderData(1,Qt::Horizontal,"Temperature"); model->setHeaderData(2,Qt::Horizontal,"Annotation"); model->clear(); /*:491*/ #line 11070 "./typica.w" /*492:*/ #line 11133 "./typica.w" log->setModel(model); log->setColumnWidth(0,100); log->setColumnWidth(1,100); log->setColumnWidth(2,100); /*:492*/ #line 11071 "./typica.w" mainLayout->addItem(addRowsLayout); mainLayout->addWidget(log); centralWidget->setLayout(mainLayout); setCentralWidget(centralWidget); QMenu*fileMenu= menuBar()->addMenu(tr("&File")); fileMenu->addAction(openXml); connect(openXml,SIGNAL(triggered()),this,SLOT(openXML())); fileMenu->addAction(saveXml); connect(saveXml,SIGNAL(triggered()),this,SLOT(saveXML())); fileMenu->addAction(saveCsv); connect(saveCsv,SIGNAL(triggered()),this,SLOT(saveCSV())); } /*:488*//*493:*/ #line 11144 "./typica.w" void LogEditWindow::saveXML() { QSettings settings; QString lastDir= settings.value("lastDirectory").toString(); QString filename= QFileDialog::getSaveFileName(this,tr("Save Log As..."), lastDir,"",0); QFile file(filename); XMLOutput writer(model,&file,0); writer.addTemperatureColumn("Temperature",1); writer.addAnnotationColumn("Annotation",2); if(writer.output()) { QFileInfo info(filename); QDir directory= info.dir(); lastDir= directory.path(); settings.setValue("lastDirectory",lastDir); } } void LogEditWindow::saveCSV() { QSettings settings; QString lastDir= settings.value("lastDirectory").toString(); QString filename= QFileDialog::getSaveFileName(this,tr("Export As..."), lastDir,"",0); QFile file(filename); CSVOutput writer(model,&file,0); writer.addTemperatureColumn("Temperature",1); writer.addAnnotationColumn("Annotation",2); if(writer.output()) { QFileInfo info(filename); QDir directory= info.dir(); lastDir= directory.path(); settings.setValue("lastDirectory",lastDir); } } /*:493*//*494:*/ #line 11187 "./typica.w" void LogEditWindow::openXML() { QSettings settings; QString lastDir= settings.value("lastDirectory").toString(); QString filename= QFileDialog::getOpenFileName(this,tr("Open XML Log..."), lastDir,"",0); if(filename.isNull()) { return; } QFile file(filename); XMLInput reader(&file,1); connect(&reader,SIGNAL(measure(Measurement,int)), model,SLOT(newMeasurement(Measurement,int))); connect(&reader,SIGNAL(annotation(QString,int,int)), model,SLOT(newAnnotation(QString,int,int))); if(reader.input()) { QFileInfo info(filename); setWindowTitle(QString(tr("%1 - %2")). arg(QCoreApplication::applicationName()).arg(info.baseName())); QDir directory= info.dir(); lastDir= directory.path(); settings.setValue("lastDirectory",lastDir); } } /*:494*//*495:*/ #line 11218 "./typica.w" void LogEditWindow::closeEvent(QCloseEvent*event) { QSettings settings; settings.setValue("logSize",size()); settings.setValue("logPos",pos()); event->accept(); } /*:495*/ #line 557 "./typica.w" /*501:*/ #line 11333 "./typica.w" bool XMLOutput::output() { if(!out->open(QIODevice::WriteOnly|QIODevice::Text)) { return false; } QXmlStreamWriter xmlout(out); xmlout.writeStartDocument("1.0"); xmlout.writeDTD(""); xmlout.writeStartElement("roastlog"); /*502:*/ #line 11366 "./typica.w" foreach(int c,temperatureColumns.keys()) { xmlout.writeStartElement("tempseries"); xmlout.writeAttribute("name",temperatureColumns.value(c)); xmlout.writeEndElement(); } foreach(int c,controlColumns.keys()) { xmlout.writeStartElement("controlseries"); xmlout.writeAttribute("name",controlColumns.value(c)); xmlout.writeEndElement(); } foreach(int c,annotationColumns.keys()) { xmlout.writeStartElement("noteseries"); xmlout.writeAttribute("name",annotationColumns.value(c)); xmlout.writeEndElement(); } /*:502*/ #line 11344 "./typica.w" xmlout.writeStartElement("roast"); bool oresult; for(int i= 0;irowCount();i++) { /*503:*/ #line 11391 "./typica.w" oresult= false; foreach(int c,temperatureColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { oresult= true; break; } } foreach(int c,controlColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { oresult= true; break; } } if(oresult==false) { foreach(int c,annotationColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString(). isEmpty())) { oresult= true; break; } } } /*:503*/ #line 11349 "./typica.w" if(oresult) { /*504:*/ #line 11430 "./typica.w" xmlout.writeStartElement("tuple"); xmlout.writeTextElement("time",data->data(data->index(i,time), Qt::DisplayRole).toString()); foreach(int c,temperatureColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { xmlout.writeStartElement("temperature"); xmlout.writeAttribute("series",temperatureColumns.value(c)); if(data->data(data->index(i,c),Qt::UserRole).toMap().contains("relative")) { if(data->data(data->index(i,c),Qt::UserRole).toMap().value("relative").toBool()) { xmlout.writeAttribute("relative","true"); } } xmlout.writeCharacters(data->data(data->index(i,c),Qt::DisplayRole). toString()); xmlout.writeEndElement(); } } foreach(int c,controlColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { xmlout.writeStartElement("control"); xmlout.writeAttribute("series",controlColumns.value(c)); xmlout.writeCharacters(data->data(data->index(i,c),Qt::DisplayRole).toString()); xmlout.writeEndElement(); } } foreach(int c,annotationColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { xmlout.writeStartElement("annotation"); xmlout.writeAttribute("series",annotationColumns.value(c)); xmlout.writeCharacters(data->data(data->index(i,c),Qt::DisplayRole). toString()); xmlout.writeEndElement(); } } xmlout.writeEndElement(); /*:504*/ #line 11352 "./typica.w" } } xmlout.writeEndElement(); xmlout.writeEndElement(); xmlout.writeEndDocument(); out->close(); return true; } /*:501*//*505:*/ #line 11480 "./typica.w" XMLOutput::XMLOutput(MeasurementModel*model,QIODevice*device,int timec) :QObject(NULL),data(model),out(device),time(timec) { } void XMLOutput::setModel(MeasurementModel*model) { data= model; } void XMLOutput::setTimeColumn(int column) { time= column; } void XMLOutput::setDevice(QIODevice*device) { out= device; } /*:505*//*506:*/ #line 11509 "./typica.w" void XMLOutput::addTemperatureColumn(const QString&series,int column) { temperatureColumns.insert(column,series); } void XMLOutput::addControlColumn(const QString&series,int column) { controlColumns.insert(column,series); } void XMLOutput::addAnnotationColumn(const QString&series,int column) { annotationColumns.insert(column,series); } /*:506*/ #line 558 "./typica.w" /*508:*/ #line 11566 "./typica.w" bool XMLInput::input() { if(!in->open(QIODevice::ReadOnly|QIODevice::Text)) { return false; } QXmlStreamReader xmlin(in); QMap temperatureColumns; QMap annotationColumns; int nextColumn= firstc; /*509:*/ #line 11597 "./typica.w" while(!xmlin.isDTD()) { xmlin.readNext(); } if(xmlin.isDTD()) { if(xmlin.text()=="") { /*510:*/ #line 11619 "./typica.w" emit newTemperatureColumn(firstc,"Bean"); emit newAnnotationColumn(firstc+1,"Note"); emit lastColumn(firstc+1); /*:510*/ #line 11606 "./typica.w" } else { xmlin.readNext(); /*511:*/ #line 11628 "./typica.w" while(xmlin.name()!="roast") { if(xmlin.isStartElement()) { if((xmlin.name()=="tempseries")||(xmlin.name()=="controlseries")) { temperatureColumns.insert(xmlin.attributes().value("name"). toString(), nextColumn); emit newTemperatureColumn(nextColumn, xmlin.attributes().value("name"). toString()); nextColumn++; } else if(xmlin.name()=="noteseries") { annotationColumns.insert(xmlin.attributes().value("name"). toString(),nextColumn); emit newAnnotationColumn(nextColumn, xmlin.attributes().value("name"). toString()); nextColumn++; } } xmlin.readNext(); } emit lastColumn(nextColumn-1); /*:511*/ #line 11611 "./typica.w" } } /*:509*/ #line 11577 "./typica.w" QTime timeval= QTime(); double tempval= 0; QString noteval= QString(); int column; int counter= 0; while(!xmlin.atEnd()) { /*512:*/ #line 11669 "./typica.w" xmlin.readNext(); if(xmlin.isStartElement()) { /*513:*/ #line 11695 "./typica.w" if(xmlin.name()=="time") { timeval= QTime::fromString(xmlin.readElementText(),"mm:ss.zzz"); } else if(xmlin.name()=="temperature") { column= xmlin.attributes().value("series").toString().isEmpty()? firstc:temperatureColumns.value(xmlin.attributes(). value("series").toString()); bool relative= (xmlin.attributes().value("relative")=="true"); tempval= xmlin.readElementText().toDouble(); Measurement measurement(tempval,timeval); if(relative) { measurement.insert("relative",true); } emit measure(measurement,column); } else if(xmlin.name()=="control") { column= xmlin.attributes().value("series").toString().isEmpty()? firstc:temperatureColumns.value(xmlin.attributes(). value("series").toString()); tempval= xmlin.readElementText().toDouble(); Measurement measurement(tempval,timeval,Units::Unitless); emit measure(measurement,column); } else if(xmlin.name()=="annotation") { column= xmlin.attributes().value("series").toString().isEmpty()? firstc+1:annotationColumns.value(xmlin.attributes(). value("series").toString()); noteval= xmlin.readElementText(); if(!noteval.isEmpty()) { emit annotation(noteval,firstc,column); } } /*:513*/ #line 11673 "./typica.w" } counter++; if(counter%100==0) { QCoreApplication::processEvents(); } /*:512*/ #line 11585 "./typica.w" } return true; } /*:508*//*514:*/ #line 11737 "./typica.w" XMLInput::XMLInput(QIODevice*input,int c): firstc(c),in(input) { } void XMLInput::setFirstColumn(int column) { firstc= column; } void XMLInput::setDevice(QIODevice*device) { in= device; } /*:514*/ #line 559 "./typica.w" /*519:*/ #line 11828 "./typica.w" bool CSVOutput::output() { if(!out->open(QIODevice::WriteOnly|QIODevice::Text)) { return false; } QTextStream output(out); /*520:*/ #line 11852 "./typica.w" output<<"Time"; foreach(int c,temperatureColumns.keys()) { output<<','<rowCount();i++) { /*503:*/ #line 11391 "./typica.w" oresult= false; foreach(int c,temperatureColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { oresult= true; break; } } foreach(int c,controlColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString().isEmpty())) { oresult= true; break; } } if(oresult==false) { foreach(int c,annotationColumns.keys()) { if(data->data(data->index(i,c),Qt::DisplayRole).isValid()&& !(data->data(data->index(i,c),Qt::DisplayRole).toString(). isEmpty())) { oresult= true; break; } } } /*:503*/ #line 11840 "./typica.w" if(oresult) { /*521:*/ #line 11877 "./typica.w" output<data(data->index(i,time),Qt::DisplayRole).toString(); foreach(int c,temperatureColumns.keys()) { output<<','<data(data->index(i,c),Qt::DisplayRole).toString(); } foreach(int c,controlColumns.keys()) { output<<','<data(data->index(i,c),Qt::DisplayRole).toString(); } foreach(int c,annotationColumns.keys()) { output<<','<data(data->index(i,c),Qt::DisplayRole).toString(); } output<<'\n'; /*:521*/ #line 11843 "./typica.w" } } out->close(); return true; } /*:519*//*522:*/ #line 11896 "./typica.w" CSVOutput::CSVOutput(MeasurementModel*model,QIODevice*device,int timec): data(model),out(device),time(timec) { } void CSVOutput::setModel(MeasurementModel*model) { data= model; } void CSVOutput::setTimeColumn(int column) { time= column; } void CSVOutput::addTemperatureColumn(const QString&series,int column) { temperatureColumns.insert(column,series); } void CSVOutput::addControlColumn(const QString&series,int column) { controlColumns.insert(column,series); } void CSVOutput::addAnnotationColumn(const QString&series,int column) { annotationColumns.insert(column,series); } void CSVOutput::setDevice(QIODevice*device) { out= device; } #line 1 "./webview.w" /*:522*/ #line 560 "./typica.w" /*557:*/ #line 12157 "./typica.w" QString SaltModel::arrayLiteral(int column,int role)const { QString literal= "'{"; for(int i= 0;i 2) { literal.chop(2); } literal.append("}'"); return literal; } QString SaltModel::quotedArrayLiteral(int column,int role)const { QString literal= "'{"; for(int i= 0;i 2) { literal.chop(2); } literal.append("}'"); return literal; } /*:557*//*558:*/ #line 12201 "./typica.w" QModelIndex SaltModel::parent(const QModelIndex&)const { return QModelIndex(); } /*:558*//*559:*/ #line 12220 "./typica.w" bool SaltModel::setData(const QModelIndex&index,const QVariant&value, int role) { /*560:*/ #line 12251 "./typica.w" bool valid= false; if(index.isValid()) { if(index.row() > newRow; QMap defaults; for(int i= 0;i > row= modelData.at(index.row()); QMap cell= row.at(index.column()); cell.insert(role,value); if(role==Qt::EditRole) { cell.insert(Qt::DisplayRole,value); } row.replace(index.column(),cell); modelData.replace(index.row(),row); emit dataChanged(index,index); return true; } /*:559*//*562:*/ #line 12278 "./typica.w" SaltModel::SaltModel(int columns):QAbstractItemModel(),colcount(columns) { for(int i= 0;i > newRow; QMap defaults; for(int i= 0;i > row= modelData.at(index.row()); QMap cell= row.at(index.column()); return cell.value(role,QVariant()); } QVariant SaltModel::headerData(int section,Qt::Orientation orientation, int role)const { if(orientation==Qt::Horizontal&&role==Qt::DisplayRole&& section > newRow; QMap defaults; for(int i= 0;i=0&&count> 0&&(row+count-1) > newRow; QMap defaults; for(int i= 0;i column) { if(modelData.at(i).at(column).contains(role)) { if(modelData.at(i).at(column).value(role)==value) { return i; } } } } return-1; } /*:571*/ #line 561 "./typica.w" /*573:*/ #line 12496 "./typica.w" SqlComboBox*SqlComboBox::clone(QWidget*parent) { SqlComboBox*widget= new SqlComboBox(); widget->setParent(parent); for(int i= 0;iaddItem(itemText(i),itemData(i)); } return widget; } /*:573*//*574:*/ #line 12513 "./typica.w" void SqlComboBox::showData(bool show) { dataColumnShown= show; } /*:574*//*575:*/ #line 12527 "./typica.w" void SqlComboBox::addNullOption() { addItem(specialNullText,specialNullData); } void SqlComboBox::setNullText(QString nullText) { specialNullText= nullText; } void SqlComboBox::setNullData(QVariant nullData) { specialNullData= nullData; } /*:575*//*576:*/ #line 12550 "./typica.w" void SqlComboBox::setDataColumn(int column) { dataColumn= column; } void SqlComboBox::setDisplayColumn(int column) { displayColumn= column; } /*:576*//*577:*/ #line 12564 "./typica.w" void SqlComboBox::addSqlOptions(QString query) { SqlQueryConnection h; QSqlQuery*dbquery= h.operator->(); if(!dbquery->exec(query)) { QSqlError error= dbquery->lastError(); qDebug()<lastQuery(); } while(dbquery->next()) { QString displayValue(dbquery->value(displayColumn).toString()); QString dataValue(dbquery->value(dataColumn).toString()); if(dataColumnShown) { displayValue.append(QString(" (%1)").arg(dataValue)); } addItem(displayValue,dataValue); } } /*:577*//*578:*/ #line 12600 "./typica.w" SqlComboBox::SqlComboBox(): dataColumn(0),displayColumn(0),dataColumnShown(false), specialNullText(tr("Unknown")),specialNullData(QVariant::String) { view()->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); } SqlComboBox::~SqlComboBox() { } /*:578*/ #line 562 "./typica.w" /*580:*/ #line 12639 "./typica.w" void SqlComboBoxDelegate::setWidget(SqlComboBox*widget) { delegate= widget; } /*:580*//*581:*/ #line 12648 "./typica.w" QWidget*SqlComboBoxDelegate::createEditor(QWidget*parent, const QStyleOptionViewItem&, const QModelIndex&)const { return delegate->clone(parent); } /*:581*//*582:*/ #line 12659 "./typica.w" void SqlComboBoxDelegate::setEditorData(QWidget*editor, const QModelIndex&index)const { SqlComboBox*self= qobject_cast (editor); self->setCurrentIndex(self->findData( index.model()->data(index, Qt::UserRole).toString())); } /*:582*//*583:*/ #line 12672 "./typica.w" void SqlComboBoxDelegate::setModelData(QWidget*editor, QAbstractItemModel*model, const QModelIndex&index)const { SqlComboBox*self= qobject_cast (editor); model->setData(index,self->itemData(self->currentIndex(),Qt::UserRole), Qt::UserRole); model->setData(index,self->currentText(),Qt::DisplayRole); } /*:583*//*584:*/ #line 12685 "./typica.w" void SqlComboBoxDelegate::updateEditorGeometry(QWidget*editor, const QStyleOptionViewItem&option, const QModelIndex&)const { editor->setGeometry(option.rect); } /*:584*//*585:*/ #line 12696 "./typica.w" QSize SqlComboBoxDelegate::sizeHint()const { return delegate->sizeHint(); } /*:585*//*586:*/ #line 12704 "./typica.w" SqlComboBoxDelegate::SqlComboBoxDelegate(QObject*parent) :QItemDelegate(parent) { } /*:586*/ #line 563 "./typica.w" /*549:*/ #line 11966 "./typica.w" Application::Application(int&argc,char**argv):QApplication(argc,argv) { /*550:*/ #line 11981 "./typica.w" setOrganizationName("Wilson's Coffee & Tea"); setOrganizationDomain("wilsonscoffee.com"); setApplicationName(PROGRAM_NAME); /*:550*/ #line 11969 "./typica.w" /*551:*/ #line 11990 "./typica.w" QTranslator base; if(base.load(QString("qt_%1").arg(QLocale::system().name()))) { installTranslator(&base); } QTranslator app; if(app.load(QString("%1_%2").arg("Typica").arg(QLocale::system().name()))) { installTranslator(&app); } /*:551*/ #line 11970 "./typica.w" /*269:*/ #line 123 "./measurement.w" qRegisterMetaType ("Measurement"); /*:269*/ #line 11971 "./typica.w" /*757:*/ #line 15905 "./typica.w" NodeInserter*inserter= new NodeInserter(tr("NI DAQmx Base Device"), tr("NI DAQmx Base"), "nidaqmxbase",NULL); topLevelNodeInserters.append(inserter); /*:757*//*765:*/ #line 16136 "./typica.w" #ifdef Q_OS_WIN32 inserter= new NodeInserter(tr("NI DAQmx Device"),tr("NI DAQmx"),"nidaqmx",NULL); topLevelNodeInserters.append(inserter); #endif /*:765*//*789:*/ #line 17099 "./typica.w" #if 0 inserter= new NodeInserter(tr("Modbus RTU Port"),tr("Modbus RTU Port"),"modbusrtuport",NULL); topLevelNodeInserters.append(inserter); #endif /*:789*//*838:*/ #line 18612 "./typica.w" inserter= new NodeInserter(tr("Modbus RTU Device"),tr("Modbus RTU Device"),"modbusrtu",NULL); topLevelNodeInserters.append(inserter); #line 1 "./unsupportedserial.w" /*:838*//*848:*/ #line 272 "./unsupportedserial.w" inserter= new NodeInserter(tr("Other Device"),tr("Other Device"), "unsupporteddevice",NULL); topLevelNodeInserters.append(inserter); /*:848*//*879:*/ #line 190 "./phidgets.w" QLibrary phidgetsCheck("phidget21"); if(phidgetsCheck.load()) { inserter= new NodeInserter(tr("Phidgets 1048"),tr("Phidgets 1048"), "phidgets1048",NULL); topLevelNodeInserters.append(inserter); phidgetsCheck.unload(); } else { phidgetsCheck.setFileName("Phidget21.framework/phidget21"); if(phidgetsCheck.load()) { inserter= new NodeInserter(tr("Phidgets 1048"),tr("Phidgets 1048"), "phidgets1048",NULL); topLevelNodeInserters.append(inserter); phidgetsCheck.unload(); } } /*:879*//*956:*/ #line 1241 "./dataqsdk.w" #ifdef Q_OS_WIN32 inserter= new NodeInserter(tr("DATAQ SDK Device"),tr("DATAQ Device"), "dataqsdk",NULL); topLevelNodeInserters.append(inserter); #endif #line 18836 "./typica.w" #line 1 "./scales.w" /*:956*//*981:*/ #line 495 "./scales.w" inserter= new NodeInserter(tr("Serial Scale"),tr("Scale"),"scale",NULL); topLevelNodeInserters.append(inserter); #line 18838 "./typica.w" #line 1 "./valueannotation.w" /*:981*/ #line 11972 "./typica.w" } /*:549*//*553:*/ #line 12013 "./typica.w" QDomDocument*Application::configuration() { return&conf; } /*:553*//*554:*/ #line 12022 "./typica.w" QSqlDatabase Application::database() { QString connectionName; QSqlDatabase connection= QSqlDatabase::database(QLatin1String(QSqlDatabase::defaultConnection),false); do { connectionName= QUuid::createUuid().toString(); }while(QSqlDatabase::connectionNames().contains(connectionName)); return QSqlDatabase::cloneDatabase(connection,QString(connectionName)); } /*:554*//*692:*/ #line 14508 "./typica.w" void Application::saveDeviceConfiguration() { QSettings settings; settings.setValue("DeviceConfiguration", QVariant(deviceConfigurationDocument.toByteArray())); } /*:692*//*693:*/ #line 14520 "./typica.w" QDomDocument Application::deviceConfiguration() { if(deviceConfigurationDocument.isNull()) { /*694:*/ #line 14534 "./typica.w" QSettings settings; QByteArray document= settings.value("DeviceConfiguration").toByteArray(); QString etext; int eline; int ecol; if(document.length()==0) { qDebug()<<"Loaded settings length is 0. Creating new configuration."; /*695:*/ #line 14558 "./typica.w" QFile emptyDocument(":/resources/xml/EmptyDeviceConfiguration.xml"); emptyDocument.open(QIODevice::ReadOnly); if(!deviceConfigurationDocument.setContent(&emptyDocument,false, &etext,&eline,&ecol)) { /*696:*/ #line 14575 "./typica.w" qDebug()<referenceElement( model->data(index,Qt::UserRole).toString()); QMetaObject metaObject= deviceConfigurationWidgets.value(referenceElement.attribute("driver"), QWidget::staticMetaObject); QWidget*editor; if(metaObject.className()==QWidget::staticMetaObject.className()) { editor= NULL; } else { editor= qobject_cast ( metaObject.newInstance(Q_ARG(DeviceTreeModel*,model), Q_ARG(QModelIndex,index))); } return editor; } /*:725*/ #line 564 "./typica.w" /*595:*/ #line 12851 "./typica.w" SqlConnectionSetup::SqlConnectionSetup(): formLayout(new QFormLayout),driver(new QComboBox),hostname(new QLineEdit), dbname(new QLineEdit),user(new QLineEdit),password(new QLineEdit), layout(new QVBoxLayout),buttons(new QHBoxLayout), cancelButton(new QPushButton(tr("Cancel"))), connectButton(new QPushButton(tr("Connect"))) { driver->addItem("PostgreSQL","QPSQL"); formLayout->addRow(tr("Database driver:"),driver); formLayout->addRow(tr("Host name:"),hostname); formLayout->addRow(tr("Database name:"),dbname); formLayout->addRow(tr("User name:"),user); password->setEchoMode(QLineEdit::Password); formLayout->addRow(tr("Password:"),password); layout->addLayout(formLayout); buttons->addStretch(1); buttons->addWidget(cancelButton); connect(cancelButton,SIGNAL(clicked(bool)),this,SLOT(reject())); buttons->addWidget(connectButton); layout->addLayout(buttons); connect(connectButton,SIGNAL(clicked(bool)),this,SLOT(testConnection())); setLayout(layout); setModal(true); } SqlConnectionSetup::~SqlConnectionSetup() { } /*:595*//*596:*/ #line 12885 "./typica.w" void SqlConnectionSetup::testConnection() { QSqlDatabase database= QSqlDatabase::addDatabase(driver->itemData(driver->currentIndex()). toString()); database.setConnectOptions("application_name=Typica"); database.setHostName(hostname->text()); database.setDatabaseName(dbname->text()); database.setUserName(user->text()); database.setPassword(password->text()); if(database.open()) { QSettings settings; settings.setValue("database/exists","true"); settings.setValue("database/driver", driver->itemData(driver->currentIndex()).toString()); settings.setValue("database/hostname",hostname->text()); settings.setValue("database/dbname",dbname->text()); settings.setValue("database/user",user->text()); settings.setValue("database/password",password->text()); database.close(); accept(); } else { QMessageBox::information(this,tr("Database connection failed"), tr("Failed to connect to database.")); } } /*:596*/ #line 565 "./typica.w" /*600:*/ #line 12987 "./typica.w" SqlQueryView::SqlQueryView(QWidget*parent):QTableView(parent) { setModel(new QSqlQueryModel); connect(this,SIGNAL(doubleClicked(QModelIndex)), this,SLOT(openRow(QModelIndex))); connect(horizontalHeader(),SIGNAL(sectionResized(int,int,int)), this,SLOT(persistColumnResize(int,int,int))); } /*:600*//*601:*/ #line 13002 "./typica.w" void SqlQueryView::persistColumnResize(int column,int,int newsize) { /*602:*/ #line 13011 "./typica.w" QSettings settings; /*603:*/ #line 13024 "./typica.w" QWidget*topLevelWidget= this; while(topLevelWidget->parentWidget()) { topLevelWidget= topLevelWidget->parentWidget(); } /*:603*/ #line 13013 "./typica.w" settings.setValue(QString("columnWidths/%1/%2/%3"). arg(topLevelWidget->objectName()). arg(objectName()).arg(column), QVariant(newsize)); /*:602*/ #line 13005 "./typica.w" } /*:601*//*604:*/ #line 13034 "./typica.w" void SqlQueryView::showEvent(QShowEvent*event) { /*605:*/ #line 13044 "./typica.w" QSettings settings; /*603:*/ #line 13024 "./typica.w" QWidget*topLevelWidget= this; while(topLevelWidget->parentWidget()) { topLevelWidget= topLevelWidget->parentWidget(); } /*:603*/ #line 13046 "./typica.w" QString baseKey= QString("columnWidths/%1/%2").arg(topLevelWidget->objectName()). arg(objectName()); for(int i= 0;icolumnCount();i++) { QString key= QString("%1/%2").arg(baseKey).arg(i); if(settings.contains(key)) { setColumnWidth(i,settings.value(key).toInt()); } } /*:605*/ #line 13037 "./typica.w" event->accept(); } /*:604*//*606:*/ #line 13061 "./typica.w" void SqlQueryView::openRow(const QModelIndex&index) { emit openEntry(((QSqlQueryModel*)model())->record(index.row()).value(0).toString()); emit openEntryRow(index.row()); } /*:606*//*607:*/ #line 13070 "./typica.w" void SqlQueryView::setQuery(const QString&query) { QSqlDatabase database= AppInstance->database(); database.open(); QSqlQuery q(query,database); ((QSqlQueryModel*)model())->setQuery(q); database.close(); } bool SqlQueryView::setHeaderData(int section,Qt::Orientation orientation, const QVariant&value,int role) { return model()->setHeaderData(section,orientation,value,role); } /*:607*//*608:*/ #line 13088 "./typica.w" QVariant SqlQueryView::data(int row,int column,int role) { return model()->data(model()->index(row,column),role); } /*:608*/ #line 566 "./typica.w" /*149:*/ #line 3453 "./typica.w" SqlQueryConnection::SqlQueryConnection(const QString&query) { QSqlDatabase database= AppInstance->database(); database.open(); q= new QSqlQuery(query,database); connection= database.connectionName(); } /*:149*//*150:*/ #line 3466 "./typica.w" SqlQueryConnection::~SqlQueryConnection() { delete q; { QSqlDatabase database= QSqlDatabase::database(connection); database.close(); } QSqlDatabase::removeDatabase(connection); } /*:150*//*151:*/ #line 3480 "./typica.w" QSqlQuery*SqlQueryConnection::operator->()const { return q; } /*:151*/ #line 567 "./typica.w" /*627:*/ #line 13445 "./typica.w" ReportTable::ReportTable(QTextFrame*frame,QDomElement description): area(frame),configuration(description) { refresh(); } ReportTable::~ReportTable() { } /*:627*//*628:*/ #line 13461 "./typica.w" void ReportTable::bind(QString placeholder,QVariant value) { bindings.insert(placeholder,value); } /*:628*//*629:*/ #line 13471 "./typica.w" void ReportTable::refresh() { /*630:*/ #line 13492 "./typica.w" QTextCursor cursor= area->firstCursorPosition(); while(cursorlastCursorPosition()) { cursor.movePosition(QTextCursor::Right,QTextCursor::KeepAnchor); } cursor.removeSelectedText(); /*:630*/ #line 13474 "./typica.w" int rows= 1; int columns= 1; int currentRow= 0; QTextTable*table= cursor.insertTable(rows,columns); /*631:*/ #line 13505 "./typica.w" QTextTableFormat format= table->format(); format.setBorderStyle(QTextFrameFormat::BorderStyle_None); if(configuration.hasAttribute("align")) { if(configuration.attribute("align")=="center") { format.setAlignment(Qt::AlignHCenter); } } table->setFormat(format); /*:631*/ #line 13479 "./typica.w" /*632:*/ #line 13519 "./typica.w" QDomNodeList children= configuration.childNodes(); for(int i= 0;i(); query->prepare(currentElement.text()); foreach(QString key,bindings.uniqueKeys()) { if(currentElement.text().contains(key)) { query->bindValue(key,bindings.value(key)); } } query->exec(); if(!query->next()) { continue; } if(query->record().count()> columns) { table->appendColumns(query->record().count()-columns); } do { table->appendRows(1); rows++; currentRow++; for(int j= 0;jrecord().count();j++) { QTextTableCell cell= table->cellAt(currentRow,j); cursor= cell.firstCursorPosition(); cursor.insertText(query->value(j).toString()); } }while(query->next()); /*:633*/ #line 13531 "./typica.w" } else if(currentElement.tagName()=="row") { /*634:*/ #line 13586 "./typica.w" table->appendRows(1); currentRow++; rows++; QDomNodeList rowChildren= currentElement.childNodes(); int currentColumn= 0; for(int j= 0;jappendColumns(1); columns++; } QTextTableCell cell= table->cellAt(currentRow,currentColumn); cursor= cell.firstCursorPosition(); cursor.insertText(nodeElement.text()); currentColumn++; } } } /*:634*/ #line 13535 "./typica.w" } } } /*:632*/ #line 13480 "./typica.w" if(rows> 1) { table->removeRows(0,1); } } /*:629*/ #line 568 "./typica.w" /*660:*/ #line 13690 "./typica.w" FormArray::FormArray(QDomElement description):configuration(description), maxwidth(-1),maxheight(-1) { setWidget(&itemContainer); itemContainer.setLayout(&itemLayout); } /*:660*//*661:*/ #line 13707 "./typica.w" void FormArray::addElements(int copies) { QStack *widgetStack= new QStack ; QStack *layoutStack= new QStack ; QWidget*widget; for(int i= 0;i -1) { widget->setMaximumWidth(maxwidth); } if(maxheight> -1) { widget->setMaximumHeight(maxheight); } if(configuration.hasChildNodes()) { widgetStack->push(widget); populateWidget(configuration,widgetStack,layoutStack); widgetStack->pop(); widget->setMinimumHeight(widget->sizeHint().height()); itemLayout.addWidget(widget); if(widget->sizeHint().height()> maxheight&&maxheight> -1) { itemContainer.setMinimumHeight(maxheight*elements()+50); } else { itemContainer.setMinimumHeight(itemContainer.sizeHint().height() +widget->sizeHint().height()); } if(maxwidth> -1) { itemContainer.setMinimumWidth(maxwidth+50); } else { itemContainer.setMinimumWidth(widget->sizeHint().width()+50); } } } } /*:661*//*662:*/ #line 13757 "./typica.w" QWidget*FormArray::elementAt(int index) { if(indexwidget(); } else { return NULL; } } /*:662*//*663:*/ #line 13774 "./typica.w" void FormArray::removeAllElements() { while(itemLayout.count()> 0) { QLayoutItem*item; item= itemLayout.itemAt(0); item->widget()->hide(); itemLayout.removeWidget(item->widget()); } itemContainer.setMinimumHeight(0); } /*:663*//*664:*/ #line 13790 "./typica.w" int FormArray::elements() { return itemLayout.count(); } /*:664*//*665:*/ #line 13801 "./typica.w" void FormArray::setMaximumElementWidth(int width) { maxwidth= width; } void FormArray::setMaximumElementHeight(int height) { maxheight= height; } /*:665*/ #line 569 "./typica.w" /*671:*/ #line 13932 "./typica.w" ScaleControl::ScaleControl():QGraphicsView(NULL,NULL),nonScoredValue(-1), scoredValue(-1),initialSet(false),finalSet(false),scaleDown(false) { left<=0&&value<=10) { nonScoredValue= value; if(!initialSet) { scene.addItem(&initialIndicator); } initialSet= true; initialIndicator.setPos(value*10+16,10); emit initialChanged(value); if(!finalSet) { setFinalValue(value); } } } void ScaleControl::setFinalValue(double value) { if(value>=0&&value<=10) { scoredValue= value; if(!finalSet) { scene.addItem(&finalIndicator); } finalSet= true; finalIndicator.setPos(value*10+16,11); emit finalChanged(value); } } /*:673*//*674:*/ #line 14051 "./typica.w" double ScaleControl::initialValue(void) { return nonScoredValue; } double ScaleControl::finalValue(void) { return scoredValue; } /*:674*//*675:*/ #line 14072 "./typica.w" void ScaleControl::mousePressEvent(QMouseEvent*event) { /*676:*/ #line 14084 "./typica.w" if(event->button()!=Qt::LeftButton) { event->ignore(); return; } /*:676*/ #line 14075 "./typica.w" scaleDown= true; event->accept(); } /*:675*//*677:*/ #line 14095 "./typica.w" void ScaleControl::mouseReleaseEvent(QMouseEvent*event) { /*676:*/ #line 14084 "./typica.w" if(event->button()!=Qt::LeftButton) { event->ignore(); return; } /*:676*/ #line 14098 "./typica.w" if(!scaleDown) { event->ignore(); return; } scaleDown= false; QPointF sceneCoordinate= mapToScene(event->x(),event->y()); /*678:*/ #line 14120 "./typica.w" if(sceneCoordinate.x()>=0&&sceneCoordinate.x()<=10) { if(sceneCoordinate.y()>=0&&sceneCoordinate.y()<=10) { if(initialSet) { setInitialValue(nonScoredValue-0.05); } event->accept(); return; } else if(sceneCoordinate.y()>=12&&sceneCoordinate.y()<=22) { if(finalSet) { setFinalValue(scoredValue-0.05); event->accept(); return; } } } /*:678*/ #line 14106 "./typica.w" /*679:*/ #line 14146 "./typica.w" else if(sceneCoordinate.x()>=122&&sceneCoordinate.x()<=132) { if(sceneCoordinate.y()>=0&&sceneCoordinate.y()<=10) { if(initialSet) { setInitialValue(nonScoredValue+0.05); event->accept(); return; } } else if(sceneCoordinate.y()>=12&&sceneCoordinate.y()<=22) { if(finalSet) { setFinalValue(scoredValue+0.05); event->accept(); return; } } } /*:679*/ #line 14107 "./typica.w" /*680:*/ #line 14172 "./typica.w" double relativeX= sceneCoordinate.x()-16; if(initialSet) { if(relativeX>=0&&relativeX<=100) { setFinalValue(relativeX/10.0); event->accept(); return; } } else { if(relativeX>=0&&relativeX<=100) { setInitialValue(relativeX/10.0); event->accept(); return; } } /*:680*/ #line 14108 "./typica.w" event->ignore(); return; } /*:677*/ #line 570 "./typica.w" /*682:*/ #line 14238 "./typica.w" IntensityControl::IntensityControl():QGraphicsView(NULL,NULL),theValue(-1), valueSet(false),scaleDown(false) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); left<=0&&val<=10) { theValue= val; if(!valueSet) { scene.addItem(&indicator); } valueSet= true; indicator.setPos(6,(100-(val*10))+16); emit(valueChanged(val)); } else if(val<1) { setValue(0); } else { setValue(10); } } double IntensityControl::value() { return theValue; } /*:684*//*685:*/ #line 14340 "./typica.w" void IntensityControl::mousePressEvent(QMouseEvent*event) { /*676:*/ #line 14084 "./typica.w" if(event->button()!=Qt::LeftButton) { event->ignore(); return; } /*:676*/ #line 14343 "./typica.w" scaleDown= true; event->accept(); } /*:685*//*686:*/ #line 14354 "./typica.w" void IntensityControl::mouseReleaseEvent(QMouseEvent*event) { /*676:*/ #line 14084 "./typica.w" if(event->button()!=Qt::LeftButton) { event->ignore(); return; } /*:676*/ #line 14357 "./typica.w" if(!scaleDown) { event->ignore(); return; } scaleDown= false; QPointF sceneCoordinate= mapToScene(event->x(),event->y()); if(sceneCoordinate.x()>=0&&sceneCoordinate.x()<=16) { if(sceneCoordinate.y()>=0&&sceneCoordinate.y()<=10) { if(valueSet) { setValue(theValue+0.05); } event->accept(); return; } else if(sceneCoordinate.y()>=122&&sceneCoordinate.y()<=132) { if(valueSet) { setValue(theValue-0.05); } event->accept(); return; } else if(sceneCoordinate.y()>=16&&sceneCoordinate.y()<=116) { setValue(10-((sceneCoordinate.y()-16)/10.0)); event->accept(); return; } } } /*:686*/ #line 571 "./typica.w" /*338:*/ #line 7626 "./typica.w" void ThresholdDetector::newMeasurement(Measurement measure) { if((currentDirection==Ascending&&previousValue=0)||(currentDirection==Descending&& previousValue> threshold&&previousValue>=0)) { if((currentDirection==Ascending&&measure.temperature()>=threshold)|| (currentDirection==Descending&&measure.temperature()<=threshold)) { double offset= measure.time().hour()*60*60; offset+= measure.time().minute()*60; offset+= measure.time().second(); offset+= measure.time().msec()/1000; emit timeForValue(offset); } } previousValue= measure.temperature(); } ThresholdDetector::ThresholdDetector(double value):QObject(NULL), previousValue(-1),threshold(value),currentDirection(Ascending) { } void ThresholdDetector::setThreshold(double value) { threshold= value; } void ThresholdDetector::setEdgeDirection(EdgeDirection direction) { currentDirection= direction; } /*:338*/ #line 572 "./typica.w" /*768:*/ #line 16176 "./typica.w" PortSelector::PortSelector(QWidget*parent):QComboBox(parent), lister(new QextSerialEnumerator) { QList ports= QextSerialEnumerator::getPorts(); QextPortInfo port; foreach(port,ports) { #ifdef Q_OS_WIN32 addItem(port.portName); #else addItem(port.physName); #endif } lister->setUpNotifications(); connect(lister,SIGNAL(deviceDiscovered(QextPortInfo)), this,SLOT(addDevice(QextPortInfo))); setEditable(true); } void PortSelector::addDevice(QextPortInfo port) { addItem(port.portName); } /*:768*/ #line 573 "./typica.w" /*770:*/ #line 16268 "./typica.w" BaudSelector::BaudSelector(QWidget*parent):QComboBox(parent) { QMetaObject meta= BaudSelector::staticMetaObject; QMetaEnum type= meta.enumerator(meta.indexOfEnumerator("BaudRateType")); for(int i= 0;iaddRow(QString(tr("Port:")),port); serialSection->addRow(QString(tr("Baud rate:")),baud); serialSection->addRow(QString(tr("Parity:")),parity); serialSection->addRow(QString(tr("Flow control:")),flow); serialSection->addRow(QString(tr("Stop bits:")),stop); QGroupBox*serialSectionBox= new QGroupBox(tr("Serial Port Configuration")); serialSectionBox->setLayout(serialSection); portAndDeviceLayout->addWidget(serialSectionBox); QFormLayout*deviceSection= new QFormLayout; station->setMinimum(1); station->setMaximum(255); decimalPosition->setMinimum(0); decimalPosition->setMaximum(9); valueF->setMinimum(0); valueF->setMaximum(0xFFFF); valueC->setMinimum(0); valueC->setMaximum(0xFFFF); fixedUnit->addItem(tr("Fahrenheit"),QVariant(QString("F"))); fixedUnit->addItem(tr("Celsius"),QVariant(QString("C"))); deviceSection->addRow(tr("Station:"),station); deviceSection->addRow(tr("Decimal position from device:"),decimalQuery); deviceSection->addRow(tr("Decimal position relative address:"),decimalAddress); deviceSection->addRow(tr("Fixed decimal position:"),decimalPosition); deviceSection->addRow(tr("Measurement unit from device:"),unitQuery); deviceSection->addRow(tr("Current unit relative address:"),unitAddress); deviceSection->addRow(tr("Value for Fahrenheit:"),valueF); deviceSection->addRow(tr("Value for Celsius:"),valueC); deviceSection->addRow(tr("Fixed unit:"),fixedUnit); QGroupBox*deviceSectionBox= new QGroupBox(tr("Device Configuration")); deviceSectionBox->setLayout(deviceSection); portAndDeviceLayout->addWidget(deviceSectionBox); QFormLayout*pVSection= new QFormLayout; pVSection->addRow(tr("Value relative address:"),pVAddress); pVSection->addRow(tr("PV column name:"),pVColumnName); QCheckBox*pVHideBox= new QCheckBox(tr("Hide this channel")); pVSection->addRow(pVHideBox); QGroupBox*processValueBox= new QGroupBox(tr("Process Value")); processValueBox->setLayout(pVSection); seriesLayout->addWidget(processValueBox); QFormLayout*sVSection= new QFormLayout; sVLower->setDecimals(1); sVLower->setMinimum(0.0); sVLower->setMaximum(999.9); sVUpper->setDecimals(1); sVUpper->setMinimum(0.0); sVUpper->setMaximum(999.9); sVSection->addRow(tr("Set value:"),sVEnabled); sVSection->addRow(tr("Read relative address:"),sVReadAddress); sVSection->addRow(tr("SV column name:"),sVColumnName); sVSection->addRow(tr("Limits from device:"),deviceLimit); sVSection->addRow(tr("Lower limit relative address:"),sVLowerAddr); sVSection->addRow(tr("Upper limit relative address:"),sVUpperAddr); sVSection->addRow(tr("Lower limit:"),sVLower); sVSection->addRow(tr("Upper limit:"),sVUpper); sVSection->addRow(tr("Output set value:"),sVWritable); sVSection->addRow(tr("Output relative address:"),sVOutputAddr); QCheckBox*sVHideBox= new QCheckBox(tr("Hide this channel")); sVSection->addRow(sVHideBox); QGroupBox*setValueBox= new QGroupBox(tr("Set Value")); setValueBox->setLayout(sVSection); seriesLayout->addWidget(setValueBox); masterLayout->addLayout(portAndDeviceLayout); masterLayout->addLayout(seriesLayout); form->setLayout(masterLayout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 18243 "./typica.w" for(int i= 0;ifindText(portname); if(idx>=0) { port->setCurrentIndex(idx); } else { port->addItem(portname); } } else if(node.attribute("name")=="baud") { baud->setCurrentIndex(baud->findText(node.attribute("value"))); } else if(node.attribute("name")=="parity") { parity->setCurrentIndex(parity->findData(node.attribute("value"))); } else if(node.attribute("name")=="flow") { flow->setCurrentIndex(flow->findData(node.attribute("value"))); } else if(node.attribute("name")=="stop") { stop->setCurrentIndex(stop->findData(node.attribute("value"))); } else if(node.attribute("name")=="station") { station->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="decimalQuery") { if(node.attribute("value")=="true") { decimalQuery->setChecked(true); } else { decimalQuery->setChecked(false); } } else if(node.attribute("name")=="decimalAddress") { decimalAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="decimalPosition") { decimalPosition->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="unitQuery") { if(node.attribute("value")=="true") { unitQuery->setChecked(true); } else { unitQuery->setChecked(false); } } else if(node.attribute("name")=="unitAddress") { unitAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="valueF") { valueF->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="valueC") { valueC->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="fixedUnit") { fixedUnit->setCurrentIndex(fixedUnit->findText(node.attribute("value"))); } else if(node.attribute("name")=="pVAddress") { pVAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="sVEnabled") { if(node.attribute("value")=="true") { sVEnabled->setChecked(true); } else { sVEnabled->setChecked(false); } } else if(node.attribute("name")=="sVReadAddress") { sVReadAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="deviceLimit") { if(node.attribute("value")=="true") { deviceLimit->setChecked(true); } else { deviceLimit->setChecked(false); } } else if(node.attribute("name")=="sVLowerAddr") { sVLowerAddr->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="sVUpperAddr") { sVUpperAddr->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="sVLower") { sVLower->setValue(node.attribute("value").toDouble()); } else if(node.attribute("name")=="sVUpper") { sVUpper->setValue(node.attribute("value").toDouble()); } else if(node.attribute("name")=="sVWritable") { if(node.attribute("value")=="true") { sVWritable->setChecked(true); } else { sVWritable->setChecked(false); } } else if(node.attribute("name")=="sVOutputAddr") { sVOutputAddr->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="pvcolname") { pVColumnName->setText(node.attribute("value")); } else if(node.attribute("name")=="svcolname") { sVColumnName->setText(node.attribute("value")); } else if(node.attribute("name")=="pvhidden") { pVHideBox->setChecked(node.attribute("value")=="true"); } else if(node.attribute("name")=="svhidden") { sVHideBox->setChecked(node.attribute("value")=="true"); } } updatePort(port->currentText()); updateBaudRate(baud->currentText()); updateParity(parity->itemData(parity->currentIndex()).toString()); updateFlowControl(flow->itemData(flow->currentIndex()).toString()); updateStopBits(stop->itemData(stop->currentIndex()).toString()); updateStation(station->value()); updateFixedDecimal(decimalQuery->isChecked()); updateDecimalAddress(decimalAddress->value()); updateDecimalPosition(decimalPosition->value()); updateFixedUnit(unitQuery->isChecked()); updateUnitAddress(unitAddress->value()); updateValueForF(valueF->value()); updateValueForC(valueC->value()); updateUnit(fixedUnit->currentText()); updatePVAddress(pVAddress->value()); updateSVEnabled(sVEnabled->isChecked()); updateSVReadAddress(sVReadAddress->value()); updateDeviceLimit(deviceLimit->isChecked()); updateSVLowerAddress(sVLowerAddr->value()); updateSVUpperAddress(sVUpperAddr->value()); updateSVLower(sVLower->value()); updateSVUpper(sVUpper->value()); updateSVWritable(sVWritable->isChecked()); updateSVWriteAddress(sVOutputAddr->value()); updatePVColumnName(pVColumnName->text()); updateSVColumnName(sVColumnName->text()); updatePVHidden(pVHideBox->isChecked()); updateSVHidden(sVHideBox->isChecked()); connect(port,SIGNAL(currentIndexChanged(QString)),this,SLOT(updatePort(QString))); connect(port,SIGNAL(editTextChanged(QString)),this,SLOT(updatePort(QString))); connect(baud,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateBaudRate(QString))); connect(parity,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateParity(QString))); connect(flow,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateFlowControl(QString))); connect(stop,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateStopBits(QString))); connect(station,SIGNAL(valueChanged(int)),this,SLOT(updateStation(int))); connect(decimalQuery,SIGNAL(toggled(bool)),this,SLOT(updateFixedDecimal(bool))); connect(decimalAddress,SIGNAL(valueChanged(int)),this,SLOT(updateDecimalAddress(int))); connect(decimalPosition,SIGNAL(valueChanged(int)),this,SLOT(updateDecimalPosition(int))); connect(unitQuery,SIGNAL(toggled(bool)),this,SLOT(updateFixedUnit(bool))); connect(unitAddress,SIGNAL(valueChanged(int)),this,SLOT(updateUnitAddress(int))); connect(valueF,SIGNAL(valueChanged(int)),this,SLOT(updateValueForF(int))); connect(valueC,SIGNAL(valueChanged(int)),this,SLOT(updateValueForC(int))); connect(fixedUnit,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateUnit(QString))); connect(pVAddress,SIGNAL(valueChanged(int)),this,SLOT(updatePVAddress(int))); connect(sVEnabled,SIGNAL(toggled(bool)),this,SLOT(updateSVEnabled(bool))); connect(sVReadAddress,SIGNAL(valueChanged(int)),this,SLOT(updateSVReadAddress(int))); connect(deviceLimit,SIGNAL(toggled(bool)),this,SLOT(updateDeviceLimit(bool))); connect(sVLowerAddr,SIGNAL(valueChanged(int)),this,SLOT(updateSVLowerAddress(int))); connect(sVUpperAddr,SIGNAL(valueChanged(int)),this,SLOT(updateSVUpperAddress(int))); connect(sVLower,SIGNAL(valueChanged(double)),this,SLOT(updateSVLower(double))); connect(sVUpper,SIGNAL(valueChanged(double)),this,SLOT(updateSVUpper(double))); connect(sVWritable,SIGNAL(toggled(bool)),this,SLOT(updateSVWritable(bool))); connect(sVOutputAddr,SIGNAL(valueChanged(int)),this,SLOT(updateSVWriteAddress(int))); connect(pVColumnName,SIGNAL(textEdited(QString)),this,SLOT(updatePVColumnName(QString))); connect(sVColumnName,SIGNAL(textEdited(QString)),this,SLOT(updateSVColumnName(QString))); connect(pVHideBox,SIGNAL(toggled(bool)),this,SLOT(updatePVHidden(bool))); connect(sVHideBox,SIGNAL(toggled(bool)),this,SLOT(updateSVHidden(bool))); layout->addWidget(form); setLayout(layout); } void ModbusConfigurator::updatePort(const QString&newPort) { updateAttribute("port",newPort); } void ModbusConfigurator::updateBaudRate(const QString&newRate) { updateAttribute("baud",newRate); } void ModbusConfigurator::updateParity(const QString&) { updateAttribute("parity",parity->itemData(parity->currentIndex()).toString()); } void ModbusConfigurator::updateFlowControl(const QString&) { updateAttribute("flow",flow->itemData(flow->currentIndex()).toString()); } void ModbusConfigurator::updateStopBits(const QString&) { updateAttribute("stop",stop->itemData(stop->currentIndex()).toString()); } void ModbusConfigurator::updateStation(int station) { updateAttribute("station",QString("%1").arg(station)); } void ModbusConfigurator::updateFixedDecimal(bool fixed) { updateAttribute("decimalQuery",fixed?"true":"false"); } void ModbusConfigurator::updateDecimalAddress(int address) { updateAttribute("decimalAddress",QString("%1").arg(address)); } void ModbusConfigurator::updateDecimalPosition(int position) { updateAttribute("decimalPosition",QString("%1").arg(position)); } void ModbusConfigurator::updateFixedUnit(bool fixed) { updateAttribute("unitQuery",fixed?"true":"false"); } void ModbusConfigurator::updateUnitAddress(int address) { updateAttribute("unitAddress",QString("%1").arg(address)); } void ModbusConfigurator::updateValueForF(int value) { updateAttribute("valueF",QString("%1").arg(value)); } void ModbusConfigurator::updateValueForC(int value) { updateAttribute("valueC",QString("%1").arg(value)); } void ModbusConfigurator::updateUnit(const QString&newUnit) { updateAttribute("fixedUnit",newUnit); } void ModbusConfigurator::updatePVAddress(int address) { updateAttribute("pVAddress",QString("%1").arg(address)); } void ModbusConfigurator::updateSVEnabled(bool enabled) { updateAttribute("sVEnabled",enabled?"true":"false"); } void ModbusConfigurator::updateSVReadAddress(int address) { updateAttribute("sVReadAddress",QString("%1").arg(address)); } void ModbusConfigurator::updateDeviceLimit(bool query) { updateAttribute("deviceLimit",query?"true":"false"); } void ModbusConfigurator::updateSVLowerAddress(int address) { updateAttribute("sVLowerAddr",QString("%1").arg(address)); } void ModbusConfigurator::updateSVUpperAddress(int address) { updateAttribute("sVUpperAddr",QString("%1").arg(address)); } void ModbusConfigurator::updateSVLower(double value) { updateAttribute("sVLower",QString("%1").arg(value)); } void ModbusConfigurator::updateSVUpper(double value) { updateAttribute("sVUpper",QString("%1").arg(value)); } void ModbusConfigurator::updateSVWritable(bool canWriteSV) { updateAttribute("sVWritable",canWriteSV?"true":"false"); } void ModbusConfigurator::updateSVWriteAddress(int address) { updateAttribute("sVOutputAddr",QString("%1").arg(address)); } void ModbusConfigurator::updatePVColumnName(const QString&name) { updateAttribute("pvcolname",name); } void ModbusConfigurator::updateSVColumnName(const QString&name) { updateAttribute("svcolname",name); } void ModbusConfigurator::updatePVHidden(bool hidden) { updateAttribute("pvhidden",hidden?"true":"false"); } void ModbusConfigurator::updateSVHidden(bool hidden) { updateAttribute("svhidden",hidden?"true":"false"); } /*:836*/ #line 578 "./typica.w" /*779:*/ #line 16420 "./typica.w" ShortHexSpinBox::ShortHexSpinBox(QWidget*parent):QSpinBox(parent) { setMinimum(0); setMaximum(0xFFFF); setPrefix("0x"); setMinimumWidth(65); } QValidator::State ShortHexSpinBox::validate(QString&input,int&)const { if(input.size()==2) { return QValidator::Intermediate; } bool okay; input.toInt(&okay,16); if(okay) { return QValidator::Acceptable; } return QValidator::Invalid; } int ShortHexSpinBox::valueFromText(const QString&text)const { return text.toInt(NULL,16); } QString ShortHexSpinBox::textFromValue(int value)const { QString retval; retval.setNum(value,16); while(retval.size()<4) { retval.prepend("0"); } return retval.toUpper(); } /*:779*/ #line 579 "./typica.w" /*820:*/ #line 17452 "./typica.w" ModbusRTUDevice::ModbusRTUDevice(DeviceTreeModel*model,const QModelIndex&index) :QObject(NULL),messageDelayTimer(new QTimer),commTimeout(new QTimer),unitIsF(true),readingsv(false), waiting(false) { qDebug()<<"Initializing Modbus RTU Device"; QDomElement portReferenceElement= model->referenceElement(model->data(index, Qt::UserRole).toString()); QDomNodeList portConfigData= portReferenceElement.elementsByTagName("attribute"); QDomElement node; QVariantMap attributes; for(int i= 0;isetBaudRate((BaudRateType)baudRate); double temp= ((double)(1)/(double)(baudRate))*48; delayTime= (int)(temp*3000); messageDelayTimer->setSingleShot(true); commTimeout->setSingleShot(true); connect(messageDelayTimer,SIGNAL(timeout()),this,SLOT(sendNextMessage())); connect(commTimeout,SIGNAL(timeout()),this,SLOT(timeout())); port->setDataBits(DATA_8); port->setParity((ParityType)attributes.value("parity").toInt()); port->setStopBits((StopBitsType)attributes.value("stop").toInt()); port->setFlowControl((FlowType)attributes.value("flow").toInt()); connect(port,SIGNAL(readyRead()),this,SLOT(dataAvailable())); port->open(QIODevice::ReadWrite); station= (char)attributes.value("station").toInt(); if(attributes.value("decimalQuery")=="true") { decimalPosition= 0; QByteArray message; message.append(station); message.append((char)0x03); quint16 address= (quint16)attributes.value("decimalAddress").toInt(); char*addressBytes= (char*)&address; message.append(addressBytes[1]); message.append(addressBytes[0]); message.append((char)0x00); message.append((char)0x01); queueMessage(message,this,"decimalResponse(QByteArray)"); } else { decimalPosition= attributes.value("decimalPosition").toInt(); } valueF= attributes.value("valueF").toInt(); valueC= attributes.value("valueC").toInt(); if(attributes.value("unitQuery")=="true") { QByteArray message; message.append(station); message.append((char)0x03); quint16 address= (quint16)attributes.value("unitAddress").toInt(); char*addressBytes= (char*)&address; message.append(addressBytes[1]); message.append(addressBytes[0]); message.append((char)0x00); message.append((char)0x01); queueMessage(message,this,"unitResponse(QByteArray)"); } else { if(attributes.value("fixedUnit")=="Celsius") { unitIsF= false; } } if(attributes.value("sVWritable")=="true") { if(attributes.value("deviceLimit")=="true") { QByteArray lmessage; lmessage.append(station); lmessage.append((char)0x03); quint16 laddress= (quint16)attributes.value("sVLowerAddr").toInt(); char*addressBytes= (char*)&laddress; lmessage.append(addressBytes[1]); lmessage.append(addressBytes[0]); lmessage.append((char)0x00); lmessage.append((char)0x01); queueMessage(lmessage,this,"svlResponse(QByteArray)"); QByteArray umessage; umessage.append(station); umessage.append((char)0x03); quint16 uaddress= (quint16)attributes.value("sVUpperAddr").toInt(); addressBytes= (char*)&uaddress; umessage.append(addressBytes[1]); umessage.append(addressBytes[0]); umessage.append((char)0x00); umessage.append((char)0x01); queueMessage(umessage,this,"svuResponse(QByteArray)"); } else { outputSVLower= attributes.value("sVLower").toDouble(); outputSVUpper= attributes.value("sVUpper").toDouble(); } outputSVStub.append(station); outputSVStub.append((char)0x06); quint16 address= (quint16)attributes.value("sVOutputAddr").toInt(); char*addressBytes= (char*)&address; outputSVStub.append(addressBytes[1]); outputSVStub.append(addressBytes[0]); } Channel*pv= new Channel; channels.append(pv); pvStub.append(station); pvStub.append((char)0x04); pvaddress= (quint16)attributes.value("pVAddress").toInt(); char*pvac= (char*)&pvaddress; pvStub.append(pvac[1]); pvStub.append(pvac[0]); pvStub.append((char)0x00); pvStub.append((char)0x01); svenabled= attributes.value("sVEnabled").toBool(); if(svenabled) { Channel*sv= new Channel; channels.append(sv); svStub.append(station); svStub.append((char)0x04); svaddress= (quint16)attributes.value("sVReadAddress").toInt(); char*svac= (char*)&svaddress; svStub.append(svac[1]); svStub.append(svac[0]); svStub.append((char)0x00); svStub.append((char)0x01); if(svaddress-pvaddress==1) { mStub.append(station); mStub.append((char)0x04); mStub.append(pvac[1]); mStub.append(pvac[0]); mStub.append((char)0x00); mStub.append((char)0x02); } } connect(this,SIGNAL(queueEmpty()),this,SLOT(requestMeasurement())); requestMeasurement(); } double ModbusRTUDevice::SVLower() { return outputSVLower; } double ModbusRTUDevice::SVUpper() { return outputSVUpper; } int ModbusRTUDevice::decimals() { return decimalPosition; } void ModbusRTUDevice::decimalResponse(QByteArray response) { quint16 temp; char*tchar= (char*)&temp; tchar[1]= response.at(3); tchar[0]= response.at(4); decimalPosition= temp; emit SVDecimalChanged(decimalPosition); qDebug()<<"Received decimal response"; } void ModbusRTUDevice::unitResponse(QByteArray response) { quint16 temp; char*tchar= (char*)&temp; tchar[1]= response.at(3); tchar[0]= response.at(4); int value= temp; if(value==valueF) { unitIsF= true; } else { unitIsF= false; } qDebug()<<"Received unit response"; } void ModbusRTUDevice::svlResponse(QByteArray response) { quint16 temp; char*tchar= (char*)&temp; tchar[1]= response.at(3); tchar[0]= response.at(4); outputSVLower= (double)temp; for(int i= 0;i 0) { queueMessage(mStub,this,"mResponse(QByteArray)"); } else { queueMessage(pvStub,this,"mResponse(QByteArray)"); if(svenabled) { queueMessage(svStub,this,"mResponse(QByteArray)"); } } } void ModbusRTUDevice::mResponse(QByteArray response) { QTime time= QTime::currentTime(); if(response.at(2)==0x04) { /*821:*/ #line 17707 "./typica.w" quint16 pv; quint16 sv; char*pvBytes= (char*)&pv; char*svBytes= (char*)&sv; pvBytes[1]= response.at(3); pvBytes[0]= response.at(4); svBytes[1]= response.at(5); svBytes[0]= response.at(6); double pvOut= (double)pv; double svOut= (double)sv; for(int i= 0;iinput(pvm); channels.at(1)->input(svm); /*:821*/ #line 17694 "./typica.w" } else { /*822:*/ #line 17737 "./typica.w" quint16 value; char*valueBytes= (char*)&value; valueBytes[1]= response.at(3); valueBytes[0]= response.at(4); double valueOut= (double)value; for(int i= 0;iinput(vm); } else { if(readingsv) { Measurement pvm(savedpv,time,Units::Fahrenheit); Measurement svm(valueOut,time,Units::Fahrenheit); channels.at(0)->input(pvm); channels.at(1)->input(svm); readingsv= false; } else { savedpv= valueOut; readingsv= true; } } /*:822*/ #line 17698 "./typica.w" } } /*:820*//*823:*/ #line 17775 "./typica.w" ModbusRTUDevice::~ModbusRTUDevice() { commTimeout->stop(); messageDelayTimer->stop(); port->close(); } /*:823*//*824:*/ #line 17802 "./typica.w" void ModbusRTUDevice::dataAvailable() { if(messageDelayTimer->isActive()) { messageDelayTimer->stop(); } responseBuffer.append(port->readAll()); /*825:*/ #line 17848 "./typica.w" if(responseBuffer.size()<5) { return; } switch(responseBuffer.at(1)) { case 0x01: case 0x02: if(responseBuffer.size()<6) { return; } responseBuffer= responseBuffer.left(6); break; case 0x03: case 0x04: if(responseBuffer.size()<5+responseBuffer.at(2)) { return; } responseBuffer= responseBuffer.left(5+responseBuffer.at(2)); break; case 0x05: case 0x06: case 0x10: if(responseBuffer.size()<8) { return; } responseBuffer= responseBuffer.left(8); break; } /*:825*/ #line 17810 "./typica.w" commTimeout->stop(); if(calculateCRC(responseBuffer)==0) { QObject*object= retObjQueue.at(0); char*method= callbackQueue.at(0); QMetaMethod metamethod= object->metaObject()-> method(object->metaObject()-> indexOfMethod(QMetaObject::normalizedSignature(method))); metamethod.invoke(object,Qt::QueuedConnection, Q_ARG(QByteArray,responseBuffer)); messageQueue.removeAt(0); retObjQueue.removeAt(0); callbackQueue.removeAt(0); } else { qDebug()<<"CRC failed"; } messageDelayTimer->start(delayTime); waiting= false; responseBuffer.clear(); } /*:824*//*826:*/ #line 17890 "./typica.w" quint16 ModbusRTUDevice::calculateCRC(QByteArray data) { quint16 retval= 0xFFFF; int i= 0; while(i>1)^0xA001; } else { retval>>= 1; } } i++; } return retval; } /*:826*//*827:*/ #line 17921 "./typica.w" void ModbusRTUDevice::queueMessage(QByteArray request,QObject*object, const char*callback) { messageQueue.append(request); retObjQueue.append(object); callbackQueue.append(const_cast (callback)); if(messageQueue.size()==1&&!(messageDelayTimer->isActive())) { sendNextMessage(); } } void ModbusRTUDevice::sendNextMessage() { if(messageQueue.size()> 0&&!waiting) { QByteArray message= messageQueue.at(0); quint16 crc= calculateCRC(message); char*check= (char*)&crc; message.append(check[0]); message.append(check[1]); port->write(message); commTimeout->start(2000); messageDelayTimer->start(delayTime); waiting= true; } else { emit queueEmpty(); } } void ModbusRTUDevice::outputSV(double value) { for(int i= 0;istart(); } /*:829*/ #line 580 "./typica.w" /*698:*/ #line 14612 "./typica.w" DeviceTreeModelNode::DeviceTreeModelNode(QDomNode&node,int row, DeviceTreeModelNode*parent) :domNode(node),rowNumber(row),parentItem(parent) { } DeviceTreeModelNode::~DeviceTreeModelNode() { QHash ::iterator i; for(i= children.begin();i!=children.end();i++) { delete i.value(); } } DeviceTreeModelNode*DeviceTreeModelNode::parent() { return parentItem; } int DeviceTreeModelNode::row() { return rowNumber; } QDomNode DeviceTreeModelNode::node()const { return domNode; } DeviceTreeModelNode*DeviceTreeModelNode::child(int index) { if(children.contains(index)) { return children[index]; } if(index>=0&&indexdeviceConfiguration(); QDomNodeList elements= document.elementsByTagName("devices"); if(elements.size()!=1) { qDebug()<<"Unexpected result when loading device map."; } treeRoot= elements.at(0); root= new DeviceTreeModelNode(treeRoot,0); elements= document.elementsByTagName("references"); if(elements.size()!=1) { qDebug()<<"No references section. Creating."; referenceSection= document.createElement("references"); document.appendChild(referenceSection); } else { referenceSection= elements.at(0); } connect(this,SIGNAL(dataChanged(QModelIndex,QModelIndex)), AppInstance,SLOT(saveDeviceConfiguration())); connect(this,SIGNAL(modelReset()), AppInstance,SLOT(saveDeviceConfiguration())); connect(this,SIGNAL(rowsInserted(QModelIndex,int,int)), AppInstance,SLOT(saveDeviceConfiguration())); } /*:700*//*701:*/ #line 14736 "./typica.w" int DeviceTreeModel::columnCount(const QModelIndex&)const { return 1; } int DeviceTreeModel::rowCount(const QModelIndex&parent)const { if(parent.column()> 0) { return 0; } /*702:*/ #line 14755 "./typica.w" DeviceTreeModelNode*parentItem; if(!parent.isValid()) { parentItem= root; } else { parentItem= static_cast (parent.internalPointer()); } /*:702*/ #line 14748 "./typica.w" return parentItem->node().childNodes().count(); } /*:701*//*703:*/ #line 14769 "./typica.w" QModelIndex DeviceTreeModel::index(int row,int column, const QModelIndex&parent)const { if(!hasIndex(row,column,parent)) { return QModelIndex(); } /*702:*/ #line 14755 "./typica.w" DeviceTreeModelNode*parentItem; if(!parent.isValid()) { parentItem= root; } else { parentItem= static_cast (parent.internalPointer()); } /*:702*/ #line 14777 "./typica.w" DeviceTreeModelNode*childItem= parentItem->child(row); if(childItem) { return createIndex(row,column,childItem); } return QModelIndex(); } /*:703*//*704:*/ #line 14788 "./typica.w" QModelIndex DeviceTreeModel::parent(const QModelIndex&child)const { if(!child.isValid()) { return QModelIndex(); } DeviceTreeModelNode*childItem= static_cast (child.internalPointer()); DeviceTreeModelNode*parentItem= childItem->parent(); if(!parentItem||parentItem==root) { return QModelIndex(); } return createIndex(parentItem->row(),0,parentItem); } /*:704*//*705:*/ #line 14807 "./typica.w" Qt::ItemFlags DeviceTreeModel::flags(const QModelIndex&index)const { if(!index.isValid()) { return 0; } return Qt::ItemIsEnabled|Qt::ItemIsSelectable|Qt::ItemIsEditable; } /*:705*//*706:*/ #line 14822 "./typica.w" QVariant DeviceTreeModel::data(const QModelIndex&index,int role)const { if(!index.isValid()) { return QVariant(); } if(role!=Qt::DisplayRole&&role!=Qt::UserRole&&role!=Qt::EditRole) { return QVariant(); } DeviceTreeModelNode*item= static_cast (index.internalPointer()); QDomNode node= item->node(); QDomElement element= node.toElement(); switch(role) { case Qt::DisplayRole: case Qt::EditRole: return QVariant(element.attribute("name")); case Qt::UserRole: return QVariant(element.attribute("reference")); default: return QVariant(); } return QVariant(); } /*:706*//*707:*/ #line 14854 "./typica.w" bool DeviceTreeModel::setData(const QModelIndex&index, const QVariant&value,int) { if(!index.isValid()) { return false; } DeviceTreeModelNode*item= static_cast (index.internalPointer()); QDomNode node= item->node(); QDomElement element= node.toElement(); element.setAttribute("name",value.toString()); emit dataChanged(index,index); return true; } /*:707*//*708:*/ #line 14877 "./typica.w" void DeviceTreeModel::newNode(const QString&name,const QString&driver, const QModelIndex&parent) { QString referenceID= QUuid::createUuid().toString(); /*702:*/ #line 14755 "./typica.w" DeviceTreeModelNode*parentItem; if(!parent.isValid()) { parentItem= root; } else { parentItem= static_cast (parent.internalPointer()); } /*:702*/ #line 14882 "./typica.w" QDomNode parentNode= parentItem->node(); int newRowNumber= rowCount(parent); beginInsertRows(parent,newRowNumber,newRowNumber); QDomElement deviceElement= document.createElement("node"); deviceElement.setAttribute("name",name); deviceElement.setAttribute("reference",referenceID); parentNode.appendChild(deviceElement); QDomElement referenceElement= document.createElement("reference"); referenceElement.setAttribute("id",referenceID); referenceElement.setAttribute("driver",driver); referenceSection.appendChild(referenceElement); endInsertRows(); } /*:708*//*709:*/ #line 14900 "./typica.w" bool DeviceTreeModel::removeRows(int row,int count,const QModelIndex&parent) { /*702:*/ #line 14755 "./typica.w" DeviceTreeModelNode*parentItem; if(!parent.isValid()) { parentItem= root; } else { parentItem= static_cast (parent.internalPointer()); } /*:702*/ #line 14903 "./typica.w" QDomNode parentNode= parentItem->node(); QDomNodeList childNodes= parentNode.childNodes(); if(childNodes.size() removalList; for(int i= row;ireferenceElement( deviceModel->data(currentNode,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; bool found= false; for(int i= 0;ideviceConfiguration().createElement("attribute"); node.setAttribute("name",name); node.setAttribute("value",value); referenceElement.appendChild(node); } AppInstance->saveDeviceConfiguration(); } /*:740*//*741:*/ #line 15518 "./typica.w" void BasicDeviceConfigurationWidget::insertChildNode(const QString&name, const QString&driver) { deviceModel->newNode(name,driver,currentNode); } /*:741*/ #line 583 "./typica.w" /*730:*/ #line 15316 "./typica.w" DeviceConfigurationWindow::DeviceConfigurationWindow():QWidget(NULL), view(new QTreeView),configArea(new QScrollArea) { QSplitter*splitter= new QSplitter; QWidget*leftWidget= new QWidget; leftWidget->setMinimumWidth(200); QVBoxLayout*left= new QVBoxLayout; view->setAnimated(true); view->setSelectionMode(QAbstractItemView::SingleSelection); document= AppInstance->deviceConfiguration(); model= new DeviceTreeModel; view->setModel(model); view->setTextElideMode(Qt::ElideNone); view->expandAll(); view->resizeColumnToContents(0); connect(model,SIGNAL(modelReset()),view,SLOT(expandAll())); QHBoxLayout*treeButtons= new QHBoxLayout; QToolButton*addDeviceButton= new QToolButton; addDeviceButton->setIcon(QIcon::fromTheme("list-add")); addDeviceButton->setToolTip(tr("New Roaster")); connect(addDeviceButton,SIGNAL(clicked()), this,SLOT(addDevice())); QToolButton*removeNodeButton= new QToolButton; removeNodeButton->setIcon(QIcon::fromTheme("list-remove")); removeNodeButton->setToolTip(tr("Delete Selection")); connect(removeNodeButton,SIGNAL(clicked()),this,SLOT(removeNode())); treeButtons->addWidget(addDeviceButton); treeButtons->addWidget(removeNodeButton); left->addWidget(view); left->addLayout(treeButtons); leftWidget->setLayout(left); splitter->addWidget(leftWidget); configArea->setMinimumWidth(580); configArea->setMinimumHeight(460); configArea->setWidgetResizable(true); splitter->addWidget(configArea); QVBoxLayout*centralLayout= new QVBoxLayout; centralLayout->addWidget(splitter); setLayout(centralLayout); connect(view,SIGNAL(activated(QModelIndex)), this,SLOT(newSelection(QModelIndex))); connect(view,SIGNAL(clicked(QModelIndex)), this,SLOT(newSelection(QModelIndex))); connect(model,SIGNAL(rowsInserted(QModelIndex,int,int)), view,SLOT(expand(QModelIndex))); connect(model,SIGNAL(rowsInserted(QModelIndex,int,int)), this,SLOT(resizeColumn())); connect(model,SIGNAL(rowsRemoved(QModelIndex,int,int)), this,SLOT(resizeColumn())); } /*:730*//*731:*/ #line 15371 "./typica.w" void DeviceConfigurationWindow::addDevice() { model->newNode(tr("New Roaster"),"roaster",QModelIndex()); } /*:731*//*732:*/ #line 15379 "./typica.w" void DeviceConfigurationWindow::removeNode() { QModelIndex index= view->currentIndex(); if(index.isValid()) { int row= index.row(); QModelIndex parent= index.parent(); model->removeRow(row,parent); } } /*:732*//*733:*/ #line 15395 "./typica.w" void DeviceConfigurationWindow::newSelection(const QModelIndex&index) { QWidget*editor= AppInstance->deviceConfigurationWidget(model,index); if(editor) { configArea->setWidget(editor); editor->show(); } } /*:733*//*734:*/ #line 15412 "./typica.w" void DeviceConfigurationWindow::resizeColumn() { view->resizeColumnToContents(0); } /*:734*/ #line 584 "./typica.w" /*754:*/ #line 15823 "./typica.w" Ni9211TcConfWidget::Ni9211TcConfWidget(DeviceTreeModel*model, const QModelIndex&index): BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*columnName= new QLineEdit; layout->addRow(tr("Column Name:"),columnName); QComboBox*typeSelector= new QComboBox; typeSelector->addItem("J"); typeSelector->addItem("K"); typeSelector->addItem("T"); typeSelector->addItem("B"); typeSelector->addItem("E"); typeSelector->addItem("N"); typeSelector->addItem("R"); typeSelector->addItem("S"); layout->addRow(tr("Thermocouple Type:"),typeSelector); QCheckBox*hideSeries= new QCheckBox("Hide this channel"); layout->addRow(hideSeries); setLayout(layout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 15844 "./typica.w" for(int i= 0;isetCurrentIndex( typeSelector->findText(node.attribute("value"))); } else if(node.attribute("name")=="columnname") { columnName->setText(node.attribute("value")); } else if(node.attribute("name")=="hidden") { hideSeries->setChecked(node.attribute("value")=="true"); } } updateThermocoupleType(typeSelector->currentText()); updateColumnName(columnName->text()); updateHidden(hideSeries->isChecked()); connect(typeSelector,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateThermocoupleType(QString))); connect(columnName,SIGNAL(textEdited(QString)),this,SLOT(updateColumnName(QString))); connect(hideSeries,SIGNAL(toggled(bool)),this,SLOT(updateHidden(bool))); } /*:754*//*755:*/ #line 15874 "./typica.w" void Ni9211TcConfWidget::updateThermocoupleType(const QString&type) { updateAttribute("type",type); } void Ni9211TcConfWidget::updateColumnName(const QString&name) { updateAttribute("columnname",name); } void Ni9211TcConfWidget::updateHidden(bool hidden) { updateAttribute("hidden",hidden?"true":"false"); } /*:755*/ #line 585 "./typica.w" /*750:*/ #line 15737 "./typica.w" NiDaqMxBase9211ConfWidget::NiDaqMxBase9211ConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QVBoxLayout*layout= new QVBoxLayout; QHBoxLayout*deviceIdLayout= new QHBoxLayout; QLabel*label= new QLabel(tr("Device ID:")); QLineEdit*deviceId= new QLineEdit; deviceIdLayout->addWidget(label); deviceIdLayout->addWidget(deviceId); QPushButton*addChannelButton= new QPushButton(tr("Add Channel")); layout->addLayout(deviceIdLayout); layout->addWidget(addChannelButton); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 15751 "./typica.w" for(int i= 0;isetText(node.attribute("value","Dev1")); break; } } updateDeviceId(deviceId->text()); connect(addChannelButton,SIGNAL(clicked()), this,SLOT(addChannel())); connect(deviceId,SIGNAL(textEdited(QString)), this,SLOT(updateDeviceId(QString))); setLayout(layout); } /*:750*//*751:*/ #line 15773 "./typica.w" void NiDaqMxBase9211ConfWidget::updateDeviceId(const QString&newId) { updateAttribute("deviceID",newId); } /*:751*//*752:*/ #line 15781 "./typica.w" void NiDaqMxBase9211ConfWidget::addChannel() { insertChildNode(tr("Thermocouple channel"),"ni9211seriestc"); } /*:752*/ #line 586 "./typica.w" /*748:*/ #line 15688 "./typica.w" NiDaqMxBaseDriverConfWidget::NiDaqMxBaseDriverConfWidget( DeviceTreeModel*model,const QModelIndex&index): BasicDeviceConfigurationWidget(model,index) { QHBoxLayout*layout= new QHBoxLayout; QToolButton*addDeviceButton= new QToolButton; addDeviceButton->setText(tr("Add Device")); NodeInserter*add9211= new NodeInserter("NI USB 9211","NI USB 9211", "nidaqmxbase9211series"); NodeInserter*add9211a= new NodeInserter("NI USB 9211A","NI USB 9211A", "nidaqmxbase9211series"); connect(add9211,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(add9211a,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); QMenu*deviceMenu= new QMenu; deviceMenu->addAction(add9211); deviceMenu->addAction(add9211a); addDeviceButton->setMenu(deviceMenu); addDeviceButton->setPopupMode(QToolButton::InstantPopup); layout->addWidget(addDeviceButton); setLayout(layout); } /*:748*/ #line 587 "./typica.w" /*615:*/ #line 13234 "./typica.w" ReportAction::ReportAction(const QString&fileName,const QString&reportName, QObject*parent): QAction(reportName,parent),reportFile(fileName) { connect(this,SIGNAL(triggered()),this,SLOT(createReport())); } /*:615*//*616:*/ #line 13250 "./typica.w" void ReportAction::createReport() { QFile file(reportFile); QDomDocument document; if(file.open(QIODevice::ReadOnly)) { document.setContent(&file,true); QDomElement element= document.documentElement(); QScriptEngine*engine= AppInstance->engine; QScriptContext*context= engine->pushContext(); QScriptValue object; QString targetID= reportFile; /*176:*/ #line 4126 "./typica.w" ScriptQMainWindow*window= new ScriptQMainWindow; window->setObjectName(targetID); object= engine->newQObject(window); setQMainWindowProperties(object,engine); QWidget*central= new(QWidget); central->setParent(window); central->setObjectName("centralWidget"); window->setCentralWidget(central); if(element.hasChildNodes()) { /*177:*/ #line 4161 "./typica.w" QStack widgetStack; QStack layoutStack; QString windowScript; widgetStack.push(central); QDomNodeList windowChildren= element.childNodes(); int i= 0; while(imenuBar(); bar->setParent(window); bar->setObjectName("menuBar"); if(element.hasAttribute("name")) { QMenu*menu= bar->addMenu(element.attribute("name")); menu->setParent(bar); if(element.hasAttribute("type")) { if(element.attribute("type")=="reports") { if(element.hasAttribute("src")) { /*613:*/ #line 13194 "./typica.w" QSettings settings; QString reportDirectory= QString("%1/%2").arg(settings.value("config"). toString()). arg(element.attribute("src")); QDir::addSearchPath("reports",reportDirectory); QDir directory(reportDirectory); directory.setFilter(QDir::Files); directory.setSorting(QDir::Name); QStringList nameFilter; nameFilter<<"*.xml"; directory.setNameFilters(nameFilter); QFileInfoList reportFiles= directory.entryInfoList(); for(int i= 0;i"); QMenu*insertionPoint= menu; /*618:*/ #line 13301 "./typica.w" for(int j= 0;jchildren(); bool menuFound= false; for(int k= 0;k (menuList.at(k)); if(currentItem) { if(currentItem->title()==hierarchy.at(j)) { menuFound= true; insertionPoint= currentItem; break; } } } if(!menuFound) { insertionPoint= insertionPoint->addMenu(hierarchy.at(j)); } } /*:618*/ #line 13291 "./typica.w" ReportAction*action= new ReportAction(path,hierarchy.last()); insertionPoint->addAction(action); } } } /*:617*/ #line 13210 "./typica.w" } /*:613*/ #line 4222 "./typica.w" } } } if(element.hasChildNodes()) { /*179:*/ #line 4235 "./typica.w" QDomNodeList menuItems= element.childNodes(); int j= 0; while(jsetObjectName(itemElement.attribute("id")); } if(itemElement.hasAttribute("shortcut")) { itemAction->setShortcut(itemElement.attribute("shortcut")); } menu->addAction(itemAction); } else if(itemElement.tagName()=="separator") { menu->addSeparator(); } } j++; } #line 1 "./helpmenu.w" /*:179*/ #line 4228 "./typica.w" } } /*:178*/ #line 4186 "./typica.w" } } i++; } QScriptValue oldThis= context->thisObject(); context->setThisObject(object); QScriptValue result= engine->evaluate(windowScript); /*170:*/ #line 3943 "./typica.w" if(engine->hasUncaughtException()) { int line= engine->uncaughtExceptionLineNumber(); qDebug()<<"Uncaught excpetion at line "<uncaughtExceptionBacktrace()) { qDebug()<setThisObject(oldThis); /*:177*/ #line 4137 "./typica.w" } /*180:*/ #line 9 "./helpmenu.w" HelpMenu*helpMenu= new HelpMenu(); window->menuBar()->addMenu(helpMenu); /*:180*/ #line 4139 "./typica.w" window->show(); /*:176*/ #line 13263 "./typica.w" file.close(); engine->popContext(); } } /*:616*/ #line 588 "./typica.w" /*220:*/ #line 5303 "./typica.w" NumericDelegate::NumericDelegate(QObject*parent): QItemDelegate(parent) { } /*:220*//*221:*/ #line 5315 "./typica.w" void NumericDelegate::setEditorData(QWidget*editor, const QModelIndex&index)const { QString value= index.model()->data(index,Qt::EditRole).toString(); QLineEdit*line= static_cast (editor); line->setText(value); } /*:221*//*222:*/ #line 5330 "./typica.w" void NumericDelegate::setModelData(QWidget*editor,QAbstractItemModel*model, const QModelIndex&index)const { QLineEdit*line= static_cast (editor); model->setData(index,line->text(),Qt::EditRole); QScriptEngine*engine= AppInstance->engine; engine->pushContext(); QString script= QString("Number(%1)").arg(line->text()); QScriptValue result= engine->evaluate(line->text()); if(result.isNumber()) { model->setData(index,result.toVariant(),Qt::DisplayRole); } else { model->setData(index,QVariant(),Qt::DisplayRole); } engine->popContext(); } /*:222*//*223:*/ #line 5353 "./typica.w" QWidget*NumericDelegate::createEditor(QWidget*parent, const QStyleOptionViewItem&, const QModelIndex&)const { return(new QLineEdit(parent)); } /*:223*//*224:*/ #line 5364 "./typica.w" void NumericDelegate::updateEditorGeometry(QWidget*editor, const QStyleOptionViewItem&option, const QModelIndex&)const { editor->setGeometry(option.rect); } /*:224*/ #line 589 "./typica.w" /*759:*/ #line 15933 "./typica.w" NiDaqMxDriverConfWidget::NiDaqMxDriverConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QHBoxLayout*layout= new QHBoxLayout; QToolButton*addDeviceButton= new QToolButton; addDeviceButton->setText(tr("Add Device")); NodeInserter*add9211a= new NodeInserter("NI USB 9211A","NI USB 9211A", "nidaqmx9211series"); NodeInserter*addtc01= new NodeInserter("NI USB TC01","NI USB TC01", "nidaqmxtc01"); connect(add9211a,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(addtc01,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); QMenu*deviceMenu= new QMenu; deviceMenu->addAction(add9211a); deviceMenu->addAction(addtc01); addDeviceButton->setMenu(deviceMenu); addDeviceButton->setPopupMode(QToolButton::InstantPopup); layout->addWidget(addDeviceButton); setLayout(layout); } /*:759*/ #line 590 "./typica.w" /*761:*/ #line 15982 "./typica.w" NiDaqMx9211ConfWidget::NiDaqMx9211ConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QVBoxLayout*layout= new QVBoxLayout; QHBoxLayout*deviceIdLayout= new QHBoxLayout; QLabel*label= new QLabel(tr("Device ID:")); QLineEdit*deviceId= new QLineEdit; deviceIdLayout->addWidget(label); deviceIdLayout->addWidget(deviceId); QPushButton*addChannelButton= new QPushButton(tr("Add Channel")); layout->addLayout(deviceIdLayout); layout->addWidget(addChannelButton); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 15996 "./typica.w" for(int i= 0;isetText(node.attribute("value","Dev1")); break; } } updateDeviceId(deviceId->text()); connect(addChannelButton,SIGNAL(clicked()),this,SLOT(addChannel())); connect(deviceId,SIGNAL(textEdited(QString)), this,SLOT(updateDeviceId(QString))); setLayout(layout); } void NiDaqMx9211ConfWidget::updateDeviceId(const QString&newId) { updateAttribute("deviceID",newId); } void NiDaqMx9211ConfWidget::addChannel() { insertChildNode(tr("Thermocouple channel"),"ni9211seriestc"); } /*:761*/ #line 591 "./typica.w" /*763:*/ #line 16047 "./typica.w" NiDaqMxTc01ConfWidget::NiDaqMxTc01ConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*deviceId= new QLineEdit; layout->addRow(tr("Device ID:"),deviceId); QLineEdit*columnName= new QLineEdit; layout->addRow(tr("Column Name:"),columnName); QComboBox*typeSelector= new QComboBox; typeSelector->addItem("J"); typeSelector->addItem("K"); typeSelector->addItem("T"); typeSelector->addItem("B"); typeSelector->addItem("E"); typeSelector->addItem("N"); typeSelector->addItem("R"); typeSelector->addItem("S"); layout->addRow(tr("Thermocouple Type:"),typeSelector); QCheckBox*hideSeries= new QCheckBox(tr("Hide this channel")); layout->addRow(hideSeries); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 16069 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="type") { typeSelector->setCurrentIndex(typeSelector->findText(node.attribute("value"))); } else if(node.attribute("name")=="columnname") { columnName->setText(node.attribute("value")); } else if(node.attribute("name")=="hidden") { hideSeries->setChecked(node.attribute("value")=="true"); } } updateDeviceId(deviceId->text()); updateThermocoupleType(typeSelector->currentText()); updateColumnName(columnName->text()); updateHidden(hideSeries->isChecked()); connect(deviceId,SIGNAL(textEdited(QString)),this,SLOT(updateDeviceId(QString))); connect(typeSelector,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateThermocoupleType(QString))); connect(columnName,SIGNAL(textEdited(QString)),this,SLOT(updateColumnName(QString))); setLayout(layout); connect(hideSeries,SIGNAL(toggled(bool)),this,SLOT(updateHidden(bool))); } void NiDaqMxTc01ConfWidget::updateDeviceId(const QString&newId) { updateAttribute("deviceID",newId); } void NiDaqMxTc01ConfWidget::updateThermocoupleType(const QString&type) { updateAttribute("type",type); } void NiDaqMxTc01ConfWidget::updateColumnName(const QString&name) { updateAttribute("columnname",name); } void NiDaqMxTc01ConfWidget::updateHidden(bool hidden) { updateAttribute("hidden",hidden?"true":"false"); } /*:763*/ #line 592 "./typica.w" /*781:*/ #line 16485 "./typica.w" ModbusRtuPortConfWidget::ModbusRtuPortConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QToolButton*addDeviceButton= new QToolButton; addDeviceButton->setText(tr("Add Device")); NodeInserter*addModbusRtuDevice= new NodeInserter("Modbus RTU Device", "Modbus RTU Device", "modbusrtudevice"); connect(addModbusRtuDevice,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); QMenu*deviceMenu= new QMenu; deviceMenu->addAction(addModbusRtuDevice); addDeviceButton->setMenu(deviceMenu); addDeviceButton->setPopupMode(QToolButton::InstantPopup); layout->addRow(QString(),addDeviceButton); PortSelector*port= new PortSelector; layout->addRow(tr("Port:"),port); connect(port,SIGNAL(currentIndexChanged(QString)), this,SLOT(updatePort(QString))); connect(port,SIGNAL(editTextChanged(QString)), this,SLOT(updatePort(QString))); BaudSelector*rate= new BaudSelector; layout->addRow(tr("Baud:"),rate); connect(rate,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateBaudRate(QString))); ParitySelector*parity= new ParitySelector; layout->addRow(tr("Parity:"),parity); connect(parity,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateParity(QString))); FlowSelector*flow= new FlowSelector; layout->addRow(tr("Flow Control:"),flow); connect(flow,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateFlowControl(QString))); StopSelector*stop= new StopSelector; layout->addRow(tr("Stop Bits:"),stop); connect(stop,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateStopBits(QString))); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 16525 "./typica.w" for(int i= 0;ifindText(node.attribute("value")); if(j>=0) { port->setCurrentIndex(j); } else { port->insertItem(0,node.attribute("value")); port->setCurrentIndex(0); } } else if(node.attribute("name")=="baudrate") { rate->setCurrentIndex(rate->findText(node.attribute("value"))); } else if(node.attribute("name")=="parity") { parity->setCurrentIndex(parity->findText(node.attribute("value"))); } else if(node.attribute("name")=="flowcontrol") { flow->setCurrentIndex(flow->findText(node.attribute("value"))); } else if(node.attribute("name")=="stopbits") { stop->setCurrentIndex(stop->findText(node.attribute("value"))); } } updatePort(port->currentText()); updateBaudRate(rate->currentText()); updateParity(parity->currentText()); updateFlowControl(flow->currentText()); updateStopBits(stop->currentText()); setLayout(layout); } void ModbusRtuPortConfWidget::updatePort(const QString&newPort) { updateAttribute("port",newPort); } void ModbusRtuPortConfWidget::updateBaudRate(const QString&newRate) { updateAttribute("baudrate",newRate); } void ModbusRtuPortConfWidget::updateParity(const QString&newParity) { updateAttribute("parity",newParity); } void ModbusRtuPortConfWidget::updateFlowControl(const QString&newFlow) { updateAttribute("flowcontrol",newFlow); } void ModbusRtuPortConfWidget::updateStopBits(const QString&newStopBits) { updateAttribute("stopbits",newStopBits); } /*:781*/ #line 593 "./typica.w" /*783:*/ #line 16648 "./typica.w" ModbusRtuDeviceConfWidget::ModbusRtuDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), unitSpecificationLayout(new QStackedLayout), decimalSpecificationLayout(new QStackedLayout) { QVBoxLayout*layout= new QVBoxLayout; QToolButton*addChannelButton= new QToolButton; addChannelButton->setText(tr("Add Channel")); NodeInserter*addTemperaturePV= new NodeInserter("Temperature Process Value", "Temperature Process Value", "modbustemperaturepv"); NodeInserter*addTemperatureSV= new NodeInserter("Temperature Set Value", "Temperature Set Value", "modbustemperaturesv"); connect(addTemperaturePV,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(addTemperatureSV,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); QMenu*channelMenu= new QMenu; channelMenu->addAction(addTemperaturePV); channelMenu->addAction(addTemperatureSV); addChannelButton->setMenu(channelMenu); addChannelButton->setPopupMode(QToolButton::InstantPopup); layout->addWidget(addChannelButton); QHBoxLayout*stationLayout= new QHBoxLayout; QLabel*stationLabel= new QLabel(tr("Station:")); QSpinBox*stationNumber= new QSpinBox; stationNumber->setMinimum(0); stationNumber->setMaximum(255); stationLayout->addWidget(stationLabel); stationLayout->addWidget(stationNumber); layout->addLayout(stationLayout); QCheckBox*fixedUnit= new QCheckBox(tr("Fixed Temperature Unit")); layout->addWidget(fixedUnit); QWidget*fixedUnitPlaceholder= new QWidget(this); QHBoxLayout*fixedUnitLayout= new QHBoxLayout; QLabel*fixedUnitLabel= new QLabel(tr("Temperature Unit:")); QComboBox*fixedUnitSelector= new QComboBox; fixedUnitSelector->addItem("Fahrenheit"); fixedUnitSelector->addItem("Celsius"); fixedUnitLayout->addWidget(fixedUnitLabel); fixedUnitLayout->addWidget(fixedUnitSelector); fixedUnitPlaceholder->setLayout(fixedUnitLayout); unitSpecificationLayout->addWidget(fixedUnitPlaceholder); QWidget*queriedUnitPlaceholder= new QWidget(this); QFormLayout*queriedUnitLayout= new QFormLayout; ShortHexSpinBox*unitAddress= new ShortHexSpinBox; queriedUnitLayout->addRow(tr("Function 0x03 Unit Address:"),unitAddress); QSpinBox*valueF= new QSpinBox; valueF->setMinimum(0); valueF->setMaximum(65535); queriedUnitLayout->addRow(tr("Value for Fahrenheit"),valueF); QSpinBox*valueC= new QSpinBox; valueC->setMinimum(0); valueC->setMaximum(65535); queriedUnitLayout->addRow(tr("Value for Celsius"),valueC); queriedUnitPlaceholder->setLayout(queriedUnitLayout); unitSpecificationLayout->addWidget(queriedUnitPlaceholder); layout->addLayout(unitSpecificationLayout); QCheckBox*fixedPrecision= new QCheckBox(tr("Fixed Precision")); layout->addWidget(fixedPrecision); QWidget*fixedPrecisionPlaceholder= new QWidget(this); QFormLayout*fixedPrecisionLayout= new QFormLayout; QSpinBox*fixedPrecisionValue= new QSpinBox; fixedPrecisionValue->setMinimum(0); fixedPrecisionValue->setMaximum(9); fixedPrecisionLayout->addRow("Places after the decimal point:", fixedPrecisionValue); fixedPrecisionPlaceholder->setLayout(fixedPrecisionLayout); decimalSpecificationLayout->addWidget(fixedPrecisionPlaceholder); QWidget*queriedPrecisionPlaceholder= new QWidget(this); QFormLayout*queriedPrecisionLayout= new QFormLayout; ShortHexSpinBox*precisionAddress= new ShortHexSpinBox; queriedPrecisionLayout->addRow("Function 0x03 Decimal Position Address:", precisionAddress); queriedPrecisionPlaceholder->setLayout(queriedPrecisionLayout); decimalSpecificationLayout->addWidget(queriedPrecisionPlaceholder); layout->addLayout(decimalSpecificationLayout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 16728 "./typica.w" for(int i= 0;isetValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="fixedunit") { if(node.attribute("value")=="true") { fixedUnit->setCheckState(Qt::Checked); } else if(node.attribute("value")=="false") { fixedUnit->setCheckState(Qt::Unchecked); } } else if(node.attribute("name")=="fixedprecision") { fixedPrecisionValue->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="unit") { fixedUnitSelector->setCurrentIndex(fixedUnitSelector->findText(node.attribute("value"))); } else if(node.attribute("name")=="unitaddress") { unitAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="fvalue") { valueF->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="cvalue") { valueC->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="precisionaddress") { precisionAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="precision") { fixedPrecisionValue->setValue(node.attribute("value").toInt()); } } updateStationNumber(stationNumber->value()); updateFixedUnit(fixedUnit->isChecked()); updateFixedDecimal(fixedPrecision->isChecked()); updateUnit(fixedUnitSelector->currentText()); updateUnitAddress(unitAddress->value()); updateValueF(valueF->value()); updateValueC(valueC->value()); updatePrecisionAddress(precisionAddress->value()); updatePrecisionValue(fixedPrecisionValue->value()); connect(stationNumber,SIGNAL(valueChanged(int)), this,SLOT(updateStationNumber(int))); connect(fixedUnitSelector,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateUnit(QString))); connect(unitAddress,SIGNAL(valueChanged(int)), this,SLOT(updateUnitAddress(int))); connect(valueF,SIGNAL(valueChanged(int)), this,SLOT(updateValueF(int))); connect(valueC,SIGNAL(valueChanged(int)), this,SLOT(updateValueC(int))); connect(fixedUnit,SIGNAL(toggled(bool)), this,SLOT(updateFixedUnit(bool))); connect(fixedPrecision,SIGNAL(toggled(bool)), this,SLOT(updateFixedDecimal(bool))); connect(fixedPrecisionValue,SIGNAL(valueChanged(int)), this,SLOT(updatePrecisionValue(int))); connect(precisionAddress,SIGNAL(valueChanged(int)), this,SLOT(updatePrecisionAddress(int))); setLayout(layout); } void ModbusRtuDeviceConfWidget::updateStationNumber(int newStation) { updateAttribute("station",QString("%1").arg(newStation)); } void ModbusRtuDeviceConfWidget::updateFixedUnit(bool newFixed) { if(newFixed) { unitSpecificationLayout->setCurrentIndex(0); updateAttribute("fixedunit","true"); } else { unitSpecificationLayout->setCurrentIndex(1); updateAttribute("fixedunit","false"); } } void ModbusRtuDeviceConfWidget::updateFixedDecimal(bool newFixed) { if(newFixed) { decimalSpecificationLayout->setCurrentIndex(0); updateAttribute("fixedprecision","true"); } else { decimalSpecificationLayout->setCurrentIndex(1); updateAttribute("fixedprecision","false"); } } void ModbusRtuDeviceConfWidget::updateUnit(const QString&newUnit) { updateAttribute("unit",newUnit); } void ModbusRtuDeviceConfWidget::updateUnitAddress(int newAddress) { updateAttribute("unitaddress",QString("%1").arg(newAddress)); } void ModbusRtuDeviceConfWidget::updateValueF(int newValue) { updateAttribute("fvalue",QString("%1").arg(newValue)); } void ModbusRtuDeviceConfWidget::updateValueC(int newValue) { updateAttribute("cvalue",QString("%1").arg(newValue)); } void ModbusRtuDeviceConfWidget::updatePrecisionAddress(int newAddress) { updateAttribute("precisionaddress",QString("%1").arg(newAddress)); } void ModbusRtuDeviceConfWidget::updatePrecisionValue(int newValue) { updateAttribute("precision",QString("%1").arg(newValue)); } /*:783*/ #line 594 "./typica.w" /*785:*/ #line 16891 "./typica.w" ModbusRtuDeviceTPvConfWidget::ModbusRtuDeviceTPvConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; ShortHexSpinBox*address= new ShortHexSpinBox; layout->addRow(tr("Function 0x04 Process Value Address"),address); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 16899 "./typica.w" for(int i= 0;isetValue(node.attribute("value").toInt()); break; } } updateAddress(address->value()); connect(address,SIGNAL(valueChanged(int)),this,SLOT(updateAddress(int))); setLayout(layout); } void ModbusRtuDeviceTPvConfWidget::updateAddress(int newAddress) { updateAttribute("address",QString("%1").arg(newAddress)); } /*:785*/ #line 595 "./typica.w" /*787:*/ #line 16947 "./typica.w" ModbusRtuDeviceTSvConfWidget::ModbusRtuDeviceTSvConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index),boundsLayout(new QStackedLayout) { QVBoxLayout*layout= new QVBoxLayout; QFormLayout*addressLayout= new QFormLayout; ShortHexSpinBox*readAddress= new ShortHexSpinBox; ShortHexSpinBox*writeAddress= new ShortHexSpinBox; addressLayout->addRow(tr("Function 0x04 Read Set Value Address:"),readAddress); addressLayout->addRow(tr("Function 0x06 Write Set Value Address:"),writeAddress); layout->addLayout(addressLayout); QCheckBox*fixedRange= new QCheckBox(tr("Fixed Set Value Range")); layout->addWidget(fixedRange); QWidget*queriedRangePlaceholder= new QWidget(this); QFormLayout*queriedRangeLayout= new QFormLayout; ShortHexSpinBox*lowerAddress= new ShortHexSpinBox; ShortHexSpinBox*upperAddress= new ShortHexSpinBox; queriedRangeLayout->addRow(tr("Function 0x03 Minimum Set Value Address"), lowerAddress); queriedRangeLayout->addRow(tr("Function 0x03 Maximum Set Value Address"), upperAddress); queriedRangePlaceholder->setLayout(queriedRangeLayout); boundsLayout->addWidget(queriedRangePlaceholder); QWidget*fixedRangePlaceholder= new QWidget(this); QFormLayout*fixedRangeLayout= new QFormLayout; QLineEdit*fixedLower= new QLineEdit; QLineEdit*fixedUpper= new QLineEdit; fixedRangeLayout->addRow(tr("Minimum Set Value:"),fixedLower); fixedRangeLayout->addRow(tr("Maximum Set Value:"),fixedUpper); fixedRangePlaceholder->setLayout(fixedRangeLayout); boundsLayout->addWidget(fixedRangePlaceholder); layout->addLayout(boundsLayout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 16980 "./typica.w" for(int i= 0;isetValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="writeaddress") { writeAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="fixedrange") { if(node.attribute("value")=="true") { fixedRange->setCheckState(Qt::Checked); } else if(node.attribute("value")=="false") { fixedRange->setCheckState(Qt::Unchecked); } } else if(node.attribute("name")=="fixedlower") { fixedLower->setText(node.attribute("value")); } else if(node.attribute("name")=="fixedupper") { fixedUpper->setText(node.attribute("value")); } else if(node.attribute("name")=="loweraddress") { lowerAddress->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="upperaddress") { upperAddress->setValue(node.attribute("value").toInt()); } } updateReadAddress(readAddress->value()); updateWriteAddress(writeAddress->value()); updateFixedRange(fixedRange->isChecked()); updateLower(fixedLower->text()); updateUpper(fixedUpper->text()); updateLowerAddress(lowerAddress->value()); updateUpperAddress(upperAddress->value()); connect(readAddress,SIGNAL(valueChanged(int)), this,SLOT(updateReadAddress(int))); connect(writeAddress,SIGNAL(valueChanged(int)), this,SLOT(updateWriteAddress(int))); connect(fixedRange,SIGNAL(toggled(bool)),this,SLOT(updateFixedRange(bool))); connect(fixedLower,SIGNAL(textChanged(QString)), this,SLOT(updateLower(QString))); connect(fixedUpper,SIGNAL(textChanged(QString)), this,SLOT(updateUpper(QString))); connect(lowerAddress,SIGNAL(valueChanged(int)), this,SLOT(updateLowerAddress(int))); connect(upperAddress,SIGNAL(valueChanged(int)), this,SLOT(updateUpperAddress(int))); setLayout(layout); } void ModbusRtuDeviceTSvConfWidget::updateReadAddress(int newAddress) { updateAttribute("readaddress",QString("%1").arg(newAddress)); } void ModbusRtuDeviceTSvConfWidget::updateWriteAddress(int newAddress) { updateAttribute("writeaddress",QString("%1").arg(newAddress)); } void ModbusRtuDeviceTSvConfWidget::updateFixedRange(bool fixed) { if(fixed) { updateAttribute("fixedrange","true"); boundsLayout->setCurrentIndex(1); } else { updateAttribute("fixedrange","false"); boundsLayout->setCurrentIndex(0); } } void ModbusRtuDeviceTSvConfWidget::updateLower(const QString&lower) { updateAttribute("fixedlower",lower); } void ModbusRtuDeviceTSvConfWidget::updateUpper(const QString&upper) { updateAttribute("fixedupper",upper); } void ModbusRtuDeviceTSvConfWidget::updateLowerAddress(int newAddress) { updateAttribute("loweraddress",QString("%1").arg(newAddress)); } void ModbusRtuDeviceTSvConfWidget::updateUpperAddress(int newAddress) { updateAttribute("upperaddress",QString("%1").arg(newAddress)); } /*:787*/ #line 596 "./typica.w" /*743:*/ #line 15554 "./typica.w" RoasterConfWidget::RoasterConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QVBoxLayout*layout= new QVBoxLayout; QPushButton*addDeviceButton= new QPushButton(tr("Add Device")); QMenu*deviceMenu= new QMenu; NodeInserter*insertAction; foreach(insertAction,AppInstance->topLevelNodeInserters) { connect(insertAction,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); deviceMenu->addAction(insertAction); } addDeviceButton->setMenu(deviceMenu); layout->addWidget(addDeviceButton); QPushButton*addAnnotationControlButton= new QPushButton(tr("Add Annotation Control")); QMenu*annotationMenu= new QMenu; NodeInserter*basicButtonInserter= new NodeInserter(tr("Annotation Button"),tr("Annotation Button"),"annotationbutton"); NodeInserter*countingButtonInserter= new NodeInserter(tr("Counting Button"),tr("Counting Button"),"reconfigurablebutton"); NodeInserter*spinBoxInserter= new NodeInserter(tr("Numeric Entry"),tr("Numeric Entry"),"annotationspinbox"); NodeInserter*freeAnnotationInserter= new NodeInserter(tr("Free Text"), tr("Free Text"), "freeannotation"); annotationMenu->addAction(basicButtonInserter); annotationMenu->addAction(countingButtonInserter); annotationMenu->addAction(spinBoxInserter); annotationMenu->addAction(freeAnnotationInserter); connect(basicButtonInserter,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(countingButtonInserter,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(spinBoxInserter,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); connect(freeAnnotationInserter,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); /*989:*/ #line 144 "./valueannotation.w" NodeInserter*valueAnnotationInserter= new NodeInserter(tr("Value Annotation"), tr("Value Annotation"), "valueannotation"); annotationMenu->addAction(valueAnnotationInserter); connect(valueAnnotationInserter,SIGNAL(triggered(QString,QString)), this,SLOT(insertChildNode(QString,QString))); /*:989*/ #line 15590 "./typica.w" addAnnotationControlButton->setMenu(annotationMenu); layout->addWidget(addAnnotationControlButton); QPushButton*advancedButton= new QPushButton(tr("Advanced Features")); QMenu*advancedMenu= new QMenu; NodeInserter*linearsplineinserter= new NodeInserter(tr("Linear Spline Interpolated Series"),tr("Linear Spline Interpolated Series"),"linearspline"); advancedMenu->addAction(linearsplineinserter); NodeInserter*translationinserter= new NodeInserter(tr("Profile Translation"),tr("Profile Translation"),"translation"); advancedMenu->addAction(translationinserter); connect(linearsplineinserter,SIGNAL(triggered(QString,QString)),this,SLOT(insertChildNode(QString,QString))); connect(translationinserter,SIGNAL(triggered(QString,QString)),this,SLOT(insertChildNode(QString,QString))); /*915:*/ #line 258 "./rate.w" NodeInserter*rateOfChangeInserter= new NodeInserter(tr("Rate of Change"),tr("Rate of Change"),"rate"); connect(rateOfChangeInserter,SIGNAL(triggered(QString,QString)),this,SLOT(insertChildNode(QString,QString))); advancedMenu->addAction(rateOfChangeInserter); /*:915*/ #line 15601 "./typica.w" advancedButton->setMenu(advancedMenu); layout->addWidget(advancedButton); QHBoxLayout*idLayout= new QHBoxLayout; QLabel*idLabel= new QLabel(tr("Machine ID for database:")); idLayout->addWidget(idLabel); QSpinBox*id= new QSpinBox; idLayout->addWidget(id); layout->addLayout(idLayout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 15610 "./typica.w" for(int i= 0;isetValue(node.attribute("value").toInt()); break; } } updateRoasterId(id->value()); connect(id,SIGNAL(valueChanged(int)),this,SLOT(updateRoasterId(int))); setLayout(layout); } /*:743*//*745:*/ #line 15642 "./typica.w" void RoasterConfWidget::updateRoasterId(int id) { updateAttribute("databaseid",QString("%1").arg(id)); } /*:745*/ #line 597 "./typica.w" /*791:*/ #line 17130 "./typica.w" AnnotationButtonConfWidget::AnnotationButtonConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*buttonTextEdit= new QLineEdit; QLineEdit*annotationTextEdit= new QLineEdit; layout->addRow(tr("Button Text:"),buttonTextEdit); layout->addRow(tr("Annotation Text:"),annotationTextEdit); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 17139 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="annotationtext") { annotationTextEdit->setText(node.attribute("value")); } } updateButtonText(buttonTextEdit->text()); updateAnnotationText(annotationTextEdit->text()); connect(buttonTextEdit,SIGNAL(textEdited(QString)),this,SLOT(updateButtonText(QString))); connect(annotationTextEdit,SIGNAL(textEdited(QString)),this,SLOT(updateAnnotationText(QString))); setLayout(layout); } /*:791*//*792:*/ #line 17161 "./typica.w" void AnnotationButtonConfWidget::updateButtonText(const QString&text) { updateAttribute("buttontext",text); } void AnnotationButtonConfWidget::updateAnnotationText(const QString&text) { updateAttribute("annotationtext",text); } /*:792*//*795:*/ #line 17199 "./typica.w" ReconfigurableAnnotationButtonConfWidget::ReconfigurableAnnotationButtonConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*buttonTextEdit= new QLineEdit; QLineEdit*annotationTextEdit= new QLineEdit; layout->addRow(tr("Button Text:"),buttonTextEdit); layout->addRow(tr("Annotation Text:"),annotationTextEdit); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 17208 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="annotationtext") { annotationTextEdit->setText(node.attribute("value")); } } updateButtonText(buttonTextEdit->text()); updateAnnotationText(annotationTextEdit->text()); connect(buttonTextEdit,SIGNAL(textEdited(QString)),this,SLOT(updateButtonText(QString))); connect(annotationTextEdit,SIGNAL(textEdited(QString)),this,SLOT(updateAnnotationText(QString))); QTextEdit*documentation= new QTextEdit; documentation->setHtml(tr("If the Annotation Text contains %1, this will be replaced in the annotation with a number that increments each time the button is pressed.")); documentation->setReadOnly(true); layout->addRow("",documentation); setLayout(layout); } void ReconfigurableAnnotationButtonConfWidget::updateButtonText(const QString&text) { updateAttribute("buttontext",text); } void ReconfigurableAnnotationButtonConfWidget::updateAnnotationText(const QString&text) { updateAttribute("annotationtext",text); } /*:795*/ #line 598 "./typica.w" /*798:*/ #line 17276 "./typica.w" NoteSpinConfWidget::NoteSpinConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*labelEdit= new QLineEdit; layout->addRow(tr("Control Label: "),labelEdit); QLineEdit*minimumEdit= new QLineEdit; layout->addRow(tr("Minimum Value: "),minimumEdit); QLineEdit*maximumEdit= new QLineEdit; layout->addRow(tr("Maximum Value: "),maximumEdit); QSpinBox*precisionEdit= new QSpinBox; precisionEdit->setMinimum(0); precisionEdit->setMaximum(9); layout->addRow(tr("Precision"),precisionEdit); QLineEdit*pretext= new QLineEdit; layout->addRow(tr("Prefix text"),pretext); QLineEdit*posttext= new QLineEdit; layout->addRow(tr("Suffix text"),posttext); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 17295 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="minimum") { minimumEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="maximum") { maximumEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="precision") { precisionEdit->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="pretext") { pretext->setText(node.attribute("value")); } else if(node.attribute("name")=="posttext") { posttext->setText(node.attribute("value")); } } updateLabel(labelEdit->text()); updateMinimum(minimumEdit->text()); updateMaximum(maximumEdit->text()); updatePrecision(precisionEdit->value()); updatePretext(pretext->text()); updatePosttext(posttext->text()); connect(labelEdit,SIGNAL(textEdited(QString)),this,SLOT(updateLabel(QString))); connect(minimumEdit,SIGNAL(textEdited(QString)),this,SLOT(updateMinimum(QString))); connect(maximumEdit,SIGNAL(textEdited(QString)),this,SLOT(updateMaximum(QString))); connect(precisionEdit,SIGNAL(valueChanged(int)),this,SLOT(updatePrecision(int))); connect(pretext,SIGNAL(textEdited(QString)),this,SLOT(updatePretext(QString))); connect(posttext,SIGNAL(textEdited(QString)),this,SLOT(updatePosttext(QString))); setLayout(layout); } void NoteSpinConfWidget::updateLabel(const QString&text) { updateAttribute("label",text); } void NoteSpinConfWidget::updateMinimum(const QString&minimum) { updateAttribute("minimum",minimum); } void NoteSpinConfWidget::updateMaximum(const QString&maximum) { updateAttribute("maximum",maximum); } void NoteSpinConfWidget::updatePrecision(int precision) { updateAttribute("precision",QString("%1").arg(precision)); } void NoteSpinConfWidget::updatePretext(const QString&text) { updateAttribute("pretext",text); } void NoteSpinConfWidget::updatePosttext(const QString&text) { updateAttribute("posttext",text); } /*:798*/ #line 599 "./typica.w" /*308:*/ #line 6945 "./typica.w" LinearCalibrator::LinearCalibrator(QObject*parent): QObject(parent),Lo1(0),Lo2(0),Up1(1),Up2(1),sensitivitySetting(0.0),clamp(false) { connect(this,SIGNAL(measurement(Measurement)),this,SIGNAL(newData(Measurement))); } /*:308*//*309:*/ #line 6959 "./typica.w" Measurement LinearCalibrator::newMeasurement(Measurement measure) { double outval= Lo1+(measure.temperature()-Lo2)*(Up1-Lo1)/(Up2-Lo2); if(clamp) { if(outval Up1) { outval= Up1; } } if(sensitivitySetting>=0.05) { int temp= qRound(outval/sensitivitySetting); outval= temp*sensitivitySetting; } Measurement adjusted(outval,measure.time(),measure.scale()); emit measurement(adjusted); return adjusted; } /*:309*//*310:*/ #line 6986 "./typica.w" double LinearCalibrator::measuredLower() { return Lo2; } double LinearCalibrator::measuredUpper() { return Up2; } double LinearCalibrator::mappedLower() { return Lo1; } double LinearCalibrator::mappedUpper() { return Up1; } bool LinearCalibrator::isClosedRange() { return clamp; } void LinearCalibrator::setMeasuredLower(double lower) { Lo2= lower; } void LinearCalibrator::setMeasuredUpper(double upper) { Up2= upper; } void LinearCalibrator::setMappedLower(double lower) { Lo1= lower; } void LinearCalibrator::setMappedUpper(double upper) { Up1= upper; } void LinearCalibrator::setClosedRange(bool closed) { clamp= closed; } void LinearCalibrator::setSensitivity(double sensitivity) { sensitivitySetting= sensitivity; } double LinearCalibrator::sensitivity() { return sensitivitySetting; } /*:310*/ #line 600 "./typica.w" /*315:*/ #line 7119 "./typica.w" void LinearSplineInterpolator::add_pair(double source,double destination) { pairs->insert(source,destination); make_interpolators(); } void LinearSplineInterpolator::make_interpolators() { if(pairs->size()> 1) { while(interpolators->size()> 0) { LinearCalibrator*removed= interpolators->takeFirst(); removed->deleteLater(); } QMap ::const_iterator i= pairs->constBegin(); QMap ::const_iterator j= i+1; while(j!=pairs->constEnd()) { LinearCalibrator*segment= new LinearCalibrator(); segment->setMeasuredLower(i.key()); segment->setMappedLower(i.value()); segment->setMeasuredUpper(j.key()); segment->setMappedUpper(j.value()); segment->setClosedRange(false); interpolators->append(segment); connect(segment,SIGNAL(measurement(Measurement)),this,SIGNAL(newData(Measurement))); i++; j++; } } } LinearSplineInterpolator::LinearSplineInterpolator(QObject*parent): QObject(parent),pairs(new QMap ), interpolators(new QList ) { } Measurement LinearSplineInterpolator::newMeasurement(Measurement measure) { QMap ::const_iterator i= pairs->constBegin(); int index= -1; while(i!=pairs->constEnd()) { if(measure.temperature()<=i.key()) { break; } i++; index++; } if(index<0) { index= 0; } if(index>=interpolators->size()) { index= interpolators->size()-1; } if(interpolators->at(index)!=NULL) { return interpolators->at(index)->newMeasurement(measure); } return Measurement(); } /*:315*/ #line 601 "./typica.w" /*894:*/ #line 18644 "./typica.w" LinearSplineInterpolationConfWidget::LinearSplineInterpolationConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index),tablemodel(new SaltModel(2)) { QFormLayout*layout= new QFormLayout; QLineEdit*source= new QLineEdit; layout->addRow(tr("Source column name:"),source); QLineEdit*destination= new QLineEdit; layout->addRow(tr("Destination column name:"),destination); tablemodel->setHeaderData(0,Qt::Horizontal,"Input"); tablemodel->setHeaderData(1,Qt::Horizontal,"Output"); QTableView*mappingTable= new QTableView; mappingTable->setModel(tablemodel); NumericDelegate*delegate= new NumericDelegate; mappingTable->setItemDelegate(delegate); layout->addRow(tr("Mapping data:"),mappingTable); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 18660 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="destination") { destination->setText(node.attribute("value")); } else if(node.attribute("name")=="sourcevalues") { /*895:*/ #line 18699 "./typica.w" QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } QStringList itemList= data.split(","); /*:895*/ #line 18674 "./typica.w" int column= 0; /*896:*/ #line 18711 "./typica.w" for(int i= 0;isetData(tablemodel->index(i,column), QVariant(itemList.at(i).toDouble()), Qt::DisplayRole); } /*:896*/ #line 18676 "./typica.w" } else if(node.attribute("name")=="destinationvalues") { /*895:*/ #line 18699 "./typica.w" QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } QStringList itemList= data.split(","); /*:895*/ #line 18681 "./typica.w" int column= 1; /*896:*/ #line 18711 "./typica.w" for(int i= 0;isetData(tablemodel->index(i,column), QVariant(itemList.at(i).toDouble()), Qt::DisplayRole); } /*:896*/ #line 18683 "./typica.w" } } updateSourceColumn(source->text()); updateDestinationColumn(destination->text()); updateKnots(); connect(source,SIGNAL(textEdited(QString)),this,SLOT(updateSourceColumn(QString))); connect(destination,SIGNAL(textEdited(QString)),this,SLOT(updateDestinationColumn(QString))); connect(tablemodel,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updateKnots())); setLayout(layout); } /*:894*//*897:*/ #line 18722 "./typica.w" void LinearSplineInterpolationConfWidget::updateKnots() { updateAttribute("sourcevalues",tablemodel->arrayLiteral(0,Qt::DisplayRole)); updateAttribute("destinationvalues",tablemodel->arrayLiteral(1,Qt::DisplayRole)); } void LinearSplineInterpolationConfWidget::updateSourceColumn(const QString&source) { updateAttribute("source",source); } void LinearSplineInterpolationConfWidget::updateDestinationColumn(const QString&dest) { updateAttribute("destination",dest); } /*:897*/ #line 602 "./typica.w" /*900:*/ #line 18765 "./typica.w" TranslationConfWidget::TranslationConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), temperatureValue(new QDoubleSpinBox),unitSelector(new QComboBox) { unitSelector->addItem("Fahrenheit"); unitSelector->addItem("Celsius"); temperatureValue->setMinimum(0); temperatureValue->setMaximum(1000); QFormLayout*layout= new QFormLayout; QLineEdit*column= new QLineEdit; layout->addRow(tr("Column to match:"),column); layout->addRow(tr("Unit:"),unitSelector); layout->addRow(tr("Value:"),temperatureValue); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 18779 "./typica.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="unit") { unitSelector->setCurrentIndex(unitSelector->findText(node.attribute("value"))); } else if(node.attribute("name")=="value") { temperatureValue->setValue(node.attribute("value").toDouble()); } } updateMatchingColumn(column->text()); updateTemperature(); connect(column,SIGNAL(textEdited(QString)),this,SLOT(updateMatchingColumn(QString))); connect(unitSelector,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateTemperature())); connect(temperatureValue,SIGNAL(valueChanged(double)),this,SLOT(updateTemperature())); setLayout(layout); } /*:900*//*901:*/ #line 18808 "./typica.w" void TranslationConfWidget::updateTemperature() { updateAttribute("unit",unitSelector->currentText()); updateAttribute("value",QString("%1").arg(temperatureValue->value())); if(unitSelector->currentText()=="Fahrenheit") { updateAttribute("FValue",QString("%1").arg(temperatureValue->value())); } else { updateAttribute("FValue",QString("%1").arg(temperatureValue->value()*9/5+32)); } } void TranslationConfWidget::updateMatchingColumn(const QString&column) { updateAttribute("column",column); } /*:901*/ #line 603 "./typica.w" /*801:*/ #line 24 "./freeannotation.w" FreeAnnotationConfWidget::FreeAnnotationConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*labelEdit= new QLineEdit; layout->addRow(tr("Label Text:"),labelEdit); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 32 "./freeannotation.w" for(int i= 0;isetText(node.attribute("value")); } } updateLabel(labelEdit->text()); connect(labelEdit,SIGNAL(textEdited(QString)), this,SLOT(updateLabel(QString))); setLayout(layout); } /*:801*//*802:*/ #line 49 "./freeannotation.w" void FreeAnnotationConfWidget::updateLabel(const QString&text) { updateAttribute("labeltext",text); } /*:802*/ #line 604 "./typica.w" /*904:*/ #line 39 "./rate.w" void RateOfChange::newMeasurement(Measurement measure) { cache.append(measure); /*905:*/ #line 64 "./rate.w" if(cache.size()> 2) { bool done= false; while(!done) { if(cache.front().time().secsTo(cache.back().time())> ct) { cache.removeFirst(); } else if(cache.back().time()=2) { /*906:*/ #line 96 "./rate.w" int N= cache.size(); double SXY= 0; double SX= 0; double SXX= 0; double SY= 0; double y; double x; for(int i= 0;i 0?seconds:1); } /*:907*/ #line 605 "./typica.w" /*805:*/ #line 26 "./settings.w" SettingsWindow::SettingsWindow():QMainWindow(NULL) { QTabWidget*settingsTab= new QTabWidget; DeviceConfigurationWindow*deviceSettings= new DeviceConfigurationWindow; settingsTab->addTab(deviceSettings,tr("Roasters")); GraphSettingsWidget*graphSettings= new GraphSettingsWidget; settingsTab->addTab(graphSettings,tr("Graph")); AdvancedSettingsWidget*advancedSettings= new AdvancedSettingsWidget; settingsTab->addTab(advancedSettings,tr("Advanced")); setCentralWidget(settingsTab); } /*:805*/ #line 606 "./typica.w" /*810:*/ #line 27 "./graphsettings.w" GraphSettingsWidget::GraphSettingsWidget():QWidget(NULL) { QTabWidget*graphCategories= new QTabWidget; GraphSettingsRelativeTab*relative= new GraphSettingsRelativeTab; graphCategories->addTab(relative,tr("Relative Temperatures")); QVBoxLayout*layout= new QVBoxLayout; layout->addWidget(graphCategories); setLayout(layout); } /*:810*//*812:*/ #line 65 "./graphsettings.w" GraphSettingsRelativeTab::GraphSettingsRelativeTab():QWidget(NULL), colorEdit(new QLineEdit) { QSettings settings; QVBoxLayout*layout= new QVBoxLayout; QCheckBox*enable= new QCheckBox(tr("Graph relative temperatures")); enable->setChecked(settings.value("settings/graph/relative/enable",true).toBool()); updateEnableSetting(enable->isChecked()); connect(enable,SIGNAL(toggled(bool)),this,SLOT(updateEnableSetting(bool))); layout->addWidget(enable); QHBoxLayout*colorLayout= new QHBoxLayout; QLabel*colorLabel= new QLabel(tr("Axis color:")); colorEdit->setText(settings.value("settings/graph/relative/color","#000000").toString()); updateColorSetting(colorEdit->text()); connect(colorEdit,SIGNAL(textChanged(QString)),this,SLOT(updateColorSetting(QString))); QToolButton*colorPickerButton= new QToolButton(); colorPickerButton->setIcon(QIcon::fromTheme("applications-graphics")); connect(colorPickerButton,SIGNAL(clicked()),this,SLOT(showColorPicker())); colorLayout->addWidget(colorLabel); colorLayout->addWidget(colorEdit); colorLayout->addWidget(colorPickerButton); colorLayout->addStretch(); layout->addLayout(colorLayout); QHBoxLayout*unitLayout= new QHBoxLayout; QLabel*unitLabel= new QLabel(tr("Unit")); QComboBox*unitSelector= new QComboBox; unitSelector->addItem(tr("Fahrenheit")); unitSelector->addItem(tr("Celsius")); unitSelector->setCurrentIndex(settings.value("settings/graph/relative/unit",0).toInt()); updateUnit(unitSelector->currentIndex()); connect(unitSelector,SIGNAL(currentIndexChanged(int)),this,SLOT(updateUnit(int))); unitLayout->addWidget(unitLabel); unitLayout->addWidget(unitSelector); unitLayout->addStretch(); layout->addLayout(unitLayout); QHBoxLayout*axisLayout= new QHBoxLayout; QLabel*axisLabel= new QLabel(tr("Grid line positions (comma separated):")); QLineEdit*axisEdit= new QLineEdit; axisEdit->setText(settings.value("settings/graph/relative/grid","-300, -100, -10, 0, 10, 30, 50").toString()); updateAxisSetting(axisEdit->text()); connect(axisEdit,SIGNAL(textChanged(QString)),this,SLOT(updateAxisSetting(QString))); axisLayout->addWidget(axisLabel); axisLayout->addWidget(axisEdit); layout->addLayout(axisLayout); layout->addStretch(); setLayout(layout); } /*:812*//*813:*/ #line 116 "./graphsettings.w" void GraphSettingsRelativeTab::updateEnableSetting(bool enabled) { QSettings settings; settings.setValue("settings/graph/relative/enable",enabled); } void GraphSettingsRelativeTab::updateColorSetting(const QString&color) { QSettings settings; settings.setValue("settings/graph/relative/color",color); } void GraphSettingsRelativeTab::updateAxisSetting(const QString&gridList) { QSettings settings; QString settingValue; QStringList points= gridList.split(QRegExp("[\\s,]+"),QString::SkipEmptyParts); QStringList numbers; foreach(QString text,points) { bool okay= false; text.toDouble(&okay); if(okay) { numbers.append(text); } } numbers.removeDuplicates(); settings.setValue("settings/graph/relative/grid",numbers.join(",")); } void GraphSettingsRelativeTab::updateUnit(int unit) { QSettings settings; settings.setValue("settings/graph/relative/unit",unit); } /*:813*//*814:*/ #line 159 "./graphsettings.w" void GraphSettingsRelativeTab::showColorPicker() { QColor color= QColorDialog::getColor(QColor(colorEdit->text()),this); colorEdit->setText(color.name()); } #line 62 "./settings.w" #line 1 "./advancedsettings.w" /*:814*/ #line 607 "./typica.w" /*939:*/ #line 682 "./dataqsdk.w" DataqSdkDeviceConfWidget::DataqSdkDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), deviceIdStack(new QStackedWidget) { QVBoxLayout*layout= new QVBoxLayout; QCheckBox*autoDetect= new QCheckBox("Automatically select device"); layout->addWidget(autoDetect); QWidget*autoLayerWidget= new QWidget; QHBoxLayout*autoLayerLayout= new QHBoxLayout; QLabel*autoLabel= new QLabel(tr("Device number")); QSpinBox*autoNumber= new QSpinBox; autoNumber->setMinimum(1); autoNumber->setMaximum(99); autoLayerLayout->addWidget(autoLabel); autoLayerLayout->addWidget(autoNumber); autoLayerWidget->setLayout(autoLayerLayout); QWidget*fixedLayerWidget= new QWidget; QHBoxLayout*fixedLayerLayout= new QHBoxLayout; QLabel*fixedLabel= new QLabel(tr("Device port")); QComboBox*portSelection= new QComboBox; portSelection->setEditable(true); portSelection->addItems(DataqSdkDevice::detectHardware()); fixedLayerLayout->addWidget(fixedLabel); fixedLayerLayout->addWidget(portSelection); fixedLayerWidget->setLayout(fixedLayerLayout); deviceIdStack->addWidget(autoLayerWidget); deviceIdStack->addWidget(fixedLayerWidget); layout->addWidget(deviceIdStack); QPushButton*addChannelButton= new QPushButton(tr("Add Channel")); layout->addWidget(addChannelButton); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 714 "./dataqsdk.w" for(int i= 0;isetChecked(node.attribute("value")=="true"?true:false); } else if(node.attribute("name")=="deviceNumber") { autoNumber->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="port") { int index= portSelection->findText(node.attribute("value")); if(index> -1) { portSelection->setCurrentIndex(index); } else { portSelection->setEditText(node.attribute("value")); } } } updateAutoSelect(autoDetect->isChecked()); updateDeviceNumber(autoNumber->value()); updatePort(portSelection->currentText()); connect(autoDetect,SIGNAL(toggled(bool)),this,SLOT(updateAutoSelect(bool))); connect(autoNumber,SIGNAL(valueChanged(int)),this,SLOT(updateDeviceNumber(int))); connect(portSelection,SIGNAL(currentIndexChanged(QString)),this,SLOT(updatePort(QString))); connect(addChannelButton,SIGNAL(clicked()),this,SLOT(addChannel())); setLayout(layout); } /*:939*//*940:*/ #line 758 "./dataqsdk.w" void DataqSdkDeviceConfWidget::updateAutoSelect(bool automatic) { if(automatic) { updateAttribute("autoSelect","true"); deviceIdStack->setCurrentIndex(0); } else { updateAttribute("autoSelect","false"); deviceIdStack->setCurrentIndex(1); } } /*:940*//*941:*/ #line 775 "./dataqsdk.w" void DataqSdkDeviceConfWidget::updateDeviceNumber(int deviceNumber) { updateAttribute("deviceNumber",QString("%1").arg(deviceNumber)); } void DataqSdkDeviceConfWidget::updatePort(QString portId) { updateAttribute("port",portId); } /*:941*//*942:*/ #line 788 "./dataqsdk.w" void DataqSdkDeviceConfWidget::addChannel() { insertChildNode(tr("Channel"),"dataqsdkchannel"); } /*:942*//*945:*/ #line 868 "./dataqsdk.w" DataqSdkChannelConfWidget::DataqSdkChannelConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), startButton(new QPushButton(tr("Start"))), resetButton(new QPushButton(tr("Reset"))), stopButton(new QPushButton(tr("Stop"))), calibrator(new LinearCalibrator), currentMeasurement(new QLineEdit),minimumMeasurement(new QLineEdit), maximumMeasurement(new QLineEdit),averageMeasurement(new QLineEdit), currentMapped(new QLineEdit),minimumMapped(new QLineEdit), maximumMapped(new QLineEdit),averageMapped(new QLineEdit), rmCount(0),cmCount(0), rmin(std::numeric_limits ::max()), rmax(std::numeric_limits ::min()),rmean(0), cmin(std::numeric_limits ::max()), cmax(std::numeric_limits ::min()),cmean(0) { /*949:*/ #line 1107 "./dataqsdk.w" QDomElement parentReference= model->referenceElement(model->data(index.parent(),Qt::UserRole).toString()); QDomNodeList deviceConfigData= parentReference.elementsByTagName("attribute"); QDomElement deviceNode; QString configPort; QString configAuto; for(int i= 0;isetEnabled(false); stopButton->setEnabled(false); connect(startButton,SIGNAL(clicked()),this,SLOT(startCalibration())); connect(resetButton,SIGNAL(clicked()),this,SLOT(resetCalibration())); connect(stopButton,SIGNAL(clicked()),this,SLOT(stopCalibration())); QVBoxLayout*layout= new QVBoxLayout; QFormLayout*topLayout= new QFormLayout; QLineEdit*columnEdit= new QLineEdit; topLayout->addRow(tr("Column name"),columnEdit); QComboBox*unitSelector= new QComboBox; unitSelector->addItem(tr("Temperature")); unitSelector->addItem(tr("Control")); topLayout->addRow(tr("Measurement type"),unitSelector); QCheckBox*smoothingBox= new QCheckBox(tr("Enable smoothing")); topLayout->addRow(smoothingBox); layout->addLayout(topLayout); QCheckBox*hideSeries= new QCheckBox(tr("Hide this channel")); topLayout->addRow(hideSeries); QLabel*calibrationLabel= new QLabel(tr("Calibration settings")); layout->addWidget(calibrationLabel); QHBoxLayout*calibrationLayout= new QHBoxLayout; QFormLayout*calibrationControlsLayout= new QFormLayout; QLineEdit*measuredLowerEdit= new QLineEdit; measuredLowerEdit->setText("0"); QLineEdit*measuredUpperEdit= new QLineEdit; measuredUpperEdit->setText("10"); QLineEdit*mappedLowerEdit= new QLineEdit; mappedLowerEdit->setText("0"); QLineEdit*mappedUpperEdit= new QLineEdit; mappedUpperEdit->setText("10"); calibrationControlsLayout->addRow(tr("Measured lower value"),measuredLowerEdit); calibrationControlsLayout->addRow(tr("Mapped lower value"),mappedLowerEdit); calibrationControlsLayout->addRow(tr("Measured upper value"),measuredUpperEdit); calibrationControlsLayout->addRow(tr("Mapped upper value"),mappedUpperEdit); QCheckBox*closedBox= new QCheckBox(tr("Closed range")); calibrationControlsLayout->addRow(closedBox); QLineEdit*sensitivityEdit= new QLineEdit; sensitivityEdit->setText("0"); calibrationControlsLayout->addRow(tr("Discrete interval skip"),sensitivityEdit); QVBoxLayout*calibrationTestLayout= new QVBoxLayout; QHBoxLayout*deviceControlLayout= new QHBoxLayout; deviceControlLayout->addWidget(startButton); deviceControlLayout->addWidget(resetButton); deviceControlLayout->addWidget(stopButton); QFormLayout*indicatorLayout= new QFormLayout; currentMeasurement->setReadOnly(true); minimumMeasurement->setReadOnly(true); maximumMeasurement->setReadOnly(true); averageMeasurement->setReadOnly(true); currentMapped->setReadOnly(true); minimumMapped->setReadOnly(true); maximumMapped->setReadOnly(true); averageMapped->setReadOnly(true); indicatorLayout->addRow(tr("Measured Values"),new QWidget); indicatorLayout->addRow(tr("Current"),currentMeasurement); indicatorLayout->addRow(tr("Minimum"),minimumMeasurement); indicatorLayout->addRow(tr("Maximum"),maximumMeasurement); indicatorLayout->addRow(tr("Mean"),averageMeasurement); indicatorLayout->addRow(tr("Mapped Values"),new QWidget); indicatorLayout->addRow(tr("Current Mapped"),currentMapped); indicatorLayout->addRow(tr("Minimum Mapped"),minimumMapped); indicatorLayout->addRow(tr("Maximum Mapped"),maximumMapped); indicatorLayout->addRow(tr("Mean Mapped"),averageMapped); calibrationTestLayout->addLayout(deviceControlLayout); calibrationTestLayout->addLayout(indicatorLayout); calibrationLayout->addLayout(calibrationControlsLayout); calibrationLayout->addLayout(calibrationTestLayout); layout->addLayout(calibrationLayout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 955 "./dataqsdk.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="type") { unitSelector->setCurrentIndex(unitSelector->findText(node.attribute("value"))); } else if(node.attribute("name")=="smoothing") { smoothingBox->setChecked(node.attribute("value")=="true"); } else if(node.attribute("name")=="calibrationMeasuredLower") { measuredLowerEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="calibrationMeasuredUpper") { measuredUpperEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="calibrationMappedLower") { mappedLowerEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="calibrationMappedUpper") { mappedUpperEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="calibrationClosedInterval") { closedBox->setChecked(node.attribute("value")=="true"); } else if(node.attribute("name")=="calibrationSensitivity") { sensitivityEdit->setText(node.attribute("value")); } else if(node.attribute("name")=="hidden") { hideSeries->setChecked(node.attribute("value")=="true"); } } updateColumnName(columnEdit->text()); updateUnits(unitSelector->currentText()); updateSmoothingEnabled(smoothingBox->isChecked()); updateMeasuredLower(measuredLowerEdit->text()); updateMeasuredUpper(measuredUpperEdit->text()); updateMappedLower(mappedLowerEdit->text()); updateMappedUpper(mappedUpperEdit->text()); updateClosedInterval(closedBox->isChecked()); updateSensitivity(sensitivityEdit->text()); updateHidden(hideSeries->isChecked()); connect(columnEdit,SIGNAL(textChanged(QString)), this,SLOT(updateColumnName(QString))); connect(unitSelector,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateUnits(QString))); connect(smoothingBox,SIGNAL(toggled(bool)), this,SLOT(updateSmoothingEnabled(bool))); connect(measuredLowerEdit,SIGNAL(textChanged(QString)), this,SLOT(updateMeasuredLower(QString))); connect(mappedLowerEdit,SIGNAL(textChanged(QString)), this,SLOT(updateMappedLower(QString))); connect(measuredUpperEdit,SIGNAL(textChanged(QString)), this,SLOT(updateMeasuredUpper(QString))); connect(mappedUpperEdit,SIGNAL(textChanged(QString)), this,SLOT(updateMappedUpper(QString))); connect(closedBox,SIGNAL(toggled(bool)), this,SLOT(updateClosedInterval(bool))); connect(sensitivityEdit,SIGNAL(textChanged(QString)), this,SLOT(updateSensitivity(QString))); connect(hideSeries,SIGNAL(toggled(bool)),this,SLOT(updateHidden(bool))); setLayout(layout); } /*:945*//*946:*/ #line 1038 "./dataqsdk.w" void DataqSdkChannelConfWidget::updateUnits(const QString&unit) { updateAttribute("type",unit); } /*:946*//*947:*/ #line 1047 "./dataqsdk.w" void DataqSdkChannelConfWidget::updateMeasuredLower(const QString&value) { updateAttribute("calibrationMeasuredLower",value); calibrator->setMeasuredLower(value.toDouble()); } void DataqSdkChannelConfWidget::updateMeasuredUpper(const QString&value) { updateAttribute("calibrationMeasuredUpper",value); calibrator->setMeasuredUpper(value.toDouble()); } void DataqSdkChannelConfWidget::updateMappedLower(const QString&value) { updateAttribute("calibrationMappedLower",value); calibrator->setMappedLower(value.toDouble()); } void DataqSdkChannelConfWidget::updateMappedUpper(const QString&value) { updateAttribute("calibrationMappedUpper",value); calibrator->setMappedUpper(value.toDouble()); } void DataqSdkChannelConfWidget::updateClosedInterval(bool closed) { updateAttribute("calibrationClosedInterval",closed?"true":"false"); calibrator->setClosedRange(closed); } void DataqSdkChannelConfWidget::updateSmoothingEnabled(bool enabled) { updateAttribute("smoothing",enabled?"true":"false"); } void DataqSdkChannelConfWidget::updateSensitivity(const QString&value) { updateAttribute("calibrationSensitivity",value); calibrator->setSensitivity(value.toDouble()); } void DataqSdkChannelConfWidget::updateHidden(bool hidden) { updateAttribute("hidden",hidden?"true":"false"); } /*:947*//*950:*/ #line 1136 "./dataqsdk.w" void DataqSdkChannelConfWidget::startCalibration() { startButton->setEnabled(false); stopButton->setEnabled(true); resetButton->setEnabled(true); calibrationDevice= new DataqSdkDevice(deviceID); Channel*channel; for(unsigned int i= 0;i<=channelOfInterest;i++) { channel= calibrationDevice->newChannel(Units::Unitless); } connect(channel,SIGNAL(newData(Measurement)),this,SLOT(updateInput(Measurement))); connect(channel,SIGNAL(newData(Measurement)),calibrator,SLOT(newMeasurement(Measurement))); connect(calibrator,SIGNAL(newData(Measurement)),this,SLOT(updateOutput(Measurement))); calibrationDevice->setClockRate(6.0/(1.0+channelOfInterest)); calibrationDevice->start(); } void DataqSdkChannelConfWidget::stopCalibration() { startButton->setEnabled(true); stopButton->setEnabled(false); resetButton->setEnabled(false); calibrationDevice->deleteLater(); /*952:*/ #line 1181 "./dataqsdk.w" rmCount= 0; cmCount= 0; rmin= std::numeric_limits ::max(); rmax= std::numeric_limits ::min(); rmean= 0; cmin= std::numeric_limits ::max(); cmax= std::numeric_limits ::min(); cmean= 0; /*:952*/ #line 1161 "./dataqsdk.w" } /*:950*//*951:*/ #line 1172 "./dataqsdk.w" void DataqSdkChannelConfWidget::resetCalibration() { /*952:*/ #line 1181 "./dataqsdk.w" rmCount= 0; cmCount= 0; rmin= std::numeric_limits ::max(); rmax= std::numeric_limits ::min(); rmean= 0; cmin= std::numeric_limits ::max(); cmax= std::numeric_limits ::min(); cmean= 0; /*:952*/ #line 1175 "./dataqsdk.w" } /*:951*//*953:*/ #line 1195 "./dataqsdk.w" void DataqSdkChannelConfWidget::updateInput(Measurement measure) { double nv= measure.temperature(); currentMeasurement->setText(QString("%1").arg(nv)); rmin= qMin(nv,rmin); minimumMeasurement->setText(QString("%1").arg(rmin)); rmax= qMax(nv,rmax); maximumMeasurement->setText(QString("%1").arg(rmax)); rmean= ((rmean*rmCount)+nv)/(rmCount+1); rmCount++; averageMeasurement->setText(QString("%1").arg(rmean)); } void DataqSdkChannelConfWidget::updateOutput(Measurement measure) { double nv= measure.temperature(); currentMapped->setText(QString("%1").arg(nv)); cmin= qMin(nv,cmin); minimumMapped->setText(QString("%1").arg(cmin)); cmax= qMax(nv,cmax); maximumMapped->setText(QString("%1").arg(cmax)); cmean= ((cmean*cmCount)+nv)/(cmCount+1); cmCount++; averageMapped->setText(QString("%1").arg(cmean)); } /*:953*//*954:*/ #line 1224 "./dataqsdk.w" void DataqSdkChannelConfWidget::updateColumnName(const QString&value) { updateAttribute("column",value); } /*:954*/ #line 608 "./typica.w" /*978:*/ #line 393 "./scales.w" SerialScaleConfWidget::SerialScaleConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), port(new PortSelector),baud(new BaudSelector),parity(new ParitySelector), flow(new FlowSelector),stop(new StopSelector) { QFormLayout*layout= new QFormLayout; layout->addRow(tr("Port:"),port); connect(port,SIGNAL(currentIndexChanged(QString)), this,SLOT(updatePort(QString))); connect(port,SIGNAL(editTextChanged(QString)), this,SLOT(updatePort(QString))); layout->addRow(tr("Baud:"),baud); connect(baud,SIGNAL(currentIndexChanged(QString)), this,SLOT(updateBaudRate(QString))); layout->addRow(tr("Parity:"),parity); connect(parity,SIGNAL(currentIndexChanged(int)), this,SLOT(updateParity(int))); layout->addRow(tr("Flow Control:"),flow); connect(flow,SIGNAL(currentIndexChanged(int)), this,SLOT(updateFlowControl(int))); layout->addRow(tr("Stop Bits:"),stop); connect(stop,SIGNAL(currentIndexChanged(int)), this,SLOT(updateStopBits(int))); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 418 "./scales.w" for(int i= 0;ifindText(node.attribute("value")); if(j>=0) { port->setCurrentIndex(j); } else { port->insertItem(0,node.attribute("value")); port->setCurrentIndex(0); } } else if(node.attribute("name")=="baudrate") { baud->setCurrentIndex(baud->findText(node.attribute("value"))); } else if(node.attribute("name")=="parity") { parity->setCurrentIndex(parity->findData(node.attribute("value"))); } else if(node.attribute("name")=="flowcontrol") { flow->setCurrentIndex(flow->findData(node.attribute("value"))); } else if(node.attribute("name")=="stopbits") { stop->setCurrentIndex(stop->findData(node.attribute("value"))); } } updatePort(port->currentText()); updateBaudRate(baud->currentText()); updateParity(parity->currentIndex()); updateFlowControl(flow->currentIndex()); updateStopBits(stop->currentIndex()); setLayout(layout); } /*:978*//*979:*/ #line 462 "./scales.w" void SerialScaleConfWidget::updatePort(const QString&newPort) { updateAttribute("port",newPort); } void SerialScaleConfWidget::updateBaudRate(const QString&rate) { updateAttribute("baudrate",rate); } void SerialScaleConfWidget::updateParity(int index) { updateAttribute("parity",parity->itemData(index).toString()); } void SerialScaleConfWidget::updateFlowControl(int index) { updateAttribute("flowcontrol",flow->itemData(index).toString()); } void SerialScaleConfWidget::updateStopBits(int index) { updateAttribute("stopbits",stop->itemData(index).toString()); } /*:979*/ #line 609 "./typica.w" /*991:*/ #line 195 "./valueannotation.w" void ValueAnnotation::newMeasurement(Measurement measure) { for(int i= 0;i values.at(i)-tolerance&& measure.temperature() -1) { emit annotation(annotations.at(lastIndex),measurementColumn,annotationColumn); } } /*:992*//*993:*/ #line 228 "./valueannotation.w" void ValueAnnotation::setAnnotation(double value,const QString&annotation) { values.append(value); annotations.append(annotation); } /*:993*//*994:*/ #line 237 "./valueannotation.w" void ValueAnnotation::setAnnotationColumn(int column) { annotationColumn= column; } void ValueAnnotation::setTemperatureColumn(int column) { measurementColumn= column; } void ValueAnnotation::setTolerance(double epsilon) { tolerance= epsilon; } /*:994*//*995:*/ #line 255 "./valueannotation.w" ValueAnnotation::ValueAnnotation():QObject(), lastIndex(-1),annotationColumn(2),measurementColumn(1),tolerance(0.05) { } /*:995*/ #line 610 "./typica.w" /*983:*/ #line 33 "./valueannotation.w" ValueAnnotationConfWidget::ValueAnnotationConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), tablemodel(new SaltModel(2)) { QFormLayout*layout= new QFormLayout; QLineEdit*source= new QLineEdit; layout->addRow(tr("Source column name:"),source); QCheckBox*noteOnStart= new QCheckBox(tr("Produce Start State Annotation")); noteOnStart->setChecked(true); layout->addRow(noteOnStart); tablemodel->setHeaderData(0,Qt::Horizontal,"Value"); tablemodel->setHeaderData(1,Qt::Horizontal,"Annotation"); QTableView*annotationTable= new QTableView; annotationTable->setModel(tablemodel); NumericDelegate*delegate= new NumericDelegate; annotationTable->setItemDelegateForColumn(0,delegate); layout->addRow(tr("Annotations for values:"),annotationTable); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 52 "./valueannotation.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="emitOnStart") { noteOnStart->setChecked(node.attribute("value")=="true"?true:false); } else if(node.attribute("name")=="measuredValues") { /*895:*/ #line 18699 "./typica.w" QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } QStringList itemList= data.split(","); /*:895*/ #line 66 "./valueannotation.w" int column= 0; /*896:*/ #line 18711 "./typica.w" for(int i= 0;isetData(tablemodel->index(i,column), QVariant(itemList.at(i).toDouble()), Qt::DisplayRole); } /*:896*/ #line 68 "./valueannotation.w" } else if(node.attribute("name")=="annotations") { /*984:*/ #line 89 "./valueannotation.w" QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } QStringList itemList= data.split(","); for(int i= 0;isetData(tablemodel->index(i,column), QVariant(itemList.at(i)), Qt::DisplayRole); } /*:985*/ #line 74 "./valueannotation.w" } } updateSourceColumn(source->text()); updateStart(noteOnStart->isChecked()); updateAnnotations(); connect(source,SIGNAL(textEdited(QString)),this,SLOT(updateSourceColumn(QString))); connect(noteOnStart,SIGNAL(toggled(bool)),this,SLOT(updateStart(bool))); connect(tablemodel,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updateAnnotations())); setLayout(layout); } /*:983*//*986:*/ #line 115 "./valueannotation.w" void ValueAnnotationConfWidget::updateAnnotations() { updateAttribute("measuredValues",tablemodel->arrayLiteral(0,Qt::DisplayRole)); updateAttribute("annotations",tablemodel->arrayLiteral(1,Qt::DisplayRole)); } /*:986*//*987:*/ #line 125 "./valueannotation.w" void ValueAnnotationConfWidget::updateSourceColumn(const QString&source) { updateAttribute("source",source); } void ValueAnnotationConfWidget::updateStart(bool noteOnStart) { updateAttribute("emitOnStart",noteOnStart?"true":"false"); } /*:987*/ #line 611 "./typica.w" /*:4*//*818:*/ #line 60 "./advancedsettings.w" /*816:*/ #line 26 "./advancedsettings.w" AdvancedSettingsWidget::AdvancedSettingsWidget():QWidget(NULL) { QSettings settings; QFormLayout*layout= new QFormLayout; QCheckBox*logDiagnostics= new QCheckBox; logDiagnostics->setCheckState( settings.value("settings/advanced/logging",false).toBool()? Qt::Checked:Qt::Unchecked); connect(logDiagnostics,SIGNAL(toggled(bool)),this,SLOT(enableDiagnosticLogging(bool))); layout->addRow(tr("Enable diagnostic logging"),logDiagnostics); setLayout(layout); } /*:816*//*817:*/ #line 43 "./advancedsettings.w" void AdvancedSettingsWidget::enableDiagnosticLogging(bool enabled) { QSettings settings; settings.setValue("settings/advanced/logging",enabled); if(enabled) { qInstallMsgHandler(messageFileOutput); } else { qInstallMsgHandler(0); } } /*:817*/ #line 61 "./advancedsettings.w" #line 17377 "./typica.w" /*:818*//*865:*/ #line 639 "./unsupportedserial.w" /*840:*/ #line 58 "./unsupportedserial.w" UnsupportedSerialDeviceConfWidget::UnsupportedSerialDeviceConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), deviceSettingsModel(new SaltModel(2)), scriptEditor(new QTextEdit) { scriptEditor->setTabStopWidth(20); QVBoxLayout*dummyLayout= new QVBoxLayout; QTabWidget*central= new QTabWidget; QWidget*deviceConfigurationWidget= new QWidget; QVBoxLayout*deviceConfigurationLayout= new QVBoxLayout; QPushButton*addChannelButton= new QPushButton(tr("Add Channel")); deviceConfigurationLayout->addWidget(addChannelButton); connect(addChannelButton,SIGNAL(clicked()),this,SLOT(addChannel())); QLabel*deviceSettingsLabel= new QLabel(tr("Device Settings:")); deviceConfigurationLayout->addWidget(deviceSettingsLabel); QTableView*deviceSettingsView= new QTableView; deviceSettingsModel->setHeaderData(0,Qt::Horizontal,tr("Key")); deviceSettingsModel->setHeaderData(1,Qt::Horizontal,tr("Value")); deviceSettingsView->setModel(deviceSettingsModel); deviceConfigurationLayout->addWidget(deviceSettingsView); deviceConfigurationWidget->setLayout(deviceConfigurationLayout); central->addTab(deviceConfigurationWidget,tr("Configuration")); central->addTab(scriptEditor,tr("Script")); dummyLayout->addWidget(central); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 86 "./unsupportedserial.w" for(int i= 0;i 3) { data.chop(2); data= data.remove(0,2); } QStringList keyList= data.split(", "); for(int j= 0;jsetData(deviceSettingsModel->index(j,column), QVariant(keyList.at(j)), Qt::EditRole); } } else if(node.attribute("name")=="script") { scriptEditor->setPlainText(node.attribute("value")); } } connect(deviceSettingsModel,SIGNAL(dataChanged(QModelIndex,QModelIndex)), this,SLOT(updateConfiguration())); connect(scriptEditor,SIGNAL(textChanged()),this,SLOT(saveScript())); setLayout(dummyLayout); } /*:840*//*841:*/ #line 131 "./unsupportedserial.w" void UnsupportedSerialDeviceConfWidget::updateConfiguration() { updateAttribute("keys",deviceSettingsModel->arrayLiteral(0,Qt::DisplayRole)); updateAttribute("values",deviceSettingsModel->arrayLiteral(1,Qt::DisplayRole)); } /*:841*//*842:*/ #line 144 "./unsupportedserial.w" void UnsupportedSerialDeviceConfWidget::saveScript() { updateAttribute("script",scriptEditor->toPlainText()); } /*:842*//*843:*/ #line 155 "./unsupportedserial.w" void UnsupportedSerialDeviceConfWidget::addChannel() { insertChildNode(tr("Channel"),"unsupporteddevicechannel"); } /*:843*//*845:*/ #line 183 "./unsupportedserial.w" UnsupportedDeviceChannelConfWidget::UnsupportedDeviceChannelConfWidget(DeviceTreeModel*model, const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), channelSettingsModel(new SaltModel(2)) { QFormLayout*layout= new QFormLayout; QLineEdit*columnName= new QLineEdit; layout->addRow(tr("Column Name:"),columnName); QCheckBox*hideSeries= new QCheckBox("Hide this channel"); layout->addRow(hideSeries); QTableView*channelSettings= new QTableView; channelSettingsModel->setHeaderData(0,Qt::Horizontal,"Key"); channelSettingsModel->setHeaderData(1,Qt::Horizontal,"Value"); channelSettings->setModel(channelSettingsModel); layout->addRow(channelSettings); setLayout(layout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 200 "./unsupportedserial.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="hidden") { hideSeries->setChecked(node.attribute("value")=="true"); } else if(node.attribute("name")=="keys"||node.attribute("name")=="values") { int column= 0; if(node.attribute("name")=="values") { column= 1; } QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } QStringList keyList= data.split(", "); for(int j= 0;jsetData(channelSettingsModel->index(j,column), QVariant(keyList.at(j)), Qt::EditRole); } } } connect(columnName,SIGNAL(textEdited(QString)),this,SLOT(updateColumnName(QString))); connect(hideSeries,SIGNAL(toggled(bool)),this,SLOT(updateHidden(bool))); connect(channelSettingsModel,SIGNAL(dataChanged(QModelIndex,QModelIndex)), this,SLOT(updateConfiguration())); } /*:845*//*846:*/ #line 244 "./unsupportedserial.w" void UnsupportedDeviceChannelConfWidget::updateColumnName(const QString&value) { updateAttribute("columnname",value); } void UnsupportedDeviceChannelConfWidget::updateHidden(bool hidden) { updateAttribute("hidden",hidden?"true":"false"); } void UnsupportedDeviceChannelConfWidget::updateConfiguration() { updateAttribute("keys",channelSettingsModel->arrayLiteral(0,Qt::DisplayRole)); updateAttribute("values",channelSettingsModel->arrayLiteral(1,Qt::DisplayRole)); } /*:846*/ #line 640 "./unsupportedserial.w" /*853:*/ #line 371 "./unsupportedserial.w" void JavaScriptDevice::start() { QScriptValue object= scriptengine->newQObject(this); /*854:*/ #line 390 "./unsupportedserial.w" QScriptValue settingsObject= scriptengine->newObject(); QVariantMap::const_iterator i= deviceSettings.constBegin(); while(i!=deviceSettings.constEnd()) { settingsObject.setProperty(i.key(),i.value().toString()); i++; } object.setProperty("settings",settingsObject); /*:854*/ #line 375 "./unsupportedserial.w" /*855:*/ #line 405 "./unsupportedserial.w" QScriptValue channelsArray= scriptengine->newArray(channelCount()); for(int i= 0;inewQObject(getChannel(i)); QScriptValue channelSettingsObject= scriptengine->newObject(); QVariantMap::const_iterator j= channelSettings.at(i).constBegin(); while(j!=channelSettings.at(i).constEnd()) { channelSettingsObject.setProperty(j.key(),j.value().toString()); j++; } channelObject.setProperty("settings",channelSettingsObject); channelsArray.setProperty(i,channelObject); } object.setProperty("channels",channelsArray); /*:855*/ #line 376 "./unsupportedserial.w" QScriptContext*context= scriptengine->currentContext(); QScriptValue oldThis= context->thisObject(); context->setThisObject(object); QScriptValue result= scriptengine->evaluate(deviceScript); QScriptEngine*engine= scriptengine; /*170:*/ #line 3943 "./typica.w" if(engine->hasUncaughtException()) { int line= engine->uncaughtExceptionLineNumber(); qDebug()<<"Uncaught excpetion at line "<uncaughtExceptionBacktrace()) { qDebug()<setThisObject(oldThis); } /*:853*//*858:*/ #line 446 "./unsupportedserial.w" void JavaScriptDevice::stop() { emit deviceStopRequested(); } /*:858*//*859:*/ #line 459 "./unsupportedserial.w" JavaScriptDevice::JavaScriptDevice(const QModelIndex&index, QScriptEngine*engine): QObject(NULL),scriptengine(engine) { DeviceTreeModel*model= (DeviceTreeModel*)(index.model()); QDomElement deviceReferenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList deviceConfigData= deviceReferenceElement.elementsByTagName("attribute"); QDomElement node; QStringList deviceKeys; QStringList deviceValues; for(int i= 0;i 3) { data.chop(2); data= data.remove(0,2); } deviceKeys= data.split(", "); } else if(node.attribute("name")=="values") { QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } deviceValues= data.split(", "); } else if(node.attribute("name")=="script") { deviceScript= node.attribute("value"); } deviceSettings.insert(node.attribute("name"),node.attribute("value")); } for(int i= 0;ihasChildren(index)) { for(int i= 0;irowCount(index);i++) { QModelIndex channelIndex= model->index(i,0,index); QDomElement channelReference= model->referenceElement(model->data(channelIndex,32).toString()); channelList.append(new Channel); QDomElement channelReferenceElement= model->referenceElement(model->data(channelIndex,Qt::UserRole).toString()); QDomNodeList channelConfigData= channelReferenceElement.elementsByTagName("attribute"); QStringList channelKeys; QStringList channelValues; for(int j= 0;j 3) { data.chop(2); data= data.remove(0,2); } channelKeys= data.split(", "); } else if(node.attribute("name")=="values") { QString data= node.attribute("value"); if(data.length()> 3) { data.chop(2); data= data.remove(0,2); } channelValues= data.split(", "); } else if(node.attribute("name")=="hidden") { hiddenState.append(node.attribute("value")=="true"); } else if(node.attribute("name")=="columnname") { columnNames.append(node.attribute("value")); } } QVariantMap cs; for(int j= 0;jdata(channelIndex,Qt::DisplayRole).toString()); channelUnits.append(Units::Fahrenheit); } } } /*:859*//*860:*/ #line 564 "./unsupportedserial.w" int JavaScriptDevice::channelCount() { return channelList.length(); } Channel*JavaScriptDevice::getChannel(int channel) { return channelList.at(channel); } bool JavaScriptDevice::isChannelHidden(int channel) { return hiddenState.at(channel); } Units::Unit JavaScriptDevice::expectedChannelUnit(int channel) { return channelUnits.at(channel); } QString JavaScriptDevice::channelColumnName(int channel) { if(channel>=0&&channelsetMinimum(40); sampleRate->setMaximum(600); sampleRate->setSingleStep(40); sampleRate->setValue(360); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 44 "./phidgets.w" for(int i= 0;isetValue(node.attribute("value").toInt()); } } updateRate(sampleRate->value()); connect(sampleRate,SIGNAL(valueChanged(int)),this,SLOT(updateRate(int))); connect(addChannelButton,SIGNAL(clicked()),this,SLOT(addChannel())); layout->addRow(addChannelButton); layout->addRow(tr("Sample rate:"),sampleRate); setLayout(layout); } /*:872*//*873:*/ #line 66 "./phidgets.w" void PhidgetsTemperatureSensorConfWidget::addChannel() { insertChildNode(tr("Channel"),"phidgets1048channel"); } /*:873*//*874:*/ #line 74 "./phidgets.w" void PhidgetsTemperatureSensorConfWidget::updateRate(int ms) { updateAttribute("sampleRate",QString("%1").arg(ms)); } /*:874*//*876:*/ #line 103 "./phidgets.w" PhidgetTemperatureSensorChannelConfWidget::PhidgetTemperatureSensorChannelConfWidget( DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index), tcType(new QComboBox) { QFormLayout*layout= new QFormLayout; QLineEdit*columnName= new QLineEdit; layout->addRow(tr("Column Name:"),columnName); QCheckBox*hideSeries= new QCheckBox("Hide this channel"); layout->addRow(hideSeries); layout->addRow(tr("Thermocouple Type:"),tcType); tcType->addItem("Type K","1"); tcType->addItem("Type J","2"); tcType->addItem("Type E","3"); tcType->addItem("Type T","4"); QSpinBox*channel= new QSpinBox; layout->addRow(tr("Channel:"),channel); channel->setMinimum(0); channel->setMaximum(3); setLayout(layout); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 124 "./phidgets.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="hidden") { hideSeries->setChecked(node.attribute("value")=="true"); } else if(node.attribute("name")=="tctype") { tcType->setCurrentIndex(tcType->findData(node.attribute("value"))); } else if(node.attribute("name")=="channel") { channel->setValue(node.attribute("value").toInt()); } } updateColumnName(columnName->text()); updateHidden(hideSeries->isChecked()); updateTC(tcType->currentIndex()); updateChannel(channel->value()); connect(columnName,SIGNAL(textEdited(QString)),this,SLOT(updateColumnName(QString))); connect(hideSeries,SIGNAL(toggled(bool)),this,SLOT(updateHidden(bool))); connect(tcType,SIGNAL(currentIndexChanged(int)),this,SLOT(updateTC(int))); connect(channel,SIGNAL(valueChanged(int)),this,SLOT(updateChannel(int))); } /*:876*//*877:*/ #line 157 "./phidgets.w" void PhidgetTemperatureSensorChannelConfWidget::updateColumnName(const QString&value) { updateAttribute("columnname",value); } void PhidgetTemperatureSensorChannelConfWidget::updateHidden(bool hidden) { updateAttribute("hidden",hidden?"true":"false"); } void PhidgetTemperatureSensorChannelConfWidget::updateTC(int index) { updateAttribute("tctype",tcType->itemData(index).toString()); } void PhidgetTemperatureSensorChannelConfWidget::updateChannel(int channel) { updateAttribute("channel",QString("%1").arg(channel)); } /*:877*//*881:*/ #line 246 "./phidgets.w" PhidgetsTemperatureSensor::PhidgetsTemperatureSensor(const QModelIndex&index) :QObject(NULL),driver("phidget21"),device(NULL) { DeviceTreeModel*model= (DeviceTreeModel*)(index.model()); QDomElement deviceReferenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList deviceConfigData= deviceReferenceElement.elementsByTagName("attribute"); QDomElement node; for(int i= 0;ihasChildren(index)) { for(int i= 0;irowCount(index);i++) { QModelIndex channelIndex= model->index(i,0,index); QDomElement channelReference= model->referenceElement(model->data(channelIndex,32).toString()); QDomElement channelReferenceElement= model->referenceElement(model->data(channelIndex,Qt::UserRole).toString()); QDomNodeList channelConfigData= channelReferenceElement.elementsByTagName("attribute"); for(int j= 0;jdata(channelIndex,Qt::DisplayRole).toString()); } } } /*:881*//*882:*/ #line 306 "./phidgets.w" int PhidgetsTemperatureSensor::channelCount() { return channelList.length(); } Channel*PhidgetsTemperatureSensor::getChannel(int channel) { return channelList.at(channel); } /*:882*//*883:*/ #line 319 "./phidgets.w" bool PhidgetsTemperatureSensor::isChannelHidden(int channel) { return hiddenState.at(channel); } QString PhidgetsTemperatureSensor::channelColumnName(int channel) { if(channel>=0&&channel=0&&channelinput(measure); } } /*:886*//*887:*/ #line 426 "./phidgets.w" void PhidgetsTemperatureSensor::stop() { sampleTimer.stop(); closeDevice(device); deleteDevice(device); driver.unload(); } /*:887*/ #line 438 "./phidgets.w" /*:888*//*916:*/ #line 265 "./rate.w" /*912:*/ #line 191 "./rate.w" RateOfChangeConfWidget::RateOfChangeConfWidget(DeviceTreeModel*model,const QModelIndex&index) :BasicDeviceConfigurationWidget(model,index) { QFormLayout*layout= new QFormLayout; QLineEdit*column= new QLineEdit; layout->addRow(tr("Primary series column name:"),column); QSpinBox*cacheTime= new QSpinBox; cacheTime->setMinimum(0); cacheTime->setMaximum(300); layout->addRow(tr("Cache time:"),cacheTime); QSpinBox*scaleTime= new QSpinBox; scaleTime->setMinimum(1); scaleTime->setMaximum(300); layout->addRow(tr("Scale time:"),scaleTime); /*744:*/ #line 15632 "./typica.w" QDomElement referenceElement= model->referenceElement(model->data(index,Qt::UserRole).toString()); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; /*:744*/ #line 206 "./rate.w" for(int i= 0;isetText(node.attribute("value")); } else if(node.attribute("name")=="cache") { cacheTime->setValue(node.attribute("value").toInt()); } else if(node.attribute("name")=="scale") { scaleTime->setValue(node.attribute("value").toInt()); } } updateColumn(column->text()); updateCacheTime(cacheTime->text()); updateScaleTime(scaleTime->text()); connect(column,SIGNAL(textEdited(QString)),this,SLOT(updateColumn(QString))); connect(cacheTime,SIGNAL(valueChanged(QString)),this,SLOT(updateCacheTime(QString))); connect(scaleTime,SIGNAL(valueChanged(QString)),this,SLOT(updateScaleTime(QString))); setLayout(layout); } /*:912*//*913:*/ #line 235 "./rate.w" void RateOfChangeConfWidget::updateColumn(const QString&column) { updateAttribute("column",column); } void RateOfChangeConfWidget::updateCacheTime(const QString&seconds) { updateAttribute("cache",seconds); } void RateOfChangeConfWidget::updateScaleTime(const QString&seconds) { updateAttribute("scale",seconds); } /*:913*/ #line 266 "./rate.w" #line 18834 "./typica.w" #line 1 "./dataqsdk.w" /*:916*/ #line 529 "./typica.w" /*8:*/ #line 671 "./typica.w" template TYPE getself(QScriptContext*context) { TYPE self= qobject_cast (context->thisObject().toQObject()); return self; } template<> QTime getself(QScriptContext*context) { QTime self= context->thisObject().toVariant().toTime(); return self; } template<> QByteArray getself(QScriptContext*context) { QByteArray self= context->thisObject().toVariant().toByteArray(); return self; } template<> SqlQueryConnection*getself(QScriptContext*context) { SqlQueryConnection*self= (SqlQueryConnection*)qscriptvalue_cast (context->thisObject()); return self; } template<> QXmlQuery*getself(QScriptContext*context) { QXmlQuery*self= (QXmlQuery*)qscriptvalue_cast (context->thisObject()); return self; } template<> QXmlStreamWriter*getself(QScriptContext*context) { QXmlStreamWriter*self= (QXmlStreamWriter*)qscriptvalue_cast (context->thisObject()); return self; } template<> QXmlStreamReader*getself(QScriptContext*context) { QXmlStreamReader*self= (QXmlStreamReader*)qscriptvalue_cast (context->thisObject()); return self; } /*:8*//*9:*/ #line 722 "./typica.w" template TYPE argument(int arg,QScriptContext*context) { TYPE argument= qobject_cast (context->argument(arg).toQObject()); return argument; } template<> QString argument(int arg,QScriptContext*context) { return context->argument(arg).toString(); } template<> QVariant argument(int arg,QScriptContext*context) { return context->argument(arg).toVariant(); } template<> int argument(int arg,QScriptContext*context) { return context->argument(arg).toInt32(); } template<> SqlQueryConnection*argument(int arg,QScriptContext*context) { return(SqlQueryConnection*) qscriptvalue_cast (context->argument(arg)); } template<> QModelIndex argument(int arg,QScriptContext*context) { return qscriptvalue_cast (context->argument(arg)); } template<> double argument(int arg,QScriptContext*context) { return(double)(context->argument(arg).toNumber()); } template<> Units::Unit argument(int arg,QScriptContext*context) { return(Units::Unit)(context->argument(arg).toInt32()); } template<> QByteArray argument(int arg,QScriptContext*context) { return qscriptvalue_cast (context->argument(arg)); } /*:9*//*13:*/ #line 814 "./typica.w" void setQObjectProperties(QScriptValue,QScriptEngine*) { } /*:13*//*15:*/ #line 828 "./typica.w" void setQPaintDeviceProperties(QScriptValue,QScriptEngine*) { } void setQLayoutItemProperties(QScriptValue,QScriptEngine*) { } /*:15*//*18:*/ #line 867 "./typica.w" QScriptValue constructQWidget(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QWidget); setQWidgetProperties(object,engine); return object; } void setQWidgetProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); setQPaintDeviceProperties(value,engine); value.setProperty("setLayout",engine->newFunction(QWidget_setLayout)); value.setProperty("activateWindow", engine->newFunction(QWidget_activateWindow)); } /*:18*//*19:*/ #line 889 "./typica.w" QScriptValue QWidget_setLayout(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QWidget*self= getself (context); QLayout*layout= argument (0,context); if(layout) { self->setLayout(layout); } else { context->throwError("Incorrect argument type passed to " "QWidget::setLayout(). This method requires " "a QLayout."); } } else { context->throwError("Incorrect number of arguments passed to " "QWidget::setLayout(). This method takes one " "QLayout as an argument."); } return QScriptValue(); } QScriptValue QWidget_activateWindow(QScriptContext*context, QScriptEngine*) { QWidget*self= getself (context); self->activateWindow(); return QScriptValue(); } /*:19*//*21:*/ #line 971 "./typica.w" ScriptQMainWindow::ScriptQMainWindow():QMainWindow(NULL), cprompt(tr("Closing this window may result in loss of data. Continue?")) { } void ScriptQMainWindow::saveSizeAndPosition(const QString&key) { QSettings settings; settings.beginGroup(key); settings.setValue("pos",pos()); settings.setValue("size",size()); settings.endGroup(); } void ScriptQMainWindow::restoreSizeAndPosition(const QString&key) { QSettings settings; settings.beginGroup(key); if(settings.contains("size")) { resize(settings.value("size").toSize()); } if(settings.contains("pos")) { move(settings.value("pos").toPoint()); } settings.endGroup(); } void ScriptQMainWindow::displayStatus(const QString&message) { statusBar()->showMessage(message); } void ScriptQMainWindow::showEvent(QShowEvent*event) { if(!event->spontaneous()) { /*26:*/ #line 1083 "./typica.w" QSettings settings; restoreGeometry(settings.value(QString("geometries/%1").arg(objectName())). toByteArray()); /*:26*/ #line 1011 "./typica.w" event->accept(); } else { event->ignore(); } } void ScriptQMainWindow::show() { QMainWindow::show(); } /*:21*//*22:*/ #line 1032 "./typica.w" void ScriptQMainWindow::closeEvent(QCloseEvent*event) { if(isWindowModified()){ /*23:*/ #line 1046 "./typica.w" QMessageBox::StandardButton result; result= QMessageBox::warning(this,"Typica",closePrompt(), QMessageBox::Ok|QMessageBox::Cancel); if(result==QMessageBox::Cancel) { event->ignore(); return; } /*:23*/ #line 1036 "./typica.w" } emit aboutToClose(); /*25:*/ #line 1077 "./typica.w" QSettings settings; settings.setValue(QString("geometries/%1").arg(objectName()),saveGeometry()); /*:25*/ #line 1039 "./typica.w" event->accept(); } /*:22*//*24:*/ #line 1058 "./typica.w" QString ScriptQMainWindow::closePrompt() { return cprompt; } void ScriptQMainWindow::setClosePrompt(QString prompt) { cprompt= prompt; } /*:24*//*29:*/ #line 1111 "./typica.w" QScriptValue constructQMainWindow(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new ScriptQMainWindow); setQMainWindowProperties(object,engine); return object; } void setQMainWindowProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); value.setProperty("setCentralWidget", engine->newFunction(QMainWindow_setCentralWidget)); value.setProperty("menuBar",engine->newFunction(QMainWindow_menuBar)); } /*:29*//*30:*/ #line 1133 "./typica.w" QScriptValue QMainWindow_setCentralWidget(QScriptContext*context, QScriptEngine*) { if(context->argumentCount()==1) { QMainWindow*self= getself (context); QWidget*widget= argument (0,context); if(widget) { self->setCentralWidget(widget); } else { context->throwError("Incorrect argument type passed to " "QMainWindow::setCentralWidget(). This " "method requires a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QMainWindow::setCentralWidget(). This method " "takes one QWidget as an argument."); } return QScriptValue(); } /*:30*//*31:*/ #line 1167 "./typica.w" QScriptValue QMainWindow_menuBar(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==0) { QMainWindow*self= getself (context); QMenuBar*bar= self->menuBar(); object= engine->newQObject(bar); setQMenuBarProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "QMainWindow::menuBar(). This method takes no " "arguments."); } return object; } /*:31*//*33:*/ #line 1197 "./typica.w" void setQMenuBarProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); value.setProperty("addMenu",engine->newFunction(QMenuBar_addMenu)); } /*:33*//*34:*/ #line 1212 "./typica.w" QScriptValue QMenuBar_addMenu(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1) { QMenuBar*self= getself (context); QString title= argument (0,context); object= engine->newQObject(self->addMenu(title)); setQMenuProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "QMenuBar::addMenu(). This method takes one " "string as an argument."); } return object; } /*:34*//*36:*/ #line 1242 "./typica.w" void setQMenuProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); value.setProperty("addAction",engine->newFunction(QMenu_addAction)); value.setProperty("addSeparator",engine->newFunction(QMenu_addSeparator)); } /*:36*//*37:*/ #line 1252 "./typica.w" QScriptValue QMenu_addAction(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QMenu*self= getself (context); QAction*action= argument (0,context); if(action) { self->addAction(action); } else { context->throwError("Incorrect argument type passed to " "QMenu::addAction(). This method requires a " "QAction."); } } else { context->throwError("Incorrect number of arguments passed to " "QMenu::addAction(). This method takes one " "QAction as an argument."); } return QScriptValue(); } QScriptValue QMenu_addSeparator(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==0) { QMenu*self= getself (context); self->addSeparator(); } else { context->throwError("Incorrect number of arguments passed to " "QMenu::addSeparator(). This method takes no " "arguments."); } return QScriptValue(); } /*:37*//*40:*/ #line 1314 "./typica.w" QScriptValue constructQFrame(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QFrame); setQFrameProperties(object,engine); return object; } void setQFrameProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:40*//*43:*/ #line 1348 "./typica.w" QScriptValue constructQLabel(QScriptContext*context,QScriptEngine*engine) { QString text; if(context->argumentCount()==1) { text= argument (0,context); } QScriptValue object= engine->newQObject(new QLabel(text)); setQLabelProperties(object,engine); return object; } void setQLabelProperties(QScriptValue value,QScriptEngine*engine) { setQFrameProperties(value,engine); } /*:43*//*46:*/ #line 1385 "./typica.w" QScriptValue constructQLineEdit(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QLineEdit()); setQLineEditProperties(object,engine); return object; } /*:46*//*47:*/ #line 1396 "./typica.w" void setQLineEditProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:47*//*50:*/ #line 1432 "./typica.w" QScriptValue constructQSplitter(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QSplitter); setQSplitterProperties(object,engine); return object; } void setQSplitterProperties(QScriptValue value,QScriptEngine*engine) { setQFrameProperties(value,engine); value.setProperty("addWidget",engine->newFunction(QSplitter_addWidget)); value.setProperty("saveState",engine->newFunction(QSplitter_saveState)); value.setProperty("restoreState", engine->newFunction(QSplitter_restoreState)); value.setProperty("count",engine->newFunction(QSplitter_count)); } /*:50*//*51:*/ #line 1453 "./typica.w" QScriptValue QSplitter_addWidget(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QSplitter*self= getself (context); QWidget*widget= argument (0,context); if(widget) { self->addWidget(widget); } else { context->throwError("Incorrect argument type passed to " "QSplitter::addWidget(). This method " "requires a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QSplitter::addWidget(). This method takes one " "QWidget as an argument."); } return QScriptValue(); } /*:51*//*52:*/ #line 1490 "./typica.w" QScriptValue QSplitter_count(QScriptContext*context,QScriptEngine*) { QSplitter*self= getself (context); return QScriptValue(self->count()); } /*:52*//*53:*/ #line 1503 "./typica.w" QScriptValue QSplitter_saveState(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QSplitter*self= getself (context); QString key= argument (0,context); QSettings settings; settings.setValue(key,self->saveState()); } else { context->throwError("Incorrect number of arguments passed to " "QSplitter::saveState(). This method takes one " "string as an argument."); } return QScriptValue(); } QScriptValue QSplitter_restoreState(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QSplitter*self= getself (context); QString key= argument (0,context); QSettings settings; self->restoreState(settings.value(key).toByteArray()); } else { context->throwError("Incorrect number of arguments passed to " "QSplitter::restoreState(). This method takes " "one string as an argument."); } return QScriptValue(); } /*:53*//*55:*/ #line 1556 "./typica.w" void setQLayoutProperties(QScriptValue value,QScriptEngine*engine) { setQLayoutItemProperties(value,engine); value.setProperty("addWidget",engine->newFunction(QLayout_addWidget)); } QScriptValue QLayout_addWidget(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QLayout*self= getself (context); QWidget*widget= argument (0,context); if(widget) { self->addWidget(widget); } else { context->throwError("Incorrect argument type passed to " "QLayout::addWidget(). This method requires " "a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QLayout::addWidget(). This method takes one " "QWidget as an argument."); } return QScriptValue(); } /*:55*//*58:*/ #line 1623 "./typica.w" QScriptValue constructQBoxLayout(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QBoxLayout(QBoxLayout::LeftToRight)); setQBoxLayoutProperties(object,engine); return object; } void setQBoxLayoutProperties(QScriptValue value,QScriptEngine*engine) { setQLayoutProperties(value,engine); value.setProperty("addLayout",engine->newFunction(QBoxLayout_addLayout)); value.setProperty("addWidget",engine->newFunction(QBoxLayout_addWidget)); } QScriptValue QBoxLayout_addLayout(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()> 0&&context->argumentCount()<3) { QBoxLayout*self= getself (context); QLayout*layout= argument (0,context); int stretch= 0; if(context->argumentCount()==2) { stretch= argument (1,context); } if(layout) { self->addLayout(layout,stretch); } else { context->throwError("Incorrect argument type passed to " "QLayout::addLayout(). This method requires " "a QLayout."); } } else { context->throwError("Incorrect number of arguments passed to " "QLayout::addLayout(). This method takes one " "QLayout as an argument and optionally one integer."); } return QScriptValue(); } /*:58*//*59:*/ #line 1674 "./typica.w" QScriptValue QBoxLayout_addWidget(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()> 0&&context->argumentCount()<4) { QBoxLayout*self= getself (context); QWidget*widget= argument (0,context); int stretch= 0; Qt::Alignment alignment= 0; if(context->argumentCount()> 1) { stretch= argument (1,context); } if(context->argumentCount()> 2) { alignment= (Qt::Alignment)(argument (2,context)); } if(widget) { self->addWidget(widget,stretch,alignment); } else { context->throwError("Incorrect argument type passed to " "QBoxLayout::addWidget(). This method requires " "a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QBoxLayout::addWidget(). This method takes one " "QWidget and optionally up to two integers as " "arguments."); } return QScriptValue(); } /*:59*//*62:*/ #line 1738 "./typica.w" QScriptValue constructQAction(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QAction(NULL)); setQActionProperties(object,engine); return object; } void setQActionProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("setShortcut",engine->newFunction(QAction_setShortcut)); } QScriptValue QAction_setShortcut(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==1) { QAction*self= getself (context); self->setShortcut(argument (0,context)); } else { context->throwError("Incorrect number of arguments passed to " "QAction::setShortcut(). This method takes one " "string as an argument."); } return QScriptValue(); } /*:62*//*65:*/ #line 1796 "./typica.w" QScriptValue QFileDialog_getOpenFileName(QScriptContext*context, QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==3) { QWidget*widget= argument (0,context); if(widget) { QString caption= argument (1,context); QString dir= argument (2,context); retval= QScriptValue(engine, QFileDialog::getOpenFileName(widget,caption, dir,"",0,0)); setQFileDialogProperties(retval,engine); } else { context->throwError("Incorrect argument type passed to " "QFileDialog::getOpenFileName(). The first " "argument to this method must be a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QFileDialog::getOpenFileName(). This method " "takes one QWidget followed by two strings for a " "total of three arguments."); } return retval; } /*:65*//*66:*/ #line 1832 "./typica.w" QScriptValue QFileDialog_getSaveFileName(QScriptContext*context, QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==3) { QWidget*widget= argument (0,context); if(widget) { QString caption= argument (1,context); QString dir= argument (2,context); retval= QScriptValue(engine, QFileDialog::getSaveFileName(widget,caption, dir,"",0,0)); setQFileDialogProperties(retval,engine); } else { context->throwError("Incorrect argument type passed to " "QFileDialog::getSaveFileName(). The first " "argument to this method must be a QWidget."); } } else { context->throwError("Incorrect number of arguments passed to " "QFileDialog::getSaveFileName(). This method " "takes one QWidget followed by two strings for a " "total of three arguments."); } return retval; } /*:66*//*67:*/ #line 1869 "./typica.w" void setQFileDialogProperties(QScriptValue value,QScriptEngine*engine) { setQDialogProperties(value,engine); } void setQDialogProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:67*//*70:*/ #line 1907 "./typica.w" QScriptValue constructQFile(QScriptContext*context,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QFile(argument (0,context))); setQFileProperties(object,engine); return object; } /*:70*//*71:*/ #line 1918 "./typica.w" void setQFileProperties(QScriptValue value,QScriptEngine*engine) { setQIODeviceProperties(value,engine); value.setProperty("remove",engine->newFunction(QFile_remove)); } QScriptValue QFile_remove(QScriptContext*context,QScriptEngine*engine) { QFile*self= getself (context); bool retval= self->remove(); return QScriptValue(engine,retval); } /*:71*//*72:*/ #line 1940 "./typica.w" void setQIODeviceProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("open",engine->newFunction(QIODevice_open)); value.setProperty("close",engine->newFunction(QIODevice_close)); value.setProperty("readToString", engine->newFunction(QIODevice_readToString)); value.setProperty("putChar",engine->newFunction(QIODevice_putChar)); value.setProperty("writeString",engine->newFunction(QIODevice_writeString)); value.setProperty("writeBytes",engine->newFunction(QIODevice_writeBytes)); } /*:72*//*73:*/ #line 1958 "./typica.w" QScriptValue QIODevice_open(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); bool retval= false; if(context->argumentCount()==1) { switch(argument (0,context)) { case 1: retval= self->open(QIODevice::ReadOnly); break; case 2: retval= self->open(QIODevice::WriteOnly); break; case 3: retval= self->open(QIODevice::ReadWrite); break; default: break; } } else { retval= self->open(QIODevice::ReadWrite); } return QScriptValue(retval); } QScriptValue QIODevice_close(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); self->close(); return QScriptValue(); } /*:73*//*74:*/ #line 1998 "./typica.w" QScriptValue QIODevice_readToString(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); self->reset(); return QScriptValue(QString(self->readAll())); } /*:74*//*75:*/ #line 2014 "./typica.w" QScriptValue QIODevice_putChar(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); if(context->argumentCount()==1) { return QScriptValue(self->putChar(argument (0,context).toUtf8().at(0))); } context->throwError("Incorrect number of arguments passed to " "QIODevice::putChar()"); return QScriptValue(); } /*:75*//*76:*/ #line 2032 "./typica.w" QScriptValue QIODevice_writeString(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); if(context->argumentCount()==1) { self->write(argument (0,context).toUtf8()); } else { context->throwError("Incorrect number of arguments passed to " "QIODevice::writeString()"); } return QScriptValue(); } QScriptValue QIODevice_writeBytes(QScriptContext*context,QScriptEngine*) { QIODevice*self= getself (context); if(context->argumentCount()==1) { self->write(argument (0,context)); } else { context->throwError("Incorrect number of arguments passed to " "QIODevice::writeBytes()"); } return QScriptValue(); } /*:76*//*79:*/ #line 2089 "./typica.w" QScriptValue constructQProcess(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QProcess); setQProcessProperties(object,engine); return object; } /*:79*//*80:*/ #line 2100 "./typica.w" void setQProcessProperties(QScriptValue value,QScriptEngine*engine) { setQIODeviceProperties(value,engine); value.setProperty("execute",engine->newFunction(QProcess_execute)); value.setProperty("startDetached",engine->newFunction(QProcess_startDetached)); value.setProperty("setWorkingDirectory",engine->newFunction(QProcess_setWorkingDirectory)); value.setProperty("start",engine->newFunction(QProcess_start)); } /*:80*//*81:*/ #line 2114 "./typica.w" QScriptValue QProcess_execute(QScriptContext*context,QScriptEngine*) { QProcess*self= getself (context); QString program= argument (0,context); QStringList arguments= QStringList(); if(context->argumentCount()> 1){ arguments= argument (1,context).toStringList(); } int retval= self->execute(program,arguments); return QScriptValue(retval); } /*:81*//*82:*/ #line 2129 "./typica.w" QScriptValue QProcess_startDetached(QScriptContext*context,QScriptEngine*) { QProcess*self= getself (context); QString program= argument (0,context); QStringList arguments= QStringList(); if(context->argumentCount()> 1){ arguments= argument (1,context).toStringList(); } QString workingDirectory= ""; if(context->argumentCount()> 2){ workingDirectory= argument (2,context); } bool retval; switch(context->argumentCount()) { case 1: retval= self->startDetached(program); break; case 2: retval= self->startDetached(program,arguments); break; case 3: retval= self->startDetached(program,arguments,workingDirectory); break; default: retval= false; } return QScriptValue(retval); } /*:82*//*83:*/ #line 2162 "./typica.w" QScriptValue QProcess_setWorkingDirectory(QScriptContext*context,QScriptEngine*) { QProcess*self= getself (context); QString directory= argument (0,context); self->setWorkingDirectory(directory); return QScriptValue(); } /*:83*//*84:*/ #line 2174 "./typica.w" QScriptValue QProcess_start(QScriptContext*context,QScriptEngine*) { QProcess*self= getself (context); QString program= argument (0,context); QStringList arguments= QStringList(); if(context->argumentCount()> 1){ arguments= argument (1,context).toStringList(); } self->start(program,arguments); return QScriptValue(); } /*:84*//*86:*/ #line 2200 "./typica.w" QScriptValue QByteArray_toScriptValue(QScriptEngine*engine,const QByteArray&bytes) { QScriptValue object= engine->newVariant(QVariant(bytes)); setQByteArrayProperties(object,engine); return object; } void QByteArray_fromScriptValue(const QScriptValue&value,QByteArray&bytes) { bytes= value.toVariant().toByteArray(); } /*:86*//*88:*/ #line 2223 "./typica.w" QScriptValue constructQByteArray(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->toScriptValue (QByteArray()); setQByteArrayProperties(object,engine); return object; } /*:88*//*89:*/ #line 2234 "./typica.w" void setQByteArrayProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("fromHex",engine->newFunction(QByteArray_fromHex)); } /*:89*//*90:*/ #line 2243 "./typica.w" QScriptValue QByteArray_fromHex(QScriptContext*context,QScriptEngine*engine) { QByteArray self= getself (context); QByteArray retval; retval= self.fromHex(argument (0,context).toUtf8()); return engine->toScriptValue (retval); } /*:90*//*93:*/ #line 2274 "./typica.w" QScriptValue constructQBuffer(QScriptContext*context,QScriptEngine*engine) { QByteArray*array= new QByteArray(argument (0,context).toAscii()); QScriptValue object= engine->newQObject(new QBuffer(array)); setQBufferProperties(object,engine); return object; } void setQBufferProperties(QScriptValue value,QScriptEngine*engine) { setQIODeviceProperties(value,engine); value.setProperty("setData",engine->newFunction(QBuffer_setData)); } QScriptValue QBuffer_setData(QScriptContext*context,QScriptEngine*) { QBuffer*self= getself (context); self->setData(argument (0,context).toAscii()); return QScriptValue(); } /*:93*//*96:*/ #line 2323 "./typica.w" QScriptValue constructXQuery(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->toScriptValue (new QXmlQuery); setXQueryProperties(object,engine); return object; } QScriptValue XQuery_invalidate(QScriptContext*context,QScriptEngine*) { QXmlQuery*self= getself (context); delete self; return QScriptValue(); } void setXQueryProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("bind",engine->newFunction(XQuery_bind)); value.setProperty("exec",engine->newFunction(XQuery_exec)); value.setProperty("setQuery",engine->newFunction(XQuery_setQuery)); value.setProperty("invalidate",engine->newFunction(XQuery_invalidate)); } /*:96*//*97:*/ #line 2349 "./typica.w" QScriptValue XQuery_bind(QScriptContext*context,QScriptEngine*) { QXmlQuery*self= getself (context); QIODevice*buffer= argument (1,context); self->bindVariable(argument (0,context),buffer); return QScriptValue(); } /*:97*//*98:*/ #line 2360 "./typica.w" QScriptValue XQuery_setQuery(QScriptContext*context,QScriptEngine*) { QXmlQuery*self= getself (context); self->setQuery(argument (0,context)); return QScriptValue(); } /*:98*//*99:*/ #line 2370 "./typica.w" QScriptValue XQuery_exec(QScriptContext*context,QScriptEngine*) { QXmlQuery*self= getself (context); QString result; self->evaluateTo(&result); return QScriptValue(result); } /*:99*//*102:*/ #line 2425 "./typica.w" QScriptValue constructXmlWriter(QScriptContext*context,QScriptEngine*engine) { QXmlStreamWriter*retval; if(context->argumentCount()==1) { retval= new QXmlStreamWriter(argument (0,context)); } else { retval= new QXmlStreamWriter; } QScriptValue object= engine->toScriptValue (retval); setXmlWriterProperties(object,engine); return object; } void setXmlWriterProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("setDevice",engine->newFunction(XmlWriter_setDevice)); value.setProperty("writeAttribute", engine->newFunction(XmlWriter_writeAttribute)); value.setProperty("writeCDATA",engine->newFunction(XmlWriter_writeCDATA)); value.setProperty("writeCharacters", engine->newFunction(XmlWriter_writeCharacters)); value.setProperty("writeDTD",engine->newFunction(XmlWriter_writeDTD)); value.setProperty("writeEmptyElement", engine->newFunction(XmlWriter_writeEmptyElement)); value.setProperty("writeEndDocument", engine->newFunction(XmlWriter_writeEndDocument)); value.setProperty("writeEndElement", engine->newFunction(XmlWriter_writeEndElement)); value.setProperty("writeEntityReference", engine->newFunction(XmlWriter_writeEntityReference)); value.setProperty("writeProcessingInstruction", engine->newFunction(XmlWriter_writeProcessingInstruction)); value.setProperty("writeStartDocument", engine->newFunction(XmlWriter_writeStartDocument)); value.setProperty("writeStartElement", engine->newFunction(XmlWriter_writeStartElement)); value.setProperty("writeTextElement", engine->newFunction(XmlWriter_writeTextElement)); } /*:102*//*103:*/ #line 2472 "./typica.w" QScriptValue XmlWriter_setDevice(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); QIODevice*device= argument (0,context); self->setDevice(device); return QScriptValue(); } /*:103*//*104:*/ #line 2486 "./typica.w" QScriptValue XmlWriter_writeStartDocument(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeStartDocument(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeEndDocument(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeEndDocument(); return QScriptValue(); } /*:104*//*105:*/ #line 2505 "./typica.w" QScriptValue XmlWriter_writeDTD(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeDTD(argument (0,context)); return QScriptValue(); } /*:105*//*106:*/ #line 2516 "./typica.w" QScriptValue XmlWriter_writeStartElement(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeStartElement(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeAttribute(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeAttribute(argument (0,context), argument (1,context)); return QScriptValue(); } QScriptValue XmlWriter_writeCharacters(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeCharacters(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeEndElement(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeEndElement(); return QScriptValue(); } /*:106*//*107:*/ #line 2552 "./typica.w" QScriptValue XmlWriter_writeEmptyElement(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeEmptyElement(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeTextElement(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeTextElement(argument (0,context), argument (1,context)); return QScriptValue(); } /*:107*//*108:*/ #line 2573 "./typica.w" QScriptValue XmlWriter_writeCDATA(QScriptContext*context,QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeCDATA(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeEntityReference(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeEntityReference(argument (0,context)); return QScriptValue(); } QScriptValue XmlWriter_writeProcessingInstruction(QScriptContext*context, QScriptEngine*) { QXmlStreamWriter*self= getself (context); self->writeProcessingInstruction(argument (0,context), argument (1,context)); return QScriptValue(); } /*:108*//*111:*/ #line 2632 "./typica.w" QScriptValue constructXmlReader(QScriptContext*context,QScriptEngine*engine) { QXmlStreamReader*retval= new QXmlStreamReader(argument (0,context)); QScriptValue object= engine->toScriptValue (retval); setXmlReaderProperties(object,engine); return object; } void setXmlReaderProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("atEnd",engine->newFunction(XmlReader_atEnd)); value.setProperty("attribute",engine->newFunction(XmlReader_attribute)); value.setProperty("hasAttribute", engine->newFunction(XmlReader_hasAttribute)); value.setProperty("isDTD",engine->newFunction(XmlReader_isDTD)); value.setProperty("isStartElement", engine->newFunction(XmlReader_isStartElement)); value.setProperty("name",engine->newFunction(XmlReader_name)); value.setProperty("readElementText", engine->newFunction(XmlReader_readElementText)); value.setProperty("readNext", engine->newFunction(XmlReader_readNext)); value.setProperty("text",engine->newFunction(XmlReader_text)); } /*:111*//*112:*/ #line 2662 "./typica.w" QScriptValue XmlReader_attribute(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); QString retval= self->attributes().value(argument (0,context)).toString(); return QScriptValue(retval); } QScriptValue XmlReader_hasAttribute(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); bool retval= self->attributes().hasAttribute(argument (0,context)); return QScriptValue(retval); } /*:112*//*113:*/ #line 2682 "./typica.w" QScriptValue XmlReader_atEnd(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->atEnd()); } QScriptValue XmlReader_isDTD(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->isDTD()); } QScriptValue XmlReader_isStartElement(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->isStartElement()); } /*:113*//*114:*/ #line 2703 "./typica.w" QScriptValue XmlReader_readNext(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); self->readNext(); return QScriptValue(); } /*:114*//*115:*/ #line 2713 "./typica.w" QScriptValue XmlReader_name(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->name().toString()); } QScriptValue XmlReader_readElementText(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->readElementText()); } QScriptValue XmlReader_text(QScriptContext*context,QScriptEngine*) { QXmlStreamReader*self= getself (context); return QScriptValue(self->text().toString()); } /*:115*//*118:*/ #line 2755 "./typica.w" void setQSettingsProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("value",engine->newFunction(QSettings_value)); value.setProperty("setValue",engine->newFunction(QSettings_setValue)); } /*:118*//*119:*/ #line 2767 "./typica.w" QScriptValue QSettings_value(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1||context->argumentCount()==2) { QSettings settings; QString key= argument (0,context); QVariant value; QVariant retval; if(context->argumentCount()> 1) { value= argument (1,context); retval= settings.value(key,value); } else { retval= settings.value(key); } object= engine->newVariant(retval); } else { context->throwError("Incorrect number of arguments passed to " "QSettings::value(). This method takes one " "string and one optional variant type."); } return object; } QScriptValue QSettings_setValue(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==2) { QSettings settings; QString key= argument (0,context); QVariant value= argument (1,context); settings.setValue(key,value); } else { context->throwError("Incorrect number of arguments passed to " "QSettings::setValue(). This method takes one " "string and one variant type for a total of two " "arguments."); } return QScriptValue(); } /*:119*//*122:*/ #line 2836 "./typica.w" QScriptValue constructQLCDNumber(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QLCDNumber()); setQLCDNumberProperties(object,engine); return object; } void setQLCDNumberProperties(QScriptValue value,QScriptEngine*engine) { setQFrameProperties(value,engine); } /*:122*//*125:*/ #line 2894 "./typica.w" QScriptValue constructQTime(QScriptContext*context, QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==0|| (context->argumentCount()>=2&&context->argumentCount()<=4)) { int arg1= 0; int arg2= 0; int arg3= 0; int arg4= 0; switch(context->argumentCount()) { case 4: arg4= argument (3,context); case 3: arg3= argument (2,context); case 2: arg2= argument (1,context); arg1= argument (0,context); default: break; } if(context->argumentCount()) { object= engine->toScriptValue (QTime(arg1,arg2,arg3, arg4)); } else { object= engine->toScriptValue (QTime()); } setQTimeProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "QTime::QTime(). This method takes zero, two, " "three, or four integer arguments."); } return object; } /*:125*//*126:*/ #line 2942 "./typica.w" void setQTimeProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("addMSecs",engine->newFunction(QTime_addMSecs)); value.setProperty("addSecs",engine->newFunction(QTime_addSecs)); value.setProperty("elapsed",engine->newFunction(QTime_elapsed)); value.setProperty("hour",engine->newFunction(QTime_hour)); value.setProperty("isNull",engine->newFunction(QTime_isNull)); value.setProperty("isValid",engine->newFunction(QTime_isValid)); value.setProperty("minute",engine->newFunction(QTime_minute)); value.setProperty("msec",engine->newFunction(QTime_msec)); value.setProperty("msecsTo",engine->newFunction(QTime_msecsTo)); value.setProperty("restart",engine->newFunction(QTime_restart)); value.setProperty("second",engine->newFunction(QTime_second)); value.setProperty("secsTo",engine->newFunction(QTime_secsTo)); value.setProperty("setHMS",engine->newFunction(QTime_setHMS)); value.setProperty("start",engine->newFunction(QTime_start)); value.setProperty("toString",engine->newFunction(QTime_toString)); value.setProperty("currentTime",engine->newFunction(QTime_currentTime)); value.setProperty("fromString",engine->newFunction(QTime_fromString)); value.setProperty("valueOf",engine->newFunction(QTime_valueOf)); } /*:126*//*127:*/ #line 2971 "./typica.w" QScriptValue QTime_valueOf(QScriptContext*context,QScriptEngine*) { QTime self= getself (context); int retval= (self.hour()*60*60*1000)+(self.minute()*60*1000)+ (self.second()*1000)+self.msec(); return QScriptValue(retval); } /*:127*//*128:*/ #line 2985 "./typica.w" QScriptValue QTime_addMSecs(QScriptContext*context,QScriptEngine*engine) { QTime time; QScriptValue retval; if(context->argumentCount()==1) { QTime self= getself (context); time= self.addMSecs(argument (0,context)); retval= engine->toScriptValue (time); setQTimeProperties(retval,engine); } else { context->throwError("Incorrect number of arguments passed to " "QTime::addMSecs(). This method takes one " "integer as an argument."); } return retval; } QScriptValue QTime_addSecs(QScriptContext*context,QScriptEngine*engine) { QTime time; QScriptValue retval; if(context->argumentCount()==1) { QTime self= getself (context); time= self.addSecs(argument (0,context)); retval= engine->toScriptValue (time); setQTimeProperties(retval,engine); } else { context->throwError("Incorrect number of arguments passed to " "QTime::addSecs(). This method takes one " "integer as an argument."); } return retval; } /*:128*//*129:*/ #line 3028 "./typica.w" QScriptValue QTime_elapsed(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.elapsed()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::elapsed(). This method takes no " "arguments."); } return retval; } /*:129*//*130:*/ #line 3049 "./typica.w" QScriptValue QTime_hour(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.hour()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::hour(). This method takes no " "arguments."); } return retval; } /*:130*//*131:*/ #line 3069 "./typica.w" QScriptValue QTime_minute(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.minute()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::minute(). This method takes no " "arguments."); } return retval; } QScriptValue QTime_second(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.second()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::second(). This method takes no " "arguments."); } return retval; } QScriptValue QTime_msec(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.msec()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::msec(). This method takes no " "arguments."); } return retval; } /*:131*//*132:*/ #line 3125 "./typica.w" QScriptValue QTime_isNull(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.isNull()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::isNull(). This method takes no " "arguments."); } return retval; } QScriptValue QTime_isValid(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.isValid()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::isValid(). This method takes no " "arguments."); } return retval; } /*:132*//*133:*/ #line 3163 "./typica.w" QScriptValue QTime_msecsTo(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==1) { QTime self= getself (context); QTime arg= argument (0,context).toTime(); retval= QScriptValue(engine,self.msecsTo(arg)); } else { context->throwError("Incorrect number of arguments passed to " "QTime::msecsTo(). This method takes one QTime."); } return retval; } QScriptValue QTime_secsTo(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==1) { QTime self= getself (context); QTime arg= argument (0,context).toTime(); retval= QScriptValue(engine,self.secsTo(arg)); } else { context->throwError("Incorrect number of arguments passed to " "QTime::secsTo(). This method takes one QTime."); } return retval; } /*:133*//*134:*/ #line 3202 "./typica.w" QScriptValue QTime_restart(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==0) { QTime self= getself (context); retval= QScriptValue(engine,self.restart()); } else { context->throwError("Incorrect number of arguments passed to " "QTime::restart(). This method takes no " "arguments."); } return retval; } QScriptValue QTime_start(QScriptContext*context,QScriptEngine*) { if(context->argumentCount()==0) { QTime self= getself (context); self.start(); } else { context->throwError("Incorrect number of arguments passed to " "QTime::start(). This method takes no arguments."); } return QScriptValue(); } /*:134*//*135:*/ #line 3238 "./typica.w" QScriptValue QTime_setHMS(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==3||context->argumentCount()==4) { QTime self= getself (context); int arg1= 0; int arg2= 0; int arg3= 0; int arg4= 0; switch(context->argumentCount()) { case 4: arg4= argument (3,context); case 3: arg3= argument (2,context); arg2= argument (1,context); arg1= argument (0,context); default: break; } retval= QScriptValue(engine,self.setHMS(arg1,arg2,arg3,arg4)); } else { context->throwError("Incorrect number of arguments passed to " "QTime::setHMS(). This method takes three or " "four integer arguments."); } return retval; } /*:135*//*136:*/ #line 3274 "./typica.w" QScriptValue QTime_toString(QScriptContext*context,QScriptEngine*engine) { QScriptValue retval; if(context->argumentCount()==1) { QTime self= getself (context); retval= QScriptValue(engine,self.toString(argument (0,context))); } else { context->throwError("Incorrect number of arguments passed to " "QTime::toString(). This method takes one QString " "as an argument."); } return retval; } /*:136*//*137:*/ #line 3295 "./typica.w" QScriptValue QTime_currentTime(QScriptContext*,QScriptEngine*engine) { QScriptValue object; object= engine->toScriptValue (QTime::currentTime()); setQTimeProperties(object,engine); return object; } QScriptValue QTime_fromString(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==2) { QString time= argument (0,context); QString format= argument (1,context); object= engine->toScriptValue (QTime::fromString(time,format)); setQTimeProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "QTime::fromString(). This method takes two " "string arguments."); } return object; } /*:137*//*138:*/ #line 3326 "./typica.w" template<> QTime argument(int arg,QScriptContext*context) { return qscriptvalue_cast (context->argument(arg)); } /*:138*//*140:*/ #line 3344 "./typica.w" void setQAbstractScrollAreaProperties(QScriptValue value,QScriptEngine*engine) { setQFrameProperties(value,engine); } /*:140*//*142:*/ #line 3358 "./typica.w" void setQAbstractItemViewProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractScrollAreaProperties(value,engine); } /*:142*//*144:*/ #line 3372 "./typica.w" void setQGraphicsViewProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractScrollAreaProperties(value,engine); } void setQTableViewProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractItemViewProperties(value,engine); } /*:144*//*147:*/ #line 3405 "./typica.w" QScriptValue constructQPushButton(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QPushButton()); setQPushButtonProperties(object,engine); return object; } void setQPushButtonProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractButtonProperties(value,engine); } void setQAbstractButtonProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:147*//*154:*/ #line 3517 "./typica.w" QScriptValue constructQSqlQuery(QScriptContext*,QScriptEngine*engine) { SqlQueryConnection*obj= new SqlQueryConnection(); QScriptValue object= engine->toScriptValue (obj); setQSqlQueryProperties(object,engine); return object; } /*:154*//*155:*/ #line 3530 "./typica.w" void setQSqlQueryProperties(QScriptValue value,QScriptEngine*engine) { value.setProperty("bind",engine->newFunction(QSqlQuery_bind)); value.setProperty("bindFileData", engine->newFunction(QSqlQuery_bindFileData)); value.setProperty("bindDeviceData", engine->newFunction(QSqlQuery_bindDeviceData)); value.setProperty("exec",engine->newFunction(QSqlQuery_exec)); value.setProperty("executedQuery",engine->newFunction(QSqlQuery_executedQuery)); value.setProperty("invalidate",engine->newFunction(QSqlQuery_invalidate)); value.setProperty("next",engine->newFunction(QSqlQuery_next)); value.setProperty("prepare",engine->newFunction(QSqlQuery_prepare)); value.setProperty("value",engine->newFunction(QSqlQuery_value)); } /*:155*//*156:*/ #line 3548 "./typica.w" QScriptValue QSqlQuery_exec(QScriptContext*context,QScriptEngine*engine) { QSqlQuery*q= getself (context)->operator->(); QScriptValue retval; if(context->argumentCount()==1) { retval= QScriptValue(engine, q->exec(argument (0,context))); } else { retval= QScriptValue(engine,q->exec()); } if(q->lastError().isValid()) { qDebug()<lastQuery(); qDebug()<lastError().text(); } return retval; } QScriptValue QSqlQuery_executedQuery(QScriptContext*context,QScriptEngine*) { QSqlQuery*query= getself (context)->operator->(); return QScriptValue(query->lastQuery()); } QScriptValue QSqlQuery_next(QScriptContext*context,QScriptEngine*engine) { QSqlQuery*query= getself (context)->operator->(); return QScriptValue(engine,query->next()); } QScriptValue QSqlQuery_value(QScriptContext*context,QScriptEngine*engine) { QSqlQuery*query= getself (context)->operator->(); return QScriptValue(engine, query->value(argument (0,context)).toString()); } /*:156*//*157:*/ #line 3592 "./typica.w" QScriptValue QSqlQuery_prepare(QScriptContext*context,QScriptEngine*engine) { QSqlQuery*query= getself (context)->operator->(); return QScriptValue(engine,query->prepare(argument (0,context))); } QScriptValue QSqlQuery_bind(QScriptContext*context,QScriptEngine*) { QSqlQuery*query= getself (context)->operator->(); query->bindValue(argument (0,context), argument (1,context)); return QScriptValue(); } QScriptValue QSqlQuery_bindFileData(QScriptContext*context, QScriptEngine*) { QSqlQuery*query= getself (context)->operator->(); QString placeholder= argument (0,context); QString filename= argument (1,context); QFile file(filename); QByteArray data; if(file.open(QIODevice::ReadOnly)) { data= file.readAll(); file.close(); } query->bindValue(placeholder,data); return QScriptValue(); } QScriptValue QSqlQuery_bindDeviceData(QScriptContext*context, QScriptEngine*) { QSqlQuery*query= getself (context)->operator->(); QString placeholder= argument (0,context); QIODevice*device= argument (1,context); device->reset(); QByteArray data; data= device->readAll(); query->bindValue(placeholder,data); return QScriptValue(); } /*:157*//*158:*/ #line 3644 "./typica.w" QScriptValue QSqlQuery_invalidate(QScriptContext*context,QScriptEngine*) { SqlQueryConnection*query= getself (context); delete query; return QScriptValue::UndefinedValue; } /*:158*//*161:*/ #line 3689 "./typica.w" QScriptValue baseName(QScriptContext*context,QScriptEngine*engine) { QFileInfo info(argument (0,context)); QScriptValue retval(engine,info.baseName()); return retval; } QScriptValue dir(QScriptContext*context,QScriptEngine*engine) { QFileInfo info(argument (0,context)); QDir dir= info.dir(); QScriptValue retval(engine,dir.path()); return retval; } /*:161*//*162:*/ #line 3708 "./typica.w" QScriptValue saveFileFromDatabase(QScriptContext*context,QScriptEngine*) { SqlQueryConnection h; QSqlQuery*query= h.operator->(); QString q= "SELECT file FROM files WHERE id = :file"; query->prepare(q); query->bindValue(":file",argument (0,context)); query->exec(); query->next(); QByteArray array= query->value(0).toByteArray(); QFile file(argument (1,context)); file.open(QIODevice::WriteOnly); file.write(array); file.close(); return QScriptValue(); } /*:162*//*163:*/ #line 3729 "./typica.w" QScriptValue sqlToArray(QScriptContext*context,QScriptEngine*engine) { QString source= argument (0,context); source.remove(0,1); source.chop(1); QStringList elements= source.split(","); QString element; QScriptValue dest= engine->newArray(elements.size()); int i= 0; foreach(element,elements) { if(element.startsWith("\"")&&element.endsWith("\"")) { element.chop(1); element= element.remove(0,1); } dest.setProperty(i,QScriptValue(engine,element)); i++; } return dest; } /*:163*//*164:*/ #line 3755 "./typica.w" QScriptValue setFont(QScriptContext*context,QScriptEngine*) { QString font= argument (0,context); QString classname; if(context->argumentCount()> 1) { classname= argument (1,context); QApplication::setFont(QFont(font),classname.toLatin1().constData()); } else { QApplication::setFont(QFont(font)); } return QScriptValue(); } /*:164*//*165:*/ #line 3775 "./typica.w" QScriptValue annotationFromRecord(QScriptContext*context,QScriptEngine*) { SqlQueryConnection h; QSqlQuery*query= h.operator->(); QString q= "SELECT file FROM files WHERE id = :file"; query->prepare(q); query->bindValue(":file",argument (0,context)); query->exec(); query->next(); QByteArray array= query->value(0).toByteArray(); QBuffer buffer(&array); buffer.open(QIODevice::ReadOnly); QXmlQuery xquery; xquery.bindVariable("profile",&buffer); QString xq; xq= "for $b in doc($profile) //tuple where exists($b/annotation) return $b"; xquery.setQuery(xq); QString result; xquery.evaluateTo(&result); return QScriptValue(result); } /*:165*//*166:*/ #line 3802 "./typica.w" QScriptValue setTabOrder(QScriptContext*context,QScriptEngine*) { QWidget::setTabOrder(argument (0,context), argument (1,context)); return QScriptValue(); } /*:166*//*173:*/ #line 4047 "./typica.w" QScriptValue createWindow(QScriptContext*context,QScriptEngine*engine) { QString targetID= argument (0,context); QDomNode element; QScriptValue object; /*175:*/ #line 4094 "./typica.w" QDomNodeList windows= AppInstance->configuration()->documentElement().elementsByTagName("window"); QDomNode nullNode; int i= 0; element= nullNode; while(isetObjectName(targetID); object= engine->newQObject(window); setQMainWindowProperties(object,engine); QWidget*central= new(QWidget); central->setParent(window); central->setObjectName("centralWidget"); window->setCentralWidget(central); if(element.hasChildNodes()) { /*177:*/ #line 4161 "./typica.w" QStack widgetStack; QStack layoutStack; QString windowScript; widgetStack.push(central); QDomNodeList windowChildren= element.childNodes(); int i= 0; while(imenuBar(); bar->setParent(window); bar->setObjectName("menuBar"); if(element.hasAttribute("name")) { QMenu*menu= bar->addMenu(element.attribute("name")); menu->setParent(bar); if(element.hasAttribute("type")) { if(element.attribute("type")=="reports") { if(element.hasAttribute("src")) { /*613:*/ #line 13194 "./typica.w" QSettings settings; QString reportDirectory= QString("%1/%2").arg(settings.value("config"). toString()). arg(element.attribute("src")); QDir::addSearchPath("reports",reportDirectory); QDir directory(reportDirectory); directory.setFilter(QDir::Files); directory.setSorting(QDir::Name); QStringList nameFilter; nameFilter<<"*.xml"; directory.setNameFilters(nameFilter); QFileInfoList reportFiles= directory.entryInfoList(); for(int i= 0;i"); QMenu*insertionPoint= menu; /*618:*/ #line 13301 "./typica.w" for(int j= 0;jchildren(); bool menuFound= false; for(int k= 0;k (menuList.at(k)); if(currentItem) { if(currentItem->title()==hierarchy.at(j)) { menuFound= true; insertionPoint= currentItem; break; } } } if(!menuFound) { insertionPoint= insertionPoint->addMenu(hierarchy.at(j)); } } /*:618*/ #line 13291 "./typica.w" ReportAction*action= new ReportAction(path,hierarchy.last()); insertionPoint->addAction(action); } } } /*:617*/ #line 13210 "./typica.w" } /*:613*/ #line 4222 "./typica.w" } } } if(element.hasChildNodes()) { /*179:*/ #line 4235 "./typica.w" QDomNodeList menuItems= element.childNodes(); int j= 0; while(jsetObjectName(itemElement.attribute("id")); } if(itemElement.hasAttribute("shortcut")) { itemAction->setShortcut(itemElement.attribute("shortcut")); } menu->addAction(itemAction); } else if(itemElement.tagName()=="separator") { menu->addSeparator(); } } j++; } #line 1 "./helpmenu.w" /*:179*/ #line 4228 "./typica.w" } } /*:178*/ #line 4186 "./typica.w" } } i++; } QScriptValue oldThis= context->thisObject(); context->setThisObject(object); QScriptValue result= engine->evaluate(windowScript); /*170:*/ #line 3943 "./typica.w" if(engine->hasUncaughtException()) { int line= engine->uncaughtExceptionLineNumber(); qDebug()<<"Uncaught excpetion at line "<uncaughtExceptionBacktrace()) { qDebug()<setThisObject(oldThis); /*:177*/ #line 4137 "./typica.w" } /*180:*/ #line 9 "./helpmenu.w" HelpMenu*helpMenu= new HelpMenu(); window->menuBar()->addMenu(helpMenu); /*:180*/ #line 4139 "./typica.w" window->show(); /*:176*/ #line 4056 "./typica.w" } return object; } /*:173*//*174:*/ #line 4067 "./typica.w" QScriptValue createReport(QScriptContext*context,QScriptEngine*engine) { QString targetID= argument (0,context); QFile file(QString("reports:%1").arg(targetID)); QScriptValue object; if(file.open(QIODevice::ReadOnly)) { QDomDocument document; document.setContent(&file,true); QDomElement element= document.documentElement(); if(!element.isNull()) { /*176:*/ #line 4126 "./typica.w" ScriptQMainWindow*window= new ScriptQMainWindow; window->setObjectName(targetID); object= engine->newQObject(window); setQMainWindowProperties(object,engine); QWidget*central= new(QWidget); central->setParent(window); central->setObjectName("centralWidget"); window->setCentralWidget(central); if(element.hasChildNodes()) { /*177:*/ #line 4161 "./typica.w" QStack widgetStack; QStack layoutStack; QString windowScript; widgetStack.push(central); QDomNodeList windowChildren= element.childNodes(); int i= 0; while(imenuBar(); bar->setParent(window); bar->setObjectName("menuBar"); if(element.hasAttribute("name")) { QMenu*menu= bar->addMenu(element.attribute("name")); menu->setParent(bar); if(element.hasAttribute("type")) { if(element.attribute("type")=="reports") { if(element.hasAttribute("src")) { /*613:*/ #line 13194 "./typica.w" QSettings settings; QString reportDirectory= QString("%1/%2").arg(settings.value("config"). toString()). arg(element.attribute("src")); QDir::addSearchPath("reports",reportDirectory); QDir directory(reportDirectory); directory.setFilter(QDir::Files); directory.setSorting(QDir::Name); QStringList nameFilter; nameFilter<<"*.xml"; directory.setNameFilters(nameFilter); QFileInfoList reportFiles= directory.entryInfoList(); for(int i= 0;i"); QMenu*insertionPoint= menu; /*618:*/ #line 13301 "./typica.w" for(int j= 0;jchildren(); bool menuFound= false; for(int k= 0;k (menuList.at(k)); if(currentItem) { if(currentItem->title()==hierarchy.at(j)) { menuFound= true; insertionPoint= currentItem; break; } } } if(!menuFound) { insertionPoint= insertionPoint->addMenu(hierarchy.at(j)); } } /*:618*/ #line 13291 "./typica.w" ReportAction*action= new ReportAction(path,hierarchy.last()); insertionPoint->addAction(action); } } } /*:617*/ #line 13210 "./typica.w" } /*:613*/ #line 4222 "./typica.w" } } } if(element.hasChildNodes()) { /*179:*/ #line 4235 "./typica.w" QDomNodeList menuItems= element.childNodes(); int j= 0; while(jsetObjectName(itemElement.attribute("id")); } if(itemElement.hasAttribute("shortcut")) { itemAction->setShortcut(itemElement.attribute("shortcut")); } menu->addAction(itemAction); } else if(itemElement.tagName()=="separator") { menu->addSeparator(); } } j++; } #line 1 "./helpmenu.w" /*:179*/ #line 4228 "./typica.w" } } /*:178*/ #line 4186 "./typica.w" } } i++; } QScriptValue oldThis= context->thisObject(); context->setThisObject(object); QScriptValue result= engine->evaluate(windowScript); /*170:*/ #line 3943 "./typica.w" if(engine->hasUncaughtException()) { int line= engine->uncaughtExceptionLineNumber(); qDebug()<<"Uncaught excpetion at line "<uncaughtExceptionBacktrace()) { qDebug()<setThisObject(oldThis); /*:177*/ #line 4137 "./typica.w" } /*180:*/ #line 9 "./helpmenu.w" HelpMenu*helpMenu= new HelpMenu(); window->menuBar()->addMenu(helpMenu); /*:180*/ #line 4139 "./typica.w" window->show(); /*:176*/ #line 4080 "./typica.w" } file.close(); } return object; } /*:174*//*193:*/ #line 4279 "./typica.w" void addLayoutToWidget(QDomElement element,QStack *widgetStack, QStack *layoutStack) { if(element.hasAttribute("type")) { /*194:*/ #line 4300 "./typica.w" QLayout*layout; QString layoutType= element.attribute("type"); if(layoutType=="horizontal") { layout= new QHBoxLayout; layoutStack->push(layout); populateBoxLayout(element,widgetStack,layoutStack); } else if(layoutType=="vertical") { layout= new QVBoxLayout; layoutStack->push(layout); populateBoxLayout(element,widgetStack,layoutStack); } else if(layoutType=="grid") { layout= new QGridLayout; layoutStack->push(layout); populateGridLayout(element,widgetStack,layoutStack); } else if(layoutType=="stack") { layout= new QStackedLayout; layoutStack->push(layout); populateStackedLayout(element,widgetStack,layoutStack); } if(element.hasAttribute("id")) { layout->setObjectName(element.attribute("id")); } if(element.hasAttribute("spacing")) { layout->setSpacing(element.attribute("spacing").toInt()); } if(element.hasAttribute("margin")) { int m= element.attribute("margin").toInt(); layout->setContentsMargins(m,m,m,m); } /*:194*/ #line 4285 "./typica.w" QWidget*widget= widgetStack->top(); if(layout) { widget->setLayout(layout); } layoutStack->pop(); } } /*:193*//*195:*/ #line 4347 "./typica.w" void populateStackedLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QDomNodeList children= element.childNodes(); QStackedLayout*layout= qobject_cast (layoutStack->top()); for(int i= 0;iaddWidget(widget); widgetStack->push(widget); populateWidget(currentElement,widgetStack,layoutStack); widgetStack->pop(); } } } } /*:195*//*196:*/ #line 4379 "./typica.w" void populateGridLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QDomNodeList children= element.childNodes(); int row= -1; QGridLayout*layout= qobject_cast (layoutStack->top()); for(int i= 0;isetRowMinimumHeight(row, currentElement.attribute("height").toInt()); } if(currentElement.hasAttribute("stretch")) { layout->setRowStretch(row, currentElement.attribute("stretch").toInt()); } /*197:*/ #line 4435 "./typica.w" int column= -1; QDomNodeList rowChildren= currentElement.childNodes(); for(int j= 0;jsetColumnMinimumWidth(column, columnElement.attribute("width").toInt()); } if(columnElement.hasAttribute("stretch")) { layout->setColumnStretch(column, columnElement.attribute("stretch").toInt()); } int hspan= 1; int vspan= 1; if(columnElement.hasAttribute("rowspan")) { vspan= columnElement.attribute("rowspan").toInt(); } if(columnElement.hasAttribute("colspan")) { hspan= columnElement.attribute("colspan").toInt(); } QHBoxLayout*cell= new QHBoxLayout; layout->addLayout(cell,row,column,vspan,hspan); layoutStack->push(cell); populateBoxLayout(columnElement,widgetStack,layoutStack); layoutStack->pop(); } } } /*:197*/ #line 4407 "./typica.w" } } } } /*:196*//*198:*/ #line 4485 "./typica.w" void populateBoxLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QDomNodeList children= element.childNodes(); for(int i= 0;i (layoutStack->top()); QLabel*label= new QLabel(currentElement.text()); layout->addWidget(label); } else if(currentElement.tagName()=="lcdtemperature") { addTemperatureDisplayToLayout(currentElement,widgetStack, layoutStack); } else if(currentElement.tagName()=="lcdtimer") { addTimerDisplayToLayout(currentElement,widgetStack, layoutStack); } else if(currentElement.tagName()=="line") { addLineToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="report") { addReportToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="sqldrop") { addSqlDropToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="sqltablearray") { addSaltToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="sqlview") { addSqlQueryViewToLayout(currentElement,widgetStack, layoutStack); } else if(currentElement.tagName()=="textarea") { addTextToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="spinbox") { addSpinBoxToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="formarray") { addFormArrayToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="hscale") { addScaleControlToLayout(currentElement,widgetStack, layoutStack); } else if(currentElement.tagName()=="vscale") { addIntensityControlToLayout(currentElement,widgetStack, layoutStack); } else if(currentElement.tagName()=="webview") { addWebViewToLayout(currentElement,widgetStack,layoutStack); } else if(currentElement.tagName()=="stretch") { QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addStretch(); } /*655:*/ #line 442 "./daterangeselector.w" else if(currentElement.tagName()=="daterange") { addDateRangeToLayout(currentElement,widgetStack,layoutStack); } /*:655*/ #line 4588 "./typica.w" } } } /*:198*//*199:*/ #line 4596 "./typica.w" void addLayoutToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QLayout*targetLayout= layoutStack->pop(); QBoxLayout*boxLayout= qobject_cast (targetLayout); if(element.hasAttribute("type")) { /*194:*/ #line 4300 "./typica.w" QLayout*layout; QString layoutType= element.attribute("type"); if(layoutType=="horizontal") { layout= new QHBoxLayout; layoutStack->push(layout); populateBoxLayout(element,widgetStack,layoutStack); } else if(layoutType=="vertical") { layout= new QVBoxLayout; layoutStack->push(layout); populateBoxLayout(element,widgetStack,layoutStack); } else if(layoutType=="grid") { layout= new QGridLayout; layoutStack->push(layout); populateGridLayout(element,widgetStack,layoutStack); } else if(layoutType=="stack") { layout= new QStackedLayout; layoutStack->push(layout); populateStackedLayout(element,widgetStack,layoutStack); } if(element.hasAttribute("id")) { layout->setObjectName(element.attribute("id")); } if(element.hasAttribute("spacing")) { layout->setSpacing(element.attribute("spacing").toInt()); } if(element.hasAttribute("margin")) { int m= element.attribute("margin").toInt(); layout->setContentsMargins(m,m,m,m); } /*:194*/ #line 4604 "./typica.w" boxLayout->addLayout(layout); layoutStack->pop(); } layoutStack->push(targetLayout); } /*:199*//*200:*/ #line 4615 "./typica.w" void addSplitterToLayout(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QBoxLayout*layout= qobject_cast (layoutStack->top()); QSplitter*splitter= new(QSplitter); layout->addWidget(splitter); /*201:*/ #line 4628 "./typica.w" QString orientation= element.attribute("type"); if(orientation=="horizontal") { splitter->setOrientation(Qt::Horizontal); } else if(orientation=="vertical") { splitter->setOrientation(Qt::Vertical); } QString id= element.attribute("id"); if(!id.isEmpty()) { splitter->setObjectName(id); } if(element.hasChildNodes()) { widgetStack->push(splitter); populateSplitter(element,widgetStack,layoutStack); widgetStack->pop(); } /*:201*/ #line 4622 "./typica.w" } /*:200*//*202:*/ #line 4654 "./typica.w" void populateSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QDomNodeList children= element.childNodes(); for(int i= 0;i *widgetStack, QStack *layoutStack) { QSplitter*parent= qobject_cast (widgetStack->top()); QSplitter*splitter= new(QSplitter); splitter->setParent(parent); parent->addWidget(splitter); /*201:*/ #line 4628 "./typica.w" QString orientation= element.attribute("type"); if(orientation=="horizontal") { splitter->setOrientation(Qt::Horizontal); } else if(orientation=="vertical") { splitter->setOrientation(Qt::Vertical); } QString id= element.attribute("id"); if(!id.isEmpty()) { splitter->setObjectName(id); } if(element.hasChildNodes()) { widgetStack->push(splitter); populateSplitter(element,widgetStack,layoutStack); widgetStack->pop(); } /*:201*/ #line 4712 "./typica.w" } /*:203*//*204:*/ #line 4721 "./typica.w" void addTemperatureDisplayToSplitter(QDomElement element, QStack *widgetStack, QStack *) { TemperatureDisplay*display= new(TemperatureDisplay); if(element.hasAttribute("id")) { display->setObjectName(element.attribute("id")); } QSplitter*splitter= qobject_cast (widgetStack->top()); splitter->addWidget(display); } void addTemperatureDisplayToLayout(QDomElement element, QStack *, QStack *layoutStack) { TemperatureDisplay*display= new(TemperatureDisplay); if(element.hasAttribute("id")) { display->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(display); } /*:204*//*205:*/ #line 4752 "./typica.w" void addTimerDisplayToSplitter(QDomElement element, QStack *widgetStack, QStack *) { TimerDisplay*display= new(TimerDisplay); if(element.hasAttribute("id")) { display->setObjectName(element.attribute("id")); } if(element.hasAttribute("format")) { display->setDisplayFormat(element.attribute("format")); } QSplitter*splitter= qobject_cast (widgetStack->top()); splitter->addWidget(display); } void addTimerDisplayToLayout(QDomElement element, QStack *, QStack *layoutStack) { TimerDisplay*display= new(TimerDisplay); if(element.hasAttribute("id")) { display->setObjectName(element.attribute("id")); } if(element.hasAttribute("format")) { display->setDisplayFormat(element.attribute("format")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(display); } /*:205*//*206:*/ #line 4790 "./typica.w" void addDecorationToLayout(QDomElement element,QStack *, QStack *layoutStack) { /*207:*/ #line 4811 "./typica.w" QString labelText= element.attribute("name"); Qt::Orientations orientation= Qt::Horizontal; if(element.hasAttribute("type")) { if(element.attribute("type")=="horizontal") { orientation= Qt::Horizontal; } else if(element.attribute("type")=="vertical") { orientation= Qt::Vertical; } } /*208:*/ #line 4836 "./typica.w" QWidget*theWidget= NULL; QDomNodeList children= element.childNodes(); for(int i= 0;isetObjectName(itemElement.attribute("id")); } theWidget= display; } else if(itemElement.tagName()=="lcdtimer") { TimerDisplay*display= new TimerDisplay; if(itemElement.hasAttribute("id")) { display->setObjectName(itemElement.attribute("id")); } if(itemElement.hasAttribute("format")) { display->setDisplayFormat(itemElement.attribute("format")); } theWidget= display; } } } /*:208*/ #line 4825 "./typica.w" WidgetDecorator*decoration= new WidgetDecorator(theWidget,labelText, orientation); if(element.hasAttribute("id")) { decoration->setObjectName(element.attribute("id")); } /*:207*/ #line 4794 "./typica.w" QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(decoration); } void addDecorationToSplitter(QDomElement element, QStack *widgetStack, QStack *) { /*207:*/ #line 4811 "./typica.w" QString labelText= element.attribute("name"); Qt::Orientations orientation= Qt::Horizontal; if(element.hasAttribute("type")) { if(element.attribute("type")=="horizontal") { orientation= Qt::Horizontal; } else if(element.attribute("type")=="vertical") { orientation= Qt::Vertical; } } /*208:*/ #line 4836 "./typica.w" QWidget*theWidget= NULL; QDomNodeList children= element.childNodes(); for(int i= 0;isetObjectName(itemElement.attribute("id")); } theWidget= display; } else if(itemElement.tagName()=="lcdtimer") { TimerDisplay*display= new TimerDisplay; if(itemElement.hasAttribute("id")) { display->setObjectName(itemElement.attribute("id")); } if(itemElement.hasAttribute("format")) { display->setDisplayFormat(itemElement.attribute("format")); } theWidget= display; } } } /*:208*/ #line 4825 "./typica.w" WidgetDecorator*decoration= new WidgetDecorator(theWidget,labelText, orientation); if(element.hasAttribute("id")) { decoration->setObjectName(element.attribute("id")); } /*:207*/ #line 4803 "./typica.w" QSplitter*splitter= qobject_cast (widgetStack->top()); splitter->addWidget(decoration); } /*:206*//*209:*/ #line 4875 "./typica.w" void addWidgetToSplitter(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QSplitter*splitter= qobject_cast (widgetStack->top()); QWidget*widget= new QWidget; if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } splitter->addWidget(widget); if(element.hasChildNodes()) { widgetStack->push(widget); populateWidget(element,widgetStack,layoutStack); widgetStack->pop(); } } void populateWidget(QDomElement element,QStack *widgetStack, QStack *layoutStack) { QDomNodeList children= element.childNodes(); for(int i= 0;i *, QStack *layoutStack) { QAbstractButton*button= NULL; QString text= element.attribute("name"); if(element.hasAttribute("type")) { QString type= element.attribute("type"); if(type=="annotation") { AnnotationButton*abutton= new AnnotationButton(text); if(element.hasAttribute("annotation")) { abutton->setAnnotation(element.attribute("annotation")); } if(element.hasAttribute("series")) { abutton->setTemperatureColumn(element.attribute("series"). toInt()); } if(element.hasAttribute("column")) { abutton->setAnnotationColumn(element.attribute("column"). toInt()); } button= abutton; } else if(type=="check") { button= new QCheckBox(text); } else if(type=="push") { button= new QPushButton(text); } } if(element.hasAttribute("id")) { button->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(button); } /*:210*//*211:*/ #line 4970 "./typica.w" void addSpinBoxToLayout(QDomElement element,QStack *, QStack *layoutStack) { AnnotationSpinBox*box= new AnnotationSpinBox("","",NULL); if(element.hasAttribute("pretext")) { box->setPretext(element.attribute("pretext")); } if(element.hasAttribute("posttext")) { box->setPosttext(element.attribute("posttext")); } if(element.hasAttribute("series")) { box->setTemperatureColumn(element.attribute("series").toInt()); } if(element.hasAttribute("column")) { box->setAnnotationColumn(element.attribute("column").toInt()); } if(element.hasAttribute("min")) { box->setMinimum(element.attribute("min").toDouble()); } if(element.hasAttribute("max")) { box->setMaximum(element.attribute("max").toDouble()); } if(element.hasAttribute("decimals")) { box->setDecimals(element.attribute("decimals").toInt()); } if(element.hasAttribute("step")) { box->setSingleStep(element.attribute("step").toDouble()); } if(element.hasAttribute("id")) { box->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(box); } /*:211*//*212:*/ #line 5026 "./typica.w" void addZoomLogToSplitter(QDomElement element,QStack *widgetStack, QStack *) { ZoomLog*widget= new ZoomLog; if(!widget) { qDebug()<<"Error constructing widget!"; } if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } if(element.hasChildNodes()) { QDomNodeList children= element.childNodes(); int column= 0; for(int i= 0;isetHeaderData(column,text); column++; } } } } QSplitter*splitter= qobject_cast (widgetStack->top()); if(splitter) { splitter->addWidget(widget); } else { qDebug()<<"Splitter not found at top of widget stack!"; } } /*:212*//*213:*/ #line 5074 "./typica.w" void addGraphToSplitter(QDomElement element,QStack *widgetStack, QStack *) { GraphView*view= new GraphView; if(element.hasAttribute("id")) { view->setObjectName(element.attribute("id")); } QSplitter*splitter= qobject_cast (widgetStack->top()); splitter->addWidget(view); } /*:213*//*214:*/ #line 5091 "./typica.w" void addSqlDropToLayout(QDomElement element,QStack *, QStack *layoutStack) { SqlComboBox*box= new SqlComboBox(); if(element.hasAttribute("data")) { box->setDataColumn(element.attribute("data").toInt()); } if(element.hasAttribute("display")) { box->setDisplayColumn(element.attribute("display").toInt()); } if(element.hasAttribute("showdata")) { if(element.attribute("showdata")=="true") { box->showData(true); } } if(element.hasAttribute("editable")) { if(element.attribute("editable")=="true") { box->setEditable(true); } } if(element.hasChildNodes()) { QDomNodeList children= element.childNodes(); for(int i= 0;iaddNullOption(); } else if(currentElement.tagName()=="query") { box->addSqlOptions(currentElement.text()); } } } } if(element.hasAttribute("id")) { box->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(box); } /*:214*//*215:*/ #line 5170 "./typica.w" void addSaltToLayout(QDomElement element,QStack *, QStack *layoutStack) { QTableView*view= new QTableView; view->setProperty("tabletype",QVariant(QString("SaltTable"))); SaltModel*model= new SaltModel(element.childNodes().count()); if(element.hasAttribute("id")) { view->setObjectName(element.attribute("id")); } if(element.hasChildNodes()) { QDomNodeList children= element.childNodes(); int currentColumn= 0; for(int i= 0;isetHeaderData(currentColumn,Qt::Horizontal, currentElement.attribute("name")); } if(currentElement.hasAttribute("delegate")) { /*216:*/ #line 5218 "./typica.w" if(currentElement.attribute("delegate")=="sql") { /*217:*/ #line 5234 "./typica.w" SqlComboBoxDelegate*delegate= new SqlComboBoxDelegate; SqlComboBox*widget= new SqlComboBox(); if(currentElement.hasAttribute("nulltext")) { widget->setNullText(currentElement.attribute("nulltext")); } if(currentElement.hasAttribute("nulldata")) { widget->setNullData(QVariant(currentElement.attribute("nulldata"))); } if(currentElement.hasAttribute("null")) { if(currentElement.attribute("null")=="true") { widget->addNullOption(); } } if(currentElement.hasAttribute("showdata")) { if(currentElement.attribute("showdata")=="true") { widget->showData(true); } } if(currentElement.hasAttribute("data")) { widget->setDataColumn(currentElement.attribute("data").toInt()); } if(currentElement.hasAttribute("display")) { widget->setDisplayColumn(currentElement.attribute("display").toInt()); } widget->addSqlOptions(currentElement.text()); delegate->setWidget(widget); view->setItemDelegateForColumn(currentColumn,delegate); /*:217*/ #line 5221 "./typica.w" } else if(currentElement.attribute("delegate")=="numeric") { /*218:*/ #line 5275 "./typica.w" NumericDelegate*delegate= new NumericDelegate; view->setItemDelegateForColumn(currentColumn,delegate); /*:218*/ #line 5225 "./typica.w" } /*:216*/ #line 5202 "./typica.w" } currentColumn++; } } } } view->setModel(model); QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(view); } /*:215*//*225:*/ #line 5385 "./typica.w" void addLineToLayout(QDomElement element,QStack *, QStack *layoutStack) { QLineEdit*widget= new QLineEdit(element.text()); if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } if(element.hasAttribute("writable")) { if(element.attribute("writable")=="false") { widget->setReadOnly(true); } } if(element.hasAttribute("validator")) { if(element.attribute("validator")=="numeric") { widget->setValidator(new QDoubleValidator(NULL)); } else if(element.attribute("validator")=="integer") { widget->setValidator(new QIntValidator(NULL)); } else if(element.attribute("validator")=="expression"&& element.hasAttribute("expression")) { widget->setValidator(new QRegExpValidator( QRegExp(element.attribute("expression")), NULL)); } } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); } /*:225*//*226:*/ #line 5426 "./typica.w" void addTextToLayout(QDomElement element,QStack *, QStack *layoutStack) { QTextEdit*widget= new QTextEdit; if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); } /*:226*//*227:*/ #line 5443 "./typica.w" void addSqlQueryViewToLayout(QDomElement element, QStack *, QStack *layoutStack) { SqlQueryView*view= new SqlQueryView; if(element.hasAttribute("id")) { view->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(view); } /*:227*//*228:*/ #line 5460 "./typica.w" void addCalendarToLayout(QDomElement element,QStack *, QStack *layoutStack) { QWidget*widget; if(element.hasAttribute("time")) { if(element.attribute("time")=="true") { QDateTimeEdit*edit= new QDateTimeEdit; edit->setDateTime(QDateTime::currentDateTime()); edit->setCalendarPopup(true); edit->setDisplayFormat("yyyy-MM-dd hh:mm:ss"); widget= qobject_cast (edit); } else { QDateEdit*edit= new QDateEdit; edit->setDate(QDate::currentDate()); edit->setCalendarPopup(true); edit->setDisplayFormat("yyyy-MM-dd"); widget= qobject_cast (edit); } } else { QDateEdit*edit= new QDateEdit; edit->setDate(QDate::currentDate()); edit->setCalendarPopup(true); edit->setDisplayFormat("yyyy-MM-dd"); widget= qobject_cast (edit); } if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); } /*:228*//*229:*/ #line 5503 "./typica.w" void setQDateEditProperties(QScriptValue value,QScriptEngine*engine) { setQDateTimeEditProperties(value,engine); } void setQDateTimeEditProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractSpinBoxProperties(value,engine); value.setProperty("setDate",engine->newFunction(QDateTimeEdit_setDate)); value.setProperty("day",engine->newFunction(QDateTimeEdit_day)); value.setProperty("month",engine->newFunction(QDateTimeEdit_month)); value.setProperty("year",engine->newFunction(QDateTimeEdit_year)); } /*:229*//*230:*/ #line 5523 "./typica.w" QScriptValue QDateTimeEdit_setDate(QScriptContext*context,QScriptEngine*) { QDateTimeEdit*self= getself (context); if(context->argumentCount()==3) { self->setDate(QDate(argument (0,context), argument (1,context), argument (2,context))); } else { context->throwError("Incorrect number of arguments passed to " "QDateTimeEdit::setDate(). This method takes three integer arguments " "specifying the year, month, and day."); } return QScriptValue(); } QScriptValue QDateTimeEdit_day(QScriptContext*context,QScriptEngine*) { QDateTimeEdit*self= getself (context); return QScriptValue(self->date().day()); } QScriptValue QDateTimeEdit_month(QScriptContext*context,QScriptEngine*) { QDateTimeEdit*self= getself (context); return QScriptValue(self->date().month()); } QScriptValue QDateTimeEdit_year(QScriptContext*context,QScriptEngine*) { QDateTimeEdit*self= getself (context); return QScriptValue(self->date().year()); } /*:230*//*234:*/ #line 5590 "./typica.w" QScriptValue findChildObject(QScriptContext*context,QScriptEngine*engine) { QObject*parent= argument (0,context); QString name= argument (1,context); QObject*object= parent->findChild (name); QScriptValue value; if(object) { value= engine->newQObject(object); QString className= object->metaObject()->className(); /*235:*/ #line 5608 "./typica.w" if(className=="TemperatureDisplay") { setTemperatureDisplayProperties(value,engine); } else if(className=="TimerDisplay") { setTimerDisplayProperties(value,engine); } else if(className=="QAction") { setQActionProperties(value,engine); } else if(className=="QBoxLayout") { setQBoxLayoutProperties(value,engine); } else if(className=="QDateEdit") { setQDateEditProperties(value,engine); } else if(className=="QDateTimeEdit") { setQDateTimeEditProperties(value,engine); } else if(className=="QFrame") { setQFrameProperties(value,engine); } else if(className=="QHBoxLayout") { setQBoxLayoutProperties(value,engine); } else if(className=="QLCDNumber") { setQLCDNumberProperties(value,engine); } else if(className=="QMenu") { setQMenuProperties(value,engine); } else if(className=="QMenuBar") { setQMenuBarProperties(value,engine); } else if(className=="QPushButton") { setQPushButtonProperties(value,engine); } else if(className=="QSplitter") { setQSplitterProperties(value,engine); } else if(className=="QTableView") { if(object->property("tabletype").isValid()) { if(object->property("tabletype").toString()=="SaltTable") { setSaltTableProperties(value,engine); } } } else if(className=="QVBoxLayout") { setQBoxLayoutProperties(value,engine); } else if(className=="QWidget") { setQWidgetProperties(value,engine); } else if(className=="ScriptQMainWindow") { setQMainWindowProperties(value,engine); } else if(className=="SqlComboBox") { setSqlComboBoxProperties(value,engine); } else if(className=="SqlQueryView") { setSqlQueryViewProperties(value,engine); } else if(className=="ZoomLog") { setZoomLogProperties(value,engine); } else if(className=="QTextEdit") { setQTextEditProperties(value,engine); } else if(className=="QWebView") { setQWebViewProperties(value,engine); } else if(className=="QLineEdit") { setQLineEditProperties(value,engine); } /*:235*/ #line 5601 "./typica.w" } return value; } /*:234*//*237:*/ #line 5737 "./typica.w" QScriptValue SaltTable_columnSum(QScriptContext*context,QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); QString datum; double total= 0.0; int column= argument (0,context); int role= argument (1,context); for(int i= 0;irowCount();i++) { datum= model->data(model->index(i,column),role).toString(); if(!datum.isEmpty()) { total+= datum.toDouble(); } } return QScriptValue(engine,total); } /*:237*//*238:*/ #line 5761 "./typica.w" QScriptValue SaltTable_columnArray(QScriptContext*context, QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); int column= argument (0,context); int role= argument (1,context); QString literal= model->arrayLiteral(column,role); return QScriptValue(engine,literal); } QScriptValue SaltTable_quotedColumnArray(QScriptContext*context, QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); int column= argument (0,context); int role= argument (1,context); QString literal= model->quotedArrayLiteral(column,role); return QScriptValue(engine,literal); } QScriptValue SaltTable_bindableColumnArray(QScriptContext*context, QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); int column= argument (0,context); int role= argument (1,context); QString literal= model->arrayLiteral(column,role); literal.chop(1); literal= literal.remove(0,1); return QScriptValue(engine,literal); } QScriptValue SaltTable_bindableQuotedColumnArray(QScriptContext*context, QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); int column= argument (0,context); int role= argument (1,context); QString literal= model->quotedArrayLiteral(column,role); literal.chop(1); literal= literal.remove(0,1); return QScriptValue(engine,literal); } /*:238*//*239:*/ #line 5813 "./typica.w" QScriptValue SaltTable_model(QScriptContext*context,QScriptEngine*engine) { QTableView*self= getself (context); QScriptValue value= engine->newQObject(self->model()); return value; } /*:239*//*240:*/ #line 5827 "./typica.w" QScriptValue SaltTable_setData(QScriptContext*context,QScriptEngine*) { QTableView*self= getself (context); int row= argument (0,context); int column= argument (1,context); QVariant value= argument (2,context); int role= argument (3,context); SaltModel*model= qobject_cast (self->model()); QModelIndex cell= model->index(row,column); model->setData(cell,value,role); self->update(cell); return QScriptValue(); } /*:240*//*241:*/ #line 5845 "./typica.w" QScriptValue SaltTable_data(QScriptContext*context,QScriptEngine*engine) { QTableView*self= getself (context); int row= argument (0,context); int column= argument (1,context); int role= argument (2,context); SaltModel*model= qobject_cast (self->model()); QModelIndex cell= model->index(row,column); QVariant value= model->data(cell,role); QScriptValue retval= engine->newVariant(value); retval.setProperty("value",QScriptValue(value.toString())); return retval; } /*:241*//*242:*/ #line 5865 "./typica.w" QScriptValue SaltTable_clear(QScriptContext*context,QScriptEngine*) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); model->clear(); return QScriptValue(); } /*:242*//*243:*/ #line 5877 "./typica.w" QScriptValue SaltTable_removeRow(QScriptContext*context,QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); int row= argument (0,context); return engine->newVariant(model->removeRow(row)); } /*:243*//*244:*/ #line 5890 "./typica.w" QScriptValue SaltTable_findData(QScriptContext*context,QScriptEngine*engine) { QTableView*self= getself (context); SaltModel*model= qobject_cast (self->model()); QVariant value= argument (0,context); int column= argument (1,context); return engine->newVariant(model->findData(value,column)); } /*:244*//*245:*/ #line 5903 "./typica.w" void setSaltTableProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); value.setProperty("columnArray", engine->newFunction(SaltTable_columnArray)); value.setProperty("quotedColumnArray", engine->newFunction(SaltTable_quotedColumnArray)); value.setProperty("bindableColumnArray", engine->newFunction(SaltTable_bindableColumnArray)); value.setProperty("bindableQuotedColumnArray", engine->newFunction(SaltTable_bindableQuotedColumnArray)); value.setProperty("columnSum",engine->newFunction(SaltTable_columnSum)); value.setProperty("data",engine->newFunction(SaltTable_data)); value.setProperty("model",engine->newFunction(SaltTable_model)); value.setProperty("setData",engine->newFunction(SaltTable_setData)); value.setProperty("clear",engine->newFunction(SaltTable_clear)); value.setProperty("removeRow",engine->newFunction(SaltTable_removeRow)); value.setProperty("findData",engine->newFunction(SaltTable_findData)); } /*:245*//*247:*/ #line 5940 "./typica.w" void setSqlComboBoxProperties(QScriptValue value,QScriptEngine*engine) { setQComboBoxProperties(value,engine); } void setQComboBoxProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); value.setProperty("currentData", engine->newFunction(QComboBox_currentData)); value.setProperty("addItem",engine->newFunction(QComboBox_addItem)); value.setProperty("setModel",engine->newFunction(QComboBox_setModel)); value.setProperty("findText",engine->newFunction(QComboBox_findText)); value.setProperty("findData",engine->newFunction(QComboBox_findData)); } QScriptValue QComboBox_currentData(QScriptContext*context, QScriptEngine*engine) { QComboBox*self= getself (context); return QScriptValue(engine, self->itemData(self->currentIndex()).toString()); } QScriptValue QComboBox_addItem(QScriptContext*context,QScriptEngine*) { QComboBox*self= getself (context); self->addItem(argument (0,context)); return QScriptValue(); } QScriptValue QComboBox_setModel(QScriptContext*context,QScriptEngine*) { QComboBox*self= getself (context); self->setModel(argument (0,context)); return QScriptValue(); } QScriptValue QComboBox_findText(QScriptContext*context,QScriptEngine*engine) { QComboBox*self= getself (context); return QScriptValue(engine,self->findText(argument (0,context))); } QScriptValue QComboBox_findData(QScriptContext*context,QScriptEngine*engine) { QComboBox*self= getself (context); return QScriptValue(engine,self->findData(argument (0,context))); } #line 1 "./abouttypica.w" /*:247*//*260:*/ #line 388 "./units.w" QScriptValue Units_convertTemperature(QScriptContext*context,QScriptEngine*) { return QScriptValue(Units::convertTemperature(argument (0,context), argument (1,context), argument (2,context))); } QScriptValue Units_convertRelativeTemperature(QScriptContext*context, QScriptEngine*) { return QScriptValue(Units::convertRelativeTemperature( argument (0,context), argument (1,context), argument (2,context))); } QScriptValue Units_isTemperatureUnit(QScriptContext*context,QScriptEngine*) { return QScriptValue(Units::isTemperatureUnit(argument (0,context))); } QScriptValue Units_convertWeight(QScriptContext*context,QScriptEngine*) { return QScriptValue(Units::convertWeight(argument (0,context), argument (1,context), argument (2,context))); } QScriptValue Units_isWeightUnit(QScriptContext*context,QScriptEngine*) { return QScriptValue(Units::isWeightUnit(argument (0,context))); } /*:260*//*263:*/ #line 436 "./units.w" QScriptValue Unit_toScriptValue(QScriptEngine*engine,const Units::Unit&value) { return engine->newVariant(QVariant(value)); } void Unit_fromScriptValue(const QScriptValue&sv,Units::Unit&value) { value= sv.toVariant().value (); } /*:263*//*273:*/ #line 149 "./measurement.w" QScriptValue constructMeasurement(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==2||context->argumentCount()==3) { double measurement= argument (0,context); QTime timestamp= argument (1,context); Units::Unit unit= Units::Fahrenheit; if(context->argumentCount()==3) { unit= argument (2,context); } object= engine->toScriptValue (Measurement(measurement,timestamp,unit)); setMeasurementProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "Measurement::Measurement(). This method takes two " "or three arguments."); } return object; } /*:273*//*274:*/ #line 176 "./measurement.w" void setMeasurementProperties(QScriptValue,QScriptEngine*) { } /*:274*//*275:*/ #line 184 "./measurement.w" QScriptValue Measurement_toScriptValue(QScriptEngine*engine,const Measurement&measurement) { QVariant var; var.setValue(measurement); return engine->newVariant(var); } void Measurement_fromScriptValue(const QScriptValue&value,Measurement&measurement) { measurement= value.toVariant().value (); } #line 6009 "./typica.w" /*:275*//*293:*/ #line 6586 "./typica.w" QScriptValue constructDAQ(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1) { object= engine->newQObject(new DAQ(argument (0,context)), QScriptEngine::ScriptOwnership); setDAQProperties(object,engine); } else if(context->argumentCount()==2) { object= engine->newQObject(new DAQ(argument (0,context), argument (1,context)), QScriptEngine::ScriptOwnership); setDAQProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to DAQ" "constructor. The DAQ constructor takes one" "string as an argument specifying a device name." "Example: Dev1"); } return object; } /*:293*//*294:*/ #line 6616 "./typica.w" void setDAQProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("newChannel",engine->newFunction(DAQ_newChannel)); } /*:294*//*295:*/ #line 6626 "./typica.w" QScriptValue DAQ_newChannel(QScriptContext*context,QScriptEngine*engine) { DAQ*self= getself (context); QScriptValue object; if(self) { object= engine->newQObject(self->newChannel(argument (0,context), argument (1,context))); setChannelProperties(object,engine); } return object; } /*:295*//*302:*/ #line 6782 "./typica.w" QScriptValue constructFakeDAQ(QScriptContext*context, QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1) { object= engine->newQObject(new FakeDAQ(argument (0,context)), QScriptEngine::ScriptOwnership); setFakeDAQProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to DAQ" "constructor. The DAQ constructor takes one" "string as an argument specifying a device name." "Example: Dev1"); } return object; } void setFakeDAQProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("newChannel",engine->newFunction(FakeDAQ_newChannel)); } QScriptValue FakeDAQ_newChannel(QScriptContext*context,QScriptEngine*engine) { FakeDAQ*self= getself (context); QScriptValue object; if(self) { object= engine->newQObject(self->newChannel(argument (0,context), argument (1,context))); setChannelProperties(object,engine); } return object; } /*:302*//*306:*/ #line 6873 "./typica.w" void setChannelProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:306*//*313:*/ #line 7065 "./typica.w" QScriptValue constructLinearCalibrator(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new LinearCalibrator(NULL)); setLinearCalibratorProperties(object,engine); return object; } void setLinearCalibratorProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:313*//*318:*/ #line 7203 "./typica.w" QScriptValue constructLinearSplineInterpolator(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new LinearSplineInterpolator(NULL)); setLinearSplineInterpolatorProperties(object,engine); return object; } void setLinearSplineInterpolatorProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:318*//*328:*/ #line 7409 "./typica.w" QScriptValue constructTemperatureDisplay(QScriptContext*, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new TemperatureDisplay); setTemperatureDisplayProperties(object,engine); return object; } void setTemperatureDisplayProperties(QScriptValue value,QScriptEngine*engine) { setQLCDNumberProperties(value,engine); value.setProperty("setDisplayUnits", engine->newFunction(TemperatureDisplay_setDisplayUnits)); } /*:328*//*329:*/ #line 7433 "./typica.w" QScriptValue TemperatureDisplay_setDisplayUnits(QScriptContext*context,QScriptEngine*) { TemperatureDisplay*self= getself (context); self->setDisplayUnits((Units::Unit)argument (0,context)); return QScriptValue(); } /*:329*//*336:*/ #line 7570 "./typica.w" QScriptValue constructMeasurementTimeOffset(QScriptContext*, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new MeasurementTimeOffset(QTime::currentTime())); setMeasurementTimeOffsetProperties(object,engine); return object; } void setMeasurementTimeOffsetProperties(QScriptValue value, QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:336*//*341:*/ #line 7679 "./typica.w" QScriptValue constructThresholdDetector(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new ThresholdDetector(300)); return object; } void setThresholdDetectorProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:341*//*346:*/ #line 7776 "./typica.w" QScriptValue constructZeroEmitter(QScriptContext*context, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new ZeroEmitter(argument (0,context))); setZeroEmitterProperties(object,engine); return object; } void setZeroEmitterProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:346*//*351:*/ #line 7856 "./typica.w" QScriptValue constructMeasurementAdapter(QScriptContext*context, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new MeasurementAdapter(argument (0,context))); setMeasurementAdapterProperties(object,engine); return object; } void setMeasurementAdapterProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:351*//*368:*/ #line 8318 "./typica.w" QScriptValue constructGraphView(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new GraphView); setGraphViewProperties(object,engine); return object; } void setGraphViewProperties(QScriptValue value,QScriptEngine*engine) { setQGraphicsViewProperties(value,engine); } /*:368*//*391:*/ #line 8956 "./typica.w" QScriptValue constructZoomLog(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new ZoomLog); setZoomLogProperties(object,engine); return object; } void setZoomLogProperties(QScriptValue value,QScriptEngine*engine) { setQTableViewProperties(value,engine); value.setProperty("saveXML",engine->newFunction(ZoomLog_saveXML)); value.setProperty("saveCSV",engine->newFunction(ZoomLog_saveCSV)); value.setProperty("saveState",engine->newFunction(ZoomLog_saveState)); value.setProperty("restoreState", engine->newFunction(ZoomLog_restoreState)); value.setProperty("lastTime",engine->newFunction(ZoomLog_lastTime)); value.setProperty("saveTemporary", engine->newFunction(ZoomLog_saveTemporary)); value.setProperty("setDisplayUnits",engine->newFunction(ZoomLog_setDisplayUnits)); } /*:391*//*392:*/ #line 8983 "./typica.w" QScriptValue ZoomLog_saveXML(QScriptContext*context,QScriptEngine*engine) { ZoomLog*self= getself (context); bool retval= self->saveXML(argument (0,context)); return QScriptValue(engine,retval); } QScriptValue ZoomLog_saveCSV(QScriptContext*context,QScriptEngine*engine) { ZoomLog*self= getself (context); bool retval= self->saveCSV(argument (0,context)); return QScriptValue(engine,retval); } QScriptValue ZoomLog_saveTemporary(QScriptContext*context, QScriptEngine*engine) { ZoomLog*self= getself (context); QString filename= QDir::tempPath(); filename.append("/"); filename.append(QUuid::createUuid().toString()); filename.append(".xml"); QFile*file= new QFile(filename); self->saveXML(file); file->close(); delete file; return QScriptValue(engine,filename); } /*:392*//*393:*/ #line 9031 "./typica.w" QScriptValue ZoomLog_saveState(QScriptContext*context,QScriptEngine*) { ZoomLog*self= getself (context); QString key= argument (0,context); int columns= argument (1,context); QSettings settings; for(int i= 0;icolumnWidth(i)) { settings.beginGroup(key); settings.setValue(QString("%1").arg(i),self->columnWidth(i)); settings.endGroup(); } } return QScriptValue(); } QScriptValue ZoomLog_restoreState(QScriptContext*context,QScriptEngine*) { ZoomLog*self= getself (context); QString key= argument (0,context); int columns= argument (1,context); QSettings settings; for(int i= 0;isetColumnWidth(i, settings.value(QString("%1").arg(i),80).toInt()); if(settings.value(QString("%1").arg(i),80).toInt()==0) { self->setColumnWidth(i,80); } settings.endGroup(); } return QScriptValue(); } QScriptValue ZoomLog_lastTime(QScriptContext*context,QScriptEngine*engine) { ZoomLog*self= getself (context); return QScriptValue(engine,self->lastTime(argument (0,context))); } /*:393*//*394:*/ #line 9084 "./typica.w" QScriptValue ZoomLog_setDisplayUnits(QScriptContext*context,QScriptEngine*) { ZoomLog*self= getself (context); self->setDisplayUnits((Units::Unit)argument (0,context)); return QScriptValue(); } /*:394*//*429:*/ #line 9904 "./typica.w" QScriptValue constructAnnotationButton(QScriptContext*context, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new AnnotationButton(argument (0,context))); setAnnotationButtonProperties(object,engine); return object; } void setAnnotationButtonProperties(QScriptValue value,QScriptEngine*engine) { setQPushButtonProperties(value,engine); } /*:429*//*437:*/ #line 10047 "./typica.w" QScriptValue constructAnnotationSpinBox(QScriptContext*context, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new AnnotationSpinBox( argument (0,context),argument (1,context))); setAnnotationSpinBoxProperties(object,engine); return object; } void setAnnotationSpinBoxProperties(QScriptValue value,QScriptEngine*engine) { setQDoubleSpinBoxProperties(value,engine); } void setQDoubleSpinBoxProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractSpinBoxProperties(value,engine); } void setQAbstractSpinBoxProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:437*//*458:*/ #line 10466 "./typica.w" QScriptValue constructTimerDisplay(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new TimerDisplay); setTimerDisplayProperties(object,engine); return object; } void setTimerDisplayProperties(QScriptValue value,QScriptEngine*engine) { setQLCDNumberProperties(value,engine); } /*:458*//*485:*/ #line 10961 "./typica.w" QScriptValue constructWidgetDecorator(QScriptContext*context, QScriptEngine*engine) { QWidget*widget= argument (0,context); QString text= argument (1,context); Qt::Orientations orientation; switch(argument (2,context)) { case 2: orientation= Qt::Vertical; break; default: orientation= Qt::Horizontal; break; } QScriptValue object= engine->newQObject(new WidgetDecorator(widget,text,orientation)); setWidgetDecoratorProperties(object,engine); return object; } void setWidgetDecoratorProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:485*//*498:*/ #line 11242 "./typica.w" QScriptValue constructLogEditWindow(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new LogEditWindow); return object; } /*:498*//*517:*/ #line 11770 "./typica.w" QScriptValue constructXMLInput(QScriptContext*context,QScriptEngine*engine) { QIODevice*device= argument (0,context); QScriptValue object= engine->newQObject(new XMLInput(&*device, argument (1,context))); object.setProperty("input",engine->newFunction(XMLInput_input)); return object; } QScriptValue XMLInput_input(QScriptContext*context,QScriptEngine*) { XMLInput*self= getself (context); self->input(); return QScriptValue(); } /*:517*//*531:*/ #line 157 "./webview.w" QScriptValue constructWebView(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new TypicaWebView); setQWebViewProperties(object,engine); return object; } void setQWebViewProperties(QScriptValue value,QScriptEngine*engine) { setQWidgetProperties(value,engine); } /*:531*//*532:*/ #line 174 "./webview.w" void addWebViewToLayout(QDomElement element,QStack *, QStack *layoutStack) { TypicaWebView*view= new TypicaWebView; if(element.hasAttribute("id")) { view->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(view); } /*:532*//*537:*/ #line 225 "./webview.w" QScriptValue QWebElement_toScriptValue(QScriptEngine*engine,const QWebElement&element) { QVariant var; var.setValue(element); QScriptValue object= engine->newVariant(var); return object; } void QWebElement_fromScriptValue(const QScriptValue&value,QWebElement&element) { element= value.toVariant().value (); } /*:537*//*542:*/ #line 290 "./webview.w" template<> QWebElement argument(int arg,QScriptContext*context) { return qscriptvalue_cast (context->argument(arg)); } /*:542*//*543:*/ #line 299 "./webview.w" QScriptValue constructWebElement(QScriptContext*context, QScriptEngine*engine) { QWebElement element= argument (0,context); QScriptValue object= engine->newQObject(new TypicaWebElement(element)); return object; } /*:543*//*611:*/ #line 13115 "./typica.w" QScriptValue constructSqlQueryView(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new SqlQueryView); setSqlQueryViewProperties(object,engine); return object; } void setSqlQueryViewProperties(QScriptValue value,QScriptEngine*engine) { setQTableViewProperties(value,engine); value.setProperty("setHeaderData", engine->newFunction(SqlQueryView_setHeaderData)); value.setProperty("setQuery",engine->newFunction(SqlQueryView_setQuery)); } /*:611*//*612:*/ #line 13133 "./typica.w" QScriptValue SqlQueryView_setQuery(QScriptContext*context,QScriptEngine*) { SqlQueryView*self= getself (context); QString query= argument (0,context); self->setQuery(query); self->reset(); return QScriptValue(); } QScriptValue SqlQueryView_setHeaderData(QScriptContext*context, QScriptEngine*) { SqlQueryView*self= getself (context); int section= argument (0,context); QString data= argument (1,context); self->setHeaderData(section,Qt::Horizontal,data,Qt::DisplayRole); return QScriptValue(); } /*:612*//*620:*/ #line 13340 "./typica.w" void addReportToLayout(QDomElement element,QStack *, QStack *layoutStack) { QTextEdit*widget= new QTextEdit; if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); QTextDocument*document= new QTextDocument; QFont defaultFont; defaultFont.setPointSize(11); document->setDefaultFont(defaultFont); QTextCursor cursor(document); /*621:*/ #line 13363 "./typica.w" QDomNodeList children= element.childNodes(); for(int i= 0;isetDefaultStyleSheet(currentElement.text()); } /*:622*//*623:*/ #line 13391 "./typica.w" if(currentElement.tagName()=="html") { cursor.insertHtml(currentElement.text()); } /*:623*//*624:*/ #line 13401 "./typica.w" if(currentElement.tagName()=="text") { cursor.insertText(currentElement.text()); } /*:624*//*625:*/ #line 13411 "./typica.w" if(currentElement.tagName()=="table") { QTextFrame*frame= cursor.insertFrame(QTextFrameFormat()); ReportTable*table= new ReportTable(frame,currentElement); table->setParent(widget); if(currentElement.hasAttribute("id")) { table->setObjectName(currentElement.attribute("id")); } } /*:625*/ #line 13373 "./typica.w" } } /*:621*/ #line 13356 "./typica.w" widget->setDocument(document); } /*:620*//*636:*/ #line 13624 "./typica.w" QScriptValue QTextEdit_print(QScriptContext*context,QScriptEngine*) { QTextEdit*self= getself (context); QTextDocument*document= self->document(); QPrinter printer; QPrintDialog printwindow(&printer,self); if(printwindow.exec()!=QDialog::Accepted) { return QScriptValue(); } document->print(&printer); return QScriptValue(); } /*:636*//*637:*/ #line 13642 "./typica.w" void setQTextEditProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractScrollAreaProperties(value,engine); value.setProperty("print",engine->newFunction(QTextEdit_print)); } #line 1 "./daterangeselector.w" /*:637*//*656:*/ #line 452 "./daterangeselector.w" void addDateRangeToLayout(QDomElement element,QStack *, QStack *layoutStack) { DateRangeSelector*widget= new DateRangeSelector; if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } if(element.hasAttribute("initial")) { widget->setCurrentIndex(element.attribute("initial").toInt()); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); } /*:656*//*667:*/ #line 13822 "./typica.w" void addFormArrayToLayout(QDomElement element,QStack *, QStack *layoutStack) { FormArray*widget= new FormArray(element); if(element.hasAttribute("id")) { widget->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(widget); } /*:667*//*688:*/ #line 14409 "./typica.w" void addScaleControlToLayout(QDomElement element,QStack *, QStack *layoutStack) { ScaleControl*scale= new ScaleControl; if(element.hasAttribute("id")) { scale->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(scale); } void addIntensityControlToLayout(QDomElement element,QStack *, QStack *layoutStack) { IntensityControl*scale= new IntensityControl; if(element.hasAttribute("id")) { scale->setObjectName(element.attribute("id")); } QBoxLayout*layout= qobject_cast (layoutStack->top()); layout->addWidget(scale); } /*:688*//*714:*/ #line 14999 "./typica.w" QScriptValue constructDeviceTreeModel(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new DeviceTreeModel); setDeviceTreeModelProperties(object,engine); return object; } /*:714*//*716:*/ #line 15022 "./typica.w" void setDeviceTreeModelProperties(QScriptValue value,QScriptEngine*engine) { setQAbstractItemModelProperties(value,engine); value.setProperty("referenceElement", engine->newFunction(DeviceTreeModel_referenceElement)); } void setQAbstractItemModelProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("data",engine->newFunction(QAbstractItemModel_data)); value.setProperty("index",engine->newFunction(QAbstractItemModel_index)); value.setProperty("rowCount",engine->newFunction(QAbstractItemModel_rowCount)); value.setProperty("hasChildren",engine->newFunction(QAbstractItemModel_hasChildren)); } /*:716*//*717:*/ #line 15049 "./typica.w" QScriptValue DeviceTreeModel_referenceElement(QScriptContext*context, QScriptEngine*engine) { DeviceTreeModel*model= getself (context); QDomElement referenceElement= model->referenceElement(argument (0,context)); QDomNodeList configData= referenceElement.elementsByTagName("attribute"); QDomElement node; QVariantMap retval; retval.insert("driver",referenceElement.attribute("driver")); for(int i= 0;itoScriptValue(retval); } QScriptValue QAbstractItemModel_data(QScriptContext*context,QScriptEngine*engine) { QAbstractItemModel*model= getself (context); QModelIndex index= argument (0,context); int role= argument (1,context); return engine->toScriptValue(model->data(index,role)); } QScriptValue QAbstractItemModel_index(QScriptContext*context,QScriptEngine*engine) { QAbstractItemModel*model= getself (context); int row= 0; int column= 0; QModelIndex index; if(context->argumentCount()> 1) { row= argument (0,context); column= argument (1,context); } if(context->argumentCount()> 2) { index= argument (2,context); } QModelIndex retval= model->index(row,column,index); return engine->toScriptValue(retval); } QScriptValue QAbstractItemModel_rowCount(QScriptContext*context, QScriptEngine*) { QAbstractItemModel*model= getself (context); QModelIndex index; if(context->argumentCount()==1) { index= argument (0,context); } return QScriptValue(model->rowCount(index)); } QScriptValue QAbstractItemModel_hasChildren(QScriptContext*context, QScriptEngine*engine) { QAbstractItemModel*model= getself (context); QModelIndex index; if(context->argumentCount()==1) { index= argument (0,context); } return QScriptValue(engine,model->hasChildren(index)); } /*:717*//*720:*/ #line 15133 "./typica.w" QScriptValue QModelIndex_toScriptValue(QScriptEngine*engine,const QModelIndex&index) { QVariant var; var.setValue(index); QScriptValue object= engine->newVariant(var); return object; } void QModelIndex_fromScriptValue(const QScriptValue&value,QModelIndex&index) { index= value.toVariant().value (); } /*:720*//*736:*/ #line 15431 "./typica.w" QScriptValue constructDeviceConfigurationWindow(QScriptContext*, QScriptEngine*engine) { QScriptValue object= engine->newQObject(new DeviceConfigurationWindow); return object; } /*:736*//*807:*/ #line 47 "./settings.w" QScriptValue constructSettingsWindow(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new SettingsWindow); return object; } /*:807*//*832:*/ #line 18011 "./typica.w" QScriptValue constructModbusRTUDevice(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==2) { object= engine->newQObject(new ModbusRTUDevice(argument (0,context), argument (1,context)), QScriptEngine::ScriptOwnership); setModbusRTUDeviceProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "ModbusRTUDevice constructor. This takes the configuration model " "and an index."); } return object; } /*:832*//*833:*/ #line 18033 "./typica.w" QScriptValue ModbusRTUDevice_pVChannel(QScriptContext*context,QScriptEngine*engine) { ModbusRTUDevice*self= getself (context); QScriptValue object; if(self) { if(self->channels.size()> 0) { object= engine->newQObject(self->channels.at(0)); setChannelProperties(object,engine); } } return object; } QScriptValue ModbusRTUDevice_sVChannel(QScriptContext*context,QScriptEngine*engine) { ModbusRTUDevice*self= getself (context); QScriptValue object; if(self) { if(self->channels.size()> 1) { object= engine->newQObject(self->channels.at(1)); setChannelProperties(object,engine); } } return object; } /*:833*//*834:*/ #line 18066 "./typica.w" void setModbusRTUDeviceProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("pVChannel",engine->newFunction(ModbusRTUDevice_pVChannel)); value.setProperty("sVChannel",engine->newFunction(ModbusRTUDevice_sVChannel)); } /*:834*//*852:*/ #line 357 "./unsupportedserial.w" QScriptValue createDevice(QScriptContext*context,QScriptEngine*engine) { QModelIndex deviceIndex= argument (0,context); JavaScriptDevice*device= new JavaScriptDevice(deviceIndex,engine); QScriptValue object= engine->newQObject(device); setQObjectProperties(object,engine); object.setProperty("getChannel",engine->newFunction(JavaScriptDevice_getChannel)); return object; } /*:852*//*857:*/ #line 430 "./unsupportedserial.w" QScriptValue JavaScriptDevice_getChannel(QScriptContext*context,QScriptEngine*engine) { JavaScriptDevice*self= getself (context); QScriptValue object; if(self) { object= engine->newQObject(self->getChannel(argument (0,context))); setChannelProperties(object,engine); } return object; } /*:857*//*864:*/ #line 630 "./unsupportedserial.w" QScriptValue getMeasurementTimestamp(QScriptContext*,QScriptEngine*engine) { return engine->toScriptValue (QTime::currentTime()); } /*:864*//*868:*/ #line 667 "./unsupportedserial.w" QScriptValue constructSerialPort(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new QextSerialPort()); setSerialPortProperties(object,engine); return object; } /*:868*//*869:*/ #line 678 "./unsupportedserial.w" void setSerialPortProperties(QScriptValue value,QScriptEngine*engine) { setQIODeviceProperties(value,engine); value.setProperty("flush",engine->newFunction(SerialPort_flush)); } /*:869*//*870:*/ #line 687 "./unsupportedserial.w" QScriptValue SerialPort_flush(QScriptContext*context,QScriptEngine*) { QextSerialPort*self= getself (context); self->flush(); return QScriptValue(); } #line 18617 "./typica.w" #line 1 "./phidgets.w" /*:870*//*891:*/ #line 456 "./phidgets.w" QScriptValue constructPhidgetsTemperatureSensor(QScriptContext*context,QScriptEngine*engine) { if(context->argumentCount()!=1) { context->throwError("Incorrect number of arguments passed to " "PhidgetsTemperatureSensor constructor. This takes " "a QModelIndex."); } QScriptValue object= engine->newQObject(new PhidgetsTemperatureSensor(argument (0,context)),QScriptEngine::ScriptOwnership); setQObjectProperties(object,engine); object.setProperty("getChannel",engine->newFunction(Phidgets_getChannel)); return object; } /*:891*//*892:*/ #line 473 "./phidgets.w" QScriptValue Phidgets_getChannel(QScriptContext*context,QScriptEngine*engine) { PhidgetsTemperatureSensor*self= getself (context); QScriptValue object; if(self) { object= engine->newQObject(self->getChannel(argument (0,context))); setChannelProperties(object,engine); } return object; } #line 18619 "./typica.w" /*:892*//*910:*/ #line 151 "./rate.w" QScriptValue constructRateOfChange(QScriptContext*context,QScriptEngine*engine) { int cachetime= 1; int scaletime= 1; if(context->argumentCount()> 0) { cachetime= argument (0,context); if(context->argumentCount()> 1) { scaletime= argument (1,context); } } QScriptValue object= engine->newQObject(new RateOfChange(cachetime,scaletime)); setRateOfChangeProperties(object,engine); return object; } void setRateOfChangeProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } /*:910*//*935:*/ #line 614 "./dataqsdk.w" QScriptValue constructDataqSdkDevice(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1) { object= engine->newQObject(new DataqSdkDevice(argument (0,context)), QScriptEngine::ScriptOwnership); setDataqSdkDeviceProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "DataqSdkDevice. The constructor takes one string " "as an argument specifying a device name. " "Example: Dev1"); } return object; } /*:935*//*936:*/ #line 637 "./dataqsdk.w" void setDataqSdkDeviceProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); value.setProperty("newChannel",engine->newFunction(DataqSdkDevice_newChannel)); } /*:936*//*937:*/ #line 647 "./dataqsdk.w" QScriptValue DataqSdkDevice_newChannel(QScriptContext*context,QScriptEngine*engine) { DataqSdkDevice*self= getself (context); QScriptValue object; if(self) { object= engine->newQObject(self->newChannel((Units::Unit)argument (0,context))); setChannelProperties(object,engine); } return object; } /*:937*//*962:*/ #line 80 "./scales.w" QScriptValue constructDragLabel(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; QString labelText= ""; if(context->argumentCount()==1) { labelText= argument (0,context); } object= engine->newQObject(new DragLabel(labelText)); setDragLabelProperties(object,engine); return object; } void setDragLabelProperties(QScriptValue value,QScriptEngine*engine) { setQLabelProperties(value,engine); } /*:962*//*972:*/ #line 272 "./scales.w" QScriptValue BaudRateType_toScriptValue(QScriptEngine*engine,const BaudRateType&value) { return engine->newVariant(QVariant((int)(value))); } void BaudRateType_fromScriptValue(const QScriptValue&sv,BaudRateType&value) { value= (BaudRateType)(sv.toVariant().toInt()); } QScriptValue DataBitsType_toScriptValue(QScriptEngine*engine,const DataBitsType&value) { return engine->newVariant(QVariant((int)(value))); } void DataBitsType_fromScriptValue(const QScriptValue&sv,DataBitsType&value) { value= (DataBitsType)(sv.toVariant().toInt()); } QScriptValue ParityType_toScriptValue(QScriptEngine*engine,const ParityType&value) { return engine->newVariant(QVariant((int)(value))); } void ParityType_fromScriptValue(const QScriptValue&sv,ParityType&value) { value= (ParityType)(sv.toVariant().toInt()); } QScriptValue StopBitsType_toScriptValue(QScriptEngine*engine,const StopBitsType&value) { return engine->newVariant(QVariant((int)(value))); } void StopBitsType_fromScriptValue(const QScriptValue&sv,StopBitsType&value) { value= (StopBitsType)(sv.toVariant().toInt()); } QScriptValue FlowType_toScriptValue(QScriptEngine*engine,const FlowType&value) { return engine->newVariant(QVariant((int)(value))); } void FlowType_fromScriptValue(const QScriptValue&sv,FlowType&value) { value= (FlowType)(sv.toVariant().toInt()); } /*:972*//*975:*/ #line 341 "./scales.w" void setSerialScaleProperties(QScriptValue value,QScriptEngine*engine) { setQIODeviceProperties(value,engine); } /*:975*//*976:*/ #line 349 "./scales.w" QScriptValue constructSerialScale(QScriptContext*context,QScriptEngine*engine) { QScriptValue object; if(context->argumentCount()==1) { object= engine->newQObject(new SerialScale(argument (0,context))); setSerialScaleProperties(object,engine); } else { context->throwError("Incorrect number of arguments passed to " "SerialScale. The constructor takes one string " "as an argument specifying a port name."); } return object; } /*:976*//*998:*/ #line 278 "./valueannotation.w" QScriptValue constructValueAnnotation(QScriptContext*,QScriptEngine*engine) { QScriptValue object= engine->newQObject(new ValueAnnotation); setValueAnnotationProperties(object,engine); return object; } void setValueAnnotationProperties(QScriptValue value,QScriptEngine*engine) { setQObjectProperties(value,engine); } #line 18840 "./typica.w" /*:998*/ #line 530 "./typica.w" /*590:*/ #line 12758 "./typica.w" void messageFileOutput(QtMsgType type,const char*msg) { QFile output("Typica-"+QDate::currentDate().toString("yyyy-MM-dd")+".log"); output.open(QIODevice::WriteOnly|QIODevice::Append); QTextStream outstream(&output); outstream<setFontFamily(QWebSettings::StandardFont,"Tex Gyre Pagella"); /*:592*/ #line 12727 "./typica.w" /*746:*/ #line 15651 "./typica.w" app.registerDeviceConfigurationWidget("roaster",RoasterConfWidget::staticMetaObject); /*:746*//*756:*/ #line 15893 "./typica.w" app.registerDeviceConfigurationWidget("nidaqmxbase", NiDaqMxBaseDriverConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("nidaqmxbase9211series", NiDaqMxBase9211ConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("ni9211seriestc", Ni9211TcConfWidget::staticMetaObject); /*:756*//*764:*/ #line 16124 "./typica.w" app.registerDeviceConfigurationWidget("nidaqmx",NiDaqMxDriverConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("nidaqmx9211series",NiDaqMx9211ConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("nidaqmxtc01",NiDaqMxTc01ConfWidget::staticMetaObject); /*:764*//*788:*/ #line 17089 "./typica.w" app.registerDeviceConfigurationWidget("modbusrtuport",ModbusRtuPortConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("modbusrtudevice",ModbusRtuDeviceConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("modbustemperaturepv",ModbusRtuDeviceTPvConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("modbustemperaturesv",ModbusRtuDeviceTSvConfWidget::staticMetaObject); /*:788*//*793:*/ #line 17174 "./typica.w" app.registerDeviceConfigurationWidget("annotationbutton",AnnotationButtonConfWidget::staticMetaObject); /*:793*//*796:*/ #line 17244 "./typica.w" app.registerDeviceConfigurationWidget("reconfigurablebutton",ReconfigurableAnnotationButtonConfWidget::staticMetaObject); /*:796*//*799:*/ #line 17371 "./typica.w" app.registerDeviceConfigurationWidget("annotationspinbox",NoteSpinConfWidget::staticMetaObject); #line 1 "./freeannotation.w" /*:799*//*803:*/ #line 57 "./freeannotation.w" app.registerDeviceConfigurationWidget("freeannotation", FreeAnnotationConfWidget::staticMetaObject); #line 17375 "./typica.w" #line 1 "./settings.w" /*:803*//*837:*/ #line 18607 "./typica.w" app.registerDeviceConfigurationWidget("modbusrtu",ModbusConfigurator::staticMetaObject); /*:837*//*847:*/ #line 264 "./unsupportedserial.w" app.registerDeviceConfigurationWidget("unsupporteddevicechannel", UnsupportedDeviceChannelConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("unsupporteddevice", UnsupportedSerialDeviceConfWidget::staticMetaObject); /*:847*//*878:*/ #line 181 "./phidgets.w" app.registerDeviceConfigurationWidget("phidgets1048", PhidgetsTemperatureSensorConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("phidgets1048channel", PhidgetTemperatureSensorChannelConfWidget::staticMetaObject); /*:878*//*898:*/ #line 18741 "./typica.w" app.registerDeviceConfigurationWidget("linearspline",LinearSplineInterpolationConfWidget::staticMetaObject); /*:898*//*902:*/ #line 18830 "./typica.w" app.registerDeviceConfigurationWidget("translation",TranslationConfWidget::staticMetaObject); #line 1 "./rate.w" /*:902*//*914:*/ #line 253 "./rate.w" app.registerDeviceConfigurationWidget("rate",RateOfChangeConfWidget::staticMetaObject); /*:914*//*955:*/ #line 1233 "./dataqsdk.w" app.registerDeviceConfigurationWidget("dataqsdk",DataqSdkDeviceConfWidget::staticMetaObject); app.registerDeviceConfigurationWidget("dataqsdkchannel", DataqSdkChannelConfWidget::staticMetaObject); /*:955*//*980:*/ #line 490 "./scales.w" app.registerDeviceConfigurationWidget("scale",SerialScaleConfWidget::staticMetaObject); /*:980*//*988:*/ #line 138 "./valueannotation.w" app.registerDeviceConfigurationWidget("valueannotation", ValueAnnotationConfWidget::staticMetaObject); /*:988*/ #line 12729 "./typica.w" /*593:*/ #line 12808 "./typica.w" if(settings.value("database/exists","false").toString()=="true") { /*598:*/ #line 12930 "./typica.w" QSqlDatabase database= QSqlDatabase::addDatabase(settings.value("database/driver").toString()); database.setConnectOptions("application_name=Typica"); database.setHostName(settings.value("database/hostname").toString()); database.setDatabaseName(settings.value("database/dbname").toString()); database.setUserName(settings.value("database/user").toString()); database.setPassword(settings.value("database/password").toString()); if(!database.open()) { settings.setValue("database/exists","false"); } else { database.close(); } /*:598*/ #line 12811 "./typica.w" } if(settings.value("database/exists","false").toString()=="false") { /*597:*/ #line 12921 "./typica.w" SqlConnectionSetup dialog; dialog.exec(); /*:597*/ #line 12815 "./typica.w" } /*:593*/ #line 12730 "./typica.w" /*167:*/ #line 3836 "./typica.w" QStringList arguments= QCoreApplication::arguments(); int position= arguments.indexOf("-c"); QString filename= QString(); if(position!=-1) { if(arguments.size()>=position+1) { filename= arguments.at(position+1); } } if(filename.isEmpty()) { filename= QFileDialog::getOpenFileName(NULL,"Open Configuration File", settings.value("config","").toString()); } QDir directory; if(!filename.isEmpty()) { QFile file(filename); QFileInfo info(filename); directory= info.dir(); settings.setValue("config",directory.path()); if(file.open(QIODevice::ReadOnly)) { app.configuration()->setContent(&file,true); } } /*168:*/ #line 3870 "./typica.w" QDomElement root= app.configuration()->documentElement(); QDomNodeList children= root.childNodes(); QString replacementDoc; QDomDocument includedDoc; QDomDocumentFragment fragment; for(int i= 0;inewFunction(constructQWidget); value= engine->newQMetaObject(&QWidget::staticMetaObject,constructor); engine->globalObject().setProperty("QWidget",value); /*:17*//*28:*/ #line 1102 "./typica.w" constructor= engine->newFunction(constructQMainWindow); value= engine->newQMetaObject(&ScriptQMainWindow::staticMetaObject, constructor); engine->globalObject().setProperty("QMainWindow",value); /*:28*//*39:*/ #line 1307 "./typica.w" constructor= engine->newFunction(constructQFrame); value= engine->newQMetaObject(&QFrame::staticMetaObject,constructor); engine->globalObject().setProperty("QFrame",value); /*:39*//*42:*/ #line 1340 "./typica.w" constructor= engine->newFunction(constructQLabel); value= engine->newQMetaObject(&QLabel::staticMetaObject,constructor); engine->globalObject().setProperty("QLabel",value); /*:42*//*45:*/ #line 1378 "./typica.w" constructor= engine->newFunction(constructQLineEdit); value= engine->newQMetaObject(&QLineEdit::staticMetaObject,constructor); engine->globalObject().setProperty("QLineEdit",value); /*:45*//*49:*/ #line 1425 "./typica.w" constructor= engine->newFunction(constructQSplitter); value= engine->newQMetaObject(&QSplitter::staticMetaObject,constructor); engine->globalObject().setProperty("QSplitter",value); /*:49*//*57:*/ #line 1614 "./typica.w" constructor= engine->newFunction(constructQBoxLayout); value= engine->newQMetaObject(&QBoxLayout::staticMetaObject,constructor); engine->globalObject().setProperty("QBoxLayout",value); /*:57*//*61:*/ #line 1726 "./typica.w" constructor= engine->newFunction(constructQAction); value= engine->newQMetaObject(&QAction::staticMetaObject,constructor); engine->globalObject().setProperty("QAction",value); /*:61*//*64:*/ #line 1785 "./typica.w" value= engine->newQMetaObject(&QFileDialog::staticMetaObject); value.setProperty("getOpenFileName", engine->newFunction(QFileDialog_getOpenFileName)); value.setProperty("getSaveFileName", engine->newFunction(QFileDialog_getSaveFileName)); engine->globalObject().setProperty("QFileDialog",value); /*:64*//*69:*/ #line 1900 "./typica.w" constructor= engine->newFunction(constructQFile); value= engine->newQMetaObject(&QFile::staticMetaObject,constructor); engine->globalObject().setProperty("QFile",value); /*:69*//*78:*/ #line 2082 "./typica.w" constructor= engine->newFunction(constructQProcess); value= engine->newQMetaObject(&QProcess::staticMetaObject,constructor); engine->globalObject().setProperty("QProcess",value); /*:78*//*87:*/ #line 2216 "./typica.w" qScriptRegisterMetaType(engine,QByteArray_toScriptValue,QByteArray_fromScriptValue); constructor= engine->newFunction(constructQByteArray); engine->globalObject().setProperty("QByteArray",constructor); /*:87*//*92:*/ #line 2267 "./typica.w" constructor= engine->newFunction(constructQBuffer); value= engine->newQMetaObject(&QBuffer::staticMetaObject,constructor); engine->globalObject().setProperty("QBuffer",value); /*:92*//*95:*/ #line 2316 "./typica.w" constructor= engine->newFunction(constructXQuery); engine->globalObject().setProperty("XQuery",constructor); /*:95*//*101:*/ #line 2418 "./typica.w" constructor= engine->newFunction(constructXmlWriter); engine->globalObject().setProperty("XmlWriter",constructor); /*:101*//*110:*/ #line 2624 "./typica.w" constructor= engine->newFunction(constructXmlReader); engine->globalObject().setProperty("XmlReader",constructor); /*:110*//*117:*/ #line 2748 "./typica.w" value= engine->newQObject(&settings); setQSettingsProperties(value,engine); engine->globalObject().setProperty("QSettings",value); /*:117*//*121:*/ #line 2829 "./typica.w" constructor= engine->newFunction(constructQLCDNumber); value= engine->newQMetaObject(&QLCDNumber::staticMetaObject,constructor); engine->globalObject().setProperty("QLCDNumber",value); /*:121*//*124:*/ #line 2885 "./typica.w" constructor= engine->newFunction(constructQTime); engine->globalObject().setProperty("QTime",constructor); /*:124*//*146:*/ #line 3398 "./typica.w" constructor= engine->newFunction(constructQPushButton); value= engine->newQMetaObject(&QPushButton::staticMetaObject,constructor); engine->globalObject().setProperty("QPushButton",value); /*:146*//*153:*/ #line 3509 "./typica.w" constructor= engine->newFunction(constructQSqlQuery); engine->globalObject().setProperty("QSqlQuery",constructor); /*:153*//*160:*/ #line 3672 "./typica.w" engine->globalObject().setProperty("baseName",engine->newFunction(baseName)); engine->globalObject().setProperty("dir",engine->newFunction(dir)); engine->globalObject().setProperty("sqlToArray", engine->newFunction(sqlToArray)); engine->globalObject().setProperty("setFont",engine->newFunction(setFont)); engine->globalObject().setProperty("annotationFromRecord", engine->newFunction(annotationFromRecord)); engine->globalObject().setProperty("setTabOrder", engine->newFunction(setTabOrder)); engine->globalObject().setProperty("saveFileFromDatabase", engine->newFunction(saveFileFromDatabase)); /*:160*//*172:*/ #line 4037 "./typica.w" engine->globalObject().setProperty("createWindow", engine->newFunction(createWindow)); engine->globalObject().setProperty("createReport", engine->newFunction(createReport)); /*:172*//*233:*/ #line 5582 "./typica.w" engine->globalObject().setProperty("findChildObject", engine->newFunction(findChildObject)); /*:233*//*259:*/ #line 376 "./units.w" value= engine->newQMetaObject(&Units::staticMetaObject); value.setProperty("convertTemperature",engine->newFunction(Units_convertTemperature)); value.setProperty("convertRelativeTemperature", engine->newFunction(Units_convertRelativeTemperature)); value.setProperty("isTemperatureUnit",engine->newFunction(Units_isTemperatureUnit)); value.setProperty("convertWeight",engine->newFunction(Units_convertWeight)); value.setProperty("isWeightUnit",engine->newFunction(Units_isWeightUnit)); engine->globalObject().setProperty("Units",value); /*:259*//*264:*/ #line 449 "./units.w" qScriptRegisterMetaType(engine,Unit_toScriptValue,Unit_fromScriptValue); #line 6002 "./typica.w" /*:264*//*272:*/ #line 141 "./measurement.w" constructor= engine->newFunction(constructMeasurement); engine->globalObject().setProperty("Measurement",constructor); qScriptRegisterMetaType(engine,Measurement_toScriptValue,Measurement_fromScriptValue); /*:272*//*292:*/ #line 6572 "./typica.w" constructor= engine->newFunction(constructDAQ); value= engine->newQMetaObject(&DAQ::staticMetaObject,constructor); value.setProperty("Fahrenheit",Units::Fahrenheit); value.setProperty("Celsius",Units::Celsius); value.setProperty("Kelvin",Units::Kelvin); value.setProperty("Rankine",Units::Rankine); engine->globalObject().setProperty("DAQ",value); /*:292*//*301:*/ #line 6774 "./typica.w" constructor= engine->newFunction(constructFakeDAQ); value= engine->newQMetaObject(&FakeDAQ::staticMetaObject,constructor); engine->globalObject().setProperty("FakeDAQ",value); /*:301*//*312:*/ #line 7057 "./typica.w" constructor= engine->newFunction(constructLinearCalibrator); value= engine->newQMetaObject(&LinearCalibrator::staticMetaObject, constructor); engine->globalObject().setProperty("LinearCalibrator",value); /*:312*//*317:*/ #line 7196 "./typica.w" constructor= engine->newFunction(constructLinearSplineInterpolator); value= engine->newQMetaObject(&LinearSplineInterpolator::staticMetaObject,constructor); engine->globalObject().setProperty("LinearSplineInterpolator",value); /*:317*//*327:*/ #line 7401 "./typica.w" constructor= engine->newFunction(constructTemperatureDisplay); value= engine->newQMetaObject(&TemperatureDisplay::staticMetaObject, constructor); engine->globalObject().setProperty("TemperatureDisplay",value); /*:327*//*335:*/ #line 7559 "./typica.w" constructor= engine->newFunction(constructMeasurementTimeOffset); value= engine->newQMetaObject(&MeasurementTimeOffset::staticMetaObject, constructor); engine->globalObject().setProperty("MeasurementTimeOffset",value); /*:335*//*340:*/ #line 7670 "./typica.w" constructor= engine->newFunction(constructThresholdDetector); value= engine->newQMetaObject(&ThresholdDetector::staticMetaObject,constructor); engine->globalObject().setProperty("ThresholdDetector",value); /*:340*//*345:*/ #line 7769 "./typica.w" constructor= engine->newFunction(constructZeroEmitter); value= engine->newQMetaObject(&ZeroEmitter::staticMetaObject,constructor); engine->globalObject().setProperty("ZeroEmitter",value); /*:345*//*350:*/ #line 7848 "./typica.w" constructor= engine->newFunction(constructMeasurementAdapter); value= engine->newQMetaObject(&MeasurementAdapter::staticMetaObject, constructor); engine->globalObject().setProperty("MeasurementAdapter",value); /*:350*//*367:*/ #line 8311 "./typica.w" constructor= engine->newFunction(constructGraphView); value= engine->newQMetaObject(&GraphView::staticMetaObject,constructor); engine->globalObject().setProperty("GraphView",value); /*:367*//*390:*/ #line 8948 "./typica.w" constructor= engine->newFunction(constructZoomLog); value= engine->newQMetaObject(&ZoomLog::staticMetaObject,constructor); engine->globalObject().setProperty("ZoomLog",value); /*:390*//*428:*/ #line 9896 "./typica.w" constructor= engine->newFunction(constructAnnotationButton); value= engine->newQMetaObject(&AnnotationButton::staticMetaObject, constructor); engine->globalObject().setProperty("AnnotationButton",value); /*:428*//*436:*/ #line 10038 "./typica.w" constructor= engine->newFunction(constructAnnotationSpinBox); value= engine->newQMetaObject(&AnnotationSpinBox::staticMetaObject, constructor); engine->globalObject().setProperty("AnnotationSpinBox",value); /*:436*//*457:*/ #line 10459 "./typica.w" constructor= engine->newFunction(constructTimerDisplay); value= engine->newQMetaObject(&TimerDisplay::staticMetaObject,constructor); engine->globalObject().setProperty("TimerDisplay",value); /*:457*//*484:*/ #line 10953 "./typica.w" constructor= engine->newFunction(constructWidgetDecorator); value= engine->newQMetaObject(&WidgetDecorator::staticMetaObject,constructor); engine->globalObject().setProperty("WidgetDecorator",value); /*:484*//*497:*/ #line 11235 "./typica.w" constructor= engine->newFunction(constructLogEditWindow); value= engine->newQMetaObject(&LogEditWindow::staticMetaObject,constructor); engine->globalObject().setProperty("LogEditWindow",value); /*:497*//*516:*/ #line 11763 "./typica.w" constructor= engine->newFunction(constructXMLInput); value= engine->newQMetaObject(&XMLInput::staticMetaObject,constructor); engine->globalObject().setProperty("XMLInput",value); /*:516*//*530:*/ #line 149 "./webview.w" constructor= engine->newFunction(constructWebView); value= engine->newQMetaObject(&TypicaWebView::staticMetaObject,constructor); engine->globalObject().setProperty("WebView",value); /*:530*//*538:*/ #line 241 "./webview.w" qScriptRegisterMetaType(engine,QWebElement_toScriptValue,QWebElement_fromScriptValue); /*:538*//*541:*/ #line 283 "./webview.w" constructor= engine->newFunction(constructWebElement); engine->globalObject().setProperty("WebElement",constructor); /*:541*//*552:*/ #line 12006 "./typica.w" value= engine->newQObject(AppInstance); engine->globalObject().setProperty("Application",value); /*:552*//*610:*/ #line 13107 "./typica.w" constructor= engine->newFunction(constructSqlQueryView); value= engine->newQMetaObject(&SqlQueryView::staticMetaObject,constructor); engine->globalObject().setProperty("SqlQueryView",value); /*:610*//*715:*/ #line 15009 "./typica.w" constructor= engine->newFunction(constructDeviceTreeModel); value= engine->newQMetaObject(&DeviceTreeModel::staticMetaObject, constructor); engine->globalObject().setProperty("DeviceTreeModel",value); /*:715*//*721:*/ #line 15149 "./typica.w" qScriptRegisterMetaType(engine,QModelIndex_toScriptValue,QModelIndex_fromScriptValue); /*:721*//*737:*/ #line 15441 "./typica.w" constructor= engine->newFunction(constructDeviceConfigurationWindow); value= engine->newQMetaObject(&DeviceConfigurationWindow::staticMetaObject, constructor); engine->globalObject().setProperty("DeviceConfigurationWindow",value); /*:737*//*808:*/ #line 56 "./settings.w" constructor= engine->newFunction(constructSettingsWindow); value= engine->newQMetaObject(&DeviceConfigurationWindow::staticMetaObject,constructor); engine->globalObject().setProperty("SettingsWindow",value); #line 1 "./graphsettings.w" /*:808*//*831:*/ #line 18002 "./typica.w" constructor= engine->newFunction(constructModbusRTUDevice); value= engine->newQMetaObject(&ModbusRTUDevice::staticMetaObject,constructor); engine->globalObject().setProperty("ModbusRTUDevice",value); /*:831*//*851:*/ #line 350 "./unsupportedserial.w" engine->globalObject().setProperty("createDevice", engine->newFunction(createDevice)); /*:851*//*863:*/ #line 622 "./unsupportedserial.w" engine->globalObject().setProperty("getMeasurementTimestamp", engine->newFunction(getMeasurementTimestamp)); /*:863*//*867:*/ #line 658 "./unsupportedserial.w" constructor= engine->newFunction(constructSerialPort); value= engine->newQMetaObject(&QextSerialPort::staticMetaObject,constructor); engine->globalObject().setProperty("SerialPort",value); /*:867*//*889:*/ #line 443 "./phidgets.w" constructor= engine->newFunction(constructPhidgetsTemperatureSensor); value= engine->newQMetaObject(&PhidgetsTemperatureSensor::staticMetaObject,constructor); engine->globalObject().setProperty("PhidgetsTemperatureSensor",value); /*:889*//*909:*/ #line 144 "./rate.w" constructor= engine->newFunction(constructRateOfChange); value= engine->newQMetaObject(&RateOfChange::staticMetaObject,constructor); engine->globalObject().setProperty("RateOfChange",value); /*:909*//*934:*/ #line 604 "./dataqsdk.w" constructor= engine->newFunction(constructDataqSdkDevice); value= engine->newQMetaObject(&DataqSdkDevice::staticMetaObject,constructor); engine->globalObject().setProperty("DataqSdkDevice",value); /*:934*//*961:*/ #line 73 "./scales.w" constructor= engine->newFunction(constructDragLabel); value= engine->newQMetaObject(&DragLabel::staticMetaObject,constructor); engine->globalObject().setProperty("DragLabel",value); /*:961*//*969:*/ #line 239 "./scales.w" constructor= engine->newFunction(constructSerialScale); value= engine->newQMetaObject(&SerialScale::staticMetaObject,constructor); engine->globalObject().setProperty("SerialScale",value); /*:969*//*973:*/ #line 325 "./scales.w" qScriptRegisterMetaType(engine,BaudRateType_toScriptValue,BaudRateType_fromScriptValue); qScriptRegisterMetaType(engine,DataBitsType_toScriptValue,DataBitsType_fromScriptValue); qScriptRegisterMetaType(engine,ParityType_toScriptValue,ParityType_fromScriptValue); qScriptRegisterMetaType(engine,StopBitsType_toScriptValue,StopBitsType_fromScriptValue); qScriptRegisterMetaType(engine,FlowType_toScriptValue,FlowType_fromScriptValue); /*:973*//*997:*/ #line 271 "./valueannotation.w" constructor= engine->newFunction(constructValueAnnotation); value= engine->newQMetaObject(&ValueAnnotation::staticMetaObject,constructor); engine->globalObject().setProperty("ValueAnnotation",value); /*:997*/ #line 12732 "./typica.w" app.engine= engine; /*169:*/ #line 3918 "./typica.w" QString styleText; QString programText; QDomElement currentElement; for(int i= 0;ievaluate(programText); /*170:*/ #line 3943 "./typica.w" if(engine->hasUncaughtException()) { int line= engine->uncaughtExceptionLineNumber(); qDebug()<<"Uncaught excpetion at line "<uncaughtExceptionBacktrace()) { qDebug()<