MainWindow.h
author sl
Wed, 21 May 2014 08:54:35 +0200
changeset 6 7d41682fce1a
child 7 e8c05ae7f418
permissions -rw-r--r--
Adding font selection dialog. Did a bit of cleaning too.
sl@6
     1
sl@6
     2
sl@6
     3
#ifndef MAIN_WINDOW_H
sl@6
     4
#define MAIN_WINDOW_H
sl@6
     5
sl@6
     6
#include <fx.h>
sl@6
     7
#include "hidapi.h"
sl@6
     8
#include "mac_support.h"
sl@6
     9
#include <string.h>
sl@6
    10
#include <stdlib.h>
sl@6
    11
#include <limits.h>
sl@6
    12
sl@6
    13
sl@6
    14
//TODO: Get ride of that constant once we figure out a way to get it from hidapi
sl@6
    15
const int KFutabaOutputReportLength = 65;
sl@6
    16
sl@6
    17
#ifdef _WIN32
sl@6
    18
// Thanks Microsoft, but I know how to use strncpy().
sl@6
    19
#pragma warning(disable:4996)
sl@6
    20
#endif
sl@6
    21
sl@6
    22
class MainWindow : public FXMainWindow {
sl@6
    23
    FXDECLARE(MainWindow)
sl@6
    24
sl@6
    25
public:
sl@6
    26
    enum {
sl@6
    27
        ID_FIRST = FXMainWindow::ID_LAST,
sl@6
    28
        ID_CONNECT,
sl@6
    29
        ID_DISCONNECT,
sl@6
    30
        ID_RESCAN,
sl@6
    31
        ID_SEND_OUTPUT_REPORT,
sl@6
    32
        ID_SEND_FEATURE_REPORT,
sl@6
    33
        ID_GET_FEATURE_REPORT,
sl@6
    34
        ID_CLEAR,
sl@6
    35
        ID_TIMER,
sl@6
    36
        ID_MAC_TIMER,
sl@6
    37
        ID_FUTABA_CLEAR_DISPLAY,
sl@6
    38
        ID_FUTABA_DIMMING,
sl@6
    39
        ID_FUTABA_DISPLAY_DATA_INPUT,
sl@6
    40
        ID_FUTABA_READ_ID,
sl@6
    41
        ID_FUTABA_READ_FIRMWARE_REVISION,
sl@6
    42
        ID_FUTABA_POWER_SUPPLY_MONITOR,
sl@6
    43
        ID_FUTABA_SET_PIXEL,
sl@6
    44
        ID_FUTABA_RESET_PIXEL,
sl@6
    45
        ID_FUTABA_SET_ALL_PIXELS,
sl@6
    46
        ID_SELECT_FONT,
sl@6
    47
        ID_LAST
sl@6
    48
    };
sl@6
    49
sl@6
    50
    size_t getDataFromTextField(FXTextField *tf, char *buf, size_t len);
sl@6
    51
    int getLengthFromTextField(FXTextField *tf);
sl@6
    52
sl@6
    53
protected:
sl@6
    54
    MainWindow() {};
sl@6
    55
public:
sl@6
    56
    MainWindow(FXApp *a);
sl@6
    57
    ~MainWindow();
sl@6
    58
    virtual void create();
sl@6
    59
sl@6
    60
    long onConnect(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    61
    long onDisconnect(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    62
    long onRescan(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    63
    long onSendOutputReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    64
    long onSendFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    65
    long onGetFeatureReport(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    66
    long onClear(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    67
    //
sl@6
    68
    long onFutabaClearDisplay(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    69
    long onFutabaDimming(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    70
    long onFutabaDisplayDataInput(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    71
    long onFutabaReadId(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    72
    long onFutabaReadFirmwareRevision(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    73
    long onFutabaPowerSupplyMonitor(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    74
    long onFutabaSetAllPixels(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    75
    long onFutabaSetPixel(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    76
    long onFutabaResetPixel(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    77
    //
sl@6
    78
    long onSelectFont(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    79
    //
sl@6
    80
    long onTimeout(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    81
    long onMacTimeout(FXObject *sender, FXSelector sel, void *ptr);
sl@6
    82
    //
sl@6
    83
    void SetPixel(int aX, int aY, unsigned char aValue);
sl@6
    84
    void SetPixelBlock(int aX, int aY, int aHeight, int aSize, unsigned char aValue);
sl@6
    85
sl@6
    86
private:
sl@6
    87
    FXList *device_list;
sl@6
    88
    FXButton *connect_button;
sl@6
    89
    FXButton *disconnect_button;
sl@6
    90
    FXButton *rescan_button;
sl@6
    91
    FXButton *output_button;
sl@6
    92
    FXLabel *connected_label;
sl@6
    93
    FXTextField *output_text;
sl@6
    94
    FXTextField *output_len;
sl@6
    95
    FXButton *feature_button;
sl@6
    96
    FXButton *get_feature_button;
sl@6
    97
    FXTextField *feature_text;
sl@6
    98
    FXTextField *feature_len;
sl@6
    99
    FXTextField *get_feature_text;
sl@6
   100
    FXText *input_text;
sl@6
   101
    FXFont *title_font;
sl@6
   102
    //Futaba VFD control
sl@6
   103
    FXButton *iButtonClearDisplay;
sl@6
   104
    FXButton *iButtonDimming;
sl@6
   105
    FXButton *iButtonDisplayDataInput;
sl@6
   106
    FXButton *iButtonReadId;
sl@6
   107
    FXButton *iButtonReadFirmwareRevision;
sl@6
   108
    FXButton *iButtonPowerSupplyMonitor;
sl@6
   109
    FXTextField *iTextFieldX;
sl@6
   110
    FXTextField *iTextFieldY;
sl@6
   111
    FXButton *iButtonSetPixel;
sl@6
   112
    FXButton *iButtonResetPixel;
sl@6
   113
    FXButton *iButtonSetAllPixels;
sl@6
   114
    //Font
sl@6
   115
    FXButton *iButtonSelectFont;
sl@6
   116
sl@6
   117
    unsigned char* iOutputReportBuffer;
sl@6
   118
    unsigned char iDimming; //Current VFD dimming
sl@6
   119
    FXFontDesc iCurrentFontDesc;
sl@6
   120
sl@6
   121
    struct hid_device_info *devices;
sl@6
   122
    hid_device *connected_device;
sl@6
   123
};
sl@6
   124
sl@6
   125
#endif //