Commit 96c566b7c6b92aff026efecc0c8af9e323d7ddda
1 parent
ae8854de
Exists in
master
and in
5 other branches
Iniciando reimplementacao do dialogo de configuracao de cor
Showing
9 changed files
with
191 additions
and
40 deletions
Show diff stats
bootstrap.sh
| @@ -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 |
pw3270.cbp
| @@ -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> |