Commit 83078a43d2f103c2894fdca4da6275e5c68a611f

Authored by Perry Werneck
1 parent 60154693
Exists in master and in 1 other branch develop

Improving visual on the accelerator settings dialog.

src/dialogs/settings/accelerator.c
... ... @@ -104,10 +104,27 @@
104 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 112 static void V3270AcceleratorSettings_init(V3270AcceleratorSettings *widget)
108 113 {
109   - // Create Accelerator list
  114 + // Create description list
110 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 128 GtkCellRenderer * accel_renderer[] = { gtk_cell_renderer_accel_new(), gtk_cell_renderer_accel_new() };
112 129  
113 130 g_object_set(
... ... @@ -130,19 +147,40 @@
130 147 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(widget->store),1,GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID);
131 148  
132 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 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 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 184 gtk_tree_view_insert_column_with_attributes(
147 185 GTK_TREE_VIEW(view),
148 186 -1,
... ... @@ -169,13 +207,15 @@
169 207 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(box),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
170 208 gtk_container_add(GTK_CONTAINER(box),view);
171 209  
  210 + /*
172 211 gtk_widget_set_vexpand(view,TRUE);
173 212 gtk_widget_set_hexpand(view,TRUE);
  213 + */
174 214  
175 215 gtk_widget_set_vexpand(box,TRUE);
176 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 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 480 static const gint columns[] = { MAIN_MASK, MAIN_VALUE, ALTERNATIVE_MASK, ALTERNATIVE_VALUE };
441 481 size_t ix;
... ... @@ -451,9 +491,6 @@ static gboolean add_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *i
451 491  
452 492 for(ix = 0; ix < 2; ix++)
453 493 {
454   - guint key;
455   - GdkModifierType mask;
456   -
457 494 memset(&value,0,sizeof(value));
458 495 gtk_tree_model_get_value(model, iter, columns[(ix * 2)], &value);
459 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 379 G_GNUC_INTERNAL void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char value, const char *name);
380 380  
381 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 385 G_END_DECLS
385 386  
... ...
src/include/v3270/actions.h
... ... @@ -79,7 +79,7 @@
79 79 //
80 80 // Keyboard accelerators
81 81 //
82   - LIB3270_EXPORT void v3270_backtab(GtkWidget *widget);
  82 + LIB3270_EXPORT void v3270_backtab(GtkWidget *widget);
83 83  
84 84 /// @brief Reset accelerator map to defaults.
85 85 LIB3270_EXPORT void v3270_accelerator_map_reset(GtkWidget *widget);
... ... @@ -98,6 +98,8 @@
98 98 /// @return A newly-allocated string representing the accelerator.
99 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 103 G_END_DECLS
102 104  
103 105 #endif // V3270_ACTIONS_H_INCLUDED
... ...
src/terminal/keyboard/accelerator.c
... ... @@ -158,6 +158,7 @@
158 158 break;
159 159  
160 160 case V3270_ACCELERATOR_TYPE_INTERNAL:
  161 +
161 162 if( ((V3270_ACTION *) accel->arg)->summary )
162 163 return gettext(((V3270_ACTION *) accel->arg)->summary);
163 164  
... ... @@ -177,8 +178,10 @@
177 178 break;
178 179  
179 180 case V3270_ACCELERATOR_TYPE_PFKEY:
  181 +
180 182 if( ((V3270PFKeyAccelerator *)accel)->name )
181 183 return ((V3270PFKeyAccelerator *)accel)->name;
  184 +
182 185 break;
183 186  
184 187 }
... ...
src/terminal/keyboard/init.c
... ... @@ -99,7 +99,7 @@
99 99  
100 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 104 size_t key;
105 105  
... ... @@ -125,6 +125,16 @@
125 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 147  
138 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 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 172 {
165 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 181 widget->accelerators = g_slist_prepend(widget->accelerators,accelerator);
174 182  
... ...
src/terminal/keyboard/private.h
... ... @@ -32,7 +32,5 @@
32 32 #include <v3270/actions.h>
33 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  
... ...