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,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