Commit b91427351cfcb7ddb07903f3c94234571a8f1367

Authored by Perry Werneck
1 parent f3b8aa20
Exists in master and in 1 other branch develop

Setting defaults on widget creation.

glade/widget-test.glade 0 → 100644
@@ -0,0 +1,178 @@ @@ -0,0 +1,178 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!-- Generated with glade 3.20.4 -->
  3 +<interface>
  4 + <requires lib="gtk+" version="3.20"/>
  5 + <object class="GtkWindow">
  6 + <property name="can_focus">False</property>
  7 + <child>
  8 + <object class="GtkBox">
  9 + <property name="visible">True</property>
  10 + <property name="can_focus">False</property>
  11 + <property name="orientation">vertical</property>
  12 + <child>
  13 + <object class="GtkMenuBar">
  14 + <property name="visible">True</property>
  15 + <property name="can_focus">False</property>
  16 + <child>
  17 + <object class="GtkMenuItem">
  18 + <property name="visible">True</property>
  19 + <property name="can_focus">False</property>
  20 + <property name="label" translatable="yes">_Arquivo</property>
  21 + <property name="use_underline">True</property>
  22 + <child type="submenu">
  23 + <object class="GtkMenu">
  24 + <property name="visible">True</property>
  25 + <property name="can_focus">False</property>
  26 + <child>
  27 + <object class="GtkImageMenuItem">
  28 + <property name="label">gtk-new</property>
  29 + <property name="visible">True</property>
  30 + <property name="can_focus">False</property>
  31 + <property name="use_underline">True</property>
  32 + <property name="use_stock">True</property>
  33 + </object>
  34 + </child>
  35 + <child>
  36 + <object class="GtkImageMenuItem">
  37 + <property name="label">gtk-open</property>
  38 + <property name="visible">True</property>
  39 + <property name="can_focus">False</property>
  40 + <property name="use_underline">True</property>
  41 + <property name="use_stock">True</property>
  42 + </object>
  43 + </child>
  44 + <child>
  45 + <object class="GtkImageMenuItem">
  46 + <property name="label">gtk-save</property>
  47 + <property name="visible">True</property>
  48 + <property name="can_focus">False</property>
  49 + <property name="use_underline">True</property>
  50 + <property name="use_stock">True</property>
  51 + </object>
  52 + </child>
  53 + <child>
  54 + <object class="GtkImageMenuItem">
  55 + <property name="label">gtk-save-as</property>
  56 + <property name="visible">True</property>
  57 + <property name="can_focus">False</property>
  58 + <property name="use_underline">True</property>
  59 + <property name="use_stock">True</property>
  60 + </object>
  61 + </child>
  62 + <child>
  63 + <object class="GtkSeparatorMenuItem">
  64 + <property name="visible">True</property>
  65 + <property name="can_focus">False</property>
  66 + </object>
  67 + </child>
  68 + <child>
  69 + <object class="GtkImageMenuItem">
  70 + <property name="label">gtk-quit</property>
  71 + <property name="visible">True</property>
  72 + <property name="can_focus">False</property>
  73 + <property name="use_underline">True</property>
  74 + <property name="use_stock">True</property>
  75 + </object>
  76 + </child>
  77 + </object>
  78 + </child>
  79 + </object>
  80 + </child>
  81 + <child>
  82 + <object class="GtkMenuItem">
  83 + <property name="visible">True</property>
  84 + <property name="can_focus">False</property>
  85 + <property name="label" translatable="yes">_Editar</property>
  86 + <property name="use_underline">True</property>
  87 + <child type="submenu">
  88 + <object class="GtkMenu">
  89 + <property name="visible">True</property>
  90 + <property name="can_focus">False</property>
  91 + <child>
  92 + <object class="GtkImageMenuItem">
  93 + <property name="label">gtk-cut</property>
  94 + <property name="visible">True</property>
  95 + <property name="can_focus">False</property>
  96 + <property name="use_underline">True</property>
  97 + <property name="use_stock">True</property>
  98 + </object>
  99 + </child>
  100 + <child>
  101 + <object class="GtkImageMenuItem">
  102 + <property name="label">gtk-copy</property>
  103 + <property name="visible">True</property>
  104 + <property name="can_focus">False</property>
  105 + <property name="use_underline">True</property>
  106 + <property name="use_stock">True</property>
  107 + </object>
  108 + </child>
  109 + <child>
  110 + <object class="GtkImageMenuItem">
  111 + <property name="label">gtk-paste</property>
  112 + <property name="visible">True</property>
  113 + <property name="can_focus">False</property>
  114 + <property name="use_underline">True</property>
  115 + <property name="use_stock">True</property>
  116 + </object>
  117 + </child>
  118 + <child>
  119 + <object class="GtkImageMenuItem">
  120 + <property name="label">gtk-delete</property>
  121 + <property name="visible">True</property>
  122 + <property name="can_focus">False</property>
  123 + <property name="use_underline">True</property>
  124 + <property name="use_stock">True</property>
  125 + </object>
  126 + </child>
  127 + </object>
  128 + </child>
  129 + </object>
  130 + </child>
  131 + <child>
  132 + <object class="GtkMenuItem">
  133 + <property name="visible">True</property>
  134 + <property name="can_focus">False</property>
  135 + <property name="label" translatable="yes">_Ver</property>
  136 + <property name="use_underline">True</property>
  137 + </object>
  138 + </child>
  139 + <child>
  140 + <object class="GtkMenuItem">
  141 + <property name="visible">True</property>
  142 + <property name="can_focus">False</property>
  143 + <property name="label" translatable="yes">Aj_uda</property>
  144 + <property name="use_underline">True</property>
  145 + <child type="submenu">
  146 + <object class="GtkMenu">
  147 + <property name="visible">True</property>
  148 + <property name="can_focus">False</property>
  149 + <child>
  150 + <object class="GtkImageMenuItem">
  151 + <property name="label">gtk-about</property>
  152 + <property name="visible">True</property>
  153 + <property name="can_focus">False</property>
  154 + <property name="use_underline">True</property>
  155 + <property name="use_stock">True</property>
  156 + </object>
  157 + </child>
  158 + </object>
  159 + </child>
  160 + </object>
  161 + </child>
  162 + </object>
  163 + <packing>
  164 + <property name="expand">False</property>
  165 + <property name="fill">True</property>
  166 + <property name="position">0</property>
  167 + </packing>
  168 + </child>
  169 + <child>
  170 + <placeholder/>
  171 + </child>
  172 + </object>
  173 + </child>
  174 + <child>
  175 + <placeholder/>
  176 + </child>
  177 + </object>
  178 +</interface>
src/include/v3270.h
@@ -174,7 +174,7 @@ @@ -174,7 +174,7 @@
174 void v3270_reload(GtkWidget * widget); 174 void v3270_reload(GtkWidget * widget);
175 175
176 void v3270_set_font_family(GtkWidget *widget, const gchar *name); 176 void v3270_set_font_family(GtkWidget *widget, const gchar *name);
177 - const gchar * v3270_get_font_family(GtkWidget *widget); 177 + const gchar * v3270_get_font_family(GtkWidget *widget);
178 178
179 H3270 * v3270_get_session(GtkWidget *widget); 179 H3270 * v3270_get_session(GtkWidget *widget);
180 gboolean v3270_is_connected(GtkWidget *widget); 180 gboolean v3270_is_connected(GtkWidget *widget);
src/testprogram/testprogram.c
@@ -91,10 +91,11 @@ static void activate(GtkApplication* app, gpointer user_data) { @@ -91,10 +91,11 @@ static void activate(GtkApplication* app, gpointer user_data) {
91 GtkWidget * terminal = v3270_new(); 91 GtkWidget * terminal = v3270_new();
92 gchar * filename = NULL; 92 gchar * filename = NULL;
93 93
94 - // Setup terminal  
95 - GKeyFile * conf = g_key_file_new();  
96 -  
97 - // v3270_connect(terminal); 94 + const gchar *url = getenv("LIB3270_DEFAULT_HOST");
  95 + if(url) {
  96 + v3270_set_url(terminal,url);
  97 + v3270_connect(terminal);
  98 + }
98 99
99 g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); 100 g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL);
100 101
src/v3270/private.h
@@ -226,9 +226,11 @@ G_BEGIN_DECLS @@ -226,9 +226,11 @@ G_BEGIN_DECLS
226 226
227 /*--[ Globals ]--------------------------------------------------------------------------------------*/ 227 /*--[ Globals ]--------------------------------------------------------------------------------------*/
228 228
229 - G_GNUC_INTERNAL guint v3270_widget_signal[LAST_SIGNAL];  
230 - G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT];  
231 - G_GNUC_INTERNAL GParamSpec * v3270_properties[PROP_LAST]; 229 + G_GNUC_INTERNAL guint v3270_widget_signal[LAST_SIGNAL];
  230 + G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT];
  231 + G_GNUC_INTERNAL GParamSpec * v3270_properties[PROP_LAST];
  232 + G_GNUC_INTERNAL const gchar * v3270_default_colors;
  233 + G_GNUC_INTERNAL const gchar * v3270_default_font;
232 234
233 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ 235 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/
234 236
src/v3270/properties.c
@@ -51,6 +51,8 @@ @@ -51,6 +51,8 @@
51 51
52 static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) 52 static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
53 { 53 {
  54 + debug("%s(%u)",__FUNCTION__,prop_id);
  55 +
54 v3270 *window = GTK_V3270(object); 56 v3270 *window = GTK_V3270(object);
55 57
56 switch (prop_id) 58 switch (prop_id)
@@ -80,6 +82,8 @@ @@ -80,6 +82,8 @@
80 82
81 static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) 83 static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec)
82 { 84 {
  85 + debug("%s(%u)",__FUNCTION__,prop_id);
  86 +
83 v3270 *window = GTK_V3270(object); 87 v3270 *window = GTK_V3270(object);
84 88
85 switch (prop_id) 89 switch (prop_id)
@@ -124,6 +128,8 @@ @@ -124,6 +128,8 @@
124 128
125 void v3270_init_properties(GObjectClass * gobject_class) 129 void v3270_init_properties(GObjectClass * gobject_class)
126 { 130 {
  131 + debug("%s",__FUNCTION__);
  132 +
127 memset(v3270_properties,0,sizeof(v3270_properties)); 133 memset(v3270_properties,0,sizeof(v3270_properties));
128 134
129 gobject_class->set_property = v3270_set_property; 135 gobject_class->set_property = v3270_set_property;
src/v3270/widget.c
@@ -934,8 +934,10 @@ static int popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title, @@ -934,8 +934,10 @@ static int popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title,
934 return 0; 934 return 0;
935 } 935 }
936 936
937 -static void v3270_init(v3270 *widget)  
938 -{ 937 + const gchar * v3270_default_font = "monospace";
  938 +
  939 + static void v3270_init(v3270 *widget)
  940 + {
939 struct lib3270_session_callbacks *cbk; 941 struct lib3270_session_callbacks *cbk;
940 942
941 widget->host = lib3270_session_new(""); 943 widget->host = lib3270_session_new("");
@@ -999,6 +1001,10 @@ static void v3270_init(v3270 *widget) @@ -999,6 +1001,10 @@ static void v3270_init(v3270 *widget)
999 // Enable drawing 1001 // Enable drawing
1000 widget->drawing = 1; 1002 widget->drawing = 1;
1001 1003
  1004 + // Set defaults
  1005 + widget->font.family = g_strdup(v3270_default_font);
  1006 + v3270_set_color_table(widget->color,v3270_default_colors);
  1007 +
1002 } 1008 }
1003 1009
1004 GtkWidget * v3270_new(void) 1010 GtkWidget * v3270_new(void)
@@ -1302,46 +1308,50 @@ static void v3270_send_configure(v3270 * terminal) @@ -1302,46 +1308,50 @@ static void v3270_send_configure(v3270 * terminal)
1302 gdk_event_free(event); 1308 gdk_event_free(event);
1303 } 1309 }
1304 1310
  1311 +const gchar * v3270_default_colors =
  1312 + "#000000," // V3270_COLOR_BACKGROUND
  1313 + "#7890F0," // V3270_COLOR_BLUE
  1314 + "#FF0000," // V3270_COLOR_RED
  1315 + "#FF00FF," // V3270_COLOR_PINK
  1316 + "#00FF00," // V3270_COLOR_GREEN
  1317 + "#00FFFF," // V3270_COLOR_TURQUOISE
  1318 + "#FFFF00," // V3270_COLOR_YELLOW
  1319 + "#FFFFFF," // V3270_COLOR_WHITE
  1320 + "#000000," // V3270_COLOR_BLACK
  1321 + "#000080," // V3270_COLOR_DARK_BLUE
  1322 + "#FFA200," // V3270_COLOR_ORANGE
  1323 + "#800080," // V3270_COLOR_PURPLE
  1324 + "#008000," // V3270_COLOR_DARK_GREEN
  1325 + "#008080," // V3270_COLOR_DARK_TURQUOISE
  1326 + "#A0A000," // V3270_COLOR_MUSTARD
  1327 + "#C0C0C0," // V3270_COLOR_GRAY
  1328 +
  1329 + "#00FF00," // V3270_COLOR_FIELD_DEFAULT
  1330 + "#FF0000," // V3270_COLOR_FIELD_INTENSIFIED
  1331 + "#00FFFF," // V3270_COLOR_FIELD_PROTECTED
  1332 + "#FFFFFF," // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED
  1333 +
  1334 + "#404040," // V3270_COLOR_SELECTED_BG
  1335 + "#FFFFFF," // V3270_COLOR_SELECTED_FG,
  1336 +
  1337 + "#00FF00," // V3270_COLOR_CROSS_HAIR
  1338 +
  1339 + "#000000," // V3270_COLOR_OIA_BACKGROUND
  1340 + "#00FF00," // V3270_COLOR_OIA
  1341 + "#7890F0," // V3270_COLOR_OIA_SEPARATOR
  1342 + "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK
  1343 + "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING
  1344 + "#FF0000"; // V3270_COLOR_OIA_STATUS_INVALID
  1345 +
  1346 +
  1347 +
1305 void v3270_set_colors(GtkWidget *widget, const gchar *colors) 1348 void v3270_set_colors(GtkWidget *widget, const gchar *colors)
1306 { 1349 {
1307 g_return_if_fail(GTK_IS_V3270(widget)); 1350 g_return_if_fail(GTK_IS_V3270(widget));
1308 1351
1309 if(!colors) 1352 if(!colors)
1310 { 1353 {
1311 - colors = "#000000," // V3270_COLOR_BACKGROUND  
1312 - "#7890F0," // V3270_COLOR_BLUE  
1313 - "#FF0000," // V3270_COLOR_RED  
1314 - "#FF00FF," // V3270_COLOR_PINK  
1315 - "#00FF00," // V3270_COLOR_GREEN  
1316 - "#00FFFF," // V3270_COLOR_TURQUOISE  
1317 - "#FFFF00," // V3270_COLOR_YELLOW  
1318 - "#FFFFFF," // V3270_COLOR_WHITE  
1319 - "#000000," // V3270_COLOR_BLACK  
1320 - "#000080," // V3270_COLOR_DARK_BLUE  
1321 - "#FFA200," // V3270_COLOR_ORANGE  
1322 - "#800080," // V3270_COLOR_PURPLE  
1323 - "#008000," // V3270_COLOR_DARK_GREEN  
1324 - "#008080," // V3270_COLOR_DARK_TURQUOISE  
1325 - "#A0A000," // V3270_COLOR_MUSTARD  
1326 - "#C0C0C0," // V3270_COLOR_GRAY  
1327 -  
1328 - "#00FF00," // V3270_COLOR_FIELD_DEFAULT  
1329 - "#FF0000," // V3270_COLOR_FIELD_INTENSIFIED  
1330 - "#00FFFF," // V3270_COLOR_FIELD_PROTECTED  
1331 - "#FFFFFF," // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED  
1332 -  
1333 - "#404040," // V3270_COLOR_SELECTED_BG  
1334 - "#FFFFFF," // V3270_COLOR_SELECTED_FG,  
1335 -  
1336 - "#00FF00," // V3270_COLOR_CROSS_HAIR  
1337 -  
1338 - "#000000," // V3270_COLOR_OIA_BACKGROUND  
1339 - "#00FF00," // V3270_COLOR_OIA  
1340 - "#7890F0," // V3270_COLOR_OIA_SEPARATOR  
1341 - "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK  
1342 - "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING  
1343 - "#FF0000"; // V3270_COLOR_OIA_STATUS_INVALID  
1344 - 1354 + colors = v3270_default_colors;
1345 } 1355 }
1346 1356
1347 v3270_set_color_table(GTK_V3270(widget)->color,colors); 1357 v3270_set_color_table(GTK_V3270(widget)->color,colors);
@@ -1457,25 +1467,23 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name) @@ -1457,25 +1467,23 @@ void v3270_set_font_family(GtkWidget *widget, const gchar *name)
1457 1467
1458 if(!name) 1468 if(!name)
1459 { 1469 {
1460 - // TODO (perry#3#): Get default font family from currrent style  
1461 - name = "courier new"; 1470 + name = v3270_default_font;
1462 } 1471 }
1463 1472
1464 - if(terminal->font.family) 1473 + if(g_ascii_strcasecmp(terminal->font.family,name))
1465 { 1474 {
1466 - if(!g_ascii_strcasecmp(terminal->font.family,name))  
1467 - return; 1475 + // Font has changed, update it
1468 g_free(terminal->font.family); 1476 g_free(terminal->font.family);
1469 - terminal->font.family = NULL;  
1470 - }  
1471 1477
1472 - terminal->font.family = g_strdup(name);  
1473 - terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL; 1478 + terminal->font.family = g_strdup(name);
  1479 + terminal->font.weight = lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_BOLD) ? CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL;
1474 1480
1475 - g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "font-family", name); 1481 + g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "font-family", name);
1476 1482
1477 - v3270_reload(widget);  
1478 - gtk_widget_queue_draw(widget); 1483 + v3270_reload(widget);
  1484 + gtk_widget_queue_draw(widget);
  1485 +
  1486 + }
1479 1487
1480 1488
1481 } 1489 }