Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

GUITrans.cc

Go to the documentation of this file.
00001 /*
00002 
00003     GUI for transient analysis
00004     Copyright (C) 2001 Jussi Laako
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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 // Table 1
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     // shrink, grow, auto-shrink
00078     gtk_window_set_policy(GTK_WINDOW(gwWindow), TRUE, TRUE, FALSE);
00079     // homogenous, spacing
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     //gdk_window_set_cursor(gwDALocate->window, gcCrossHair);
00088     return true;
00089 }
00090 
00091 
00092 bool clGUITransient::BuildTable1 ()
00093 {
00094     // rows, columns, homogenous
00095     gwTable1 = gtk_table_new(2, 2, FALSE);
00096     // box, child, expand, fill, padding
00097     gtk_box_pack_start(GTK_BOX(gwVBox), gwTable1, FALSE, FALSE, 0);
00098     gtk_widget_show(gwTable1);
00099 
00100     // - Label & Combo: Server
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     // table, child, left attach, right attach, top attach, bottom attach,
00115     // x-options, y-options, x-padding, y-padding
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     // - Button: Connect
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 }

Generated on Sun Oct 26 19:11:21 2003 for HASAS by doxygen 1.3.3