Commit 83078a43d2f103c2894fdca4da6275e5c68a611f
1 parent
60154693
Exists in
master
and in
1 other branch
Improving visual on the accelerator settings dialog.
Showing
6 changed files
with
80 additions
and
31 deletions
Show diff stats
src/dialogs/settings/accelerator.c
@@ -104,10 +104,27 @@ | @@ -104,10 +104,27 @@ | ||
104 | COLUMNS ///< @brief Number of view columns. | 104 | COLUMNS ///< @brief Number of view columns. |
105 | }; | 105 | }; |
106 | 106 | ||
107 | + static void realize(GtkWidget G_GNUC_UNUSED(*widget), GtkTreeView *view) | ||
108 | + { | ||
109 | + gtk_tree_view_columns_autosize(view); | ||
110 | + } | ||
111 | + | ||
107 | static void V3270AcceleratorSettings_init(V3270AcceleratorSettings *widget) | 112 | static void V3270AcceleratorSettings_init(V3270AcceleratorSettings *widget) |
108 | { | 113 | { |
109 | - // Create Accelerator list | 114 | + // Create description list |
110 | GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new(); | 115 | GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new(); |
116 | + | ||
117 | + /* | ||
118 | + g_object_set( | ||
119 | + text_renderer, | ||
120 | + "alignment", PANGO_ALIGN_LEFT, | ||
121 | + "wrap-width", 100, | ||
122 | + "wrap-mode", PANGO_WRAP_WORD_CHAR, | ||
123 | + NULL | ||
124 | + ); | ||
125 | + */ | ||
126 | + | ||
127 | + // Create accelerator render | ||
111 | GtkCellRenderer * accel_renderer[] = { gtk_cell_renderer_accel_new(), gtk_cell_renderer_accel_new() }; | 128 | GtkCellRenderer * accel_renderer[] = { gtk_cell_renderer_accel_new(), gtk_cell_renderer_accel_new() }; |
112 | 129 | ||
113 | g_object_set( | 130 | g_object_set( |
@@ -130,19 +147,40 @@ | @@ -130,19 +147,40 @@ | ||
130 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(widget->store),1,GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID); | 147 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(widget->store),1,GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID); |
131 | 148 | ||
132 | GtkWidget * view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(widget->store)); | 149 | GtkWidget * view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(widget->store)); |
150 | + g_signal_connect(G_OBJECT(widget),"realize",G_CALLBACK(realize),view); | ||
151 | + | ||
152 | + /* | ||
153 | + g_object_set( | ||
154 | + view, | ||
155 | + "horizontal-separator", 50, | ||
156 | + "vertical-separator", 50, | ||
157 | + NULL | ||
158 | + ); | ||
159 | + */ | ||
133 | 160 | ||
134 | gtk_widget_set_tooltip_markup(view,_("Keyboard accelerators")); | 161 | gtk_widget_set_tooltip_markup(view,_("Keyboard accelerators")); |
162 | + gtk_tree_view_set_fixed_height_mode(GTK_TREE_VIEW(view),FALSE); | ||
163 | + | ||
164 | + // Description column | ||
165 | + GtkTreeViewColumn * column = | ||
166 | + gtk_tree_view_column_new_with_attributes( | ||
167 | + _("Action"), | ||
168 | + text_renderer, | ||
169 | + "text", | ||
170 | + DESCRIPTION, | ||
171 | + NULL | ||
172 | + ); | ||
135 | 173 | ||
136 | - gtk_tree_view_insert_column_with_attributes( | 174 | + gtk_tree_view_column_set_resizable(column, TRUE); |
175 | + gtk_tree_view_column_set_min_width(column, 500); | ||
176 | + | ||
177 | + gtk_tree_view_insert_column( | ||
137 | GTK_TREE_VIEW(view), | 178 | GTK_TREE_VIEW(view), |
138 | - -1, | ||
139 | - _("Action"), | ||
140 | - text_renderer, | ||
141 | - "text", | ||
142 | - DESCRIPTION, | ||
143 | - NULL | 179 | + column, |
180 | + -1 | ||
144 | ); | 181 | ); |
145 | 182 | ||
183 | + // Accelerator columns | ||
146 | gtk_tree_view_insert_column_with_attributes( | 184 | gtk_tree_view_insert_column_with_attributes( |
147 | GTK_TREE_VIEW(view), | 185 | GTK_TREE_VIEW(view), |
148 | -1, | 186 | -1, |
@@ -169,13 +207,15 @@ | @@ -169,13 +207,15 @@ | ||
169 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(box),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | 207 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(box),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); |
170 | gtk_container_add(GTK_CONTAINER(box),view); | 208 | gtk_container_add(GTK_CONTAINER(box),view); |
171 | 209 | ||
210 | + /* | ||
172 | gtk_widget_set_vexpand(view,TRUE); | 211 | gtk_widget_set_vexpand(view,TRUE); |
173 | gtk_widget_set_hexpand(view,TRUE); | 212 | gtk_widget_set_hexpand(view,TRUE); |
213 | + */ | ||
174 | 214 | ||
175 | gtk_widget_set_vexpand(box,TRUE); | 215 | gtk_widget_set_vexpand(box,TRUE); |
176 | gtk_widget_set_hexpand(box,TRUE); | 216 | gtk_widget_set_hexpand(box,TRUE); |
177 | 217 | ||
178 | - gtk_grid_attach(GTK_GRID(widget),box,0,0,4,4); | 218 | + gtk_grid_attach(GTK_GRID(widget),box,0,0,10,10); |
179 | } | 219 | } |
180 | 220 | ||
181 | } | 221 | } |
@@ -435,7 +475,7 @@ void load(GtkWidget *widget, GtkWidget *terminal) | @@ -435,7 +475,7 @@ void load(GtkWidget *widget, GtkWidget *terminal) | ||
435 | 475 | ||
436 | } | 476 | } |
437 | 477 | ||
438 | -static gboolean add_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, GSList **accelerators) | 478 | +static gboolean add_accel(GtkTreeModel *model, GtkTreePath G_GNUC_UNUSED(*path), GtkTreeIter *iter, GSList **accelerators) |
439 | { | 479 | { |
440 | static const gint columns[] = { MAIN_MASK, MAIN_VALUE, ALTERNATIVE_MASK, ALTERNATIVE_VALUE }; | 480 | static const gint columns[] = { MAIN_MASK, MAIN_VALUE, ALTERNATIVE_MASK, ALTERNATIVE_VALUE }; |
441 | size_t ix; | 481 | size_t ix; |
@@ -451,9 +491,6 @@ static gboolean add_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *i | @@ -451,9 +491,6 @@ static gboolean add_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *i | ||
451 | 491 | ||
452 | for(ix = 0; ix < 2; ix++) | 492 | for(ix = 0; ix < 2; ix++) |
453 | { | 493 | { |
454 | - guint key; | ||
455 | - GdkModifierType mask; | ||
456 | - | ||
457 | memset(&value,0,sizeof(value)); | 494 | memset(&value,0,sizeof(value)); |
458 | gtk_tree_model_get_value(model, iter, columns[(ix * 2)], &value); | 495 | gtk_tree_model_get_value(model, iter, columns[(ix * 2)], &value); |
459 | keymap[ix].mods = (GdkModifierType) g_value_get_int(&value); | 496 | keymap[ix].mods = (GdkModifierType) g_value_get_int(&value); |
src/include/internals.h
@@ -379,7 +379,8 @@ G_GNUC_INTERNAL void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned | @@ -379,7 +379,8 @@ G_GNUC_INTERNAL void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned | ||
379 | G_GNUC_INTERNAL void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char value, const char *name); | 379 | G_GNUC_INTERNAL void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char value, const char *name); |
380 | 380 | ||
381 | // Accelerators | 381 | // Accelerators |
382 | - G_GNUC_INTERNAL void v3270_init_accelerators(v3270 *widget); | 382 | + G_GNUC_INTERNAL void v3270_accelerator_map_sort(v3270 *widget); |
383 | + G_GNUC_INTERNAL void v3270_init_accelerators(v3270 *widget); | ||
383 | 384 | ||
384 | G_END_DECLS | 385 | G_END_DECLS |
385 | 386 |
src/include/v3270/actions.h
@@ -79,7 +79,7 @@ | @@ -79,7 +79,7 @@ | ||
79 | // | 79 | // |
80 | // Keyboard accelerators | 80 | // Keyboard accelerators |
81 | // | 81 | // |
82 | - LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); | 82 | + LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); |
83 | 83 | ||
84 | /// @brief Reset accelerator map to defaults. | 84 | /// @brief Reset accelerator map to defaults. |
85 | LIB3270_EXPORT void v3270_accelerator_map_reset(GtkWidget *widget); | 85 | LIB3270_EXPORT void v3270_accelerator_map_reset(GtkWidget *widget); |
@@ -98,6 +98,8 @@ | @@ -98,6 +98,8 @@ | ||
98 | /// @return A newly-allocated string representing the accelerator. | 98 | /// @return A newly-allocated string representing the accelerator. |
99 | LIB3270_EXPORT gchar * v3270_accelerator_get_label(const V3270Accelerator * accel); | 99 | LIB3270_EXPORT gchar * v3270_accelerator_get_label(const V3270Accelerator * accel); |
100 | 100 | ||
101 | + LIB3270_EXPORT V3270Accelerator * v3270_accelerator_copy(const V3270Accelerator *accel); | ||
102 | + | ||
101 | G_END_DECLS | 103 | G_END_DECLS |
102 | 104 | ||
103 | #endif // V3270_ACTIONS_H_INCLUDED | 105 | #endif // V3270_ACTIONS_H_INCLUDED |
src/terminal/keyboard/accelerator.c
@@ -158,6 +158,7 @@ | @@ -158,6 +158,7 @@ | ||
158 | break; | 158 | break; |
159 | 159 | ||
160 | case V3270_ACCELERATOR_TYPE_INTERNAL: | 160 | case V3270_ACCELERATOR_TYPE_INTERNAL: |
161 | + | ||
161 | if( ((V3270_ACTION *) accel->arg)->summary ) | 162 | if( ((V3270_ACTION *) accel->arg)->summary ) |
162 | return gettext(((V3270_ACTION *) accel->arg)->summary); | 163 | return gettext(((V3270_ACTION *) accel->arg)->summary); |
163 | 164 | ||
@@ -177,8 +178,10 @@ | @@ -177,8 +178,10 @@ | ||
177 | break; | 178 | break; |
178 | 179 | ||
179 | case V3270_ACCELERATOR_TYPE_PFKEY: | 180 | case V3270_ACCELERATOR_TYPE_PFKEY: |
181 | + | ||
180 | if( ((V3270PFKeyAccelerator *)accel)->name ) | 182 | if( ((V3270PFKeyAccelerator *)accel)->name ) |
181 | return ((V3270PFKeyAccelerator *)accel)->name; | 183 | return ((V3270PFKeyAccelerator *)accel)->name; |
184 | + | ||
182 | break; | 185 | break; |
183 | 186 | ||
184 | } | 187 | } |
src/terminal/keyboard/init.c
@@ -99,7 +99,7 @@ | @@ -99,7 +99,7 @@ | ||
99 | 99 | ||
100 | for(ix = 0; actions[ix].name; ix++) | 100 | for(ix = 0; actions[ix].name; ix++) |
101 | { | 101 | { |
102 | - if(actions[ix].keys) | 102 | + if(actions[ix].keys && *actions[ix].keys) |
103 | { | 103 | { |
104 | size_t key; | 104 | size_t key; |
105 | 105 | ||
@@ -125,6 +125,16 @@ | @@ -125,6 +125,16 @@ | ||
125 | g_strfreev(keys); | 125 | g_strfreev(keys); |
126 | 126 | ||
127 | } | 127 | } |
128 | + else | ||
129 | + { | ||
130 | + V3270Accelerator * accelerator = g_new0(V3270Accelerator,1); | ||
131 | + | ||
132 | + accelerator->type = V3270_ACCELERATOR_TYPE_LIB3270_ACTION; | ||
133 | + accelerator->arg = (gconstpointer) &actions[ix]; | ||
134 | + accelerator->activate = G_CALLBACK(fire_lib3270_action); | ||
135 | + widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); | ||
136 | + | ||
137 | + } | ||
128 | 138 | ||
129 | } | 139 | } |
130 | 140 | ||
@@ -137,19 +147,17 @@ | @@ -137,19 +147,17 @@ | ||
137 | 147 | ||
138 | for(ix = 0; toggles[ix].name; ix++) | 148 | for(ix = 0; toggles[ix].name; ix++) |
139 | { | 149 | { |
140 | - if(toggles[ix].key) | ||
141 | - { | ||
142 | - V3270Accelerator * accelerator = g_new0(V3270Accelerator,1); | 150 | + V3270Accelerator * accelerator = g_new0(V3270Accelerator,1); |
143 | 151 | ||
144 | - accelerator->type = V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE; | ||
145 | - accelerator->arg = (gconstpointer) &toggles[ix]; | ||
146 | - accelerator->activate = G_CALLBACK(fire_lib3270_toggle); | 152 | + accelerator->type = V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE; |
153 | + accelerator->arg = (gconstpointer) &toggles[ix]; | ||
154 | + accelerator->activate = G_CALLBACK(fire_lib3270_toggle); | ||
147 | 155 | ||
156 | + if(toggles[ix].key) | ||
148 | gtk_accelerator_parse(toggles[ix].key,&accelerator->key,&accelerator->mods); | 157 | gtk_accelerator_parse(toggles[ix].key,&accelerator->key,&accelerator->mods); |
149 | 158 | ||
150 | - widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); | 159 | + widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); |
151 | 160 | ||
152 | - } | ||
153 | } | 161 | } |
154 | 162 | ||
155 | } | 163 | } |
@@ -164,11 +172,11 @@ | @@ -164,11 +172,11 @@ | ||
164 | { | 172 | { |
165 | V3270Accelerator * accelerator = g_new0(V3270Accelerator,1); | 173 | V3270Accelerator * accelerator = g_new0(V3270Accelerator,1); |
166 | 174 | ||
167 | - accelerator->type = V3270_ACCELERATOR_TYPE_INTERNAL; | ||
168 | - accelerator->arg = (gconstpointer) &actions[ix]; | ||
169 | - accelerator->activate = G_CALLBACK(actions[ix].activate); | ||
170 | - accelerator->key = actions[ix].key; | ||
171 | - accelerator->mods = actions[ix].mods; | 175 | + accelerator->type = V3270_ACCELERATOR_TYPE_INTERNAL; |
176 | + accelerator->arg = (gconstpointer) &actions[ix]; | ||
177 | + accelerator->activate = G_CALLBACK(actions[ix].activate); | ||
178 | + accelerator->key = actions[ix].key; | ||
179 | + accelerator->mods = actions[ix].mods; | ||
172 | 180 | ||
173 | widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); | 181 | widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); |
174 | 182 |
src/terminal/keyboard/private.h
@@ -32,7 +32,5 @@ | @@ -32,7 +32,5 @@ | ||
32 | #include <v3270/actions.h> | 32 | #include <v3270/actions.h> |
33 | #include <internals.h> | 33 | #include <internals.h> |
34 | 34 | ||
35 | - G_GNUC_INTERNAL void v3270_accelerator_map_sort(v3270 *widget); | ||
36 | - G_GNUC_INTERNAL V3270Accelerator * v3270_accelerator_copy(const V3270Accelerator *accel); | ||
37 | 35 | ||
38 | 36 |