Commit 96c566b7c6b92aff026efecc0c8af9e323d7ddda

Authored by perry.werneck@gmail.com
1 parent ae8854de

Iniciando reimplementacao do dialogo de configuracao de cor

@@ -10,27 +10,30 @@ if test -e revision ; then @@ -10,27 +10,30 @@ if test -e revision ; then
10 . revision 10 . revision
11 fi 11 fi
12 12
13 -PACKAGE_REVISION=`date +%y%m%d` 13 +SVN=`which svn 2> /dev/null`
14 14
15 -if test -d ".svn" ; then 15 +if test -x "$SVN" ; then
16 16
17 - SVN=`which svn 2> /dev/null` 17 + TEMPFILE=.bootstrap.tmp
  18 + LANG="EN_US"
  19 + "$SVN" info > $TEMPFILE 2>&1
18 20
19 - if test -x "$SVN" ; then  
20 -  
21 - TEMPFILE=.bootstrap.tmp  
22 - LANG="EN_US"  
23 - "$SVN" info > $TEMPFILE 2>&1  
24 -  
25 - if [ "$?" == "0" ]; then  
26 - PACKAGE_REVISION=$(cat $TEMPFILE | grep "^Revision: " | cut -d" " -f2)  
27 - PACKAGE_SOURCE=$(cat $TEMPFILE | grep "^URL: " | cut -d" " -f2)  
28 - fi  
29 -  
30 - rm -f $TEMPFILE 21 + if [ "$?" == "0" ]; then
  22 + PACKAGE_REVISION=$(cat $TEMPFILE | grep "^Revision: " | cut -d" " -f2)
  23 + PACKAGE_SOURCE=$(cat $TEMPFILE | grep "^URL: " | cut -d" " -f2)
31 fi 24 fi
32 25
  26 + rm -f $TEMPFILE
  27 +fi
  28 +
  29 +if test -z $PACKAGE_REVISION ; then
  30 + echo "Can´t detect package revision, using current date"
  31 + PACKAGE_REVISION=`date +%y%m%d`
  32 +fi
33 33
  34 +if test -z $PACKAGE_SOURCE ; then
  35 + echo "Can´t detect package source, using default one"
  36 + PACKAGE_SOURCE="http://www.softwarepublico.gov.br/dotlrn/clubs/pw3270"
34 fi 37 fi
35 38
36 echo "PACKAGE_REVISION=$PACKAGE_REVISION" > $out/revision 39 echo "PACKAGE_REVISION=$PACKAGE_REVISION" > $out/revision
@@ -4,14 +4,16 @@ @@ -4,14 +4,16 @@
4 <Project> 4 <Project>
5 <Option title="pw3270" /> 5 <Option title="pw3270" />
6 <Option makefile_is_custom="1" /> 6 <Option makefile_is_custom="1" />
  7 + <Option execution_dir="." />
7 <Option pch_mode="2" /> 8 <Option pch_mode="2" />
8 <Option compiler="gcc" /> 9 <Option compiler="gcc" />
9 <Build> 10 <Build>
10 <Target title="Debug"> 11 <Target title="Debug">
11 <Option output=".bin\Debug\pw3270" prefix_auto="1" extension_auto="1" /> 12 <Option output=".bin\Debug\pw3270" prefix_auto="1" extension_auto="1" />
12 <Option object_output=".obj\Debug\" /> 13 <Option object_output=".obj\Debug\" />
13 - <Option type="0" /> 14 + <Option type="1" />
14 <Option compiler="gcc" /> 15 <Option compiler="gcc" />
  16 + <Option use_console_runner="0" />
15 <Compiler> 17 <Compiler>
16 <Add option="-g" /> 18 <Add option="-g" />
17 <Add option="-DDEBUG=1" /> 19 <Add option="-DDEBUG=1" />
@@ -323,7 +325,7 @@ @@ -323,7 +325,7 @@
323 <Extensions> 325 <Extensions>
324 <code_completion /> 326 <code_completion />
325 <debugger /> 327 <debugger />
326 - <envvars /> 328 + <envvars set="default" />
327 <DoxyBlocks> 329 <DoxyBlocks>
328 <comment_style block="0" line="0" /> 330 <comment_style block="0" line="0" />
329 <doxyfile_project /> 331 <doxyfile_project />
src/gtk/actions.c
@@ -153,7 +153,8 @@ static void connect_standard_action(GtkAction *action, GtkWidget *widget, const @@ -153,7 +153,8 @@ static void connect_standard_action(GtkAction *action, GtkWidget *widget, const
153 { "reload", reload_action }, 153 { "reload", reload_action },
154 { "connect", connect_action }, 154 { "connect", connect_action },
155 { "disconnect", disconnect_action }, 155 { "disconnect", disconnect_action },
156 - { "hostname", hostname_action } 156 + { "hostname", hostname_action },
  157 + { "editcolors", editcolors_action },
157 }; 158 };
158 159
159 int f; 160 int f;
src/gtk/colors.c
@@ -137,4 +137,159 @@ @@ -137,4 +137,159 @@
137 g_free(filename); 137 g_free(filename);
138 } 138 }
139 139
  140 + static void color_selected(GtkTreeSelection *selection, GtkWidget *widget)
  141 + {
  142 + GtkTreeModel * model;
  143 + GtkTreeIter iter;
  144 + GValue value = { 0, };
  145 + int id;
  146 +
  147 + gtk_widget_set_sensitive(widget,FALSE);
  148 +
  149 + if(!gtk_tree_selection_get_selected(selection,&model,&iter))
  150 + return;
  151 +
  152 + gtk_tree_model_get_value(model,&iter,1,&value);
  153 +
  154 + id = g_value_get_int(&value);
  155 +
  156 + if(id < 0 || id >= V3270_COLOR_COUNT)
  157 + return;
  158 +
  159 +
  160 + gtk_widget_set_sensitive(widget,TRUE);
  161 + }
  162 +
  163 + void editcolors_action(GtkAction *action, GtkWidget *widget)
  164 + {
  165 + static const gchar *custom = N_( "Custom colors" );
  166 +
  167 + static const struct _node
  168 + {
  169 + int id;
  170 + const char *text;
  171 + } node[] =
  172 + {
  173 + { V3270_COLOR_BACKGROUND, N_( "Terminal" ) },
  174 + { V3270_COLOR_FIELD, N_( "Fields" ) },
  175 + { V3270_COLOR_SELECTED_BG, N_( "Other" ) },
  176 +
  177 + };
  178 +
  179 + static const gchar *color_name[V3270_COLOR_COUNT] =
  180 + {
  181 + N_( "Background" ), // V3270_COLOR_BACKGROUND
  182 + N_( "Blue" ), // V3270_COLOR_BLUE
  183 + N_( "Red" ), // V3270_COLOR_RED
  184 + N_( "Pink" ), // V3270_COLOR_PINK
  185 + N_( "Green" ), // V3270_COLOR_GREEN
  186 + N_( "Turquoise" ), // V3270_COLOR_TURQUOISE
  187 + N_( "Yellow" ), // V3270_COLOR_YELLOW
  188 + N_( "White" ), // V3270_COLOR_WHITE
  189 + N_( "Black" ), // V3270_COLOR_BLACK
  190 + N_( "Dark Blue" ), // V3270_COLOR_DARK_BLUE
  191 + N_( "Orange" ), // V3270_COLOR_ORANGE
  192 + N_( "Purple" ), // V3270_COLOR_PURPLE
  193 + N_( "Dark Green" ), // V3270_COLOR_DARK_GREEN
  194 + N_( "Turquoise" ), // V3270_COLOR_DARK_TURQUOISE
  195 + N_( "Mustard" ), // V3270_COLOR_MUSTARD
  196 + N_( "Gray" ), // V3270_COLOR_GRAY
  197 +
  198 + N_( "Normal/Unprotected" ), // V3270_COLOR_FIELD
  199 + N_( "Intensified/Unprotected" ), // V3270_COLOR_FIELD_INTENSIFIED
  200 + N_( "Normal/Protected" ), // V3270_COLOR_FIELD_PROTECTED
  201 + N_( "Intensified/Protected" ), // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED
  202 +
  203 + N_( "Selection background" ), // TERMINAL_COLOR_SELECTED_BG
  204 + N_( "Selection foreground" ), // TERMINAL_COLOR_SELECTED_FG
  205 +
  206 + N_( "Cross-hair cursor" ), // TERMINAL_COLOR_CROSS_HAIR
  207 +
  208 + // Oia Colors
  209 + N_( "OIA background" ), // TERMINAL_COLOR_OIA_BACKGROUND
  210 + N_( "OIA foreground" ), // TERMINAL_COLOR_OIA_FOREGROUND
  211 + N_( "OIA separator" ), // TERMINAL_COLOR_OIA_SEPARATOR
  212 + N_( "OIA status ok" ), // TERMINAL_COLOR_OIA_STATUS_OK
  213 + N_( "OIA status invalid" ), // TERMINAL_COLOR_OIA_STATUS_INVALID
  214 +
  215 + };
  216 +
  217 + const gchar * title = g_object_get_data(G_OBJECT(action),"title");
  218 + GtkWidget * dialog = gtk_dialog_new_with_buttons ( gettext(title ? title : N_( "Color setup") ),
  219 + GTK_WINDOW(gtk_widget_get_toplevel(widget)),
  220 + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
  221 + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
  222 + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
  223 + NULL );
  224 + GtkWidget * panned = gtk_hbox_new(FALSE,2);
  225 + GtkWidget * tree;
  226 + GtkWidget * color;
  227 +
  228 + {
  229 + // Color dialog setup
  230 + color = gtk_color_selection_new();
  231 + gtk_widget_set_sensitive(color,0);
  232 + gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(color),FALSE);
  233 + gtk_color_selection_set_has_palette(GTK_COLOR_SELECTION(color),TRUE);
  234 + gtk_box_pack_end(GTK_BOX(panned),color,TRUE,TRUE,0);
  235 + }
  236 +
  237 + // Tree view with all available colors
  238 + {
  239 + GtkTreeModel * model = (GtkTreeModel *) gtk_tree_store_new(2,G_TYPE_STRING,G_TYPE_INT);
  240 + GtkWidget * box;
  241 + GtkTreeIter iter;
  242 + GtkTreeIter parent;
  243 + GtkTreeSelection * select;
  244 + int f;
  245 + int title = 0;
  246 +
  247 + tree = gtk_tree_view_new_with_model(model);
  248 +
  249 + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree),FALSE);
  250 + gtk_tree_view_insert_column_with_attributes( GTK_TREE_VIEW(tree),
  251 + -1,
  252 + "color",gtk_cell_renderer_text_new(),"text",
  253 + 0, NULL );
  254 +
  255 + gtk_tree_store_append((GtkTreeStore *) model,&parent,NULL);
  256 + gtk_tree_store_set((GtkTreeStore *) model, &parent, 0, gettext(node[title++].text), 1, V3270_COLOR_COUNT, -1);
  257 +
  258 +
  259 + select = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
  260 + gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
  261 + g_signal_connect(G_OBJECT (select),"changed",G_CALLBACK(color_selected),color);
  262 +
  263 + for(f=0;f<V3270_COLOR_COUNT;f++)
  264 + {
  265 + if(f == node[title].id)
  266 + {
  267 + gtk_tree_store_append((GtkTreeStore *) model,&parent,NULL);
  268 + gtk_tree_store_set((GtkTreeStore *) model, &parent, 0, gettext(node[title++].text), 1, V3270_COLOR_COUNT, -1);
  269 + }
  270 + gtk_tree_store_append((GtkTreeStore *) model,&iter,&parent);
  271 + gtk_tree_store_set((GtkTreeStore *) model, &iter, 0, gettext(color_name[f]), 1, f, -1);
  272 + }
  273 +
  274 + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree));
  275 +
  276 + box = gtk_scrolled_window_new(NULL,NULL);
  277 + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(box),GTK_POLICY_NEVER,GTK_POLICY_ALWAYS);
  278 + gtk_container_add(GTK_CONTAINER(box),tree);
  279 + gtk_box_pack_start(GTK_BOX(panned),box,TRUE,TRUE,0);
  280 +
  281 +
  282 + }
  283 +
  284 + // Run dialog
  285 + gtk_widget_show_all(panned);
  286 + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(panned),TRUE,TRUE,2);
  287 +
  288 + gtk_dialog_run(GTK_DIALOG(dialog));
  289 +
  290 +
  291 + gtk_widget_destroy(dialog);
  292 +
  293 + }
  294 +
140 295
src/gtk/globals.h
@@ -71,4 +71,5 @@ @@ -71,4 +71,5 @@
71 G_GNUC_INTERNAL void print_all_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); 72 G_GNUC_INTERNAL void print_selected_action(GtkAction *action, GtkWidget *widget);
73 G_GNUC_INTERNAL void print_copy_action(GtkAction *action, GtkWidget *widget); 73 G_GNUC_INTERNAL void print_copy_action(GtkAction *action, GtkWidget *widget);
  74 + G_GNUC_INTERNAL void editcolors_action(GtkAction *action, GtkWidget *widget);
74 75
src/gtk/mainwindow.c
@@ -299,7 +299,12 @@ @@ -299,7 +299,12 @@
299 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); 299 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
300 gtk_window_set_role(GTK_WINDOW(window),"toplevel"); 300 gtk_window_set_role(GTK_WINDOW(window),"toplevel");
301 301
302 - ui_parse_xml_folder(GTK_WINDOW(window),path,groupname,popupname,terminal,widget_setup); 302 + if(ui_parse_xml_folder(GTK_WINDOW(window),path,groupname,popupname,terminal,widget_setup))
  303 + {
  304 + g_object_unref(terminal);
  305 + g_object_unref(window);
  306 + return NULL;
  307 + }
303 group = g_object_get_data(G_OBJECT(window),"action_groups"); 308 group = g_object_get_data(G_OBJECT(window),"action_groups");
304 popup = g_object_get_data(G_OBJECT(window),"popup_menus"); 309 popup = g_object_get_data(G_OBJECT(window),"popup_menus");
305 310
src/gtk/v3270/v3270.h
@@ -75,9 +75,7 @@ @@ -75,9 +75,7 @@
75 75
76 V3270_COLOR_SELECTED_BG, 76 V3270_COLOR_SELECTED_BG,
77 V3270_COLOR_SELECTED_FG, 77 V3270_COLOR_SELECTED_FG,
78 - V3270_COLOR_SELECTED_BORDER,  
79 78
80 - V3270_COLOR_CURSOR_BACKGROUND,  
81 V3270_COLOR_CROSS_HAIR, 79 V3270_COLOR_CROSS_HAIR,
82 80
83 // Oia Colors (Must be the last block) 81 // Oia Colors (Must be the last block)
src/gtk/v3270/widget.c
@@ -834,9 +834,7 @@ void v3270_set_colors(GtkWidget *widget, const gchar *colors) @@ -834,9 +834,7 @@ void v3270_set_colors(GtkWidget *widget, const gchar *colors)
834 834
835 "#404040," // V3270_COLOR_SELECTED_BG 835 "#404040," // V3270_COLOR_SELECTED_BG
836 "#FFFFFF," // V3270_COLOR_SELECTED_FG, 836 "#FFFFFF," // V3270_COLOR_SELECTED_FG,
837 - "#FFFF00," // V3270_COLOR_SELECTED_BORDER  
838 837
839 - "#00FF00," // V3270_COLOR_CURSOR  
840 "#00FF00," // V3270_COLOR_CROSS_HAIR 838 "#00FF00," // V3270_COLOR_CROSS_HAIR
841 839
842 "#000000," // V3270_COLOR_OIA_BACKGROUND 840 "#000000," // V3270_COLOR_OIA_BACKGROUND
@@ -864,27 +862,15 @@ void v3270_set_color_table(GdkColor *table, const gchar *colors) @@ -864,27 +862,15 @@ void v3270_set_color_table(GdkColor *table, const gchar *colors)
864 cnt = g_strv_length(clr); 862 cnt = g_strv_length(clr);
865 switch(cnt) 863 switch(cnt)
866 { 864 {
867 - case 0:  
868 - case 1:  
869 - break;  
870 -  
871 - case 29:  
872 - for(f=0;f < V3270_COLOR_SELECTED_BORDER;f++)  
873 - v3270_set_color_entry(table,f,clr[f]);  
874 -  
875 - v3270_set_color_entry(table,V3270_COLOR_SELECTED_BORDER,clr[V3270_COLOR_SELECTED_BG]);  
876 -  
877 - for(f=V3270_COLOR_SELECTED_BORDER+1;f < V3270_COLOR_COUNT;f++)  
878 - v3270_set_color_entry(table,f,clr[f-1]);  
879 -  
880 - break;  
881 -  
882 case V3270_COLOR_COUNT: // Complete string 865 case V3270_COLOR_COUNT: // Complete string
883 for(f=0;f < V3270_COLOR_COUNT;f++) 866 for(f=0;f < V3270_COLOR_COUNT;f++)
884 v3270_set_color_entry(table,f,clr[f]); 867 v3270_set_color_entry(table,f,clr[f]);
885 break; 868 break;
886 869
887 default: 870 default:
  871 +
  872 + g_warning("Color table has %d elements; should be %d.",cnt,V3270_COLOR_COUNT);
  873 +
888 for(f=0;f < cnt;f++) 874 for(f=0;f < cnt;f++)
889 v3270_set_color_entry(table,f,clr[f]); 875 v3270_set_color_entry(table,f,clr[f]);
890 for(f=cnt; f < V3270_COLOR_COUNT;f++) 876 for(f=cnt; f < V3270_COLOR_COUNT;f++)
ui/00default.xml
@@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
104 </menu> 104 </menu>
105 105
106 <menu name='SettingsMenu' label='Settings' sysmenu='yes' > 106 <menu name='SettingsMenu' label='Settings' sysmenu='yes' >
107 - <menuitem action='SelectColors' icon='select-color' label='Colors' /> 107 + <menuitem action='editcolors' icon='select-color' label='Colors' />
108 108
109 <!--- Special action - The fontselect menu will be populated with all available monospaced fonts ---> 109 <!--- Special action - The fontselect menu will be populated with all available monospaced fonts --->
110 <menuitem name='fontselect' icon='select-font' label='Select font' /> 110 <menuitem name='fontselect' icon='select-font' label='Select font' />
@@ -155,7 +155,7 @@ @@ -155,7 +155,7 @@
155 <separator/> 155 <separator/>
156 <toolitem action='set' toggle='fullscreen' icon='fullscreen' label='Full Screen' /> 156 <toolitem action='set' toggle='fullscreen' icon='fullscreen' label='Full Screen' />
157 <toolitem action='reset' toggle='fullscreen' icon='leave-fullscreen' label='Window' /> 157 <toolitem action='reset' toggle='fullscreen' icon='leave-fullscreen' label='Window' />
158 - <toolitem action='SelectColors' /> 158 + <toolitem action='editcolors' />
159 <toolitem action='print' src='all' /> 159 <toolitem action='print' src='all' />
160 <toolitem action='Quit' /> 160 <toolitem action='Quit' />
161 </toolbar> 161 </toolbar>