1 /*****
2  *       Xnee's Not an Event Emulator
3  *
4  * Xnee enables recording and replaying of X protocol data
5  *
6  *  Copyright (C) 2002, 2003, 2004, 2005, 2007, 2011, 2013
7  *       Henrik Sandklef
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * as published by the Free Software Foundation; either version 3
12  * of the License, or any later version.
13  *
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Boston,
23  * MA  02110-1301, USA.
24  ****/
25 
26 /*
27  * Initial main.c file generated by Glade. Edit as required.
28  * Glade will not overwrite this file.
29  */
30 
31 #ifdef HAVE_CONFIG_H
32 #  include "config.h"
33 #endif
34 
35 #include <gtk/gtk.h>
36 
37 #include "interface.h"
38 #include "support.h"
39 #include "recordables.h"
40 
41 #include <libxnee/xnee.h>
42 #include <libxnee/xnee_alloc.h>
43 #include <libxnee/xnee_session.h>
44 #include <gnee_xnee.h>
45 
46 #define GNEE "gnee"
47 
48 xnee_data   *ext_xd;
49 gnee_xnee   *ext_gx;
50 GtkWidget   *ext_gnee_window;
51 
52 const char  *version_string = "--version" ;
53 
54 int
main(int argc,char * argv[])55 main (int argc, char *argv[])
56 {
57     GtkWidget          *gnee_window;
58 
59     GtkWidget          *exclude_list;
60     GtkTreeStore       *exclude_store;
61 /*     GtkTreeIter         exclude_iterator;  */
62     GtkCellRenderer    *exclude_list_renderer;
63     GtkTreeViewColumn  *exclude_list_column;
64 
65     GtkWidget          *include_list;
66     GtkTreeStore       *include_store;
67 /*     GtkTreeIter         include_iterator;  */
68     GtkCellRenderer    *include_list_renderer;
69     GtkTreeViewColumn  *include_list_column;
70 
71     GList              *combo_list = NULL;
72     GtkWidget          *event_group_combo;
73     char *default_tmp_file;
74     int i ;
75 
76     xnee_data   *xd;
77     gnee_xnee    gx;
78 
79     ext_gx = &gx;
80     gx_init_gx(ext_gx);
81 
82 
83 #ifdef ENABLE_NLS
84     bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
85     bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
86     textdomain (GETTEXT_PACKAGE);
87 #endif
88 
89     gtk_set_locale ();
90     gtk_init (&argc, &argv);
91 
92 
93 /*     printf("Adding: %s\n", PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); */
94     add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps");
95     add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
96 
97     /*
98      * The following code was added by Glade to create one of each component
99      * (except popup menus), just so that you see something after building
100      * the project. Delete any components that you don't want shown initially.
101      */
102     gnee_window = create_gnee_window ();
103     ext_gnee_window = gnee_window;
104 
105 /*     gnee_settings = gnee_settings_new(); */
106 
107     gnee_recordables_create(gnee_window);
108 
109 
110     exclude_list  = lookup_widget(gnee_window, "exclude_list");
111 /*     exclude_store = gnee_settings->record_settings->events->exclude_store; */
112     exclude_store = gtk_tree_store_new(1, G_TYPE_STRING);
113 
114     exclude_list_renderer = gtk_cell_renderer_text_new ();
115     exclude_list_column   = gtk_tree_view_column_new_with_attributes
116         ("Exclude when recording",
117          exclude_list_renderer,
118          "text",
119          0,
120          NULL);
121 
122     gtk_tree_view_append_column(GTK_TREE_VIEW (exclude_list),
123                                 exclude_list_column);
124 
125     gtk_tree_view_set_model(GTK_TREE_VIEW(exclude_list),
126                             GTK_TREE_MODEL(exclude_store));
127 
128 
129     include_list  = lookup_widget(gnee_window, "include_list");
130 /*  include_store = gnee_settings->record_settings->events->exclude_store; */
131     include_store = gtk_tree_store_new(1, G_TYPE_STRING);
132 
133     include_list_renderer = gtk_cell_renderer_text_new ();
134     include_list_column   = gtk_tree_view_column_new_with_attributes
135         ("Include when recording",
136          include_list_renderer,
137          "text",
138          0,
139          NULL);
140 
141     gtk_tree_view_append_column(GTK_TREE_VIEW(include_list),
142                                 include_list_column);
143 
144     gtk_tree_view_set_model(GTK_TREE_VIEW(include_list),
145                             GTK_TREE_MODEL(include_store));
146 
147     combo_list = g_list_append(combo_list, _("Predefined"));
148     combo_list = g_list_append(combo_list, _("Events"));
149     combo_list = g_list_append(combo_list, _("Replies"));
150     combo_list = g_list_append(combo_list, _("Requests"));
151     combo_list = g_list_append(combo_list, _("Errors"));
152 
153     event_group_combo = lookup_widget(gnee_window, "event_group_combo");
154     gtk_combo_set_popdown_strings(GTK_COMBO(event_group_combo),
155                                   combo_list);
156 
157     gtk_widget_show (gnee_window);
158 
159 
160 
161     xd = xnee_new_xnee_data();
162     ext_xd = xd;
163 
164     /* Set the program name */
165     xnee_set_program_name (xd, XNEE_GUI);
166 
167     /* Set the cli parameters */
168     xnee_set_application_parameters (xd, argv);
169 
170     /* scan through the args .... */
171     for (i=0;i<argc;i++)
172       {
173 	if (strncmp(argv[i],version_string, strlen(version_string))==0)
174 	  {
175 	    fprintf (stderr, "%s %s, part of project ",
176 		     GNEE,
177 		     VERSION);
178 	    xnee_version(xd);
179 	    exit(XNEE_OK);
180 	  }
181       }
182 
183     /* Set the signal handler the libxnee's built in */
184     (void) signal (SIGINT, signal_handler);
185 
186     /* Set the error handler the libxnee's built in */
187     (void) XSetErrorHandler (handle_xerr);
188 
189     /* set gnee default settings */
190     gx_set_events_max (xd, 100);
191     gnee_set_events_max (100);
192 
193     gx_set_data_max (xd, -1);
194     gnee_set_data_max (-1);
195 
196     gx_set_time_max (xd, -1);
197     gnee_set_time_max (-1);
198 
199     gnee_set_sync();
200 
201     gx_set_xosd_feedback();
202     gnee_set_xosd_feedback();
203 
204     gx_set_max_threshold(xd, 20) ;
205     gx_set_min_threshold(xd, -20) ;
206     gx_set_tot_threshold(xd, 20) ;
207 
208     xnee_set_forced_core_device_events (xd) ;
209 
210     default_tmp_file=gx_get_default_filename();
211     gnee_set_rec_file (default_tmp_file);
212     gnee_set_rep_file (default_tmp_file);
213     free (default_tmp_file);
214 
215     g_object_set_data(G_OBJECT(gnee_window), "xd", xd);
216 
217     gx_create_km_lists();
218 
219     gtk_main();
220 
221     return 0;
222 }
223