[gnome-photos/wip/collection-dialog] start collection dialog
- From: Alessandro Bono <abono src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/collection-dialog] start collection dialog
- Date: Tue, 3 Nov 2015 15:37:23 +0000 (UTC)
commit 7a83bbc5d44c50c3ae86b4ce7fc5f17d9ab96386
Author: Alessandro Bono <shadow openaliasbox org>
Date: Mon Oct 26 15:34:37 2015 +0100
start collection dialog
src/photos-organize-collection-dialog.c | 123 ++++++++++++++++++++++---------
src/photos-organize-collection-dialog.h | 4 +-
src/photos-selection-toolbar.c | 12 ++--
src/photos.gresource.xml | 1 +
4 files changed, 97 insertions(+), 43 deletions(-)
---
diff --git a/src/photos-organize-collection-dialog.c b/src/photos-organize-collection-dialog.c
index c9fff67..b8de8c1 100644
--- a/src/photos-organize-collection-dialog.c
+++ b/src/photos-organize-collection-dialog.c
@@ -25,6 +25,7 @@
#include "config.h"
+#include <gio/gio.h>
#include <glib/gi18n.h>
#include "photos-organize-collection-dialog.h"
@@ -33,13 +34,18 @@
struct _PhotosOrganizeCollectionDialogPrivate
{
+ gboolean rename_mode;
+ GtkButton *add_button_empty;
+ GtkButton *add_button_collections;
+ GtkButton *add_entry_empty;
+ GtkButton *add_entry_collections;
GtkWidget *coll_view;
};
-G_DEFINE_TYPE_WITH_PRIVATE (PhotosOrganizeCollectionDialog, photos_organize_collection_dialog,
GTK_TYPE_DIALOG);
-
+G_DEFINE_TYPE_WITH_PRIVATE (PhotosOrganizeCollectionDialog, photos_organize_collection_dialog,
GTK_TYPE_WINDOW);
+/*
static gboolean
photos_organize_collection_dialog_button_press_event (PhotosOrganizeCollectionDialog *self, GdkEvent *event)
{
@@ -58,23 +64,87 @@ photos_organize_collection_dialog_response (GtkDialog *dialog, gint response_id)
photos_organize_collection_view_add_collection (PHOTOS_ORGANIZE_COLLECTION_VIEW (self->priv->coll_view));
}
+*/
+static void
+photos_organize_collection_dialog_add_button_clicked (GtkButton *button, gpointer user_data)
+{
+ PhotosOrganizeCollectionDialogPrivate *priv = PHOTOS_ORGANIZE_COLLECTION_DIALOG (user_data)->priv;
+ g_print("test");
+}
+static gboolean
+photos_organize_collection_dialog_key_pressed (PhotosOrganizeCollectionDialog *self, GdkEventKey *event,
gpointer user_data)
+{
+ PhotosOrganizeCollectionDialogPrivate *priv = self->priv;
+
+ if (event->keyval == GDK_KEY_Escape)
+ {
+ if (priv->rename_mode)
+ gtk_widget_destroy (GTK_WIDGET (self));//this._renameModeStop(false);
+ else
+ gtk_widget_destroy (GTK_WIDGET (self));
+
+ return GDK_EVENT_STOP;
+ }
+ return GDK_EVENT_PROPAGATE;
+}
+
+static void
+photos_organize_collection_dialog_text_changed (GtkEntry *entry, gpointer user_data)
+{
+ GtkButton *add_button;
+
+ PhotosOrganizeCollectionDialog *self = PHOTOS_ORGANIZE_COLLECTION_DIALOG (user_data);
+ PhotosOrganizeCollectionDialogPrivate *priv = self->priv;
+ // check if is valid
+ gboolean sensitive = TRUE;
+ if (priv->rename_mode)
+ {
+
+ }
+ else
+ {
+ add_button = priv->add_button_empty;//check if empty
+ gtk_widget_set_sensitive (GTK_WIDGET (add_button), sensitive);
+ }
+}
static void
photos_organize_collection_dialog_init (PhotosOrganizeCollectionDialog *self)
{
PhotosOrganizeCollectionDialogPrivate *priv;
- GtkWidget *content_area;
- GtkWidget *ok_button;
- GtkWidget *sw;
+ GSimpleActionGroup *action_group;
+ GSimpleAction *delete_action;
+ GSimpleAction *rename_action;
+ GVariantType *parameter_type;
+ //GtkWidget *content_area;
+ //GtkWidget *sw;
self->priv = photos_organize_collection_dialog_get_instance_private (self);
priv = self->priv;
- gtk_dialog_add_button (GTK_DIALOG (self), _("_Add"), GTK_RESPONSE_ACCEPT);
- ok_button = gtk_dialog_add_button (GTK_DIALOG (self), _("_OK"), GTK_RESPONSE_CLOSE);
- gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_CLOSE);
+ gtk_widget_init_template (GTK_WIDGET (self));
+
+ priv->rename_mode = FALSE;
+ g_signal_connect (self, "key-press-event", (GCallback) photos_organize_collection_dialog_key_pressed,
NULL);
+ g_signal_connect (priv->add_button_empty, "clicked", (GCallback)
photos_organize_collection_dialog_add_button_clicked, self);
+ g_signal_connect (priv->add_button_collections, "clicked", (GCallback)
photos_organize_collection_dialog_add_button_clicked, self);
+ g_signal_connect (priv->add_entry_empty, "changed", (GCallback)
photos_organize_collection_dialog_text_changed, self);
+ g_signal_connect (priv->add_entry_collections, "changed", (GCallback)
photos_organize_collection_dialog_text_changed, self);
+
+ action_group = g_simple_action_group_new ();
+ parameter_type = g_variant_type_new ("s");
+ delete_action = g_simple_action_new ("delete-collection", parameter_type);
+ g_variant_type_free (parameter_type);
+ parameter_type = g_variant_type_new ("s");
+ rename_action = g_simple_action_new ("rename-collection", parameter_type);
+ g_variant_type_free (parameter_type);
+ g_action_map_add_action (G_ACTION_MAP (action_group), G_ACTION (delete_action));
+ g_action_map_add_action (G_ACTION_MAP (action_group), G_ACTION (rename_action));
+ gtk_widget_insert_action_group (GTK_WIDGET (self), "dialog", G_ACTION_GROUP (action_group));
+
+/*
content_area = gtk_dialog_get_content_area (GTK_DIALOG (self));
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
@@ -84,31 +154,21 @@ photos_organize_collection_dialog_init (PhotosOrganizeCollectionDialog *self)
priv->coll_view = photos_organize_collection_view_new ();
gtk_container_add (GTK_CONTAINER (sw), priv->coll_view);
- gtk_container_add (GTK_CONTAINER (content_area), sw);
-
- /* HACK:
- * - We want clicking on "OK" to add the typed-in collection if
- * we're editing.
- * - Unfortunately, since we focus out of the editable entry in
- * order to click the button, we'll get an editing-canceled signal
- * on the renderer from GTK+. As this handler will run before
- * focus-out, we here signal the view to ignore the next
- * editing-canceled signal and add the collection in that case
- * instead.
- */
- g_signal_connect_swapped (ok_button,
- "button-press-event",
- G_CALLBACK (photos_organize_collection_dialog_button_press_event),
- self);
+ gtk_container_add (GTK_CONTAINER (content_area), sw);*/
}
static void
photos_organize_collection_dialog_class_init (PhotosOrganizeCollectionDialogClass *class)
{
- GtkDialogClass *dialog_class = GTK_DIALOG_CLASS (class);
-
- dialog_class->response = photos_organize_collection_dialog_response;
+ GtkWindowClass *window_class = GTK_WINDOW_CLASS (class);
+
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (window_class),
"/org/gnome/Photos/organize-collection-dialog.ui");
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (window_class),
PhotosOrganizeCollectionDialog, add_button_empty);
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (window_class),
PhotosOrganizeCollectionDialog, add_button_collections);
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (window_class),
PhotosOrganizeCollectionDialog, add_entry_empty);
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (window_class),
PhotosOrganizeCollectionDialog, add_entry_collections);
+ //dialog_class->response = photos_organize_collection_dialog_response;
}
@@ -118,13 +178,6 @@ photos_organize_collection_dialog_new (GtkWindow *parent)
g_return_val_if_fail (GTK_IS_WINDOW (parent), NULL);
return g_object_new (PHOTOS_TYPE_ORGANIZE_COLLECTION_DIALOG,
- "default-width", 400,
- "default-height", 250,
- "destroy-with-parent", TRUE,
- "modal", TRUE,
- /* Translators: "Organize" refers to photos in this context */
- "title", C_("Dialog title", "Organize"),
- "transient-for", parent,
- "use-header-bar", TRUE,
+ "transient-for", parent,
NULL);
}
diff --git a/src/photos-organize-collection-dialog.h b/src/photos-organize-collection-dialog.h
index fd48449..dc4b787 100644
--- a/src/photos-organize-collection-dialog.h
+++ b/src/photos-organize-collection-dialog.h
@@ -57,13 +57,13 @@ typedef struct _PhotosOrganizeCollectionDialogPrivate PhotosOrganizeCollectionDi
struct _PhotosOrganizeCollectionDialog
{
- GtkDialog parent_instance;
+ GtkWindow parent_instance;
PhotosOrganizeCollectionDialogPrivate *priv;
};
struct _PhotosOrganizeCollectionDialogClass
{
- GtkDialogClass parent_class;
+ GtkWindowClass parent_class;
};
GType photos_organize_collection_dialog_get_type (void) G_GNUC_CONST;
diff --git a/src/photos-selection-toolbar.c b/src/photos-selection-toolbar.c
index a77ab2a..3e62ad3 100644
--- a/src/photos-selection-toolbar.c
+++ b/src/photos-selection-toolbar.c
@@ -65,19 +65,19 @@ enum
};
+
static void
-photos_selection_toolbar_dialog_response (GtkDialog *dialog, gint response_id, gpointer user_data)
+photos_selection_toolbar_dialog_response (GtkWindow *dialog, gpointer user_data)
{
PhotosSelectionToolbar *self = PHOTOS_SELECTION_TOOLBAR (user_data);
- if (response_id != GTK_RESPONSE_CLOSE)
- return;
+ //if (response_id != GTK_RESPONSE_CLOSE)
+ // return;
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ //gtk_widget_destroy (GTK_WIDGET (dialog));
photos_selection_controller_set_selection_mode (self->priv->sel_cntrlr, FALSE);
}
-
static void
photos_selection_toolbar_collection_clicked (GtkButton *button, gpointer user_data)
{
@@ -91,7 +91,7 @@ photos_selection_toolbar_collection_clicked (GtkButton *button, gpointer user_da
dialog = photos_organize_collection_dialog_new (GTK_WINDOW (toplevel));
gtk_widget_show_all (dialog);
- g_signal_connect (dialog, "response", G_CALLBACK (photos_selection_toolbar_dialog_response), self);
+ g_signal_connect (dialog, "destroy", G_CALLBACK (photos_selection_toolbar_dialog_response), self);
}
diff --git a/src/photos.gresource.xml b/src/photos.gresource.xml
index 20b58a2..6a3022b 100644
--- a/src/photos.gresource.xml
+++ b/src/photos.gresource.xml
@@ -5,6 +5,7 @@
<file alias="Adwaita.css">../data/Adwaita.css</file>
<file alias="dlna-renderers-dialog.ui" preprocess="xml-stripblanks"
compressed="true">photos-dlna-renderers-dialog.ui</file>
<file alias="dnd-counter.svg" preprocess="to-pixdata">../data/dnd-counter.svg</file>
+ <file alias="organize-collection-dialog.ui" preprocess="xml-stripblanks"
compressed="true">photos-organize-collection-dialog.ui</file>
<file alias="preview-menu.ui" preprocess="xml-stripblanks"
compressed="true">photos-preview-menu.ui</file>
<file alias="selection-menu.ui" preprocess="xml-stripblanks"
compressed="true">photos-selection-menu.ui</file>
<file alias="sidebar-radio-checked.svg" preprocess="to-pixdata">../data/sidebar-radio-checked.svg</file>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]