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 @@
  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 174 void v3270_reload(GtkWidget * widget);
175 175  
176 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 179 H3270 * v3270_get_session(GtkWidget *widget);
180 180 gboolean v3270_is_connected(GtkWidget *widget);
... ...
src/testprogram/testprogram.c
... ... @@ -91,10 +91,11 @@ static void activate(GtkApplication* app, gpointer user_data) {
91 91 GtkWidget * terminal = v3270_new();
92 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 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 226  
227 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 235 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/
234 236  
... ...
src/v3270/properties.c
... ... @@ -51,6 +51,8 @@
51 51  
52 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 56 v3270 *window = GTK_V3270(object);
55 57  
56 58 switch (prop_id)
... ... @@ -80,6 +82,8 @@
80 82  
81 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 87 v3270 *window = GTK_V3270(object);
84 88  
85 89 switch (prop_id)
... ... @@ -124,6 +128,8 @@
124 128  
125 129 void v3270_init_properties(GObjectClass * gobject_class)
126 130 {
  131 + debug("%s",__FUNCTION__);
  132 +
127 133 memset(v3270_properties,0,sizeof(v3270_properties));
128 134  
129 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 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 941 struct lib3270_session_callbacks *cbk;
940 942  
941 943 widget->host = lib3270_session_new("");
... ... @@ -999,6 +1001,10 @@ static void v3270_init(v3270 *widget)
999 1001 // Enable drawing
1000 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 1010 GtkWidget * v3270_new(void)
... ... @@ -1302,46 +1308,50 @@ static void v3270_send_configure(v3270 * terminal)
1302 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 1348 void v3270_set_colors(GtkWidget *widget, const gchar *colors)
1306 1349 {
1307 1350 g_return_if_fail(GTK_IS_V3270(widget));
1308 1351  
1309 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 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 1467  
1458 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 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 }
... ...