You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
5.1 KiB
164 lines
5.1 KiB
/* INDI Device
|
|
Copyright (C) 2003 Jasem Mutlaq (mutlaqja@ikarustech.com)
|
|
Elwood C. Downey
|
|
|
|
This application is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef INDIDEVICE_H
|
|
#define INDIDEVICE_H
|
|
|
|
#include <kdialogbase.h>
|
|
#include <unistd.h>
|
|
#include <tqptrlist.h>
|
|
|
|
#include "indielement.h"
|
|
|
|
class DeviceManager;
|
|
class INDI_D;
|
|
class INDI_P;
|
|
class INDI_G;
|
|
class INDI_E;
|
|
class INDIMenu;
|
|
class INDIStdDevice;
|
|
class SkyObject;
|
|
|
|
class KLed;
|
|
class KLineEdit;
|
|
class KComboBox;
|
|
class KDoubleSpinBox;
|
|
class KPushButton;
|
|
class TDEPopupMenu;
|
|
|
|
class TQTable;
|
|
class TQLabel;
|
|
class TQHBoxLayout;
|
|
class TQVBoxLayout;
|
|
class TQFrame;
|
|
class TQLineEdit;
|
|
class TQString;
|
|
class TQTextEdit;
|
|
class TQListView;
|
|
class TQTabWidget;
|
|
class TQSpacerItem;
|
|
class TQGridLayout;
|
|
class TQButtonGroup;
|
|
class TQCheckBox;
|
|
class TQScrollView;
|
|
class TQSocketNotifier;
|
|
class TQVBox;
|
|
|
|
/*************************************************************************
|
|
** The INDI Tree
|
|
**
|
|
** INDI_ELEMENT <----------------------------------------
|
|
** | |
|
|
** -----> INDI_PROPERTY |
|
|
** | |
|
|
** -----> INDI_GROUP |
|
|
** | |
|
|
** -----> INDI_DEVICE
|
|
** | |
|
|
Device Manager INDI Menu
|
|
**************************************************************************/
|
|
|
|
|
|
/* INDI device */
|
|
class INDI_D : public KDialogBase
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
INDI_D(INDIMenu *parentMenu, DeviceManager *parentManager, TQString inName, TQString inLabel);
|
|
~INDI_D();
|
|
|
|
TQString name; /* device name */
|
|
TQString label; /* device label */
|
|
TQVBox *deviceVBox; /* device tab frame */
|
|
TQTabWidget *groupContainer; /* Groups within the device */
|
|
TQTextEdit *msgST_w; /* scrolled text for messages */
|
|
unsigned char *dataBuffer; /* Generic buffer */
|
|
//TQScrollView *sv; /* Scroll view */
|
|
//TQVBoxLayout *mainLayout;
|
|
//TQVBox *propertyLayout;
|
|
//TQSpacerItem *vSpacer;
|
|
//TQSpacerItem *hSpacer;
|
|
|
|
//TQPushButton *clear;
|
|
//TQHBoxLayout *buttonLayout;
|
|
INDIStdDevice *stdDev;
|
|
|
|
TQPtrList<INDI_G> gl; /* list of pointers to groups */
|
|
|
|
INDI_G *curGroup;
|
|
bool INDIStdSupport;
|
|
|
|
INDIMenu *parent;
|
|
DeviceManager *parentMgr;
|
|
|
|
enum DTypes { DATA_FITS, DATA_STREAM, DATA_OTHER, DATA_CCDPREVIEW };
|
|
|
|
/*****************************************************************
|
|
* Build
|
|
******************************************************************/
|
|
int buildTextGUI (XMLEle *root, char errmsg[]);
|
|
int buildNumberGUI (XMLEle *root, char errmsg[]);
|
|
int buildSwitchesGUI(XMLEle *root, char errmsg[]);
|
|
int buildMenuGUI (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
int buildLightsGUI (XMLEle *root, char errmsg[]);
|
|
int buildBLOBGUI (XMLEle *root, char errmsg[]);
|
|
|
|
/*****************************************************************
|
|
* Add
|
|
******************************************************************/
|
|
INDI_P * addProperty (XMLEle *root, char errmsg[]);
|
|
|
|
/*****************************************************************
|
|
* Find
|
|
******************************************************************/
|
|
INDI_P * findProp (TQString name);
|
|
INDI_E * findElem (TQString name);
|
|
INDI_G * findGroup (TQString grouptag, int create, char errmsg[]);
|
|
int findPerm (INDI_P *pp , XMLEle *root, PPerm *permp, char errmsg[]);
|
|
|
|
/*****************************************************************
|
|
* Set/New
|
|
******************************************************************/
|
|
int setValue (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
int setLabelState (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
int setTextValue (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
int setBLOB (INDI_P *pp, XMLEle * root, char errmsg[]);
|
|
|
|
int newValue (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
int newTextValue (INDI_P *pp, XMLEle *root, char errmsg[]);
|
|
|
|
int setAnyCmd (XMLEle *root, char errmsg[]);
|
|
int newAnyCmd (XMLEle *root, char errmsg[]);
|
|
|
|
int removeProperty(INDI_P *pp);
|
|
|
|
/*****************************************************************
|
|
* Crack
|
|
******************************************************************/
|
|
int crackLightState (char *name, PState *psp);
|
|
int crackSwitchState (char *name, PState *psp);
|
|
|
|
/*****************************************************************
|
|
* Data processing
|
|
******************************************************************/
|
|
int processBlob(INDI_E *blobEL, XMLEle *ep, char errmsg[]);
|
|
|
|
/*****************************************************************
|
|
* INDI standard property policy
|
|
******************************************************************/
|
|
bool isOn();
|
|
void registerProperty(INDI_P *pp);
|
|
bool isINDIStd(INDI_P *pp);
|
|
|
|
};
|
|
|
|
#endif
|