Commit ad40e52537a4aabc6cea8a3acc5df2524bbb3fe8

Authored by perry.werneck@gmail.com
1 parent 61c32a7a

Implementando processo de construção da janela principal, ajuste do nome da aplicação no gtk, etc.

src/gtk/common/config.c
@@ -43,12 +43,12 @@ @@ -43,12 +43,12 @@
43 43
44 #ifdef WIN_REGISTRY_ENABLED 44 #ifdef WIN_REGISTRY_ENABLED
45 45
46 - static const gchar *registry_path = "SOFTWARE\\"PACKAGE_NAME; 46 + static const gchar *registry_path = "SOFTWARE\\";
47 47
48 #else 48 #else
49 49
50 static GKeyFile * program_config = NULL; 50 static GKeyFile * program_config = NULL;
51 - static const gchar * mask = "%s" G_DIR_SEPARATOR_S PACKAGE_NAME ".conf"; 51 + static const gchar * mask = "%s" G_DIR_SEPARATOR_S "%s.conf";
52 52
53 #endif // WIN_REGISTRY_ENABLED 53 #endif // WIN_REGISTRY_ENABLED
54 54
@@ -87,7 +87,7 @@ gchar * get_last_error_msg(void) @@ -87,7 +87,7 @@ gchar * get_last_error_msg(void)
87 { 87 {
88 static HKEY predefined[] = { HKEY_CURRENT_USER, HKEY_USERS, HKEY_LOCAL_MACHINE }; 88 static HKEY predefined[] = { HKEY_CURRENT_USER, HKEY_USERS, HKEY_LOCAL_MACHINE };
89 int f; 89 int f;
90 - gchar * path = g_strdup_printf("%s\\%s",registry_path,group); 90 + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group);
91 91
92 for(f=0;f<G_N_ELEMENTS(predefined);f++) 92 for(f=0;f<G_N_ELEMENTS(predefined);f++)
93 { 93 {
@@ -119,7 +119,7 @@ gchar * get_last_error_msg(void) @@ -119,7 +119,7 @@ gchar * get_last_error_msg(void)
119 const gchar * const *sysconfig; 119 const gchar * const *sysconfig;
120 120
121 #ifdef DEBUG 121 #ifdef DEBUG
122 - filename = g_strdup_printf(mask,"."); 122 + filename = g_strdup_printf(mask,".",g_get_application_name());
123 trace("Checking for %s",filename); 123 trace("Checking for %s",filename);
124 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) 124 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR))
125 return filename; 125 return filename;
@@ -128,7 +128,7 @@ gchar * get_last_error_msg(void) @@ -128,7 +128,7 @@ gchar * get_last_error_msg(void)
128 128
129 for(f=0;f<G_N_ELEMENTS(dir);f++) 129 for(f=0;f<G_N_ELEMENTS(dir);f++)
130 { 130 {
131 - filename = g_strdup_printf(mask,dir[f]()); 131 + filename = g_strdup_printf(mask,dir[f](),g_get_application_name());
132 trace("Checking for %s",filename); 132 trace("Checking for %s",filename);
133 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) 133 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR))
134 return filename; 134 return filename;
@@ -138,7 +138,7 @@ gchar * get_last_error_msg(void) @@ -138,7 +138,7 @@ gchar * get_last_error_msg(void)
138 sysconfig = g_get_system_config_dirs(); 138 sysconfig = g_get_system_config_dirs();
139 for(f=0;sysconfig[f];f++) 139 for(f=0;sysconfig[f];f++)
140 { 140 {
141 - filename = g_strdup_printf(mask,sysconfig[f]); 141 + filename = g_strdup_printf(mask,sysconfig[f],g_get_application_name());
142 trace("Checking for %s",filename); 142 trace("Checking for %s",filename);
143 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) 143 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR))
144 return filename; 144 return filename;
@@ -148,14 +148,14 @@ gchar * get_last_error_msg(void) @@ -148,14 +148,14 @@ gchar * get_last_error_msg(void)
148 sysconfig = g_get_system_data_dirs(); 148 sysconfig = g_get_system_data_dirs();
149 for(f=0;sysconfig[f];f++) 149 for(f=0;sysconfig[f];f++)
150 { 150 {
151 - filename = g_strdup_printf(mask,sysconfig[f]); 151 + filename = g_strdup_printf(mask,sysconfig[f],g_get_application_name());
152 trace("Checking for %s",filename); 152 trace("Checking for %s",filename);
153 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) 153 if(g_file_test(filename,G_FILE_TEST_IS_REGULAR))
154 return filename; 154 return filename;
155 g_free(filename); 155 g_free(filename);
156 } 156 }
157 157
158 - return g_strdup_printf(mask,g_get_user_config_dir()); 158 + return g_strdup_printf(mask,g_get_user_config_dir(),g_get_application_name());
159 } 159 }
160 #endif // #ifdef WIN_REGISTRY_ENABLED 160 #endif // #ifdef WIN_REGISTRY_ENABLED
161 161
@@ -177,7 +177,7 @@ gchar * get_last_error_msg(void) @@ -177,7 +177,7 @@ gchar * get_last_error_msg(void)
177 if(datatype == REG_DWORD) 177 if(datatype == REG_DWORD)
178 ret = data ? TRUE : FALSE; 178 ret = data ? TRUE : FALSE;
179 else 179 else
180 - g_warning("Unexpected registry data type in %s\\%s\\%s",registry_path,group,key); 180 + g_warning("Unexpected registry data type in %s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key);
181 } 181 }
182 182
183 RegCloseKey(key_handle); 183 RegCloseKey(key_handle);
@@ -220,7 +220,7 @@ gchar * get_last_error_msg(void) @@ -220,7 +220,7 @@ gchar * get_last_error_msg(void)
220 if(datatype == REG_DWORD) 220 if(datatype == REG_DWORD)
221 ret = (gint) data; 221 ret = (gint) data;
222 else 222 else
223 - g_warning("Unexpected registry data type in %s\\%s\\%s",registry_path,group,key); 223 + g_warning("Unexpected registry data type in %s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key);
224 } 224 }
225 225
226 RegCloseKey(key_handle); 226 RegCloseKey(key_handle);
@@ -321,7 +321,7 @@ static void set_string(const gchar *group, const gchar *key, const gchar *fmt, v @@ -321,7 +321,7 @@ static void set_string(const gchar *group, const gchar *key, const gchar *fmt, v
321 321
322 #ifdef WIN_REGISTRY_ENABLED 322 #ifdef WIN_REGISTRY_ENABLED
323 323
324 - gchar * path = g_strdup_printf("%s\\%s",registry_path,group); 324 + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group);
325 HKEY hKey; 325 HKEY hKey;
326 DWORD disp; 326 DWORD disp;
327 327
@@ -356,7 +356,7 @@ void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val) @@ -356,7 +356,7 @@ void set_boolean_to_config(const gchar *group, const gchar *key, gboolean val)
356 356
357 HKEY hKey; 357 HKEY hKey;
358 DWORD disp; 358 DWORD disp;
359 - gchar * path = g_strdup_printf("%s\\%s",registry_path,group); 359 + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group);
360 360
361 trace("Creating key %s",path); 361 trace("Creating key %s",path);
362 if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) 362 if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS)
@@ -398,7 +398,7 @@ void set_integer_to_config(const gchar *group, const gchar *key, gint val) @@ -398,7 +398,7 @@ void set_integer_to_config(const gchar *group, const gchar *key, gint val)
398 398
399 HKEY hKey; 399 HKEY hKey;
400 DWORD disp; 400 DWORD disp;
401 - gchar * path = g_strdup_printf("%s\\%s",registry_path,group); 401 + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group);
402 402
403 trace("Creating key %s",path); 403 trace("Creating key %s",path);
404 if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) 404 if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS)
@@ -449,7 +449,7 @@ void configuration_deinit(void) @@ -449,7 +449,7 @@ void configuration_deinit(void)
449 449
450 if(text) 450 if(text)
451 { 451 {
452 - gchar *filename = g_strdup_printf(mask,g_get_user_config_dir()); 452 + gchar *filename = g_strdup_printf(mask,g_get_user_config_dir(),g_get_application_name());
453 453
454 trace("Saving configuration in \"%s\"",filename); 454 trace("Saving configuration in \"%s\"",filename);
455 455
src/gtk/globals.h
@@ -50,20 +50,25 @@ @@ -50,20 +50,25 @@
50 ACTION_COUNT 50 ACTION_COUNT
51 }; 51 };
52 52
53 - // Configuration 53 +
  54 +/*--[ Statics ]--------------------------------------------------------------------------------------*/
  55 +
  56 +
  57 +/*--[ Global prototipes ]----------------------------------------------------------------------------*/
  58 +
54 #include "common/common.h" 59 #include "common/common.h"
55 60
56 - GtkWidget * create_main_window(void);  
57 - void setup_font_list(GtkWidget *widget, GtkWidget *obj);  
58 - void load_color_schemes(GtkWidget *widget, gchar *active); 61 + G_GNUC_INTERNAL GtkWidget * create_main_window(void);
  62 + G_GNUC_INTERNAL void setup_font_list(GtkWidget *widget, GtkWidget *obj);
  63 + G_GNUC_INTERNAL void load_color_schemes(GtkWidget *widget, gchar *active);
59 64
60 // actions 65 // actions
61 - void paste_file_action(GtkAction *action, GtkWidget *widget);  
62 - void hostname_action(GtkAction *action, GtkWidget *widget);  
63 - void save_all_action(GtkAction *action, GtkWidget *widget);  
64 - void save_selected_action(GtkAction *action, GtkWidget *widget);  
65 - void save_copy_action(GtkAction *action, GtkWidget *widget);  
66 - void print_all_action(GtkAction *action, GtkWidget *widget);  
67 - void print_selected_action(GtkAction *action, GtkWidget *widget);  
68 - void print_copy_action(GtkAction *action, GtkWidget *widget); 66 + G_GNUC_INTERNAL void paste_file_action(GtkAction *action, GtkWidget *widget);
  67 + G_GNUC_INTERNAL void hostname_action(GtkAction *action, GtkWidget *widget);
  68 + G_GNUC_INTERNAL void save_all_action(GtkAction *action, GtkWidget *widget);
  69 + G_GNUC_INTERNAL void save_selected_action(GtkAction *action, GtkWidget *widget);
  70 + G_GNUC_INTERNAL void save_copy_action(GtkAction *action, GtkWidget *widget);
  71 + G_GNUC_INTERNAL void print_all_action(GtkAction *action, GtkWidget *widget);
  72 + G_GNUC_INTERNAL void print_selected_action(GtkAction *action, GtkWidget *widget);
  73 + G_GNUC_INTERNAL void print_copy_action(GtkAction *action, GtkWidget *widget);
69 74
src/gtk/main.c
@@ -105,25 +105,32 @@ static int initialize(void) @@ -105,25 +105,32 @@ static int initialize(void)
105 return 0; 105 return 0;
106 } 106 }
107 107
108 -int main (int argc, char *argv[]) 108 +int main(int argc, char *argv[])
109 { 109 {
  110 + int rc = 0;
  111 +
  112 + g_set_application_name(PACKAGE_NAME);
  113 +
110 gtk_init(&argc, &argv); 114 gtk_init(&argc, &argv);
111 115
112 - if(initialize())  
113 - return -1; 116 + rc = initialize();
  117 + if(!rc)
  118 + {
  119 + configuration_init();
  120 +
  121 + lib3270_set_popup_handler(popup_handler);
114 122
115 - configuration_init();  
116 - lib3270_set_popup_handler(popup_handler); 123 + toplevel = create_main_window();
117 124
118 - toplevel = create_main_window(); 125 + if(toplevel)
  126 + {
  127 + gtk_window_present(GTK_WINDOW(toplevel));
  128 + gtk_main();
  129 + }
119 130
120 - if(toplevel)  
121 - {  
122 - gtk_widget_show(toplevel);  
123 - gtk_main(); 131 + configuration_deinit();
124 } 132 }
125 133
126 - configuration_deinit();  
127 - return 0; 134 + return rc;
128 } 135 }
129 136
src/gtk/mainwindow.c
@@ -313,7 +313,11 @@ @@ -313,7 +313,11 @@
313 } 313 }
314 314
315 // Create window 315 // Create window
316 - window = ui_parse_xml_folder(path,groupname,popupname,terminal,widget_setup); 316 + window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  317 + gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  318 + gtk_window_set_role(GTK_WINDOW(window),"toplevel");
  319 +
  320 + ui_parse_xml_folder(GTK_WINDOW(window),path,groupname,popupname,terminal,widget_setup);
317 group = g_object_get_data(G_OBJECT(window),"action_groups"); 321 group = g_object_get_data(G_OBJECT(window),"action_groups");
318 popup = g_object_get_data(G_OBJECT(window),"popup_menus"); 322 popup = g_object_get_data(G_OBJECT(window),"popup_menus");
319 323
src/gtk/uiparser/parser.c
@@ -217,7 +217,7 @@ static void release_list(GObject **obj) @@ -217,7 +217,7 @@ static void release_list(GObject **obj)
217 g_free(obj); 217 g_free(obj);
218 } 218 }
219 219
220 -GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *setup) 220 +int ui_parse_xml_folder(GtkWindow *toplevel, const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *setup)
221 { 221 {
222 struct parser p; 222 struct parser p;
223 GDir * dir; 223 GDir * dir;
@@ -248,7 +248,7 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con @@ -248,7 +248,7 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con
248 gtk_dialog_run(GTK_DIALOG (dialog)); 248 gtk_dialog_run(GTK_DIALOG (dialog));
249 gtk_widget_destroy(dialog); 249 gtk_widget_destroy(dialog);
250 250
251 - return NULL; 251 + return -1;
252 } 252 }
253 253
254 while( (ptr = (gchar *) g_dir_read_name(dir)) != NULL) 254 while( (ptr = (gchar *) g_dir_read_name(dir)) != NULL)
@@ -264,7 +264,7 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con @@ -264,7 +264,7 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con
264 g_dir_close(dir); 264 g_dir_close(dir);
265 265
266 parser_init(&p); 266 parser_init(&p);
267 - p.toplevel = gtk_window_new(GTK_WINDOW_TOPLEVEL); 267 + p.toplevel = GTK_WIDGET(toplevel);
268 p.center_widget = widget; 268 p.center_widget = widget;
269 p.group = groupname; 269 p.group = groupname;
270 p.popupname = popupname; 270 p.popupname = popupname;
@@ -303,5 +303,5 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con @@ -303,5 +303,5 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con
303 303
304 parser_destroy(&p); 304 parser_destroy(&p);
305 305
306 - return p.toplevel; 306 + return 0;
307 } 307 }
src/gtk/uiparser/parser.h
@@ -51,9 +51,9 @@ @@ -51,9 +51,9 @@
51 void (*setup)(GtkWidget *widget, GtkWidget *obj); 51 void (*setup)(GtkWidget *widget, GtkWidget *obj);
52 } UI_WIDGET_SETUP; 52 } UI_WIDGET_SETUP;
53 53
54 - GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *itn);  
55 - const gchar * ui_get_attribute(const gchar *key, const gchar **name, const gchar **value);  
56 - gboolean ui_get_bool_attribute(const gchar *key, const gchar **name, const gchar **value, gboolean def);  
57 - GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash, const gchar **names, const gchar **values, GError **error); 54 + int ui_parse_xml_folder(GtkWindow *toplevel, const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *itn);
  55 + const gchar * ui_get_attribute(const gchar *key, const gchar **name, const gchar **value);
  56 + gboolean ui_get_bool_attribute(const gchar *key, const gchar **name, const gchar **value, gboolean def);
  57 + GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash, const gchar **names, const gchar **values, GError **error);
58 58
59 #endif // UI_PARSER_H_INCLUDED 59 #endif // UI_PARSER_H_INCLUDED
src/gtk/v3270/widget.c
@@ -171,7 +171,7 @@ void get_preferred_height(GtkWidget *widget, gint *minimum_height, gint *natural @@ -171,7 +171,7 @@ void get_preferred_height(GtkWidget *widget, gint *minimum_height, gint *natural
171 *minimum_height = height ? height : 10; 171 *minimum_height = height ? height : 10;
172 172
173 if(natural_height) 173 if(natural_height)
174 - *natural_height = height ? height : 200; 174 + *natural_height = 400;
175 175
176 } 176 }
177 177
@@ -183,7 +183,7 @@ void get_preferred_width(GtkWidget *widget, gint *minimum_width, gint *natural_w @@ -183,7 +183,7 @@ void get_preferred_width(GtkWidget *widget, gint *minimum_width, gint *natural_w
183 *minimum_width = width ? width : 10; 183 *minimum_width = width ? width : 10;
184 184
185 if(natural_width) 185 if(natural_width)
186 - *natural_width = width ? width : 320; 186 + *natural_width = 600;
187 } 187 }
188 188
189 /* 189 /*