From 42bf282b35adda105a30e5cd0e6af0bf56233d59 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Thu, 20 Sep 2012 20:06:31 +0000 Subject: [PATCH] Reimplementando a barra de funcoes --- pw3270.cbp | 1 + src/pw3270/Makefile.in | 1 + src/pw3270/uiparser/keypad.c | 24 +++++++++++++++++++----- src/pw3270/uiparser/parser.c | 13 ++++++++----- ui/10functions.xml | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 ui/10functions.xml diff --git a/pw3270.cbp b/pw3270.cbp index 6c388ce..ba350c7 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -347,6 +347,7 @@ + diff --git a/src/pw3270/Makefile.in b/src/pw3270/Makefile.in index 25820bd..8cbec15 100644 --- a/src/pw3270/Makefile.in +++ b/src/pw3270/Makefile.in @@ -191,6 +191,7 @@ $(DEBDIR)/pw3270.install: Makefile @echo "$(libdir)/@DLLPREFIX@$(PACKAGE_TARNAME)@DLLEXT@" >> $@ @echo "$(datarootdir)/$(PACKAGE_NAME)/ui/00default.xml" >> $@ @echo "$(datarootdir)/$(PACKAGE_NAME)/ui/10keypad.xml" >> $@ + @echo "$(datarootdir)/$(PACKAGE_NAME)/ui/10functions.xml" >> $@ @echo "$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME).png" >> $@ @echo "$(datarootdir)/$(PACKAGE_NAME)/$(PACKAGE_NAME)-logo.png" >> $@ diff --git a/src/pw3270/uiparser/keypad.c b/src/pw3270/uiparser/keypad.c index ed42d11..bcf7037 100644 --- a/src/pw3270/uiparser/keypad.c +++ b/src/pw3270/uiparser/keypad.c @@ -210,6 +210,24 @@ } + UI_ATTR_DIRECTION ui_get_position_attribute(const gchar **names, const gchar **values) + { + static const gchar * posname[] = { "top", "bottom", "left", "right" }; + const gchar * dir = ui_get_attribute("position",names,values); + int f; + + if(dir) + { + for(f=0;fparser = info; keypad->handle = gtk_handle_box_new(); - keypad->pos = ui_get_dir_attribute(names,values); + keypad->pos = ui_get_position_attribute(names,values); keypad->relief = get_relief(names, values, GTK_RELIEF_NORMAL); switch(keypad->pos) @@ -284,7 +302,6 @@ } } - gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(keypad->handle),GTK_SHADOW_ETCHED_IN); gtk_container_add(GTK_CONTAINER(keypad->handle),keypad->box); @@ -297,7 +314,6 @@ { if(widget) { - gtk_widget_show_all(widget); gtk_table_attach( GTK_TABLE(keypad->table), widget, keypad->col,keypad->col+keypad->button_width, @@ -350,8 +366,6 @@ gtk_box_pack_start(GTK_BOX(keypad->box),keypad->table,FALSE,FALSE,0); gtk_widget_show_all(keypad->box); - gtk_widget_show_all(keypad->table); - gtk_widget_show_all(keypad->handle); } g_free(keypad); diff --git a/src/pw3270/uiparser/parser.c b/src/pw3270/uiparser/parser.c index 8f483aa..487474d 100644 --- a/src/pw3270/uiparser/parser.c +++ b/src/pw3270/uiparser/parser.c @@ -85,7 +85,6 @@ static void pack_keypad(gpointer key, GtkWidget *widget, struct keypad *k) if(gtk_handle_box_get_handle_position(GTK_HANDLE_BOX(widget)) != k->filter) return; - gtk_widget_show_all(widget); k->pack(GTK_BOX(k->box),widget,FALSE,FALSE,0); } @@ -189,9 +188,11 @@ void parser_build(struct parser *p, GtkWidget *widget) struct action_info a_info; #if GTK_CHECK_VERSION(3,0,0) + GtkWidget * mainBox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); GtkWidget * vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); GtkWidget * hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0); #else + GtkWidget * mainBox = gtk_vbox_new(FALSE,0); GtkWidget * vbox = gtk_vbox_new(FALSE,0); GtkWidget * hbox = gtk_hbox_new(FALSE,0); #endif // GTK(3,0,0) @@ -224,7 +225,7 @@ void parser_build(struct parser *p, GtkWidget *widget) g_hash_table_foreach(p->actions,(GHFunc) action_group_setup, &a_info); // Pack menubars - p->element = G_OBJECT(vbox); + p->element = G_OBJECT(mainBox); g_hash_table_foreach(p->element_list[UI_ELEMENT_MENUBAR],(GHFunc) pack_start, p); // Pack top toolbars @@ -247,9 +248,10 @@ void parser_build(struct parser *p, GtkWidget *widget) if(widget) { ui_set_scroll_actions(widget,p->scroll_action); - gtk_box_pack_start(GTK_BOX(hbox),widget,TRUE,TRUE,0); + gtk_box_pack_start(GTK_BOX(vbox),widget,TRUE,TRUE,0); gtk_widget_show(widget); } + gtk_box_pack_start(GTK_BOX(hbox),vbox,TRUE,TRUE,0); // Pack right keypads keypad.filter = GTK_POS_LEFT; @@ -262,11 +264,12 @@ void parser_build(struct parser *p, GtkWidget *widget) g_hash_table_foreach(p->element_list[UI_ELEMENT_KEYPAD],(GHFunc) pack_keypad, &keypad); // Finish building - gtk_box_pack_start(GTK_BOX(vbox),hbox,TRUE,TRUE,0); - gtk_container_add(GTK_CONTAINER(p->toplevel),vbox); + gtk_box_pack_start(GTK_BOX(mainBox),hbox,TRUE,TRUE,0); + gtk_container_add(GTK_CONTAINER(p->toplevel),mainBox); gtk_widget_show(hbox); gtk_widget_show(vbox); + gtk_widget_show(mainBox); gtk_window_add_accel_group(GTK_WINDOW(p->toplevel),a_info.accel_group); diff --git a/ui/10functions.xml b/ui/10functions.xml new file mode 100644 index 0000000..09a57a0 --- /dev/null +++ b/ui/10functions.xml @@ -0,0 +1,65 @@ + + + + + + +