mirror of https://github.com/GNOME/gimp.git
app: improve extension list widget.
Use GtkGrid instead of GtkBox (docs says GtkBox will eventually go away). Also remove this horrible frame in a frame (though GUI is still not perfect yet). Finally fix the "extension" object data.
This commit is contained in:
parent
400b564648
commit
f67ac0f0ca
|
@ -212,8 +212,7 @@ gimp_extension_list_ext_installed (GimpExtensionManager *manager,
|
||||||
GList *iter;
|
GList *iter;
|
||||||
|
|
||||||
GtkWidget *outframe;
|
GtkWidget *outframe;
|
||||||
GtkWidget *frame;
|
GtkWidget *grid;
|
||||||
GtkWidget *hbox;
|
|
||||||
GtkWidget *onoff;
|
GtkWidget *onoff;
|
||||||
GtkWidget *delbutton;
|
GtkWidget *delbutton;
|
||||||
GtkWidget *image;
|
GtkWidget *image;
|
||||||
|
@ -250,37 +249,35 @@ gimp_extension_list_ext_installed (GimpExtensionManager *manager,
|
||||||
}
|
}
|
||||||
g_list_free (rows);
|
g_list_free (rows);
|
||||||
|
|
||||||
/* Delete button top right of the frame. */
|
outframe = gtk_frame_new (gimp_extension_get_name (extension));
|
||||||
outframe = gtk_frame_new (NULL);
|
|
||||||
gtk_frame_set_shadow_type (GTK_FRAME (outframe), GTK_SHADOW_NONE);
|
|
||||||
gtk_frame_set_label_align (GTK_FRAME (outframe), 1.0, 1.0);
|
|
||||||
|
|
||||||
delbutton = gtk_button_new ();
|
|
||||||
g_object_set_data (G_OBJECT (delbutton), "extension", extension);
|
|
||||||
g_signal_connect (delbutton, "clicked",
|
|
||||||
G_CALLBACK (gimp_extension_list_delete_clicked),
|
|
||||||
list);
|
|
||||||
gtk_button_set_relief (GTK_BUTTON (delbutton), GTK_RELIEF_NONE);
|
|
||||||
image = gtk_image_new_from_icon_name (GIMP_ICON_EDIT_DELETE,
|
|
||||||
GTK_ICON_SIZE_MENU);
|
|
||||||
gtk_image_set_pixel_size (GTK_IMAGE (image), 12);
|
|
||||||
gtk_container_add (GTK_CONTAINER (delbutton), image);
|
|
||||||
gtk_widget_show (image);
|
|
||||||
gtk_widget_show (delbutton);
|
|
||||||
gtk_frame_set_label_widget (GTK_FRAME (outframe), delbutton);
|
|
||||||
gtk_container_add (GTK_CONTAINER (list), outframe);
|
gtk_container_add (GTK_CONTAINER (list), outframe);
|
||||||
|
g_object_set_data (G_OBJECT (outframe), "extension", extension);
|
||||||
gtk_widget_show (outframe);
|
gtk_widget_show (outframe);
|
||||||
|
|
||||||
frame = gtk_frame_new (gimp_extension_get_name (extension));
|
grid = gtk_grid_new ();
|
||||||
gtk_container_add (GTK_CONTAINER (outframe), frame);
|
gtk_grid_set_column_homogeneous (GTK_GRID (grid), FALSE);
|
||||||
g_object_set_data (G_OBJECT (gtk_widget_get_parent (frame)),
|
gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);
|
||||||
"extension", extension);
|
gtk_container_add (GTK_CONTAINER (outframe), grid);
|
||||||
gtk_widget_show (frame);
|
gtk_widget_show (grid);
|
||||||
|
|
||||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);
|
/* On/Off switch. */
|
||||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
onoff = gtk_switch_new ();
|
||||||
gtk_widget_show (hbox);
|
gtk_widget_set_vexpand (onoff, FALSE);
|
||||||
|
gtk_widget_set_hexpand (onoff, FALSE);
|
||||||
|
gtk_widget_set_halign (onoff, GTK_ALIGN_CENTER);
|
||||||
|
gtk_widget_set_valign (onoff, GTK_ALIGN_CENTER);
|
||||||
|
gtk_switch_set_active (GTK_SWITCH (onoff),
|
||||||
|
gimp_extension_manager_is_running (list->p->manager,
|
||||||
|
extension));
|
||||||
|
gtk_widget_set_sensitive (onoff,
|
||||||
|
gimp_extension_manager_can_run (list->p->manager,
|
||||||
|
extension));
|
||||||
|
g_signal_connect (onoff, "notify::active",
|
||||||
|
G_CALLBACK (gimp_extension_switch_active), extension);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), onoff, 0, 0, 1, 1);
|
||||||
|
gtk_widget_show (onoff);
|
||||||
|
|
||||||
|
/* Short description. */
|
||||||
if (gimp_extension_get_comment (extension))
|
if (gimp_extension_get_comment (extension))
|
||||||
{
|
{
|
||||||
GtkWidget *desc = gtk_text_view_new ();
|
GtkWidget *desc = gtk_text_view_new ();
|
||||||
|
@ -291,23 +288,32 @@ gimp_extension_list_ext_installed (GimpExtensionManager *manager,
|
||||||
gimp_extension_get_comment (extension),
|
gimp_extension_get_comment (extension),
|
||||||
-1);
|
-1);
|
||||||
gtk_text_view_set_editable (GTK_TEXT_VIEW (desc), FALSE);
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (desc), FALSE);
|
||||||
gtk_box_pack_start (GTK_BOX (hbox), desc, TRUE, TRUE, 1);
|
gtk_widget_set_vexpand (desc, TRUE);
|
||||||
|
gtk_widget_set_hexpand (desc, TRUE);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), desc, 1, 0, 1, 1);
|
||||||
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (desc),
|
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (desc),
|
||||||
GTK_WRAP_WORD_CHAR);
|
GTK_WRAP_WORD_CHAR);
|
||||||
gtk_widget_show (desc);
|
gtk_widget_show (desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
onoff = gtk_switch_new ();
|
/* Delete button. */
|
||||||
gtk_switch_set_active (GTK_SWITCH (onoff),
|
delbutton = gtk_button_new ();
|
||||||
gimp_extension_manager_is_running (list->p->manager,
|
g_object_set_data (G_OBJECT (delbutton), "extension", extension);
|
||||||
extension));
|
g_signal_connect (delbutton, "clicked",
|
||||||
gtk_widget_set_sensitive (onoff,
|
G_CALLBACK (gimp_extension_list_delete_clicked),
|
||||||
gimp_extension_manager_can_run (list->p->manager,
|
list);
|
||||||
extension));
|
gtk_button_set_relief (GTK_BUTTON (delbutton), GTK_RELIEF_NONE);
|
||||||
g_signal_connect (onoff, "notify::active",
|
image = gtk_image_new_from_icon_name (GIMP_ICON_EDIT_DELETE,
|
||||||
G_CALLBACK (gimp_extension_switch_active), extension);
|
GTK_ICON_SIZE_MENU);
|
||||||
gtk_box_pack_end (GTK_BOX (hbox), onoff, FALSE, FALSE, 1);
|
gtk_image_set_pixel_size (GTK_IMAGE (image), 12);
|
||||||
gtk_widget_show (onoff);
|
gtk_widget_set_vexpand (delbutton, FALSE);
|
||||||
|
gtk_widget_set_hexpand (delbutton, FALSE);
|
||||||
|
gtk_widget_set_halign (delbutton, GTK_ALIGN_END);
|
||||||
|
gtk_widget_set_valign (delbutton, GTK_ALIGN_START);
|
||||||
|
gtk_container_add (GTK_CONTAINER (delbutton), image);
|
||||||
|
gtk_widget_show (image);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), delbutton, 2, 0, 1, 1);
|
||||||
|
gtk_widget_show (delbutton);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -379,7 +385,8 @@ gimp_extension_row_activated (GtkListBox *box,
|
||||||
GtkListBoxRow *row,
|
GtkListBoxRow *row,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
|
GtkWidget *frame = gtk_bin_get_child (GTK_BIN (row));
|
||||||
|
|
||||||
g_signal_emit (box, signals[EXTENSION_ACTIVATED], 0,
|
g_signal_emit (box, signals[EXTENSION_ACTIVATED], 0,
|
||||||
g_object_get_data (G_OBJECT (row),
|
g_object_get_data (G_OBJECT (frame), "extension"));
|
||||||
"extension"));
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue