00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <stdlib.h>
00024 #include <string.h>
00025 #include <signal.h>
00026 #include <unistd.h>
00027 #include <math.h>
00028 #include <float.h>
00029
00030 #include <gtk/gtk.h>
00031 #include <gdk/gdkrgb.h>
00032
00033 #include "GUITrans.hh"
00034
00035
00036 static const char *cpWindowTxt = "Locate";
00037
00038 static const char *cpLServerTxt = "Server";
00039 static const char *cpBConnectTxt = "Connect";
00040
00041
00042 clGUITransient GUITransient;
00043
00044
00045 int main (int argc, char *argv[])
00046 {
00047 signal(SIGPIPE, SIG_IGN);
00048 signal(SIGFPE, SIG_IGN);
00049 return GUITransient.Main(&argc, &argv);
00050 }
00051
00052
00053 gboolean WrapOnDelete (GtkWidget *gwSender, GdkEvent *geEvent,
00054 gpointer gpData)
00055 {
00056 return GUITransient.OnDelete(gwSender, geEvent, gpData);
00057 }
00058
00059
00060 void WrapOnConnectClick (GtkButton *gbSender, gpointer gpData)
00061 {
00062 GUITransient.OnConnectClick(gbSender, gpData);
00063 }
00064
00065
00066 bool clGUITransient::GetCfg ()
00067 {
00068 Cfg.SetFileName(GUITRANS_CFGFILE);
00069 return true;
00070 }
00071
00072
00073 bool clGUITransient::Build ()
00074 {
00075 gwWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00076 gtk_window_set_title(GTK_WINDOW(gwWindow), cpWindowTxt);
00077
00078 gtk_window_set_policy(GTK_WINDOW(gwWindow), TRUE, TRUE, FALSE);
00079
00080 gwVBox = gtk_vbox_new(FALSE, GUITRANS_WSPACING);
00081 gtk_container_add(GTK_CONTAINER(gwWindow), gwVBox);
00082 gtk_widget_show(gwVBox);
00083 if (!BuildTable1()) return false;
00084 if (!ConnectSignals()) return false;
00085 gtk_widget_show(gwWindow);
00086 if (!BuildDrawingPrims()) return false;
00087
00088 return true;
00089 }
00090
00091
00092 bool clGUITransient::BuildTable1 ()
00093 {
00094
00095 gwTable1 = gtk_table_new(2, 2, FALSE);
00096
00097 gtk_box_pack_start(GTK_BOX(gwVBox), gwTable1, FALSE, FALSE, 0);
00098 gtk_widget_show(gwTable1);
00099
00100
00101 gwLServer = gtk_label_new(cpLServerTxt);
00102 gtk_label_set_justify(GTK_LABEL(gwLServer), GTK_JUSTIFY_LEFT);
00103 gtk_table_attach(GTK_TABLE(gwTable1), gwLServer,
00104 0, 1, 0, 1,
00105 (GtkAttachOptions) (GTK_FILL|GTK_EXPAND|GTK_SHRINK),
00106 (GtkAttachOptions) 0,
00107 GUITRANS_WSPACING / 2, 0);
00108 gtk_widget_show(gwLServer);
00109 gwCServer = gtk_combo_new();
00110 gtk_entry_set_max_length(GTK_ENTRY(GTK_COMBO(gwCServer)->entry),
00111 GUITRANS_SERVER_MAXLEN);
00112 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(gwCServer)->entry),
00113 "127.0.0.1:30001");
00114
00115
00116 gtk_table_attach(GTK_TABLE(gwTable1), gwCServer,
00117 0, 1, 1, 2,
00118 (GtkAttachOptions) (GTK_FILL|GTK_EXPAND|GTK_SHRINK),
00119 (GtkAttachOptions) 0,
00120 GUITRANS_WSPACING / 2, 0);
00121 gtk_widget_show(gwCServer);
00122 GtkUtils.ComboListFromFile(gwCServer, &glServer, GUITRANS_HOSTFILE);
00123
00124
00125 gwBConnect = gtk_button_new_with_label(cpBConnectTxt);
00126 gtk_table_attach(GTK_TABLE(gwTable1), gwBConnect,
00127 1, 2, 1, 2,
00128 (GtkAttachOptions) GTK_FILL, (GtkAttachOptions) 0,
00129 GUITRANS_WSPACING / 2, 0);
00130 gtk_widget_show(gwBConnect);
00131
00132 return true;
00133 }
00134
00135
00136 bool clGUITransient::ConnectSignals ()
00137 {
00138 gtk_signal_connect(GTK_OBJECT(gwWindow), "delete-event",
00139 GTK_SIGNAL_FUNC(WrapOnDelete), NULL);
00140
00141 gtk_signal_connect(GTK_OBJECT(gwBConnect), "clicked",
00142 GTK_SIGNAL_FUNC(WrapOnConnectClick), NULL);
00143
00144 return true;
00145 }
00146
00147
00148 bool clGUITransient::BuildDrawingPrims ()
00149 {
00150 return true;
00151 }
00152
00153
00154 clGUITransient::clGUITransient ()
00155 {
00156 bRun = true;
00157 bConnected = false;
00158 }
00159
00160
00161 clGUITransient::~clGUITransient ()
00162 {
00163 }
00164
00165
00166 int clGUITransient::Main (int *ipArgC, char ***cppArgV)
00167 {
00168 g_print("%s GUI v%i.%i.%i\n", cpWindowTxt,
00169 GUITRANS_VER_MAJ, GUITRANS_VER_MIN, GUITRANS_VER_PL);
00170 g_print("Copyright (C) 2001 Jussi Laako\n\n");
00171 g_print("Gtk+ version %i.%i.%i\n", gtk_major_version, gtk_minor_version,
00172 gtk_micro_version);
00173 g_print("Locale set to %s\n", gtk_set_locale());
00174 gtk_init(ipArgC, cppArgV);
00175 gdk_rgb_init();
00176 gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
00177 gtk_widget_set_default_visual(gdk_rgb_get_visual());
00178 if (!GetCfg()) return 1;
00179 if (!Build()) return 1;
00180 gtk_main();
00181 return 0;
00182 }
00183
00184
00185 gboolean clGUITransient::OnDelete (GtkWidget *gwSender, GdkEvent *geEvent,
00186 gpointer gpData)
00187 {
00188 bRun = false;
00189 gtk_main_quit();
00190 return TRUE;
00191 }
00192
00193
00194 void clGUITransient::OnConnectClick (GtkButton *gbSender, gpointer gpData)
00195 {
00196 }