00001
00002
00003 #ifndef _SYMBOLKEYPAD_H
00004 #define _SYMBOLKEYPAD_H
00005
00006 #include "Probe.h"
00007 #include <map>
00008
00009 namespace RobotFlow {
00010
00011 class SymbolKeypad : public FD::Node {
00012
00013
00014 friend void keypad_button_pressed(GtkButton *object, SymbolKeypad* keypad);
00015 friend void keypad_button_released(GtkButton *button, SymbolKeypad *keypad);
00016 friend gboolean ignore_delete(GtkWidget *widget, GdkEvent *event, SymbolKeypad *keypad);
00017 friend gboolean keypad_event_function (GtkWidget *window, GdkEvent *event, SymbolKeypad *keypad);
00018 protected:
00019
00020
00021 void update_values(int pad_number, bool activate);
00022
00023 void keyboard_action(unsigned int key);
00024
00025
00026 GtkWidget *window1;
00027 GtkWidget *vbox1;
00028 GtkWidget *table_1;
00029 GtkWidget *button_0;
00030 GtkWidget *button_1;
00031 GtkWidget *button_2;
00032 GtkWidget *button_3;
00033 GtkWidget *button_4;
00034 GtkWidget *button_5;
00035 GtkWidget *button_6;
00036 GtkWidget *button_7;
00037 GtkWidget *button_8;
00038 GtkWidget *button_9;
00039 GtkWidget *button_A;
00040 GtkWidget *button_B;
00041 GtkWidget *button_C;
00042 GtkWidget *button_D;
00043 GtkWidget *button_E;
00044 GtkWidget *button_F;
00045 GtkWidget *button_G;
00046 GtkWidget *button_H;
00047 GtkWidget *button_I;
00048 GtkWidget *button_J;
00049 GtkWidget *button_K;
00050 GtkWidget *button_L;
00051 GtkWidget *button_M;
00052 GtkWidget *button_N;
00053 GtkWidget *button_O;
00054 GtkWidget *button_P;
00055 GtkWidget *button_Q;
00056 GtkWidget *button_R;
00057 GtkWidget *button_S;
00058 GtkWidget *button_T;
00059 GtkWidget *button_U;
00060 GtkWidget *button_V;
00061 GtkWidget *button_W;
00062 GtkWidget *button_X;
00063 GtkWidget *button_Y;
00064 GtkWidget *button_Z;
00065
00066
00067
00068
00069
00070 int selected_column;
00071 int selected_line;
00072 int selected_pad;
00073 char pad_description;
00074 bool active;
00075 int key_stroke;
00076
00077
00078 int keypadID;
00079 int keypadIdID;
00080 int keypadNameID;
00081 int keypadActivatedID;
00082
00083
00084 std::map <GtkWidget*,int> button_map;
00085 std::map <unsigned int,int> key_map;
00086
00087 public:
00088
00089 SymbolKeypad(std::string nodeName, FD::ParameterSet params);
00090
00091 virtual ~SymbolKeypad();
00092
00093
00094
00095 virtual void initialize();
00096
00097
00098
00099 virtual void reset();
00100
00101
00102
00103
00104 virtual FD::ObjectRef getOutput(int output_id, int count);
00105
00106 static const int pad_0_number;
00107 static const int pad_1_number;
00108 static const int pad_2_number;
00109 static const int pad_3_number;
00110 static const int pad_4_number;
00111 static const int pad_5_number;
00112 static const int pad_6_number;
00113 static const int pad_7_number;
00114 static const int pad_8_number;
00115 static const int pad_9_number;
00116 static const int pad_A_number;
00117 static const int pad_B_number;
00118 static const int pad_C_number;
00119 static const int pad_D_number;
00120 static const int pad_E_number;
00121 static const int pad_F_number;
00122 static const int pad_G_number;
00123 static const int pad_H_number;
00124 static const int pad_I_number;
00125 static const int pad_J_number;
00126 static const int pad_K_number;
00127 static const int pad_L_number;
00128 static const int pad_M_number;
00129 static const int pad_N_number;
00130 static const int pad_O_number;
00131 static const int pad_P_number;
00132 static const int pad_Q_number;
00133 static const int pad_R_number;
00134 static const int pad_S_number;
00135 static const int pad_T_number;
00136 static const int pad_U_number;
00137 static const int pad_V_number;
00138 static const int pad_W_number;
00139 static const int pad_X_number;
00140 static const int pad_Y_number;
00141 static const int pad_Z_number;
00142 };
00143
00144 }
00145 #endif