Commit a83ae34f20cb8ff53b4b1f0b0d6d6298ccf5a47c
1 parent
84c61cc4
Exists in
master
and in
4 other branches
Implementing action list editor.
Showing
1 changed file
with
50 additions
and
9 deletions
Show diff stats
src/objects/actions/view.c
| @@ -40,7 +40,8 @@ | @@ -40,7 +40,8 @@ | ||
| 40 | enum { | 40 | enum { |
| 41 | COLUMN_PIXBUF, | 41 | COLUMN_PIXBUF, |
| 42 | COLUMN_LABEL, | 42 | COLUMN_LABEL, |
| 43 | - COLUMN_ACTION_NAME | 43 | + COLUMN_ACTION_NAME, |
| 44 | + COLUMN_FLAGS | ||
| 44 | }; | 45 | }; |
| 45 | 46 | ||
| 46 | struct ListElement { | 47 | struct ListElement { |
| @@ -70,7 +71,7 @@ | @@ -70,7 +71,7 @@ | ||
| 70 | 71 | ||
| 71 | GtkWidget * pw3270_action_view_new() { | 72 | GtkWidget * pw3270_action_view_new() { |
| 72 | 73 | ||
| 73 | - GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(3,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING)); | 74 | + GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(4,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_INT)); |
| 74 | GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(model)); | 75 | GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(model)); |
| 75 | 76 | ||
| 76 | gtk_widget_set_hexpand(view,TRUE); | 77 | gtk_widget_set_hexpand(view,TRUE); |
| @@ -151,6 +152,7 @@ | @@ -151,6 +152,7 @@ | ||
| 151 | &iter, | 152 | &iter, |
| 152 | COLUMN_PIXBUF, element->pixbuf, | 153 | COLUMN_PIXBUF, element->pixbuf, |
| 153 | COLUMN_LABEL, (label ? label : g_action_get_name(element->action)), | 154 | COLUMN_LABEL, (label ? label : g_action_get_name(element->action)), |
| 155 | + COLUMN_FLAGS, 3, | ||
| 154 | -1 | 156 | -1 |
| 155 | ); | 157 | ); |
| 156 | 158 | ||
| @@ -307,18 +309,57 @@ | @@ -307,18 +309,57 @@ | ||
| 307 | GtkTreePath * path = gtk_tree_row_reference_get_path(rows[ix]); | 309 | GtkTreePath * path = gtk_tree_row_reference_get_path(rows[ix]); |
| 308 | 310 | ||
| 309 | if(path) { | 311 | if(path) { |
| 310 | - GtkTreeIter iter; | 312 | + GtkTreeIter iter; |
| 311 | 313 | ||
| 312 | - // Add on target widget. | 314 | + if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fromModel), &iter, path)) { |
| 313 | 315 | ||
| 316 | + GValue vFlags = G_VALUE_INIT; | ||
| 317 | + gtk_tree_model_get_value(fromModel,&iter,COLUMN_FLAGS,&vFlags); | ||
| 318 | + gint flags = g_value_get_int(&vFlags); | ||
| 319 | + g_value_unset(&vFlags); | ||
| 314 | 320 | ||
| 315 | - // Remove from source widget. | ||
| 316 | - if (gtk_tree_model_get_iter(GTK_TREE_MODEL(fromModel), &iter, path)) { | ||
| 317 | - gtk_list_store_remove(GTK_LIST_STORE(fromModel), &iter); | ||
| 318 | - } | 321 | + if(flags & 1) { |
| 319 | 322 | ||
| 320 | - } | 323 | + // Add on target widget. |
| 324 | + GValue pixbuf = G_VALUE_INIT; | ||
| 325 | + GValue label = G_VALUE_INIT; | ||
| 326 | + GValue action_name = G_VALUE_INIT; | ||
| 327 | + | ||
| 328 | + gtk_tree_model_get_value(fromModel,&iter,COLUMN_PIXBUF,&pixbuf); | ||
| 329 | + gtk_tree_model_get_value(fromModel,&iter,COLUMN_LABEL,&label); | ||
| 330 | + gtk_tree_model_get_value(fromModel,&iter,COLUMN_ACTION_NAME,&action_name); | ||
| 331 | + | ||
| 332 | + GtkListStore * store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(to))); | ||
| 333 | + | ||
| 334 | + GtkTreeIter ins; | ||
| 335 | + gtk_list_store_append(store, &ins); | ||
| 336 | + gtk_list_store_set( | ||
| 337 | + store, | ||
| 338 | + &ins, | ||
| 339 | + COLUMN_PIXBUF, g_value_get_object(&pixbuf), | ||
| 340 | + COLUMN_LABEL, g_value_get_string(&label), | ||
| 341 | + COLUMN_ACTION_NAME, g_value_get_string(&action_name), | ||
| 342 | + COLUMN_FLAGS, (flags == 3 ? 3 : 2), | ||
| 343 | + -1 | ||
| 344 | + ); | ||
| 345 | + | ||
| 346 | + g_value_unset(&pixbuf); | ||
| 347 | + g_value_unset(&label); | ||
| 348 | + g_value_unset(&action_name); | ||
| 349 | + | ||
| 350 | + } | ||
| 351 | + | ||
| 352 | + if(flags & 2) { | ||
| 321 | 353 | ||
| 354 | + // Remove from source widget. | ||
| 355 | + gtk_list_store_remove(GTK_LIST_STORE(fromModel), &iter); | ||
| 356 | + | ||
| 357 | + } | ||
| 358 | + | ||
| 359 | + | ||
| 360 | + } | ||
| 361 | + | ||
| 362 | + } | ||
| 322 | 363 | ||
| 323 | } | 364 | } |
| 324 | 365 |