Commit b91427351cfcb7ddb07903f3c94234571a8f1367
1 parent
f3b8aa20
Exists in
master
and in
1 other branch
Setting defaults on widget creation.
Showing
6 changed files
with
251 additions
and
56 deletions
Show diff stats
| ... | ... | @@ -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 | } | ... | ... |