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 | } | ... | ... |