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