[california/wip/732029-gtk-312] First stab moving dialogs into GtkPopover
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [california/wip/732029-gtk-312] First stab moving dialogs into GtkPopover
- Date: Mon, 23 Jun 2014 22:34:05 +0000 (UTC)
commit 3e899049b9ab5bb34fa5c42022bc6d81468500bd
Author: Jim Nelson <jim yorba org>
Date: Mon Jun 23 15:33:49 2014 -0700
First stab moving dialogs into GtkPopover
Some fine-tuning of panel layout definitely needs to happen.
configure.ac | 2 +-
debian/control | 2 +-
src/activator/activator-window.vala | 21 ++-----------
src/application/california-application.vala | 4 +-
src/host/host-main-window.vala | 20 ++++++------
src/manager/manager-window.vala | 21 ++-----------
src/toolkit/toolkit-deck-window.vala | 41 +++++++++-----------------
7 files changed, 36 insertions(+), 75 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index d307d82..98816aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,7 +25,7 @@ AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
GLIB_REQUIRED=2.38.0
-GTK_REQUIRED=3.10.7
+GTK_REQUIRED=3.12.3
GEE_REQUIRED=0.10.5
ECAL_REQUIRED=3.8.5
LIBSOUP_REQUIRED=2.44
diff --git a/debian/control b/debian/control
index 9a10333..dbd7af0 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Jim Nelson <jim yorba org>
Build-Depends: debhelper (>= 8),
libgee-0.8-dev (>= 0.10.5),
libglib2.0-dev (>= 2.38.0),
- libgtk-3-dev (>= 3.10.7),
+ libgtk-3-dev (>= 3.12.3),
valac-0.22 (>= 0.21.1),
intltool,
libecal1.2-dev (>= 3.8.5),
diff --git a/src/activator/activator-window.vala b/src/activator/activator-window.vala
index bdce01a..25158b6 100644
--- a/src/activator/activator-window.vala
+++ b/src/activator/activator-window.vala
@@ -11,10 +11,8 @@ namespace California.Activator {
*/
public class Window : Toolkit.DeckWindow {
- private static Activator.Window? instance = null;
-
- private Window(Gtk.Window? parent) {
- base (parent, null);
+ private Window(Gtk.Widget relative_to, Gdk.Point? for_location) {
+ base (relative_to, for_location, null);
// The Deck is pre-populated with each of their Cards, with the InstanceList jumping to
// the right set when asked to (and acting as home)
@@ -26,20 +24,9 @@ public class Window : Toolkit.DeckWindow {
deck.add_cards(cards);
}
- public static void display(Gtk.Window? parent) {
- // only allow one instance at a time
- if (instance != null) {
- instance.present_with_time(Gdk.CURRENT_TIME);
-
- return;
- }
-
- instance = new Activator.Window(parent);
+ public static void display(Gtk.Widget relative_to, Gdk.Point? for_location) {
+ Activator.Window instance = new Activator.Window(relative_to, for_location);
instance.show_all();
- instance.run();
- instance.destroy();
-
- instance = null;
}
}
diff --git a/src/application/california-application.vala b/src/application/california-application.vala
index 49dfe8a..ace3720 100644
--- a/src/application/california-application.vala
+++ b/src/application/california-application.vala
@@ -211,11 +211,11 @@ public class Application : Gtk.Application {
}
private void on_new_calendar() {
- Activator.Window.display(main_window);
+ Activator.Window.display(main_window.calendar_button, null);
}
private void on_calendar_manager() {
- Manager.Window.display(main_window);
+ Manager.Window.display(main_window.calendar_button, null);
}
private void on_process_file(SimpleAction action, Variant? variant) {
diff --git a/src/host/host-main-window.vala b/src/host/host-main-window.vala
index d1c0874..1e4dafd 100644
--- a/src/host/host-main-window.vala
+++ b/src/host/host-main-window.vala
@@ -83,6 +83,8 @@ public class MainWindow : Gtk.ApplicationWindow {
{ ACTION_RESET_FONT, on_reset_font }
};
+ public Gtk.Button calendar_button { get; private set; }
+
private Gtk.Button quick_add_button;
private View.Palette palette;
private View.Controllable month_view;
@@ -195,11 +197,11 @@ public class MainWindow : Gtk.ApplicationWindow {
quick_add_button.tooltip_text = _("Quick add event (Ctrl+N)");
quick_add_button.set_action_name(DETAILED_ACTION_QUICK_CREATE_EVENT);
- Gtk.Button calendars = new Gtk.Button.from_icon_name("x-office-calendar-symbolic",
+ calendar_button = new Gtk.Button.from_icon_name("x-office-calendar-symbolic",
Gtk.IconSize.MENU);
- calendars.valign = Gtk.Align.CENTER;
- calendars.tooltip_text = _("Calendars (Ctrl+L)");
- calendars.set_action_name(Application.DETAILED_ACTION_CALENDAR_MANAGER);
+ calendar_button.valign = Gtk.Align.CENTER;
+ calendar_button.tooltip_text = _("Calendars (Ctrl+L)");
+ calendar_button.set_action_name(Application.DETAILED_ACTION_CALENDAR_MANAGER);
Gtk.MenuButton window_menu = new Gtk.MenuButton();
window_menu.valign = Gtk.Align.CENTER;
@@ -214,14 +216,14 @@ public class MainWindow : Gtk.ApplicationWindow {
size.add_widget(prev);
size.add_widget(next);
size.add_widget(quick_add_button);
- size.add_widget(calendars);
+ size.add_widget(calendar_button);
size.add_widget(window_menu);
// pack right-side of window ... note that this was fixed in 3.12, reversing the order of
// how widgets need to be packed at the end
#if GTK_312
headerbar.pack_end(window_menu);
- headerbar.pack_end(calendars);
+ headerbar.pack_end(calendar_button);
headerbar.pack_end(quick_add_button);
#else
headerbar.pack_end(quick_add_button);
@@ -339,11 +341,11 @@ public class MainWindow : Gtk.ApplicationWindow {
}
private void show_deck(Gtk.Widget relative_to, Gdk.Point? for_location, Toolkit.Deck deck) {
- Toolkit.DeckWindow deck_window = new Toolkit.DeckWindow(this, deck);
+ Toolkit.DeckWindow deck_window = new Toolkit.DeckWindow(relative_to, for_location, deck);
// when the dialog closes, reset View.Controllable state (selection is maintained while
// use is viewing/editing interaction) and destroy widgets
- deck_window.deck.dismiss.connect(() => {
+ deck_window.dismiss.connect(() => {
current_controller.unselect_all();
deck_window.hide();
// give the dialog a change to hide before allowing other signals to fire, which may
@@ -352,8 +354,6 @@ public class MainWindow : Gtk.ApplicationWindow {
});
deck_window.show_all();
- deck_window.run();
- deck_window.destroy();
}
private void on_quick_create_event() {
diff --git a/src/manager/manager-window.vala b/src/manager/manager-window.vala
index 64bf98c..4c1a440 100644
--- a/src/manager/manager-window.vala
+++ b/src/manager/manager-window.vala
@@ -11,30 +11,17 @@ namespace California.Manager {
*/
public class Window : Toolkit.DeckWindow {
- private static Manager.Window? instance = null;
-
private CalendarList calendar_list = new CalendarList();
- private Window(Gtk.Window? parent) {
- base (parent, null);
+ private Window(Gtk.Widget relative_to, Gdk.Point? for_location) {
+ base (relative_to, for_location, null);
deck.add_cards(iterate<Toolkit.Card>(calendar_list).to_array_list());
}
- public static void display(Gtk.Window? parent) {
- // only allow one instance at a time
- if (instance != null) {
- instance.present_with_time(Gdk.CURRENT_TIME);
-
- return;
- }
-
- instance = new Manager.Window(parent);
+ public static void display(Gtk.Widget relative_to, Gdk.Point? for_location) {
+ Manager.Window instance = new Manager.Window(relative_to, for_location);
instance.show_all();
- instance.run();
- instance.destroy();
-
- instance = null;
}
public override bool key_release_event(Gdk.EventKey event) {
diff --git a/src/toolkit/toolkit-deck-window.vala b/src/toolkit/toolkit-deck-window.vala
index 44d1872..5afbe22 100644
--- a/src/toolkit/toolkit-deck-window.vala
+++ b/src/toolkit/toolkit-deck-window.vala
@@ -16,48 +16,35 @@ namespace California.Toolkit {
* interactions.
*/
-public class DeckWindow : Gtk.Dialog {
+public class DeckWindow : Gtk.Popover {
public Deck deck { get; private set; }
- public DeckWindow(Gtk.Window? parent, Deck? starter_deck) {
+ public signal void dismiss(bool user_request, bool final);
+
+ public DeckWindow(Gtk.Widget rel_to, Gdk.Point? for_location, Deck? starter_deck) {
+ Object (relative_to: rel_to);
+
this.deck = starter_deck ?? new Deck();
- transient_for = parent;
- modal = true;
- resizable = false;
+ if (for_location != null) {
+ Gdk.Rectangle for_location_rect = Gdk.Rectangle() { x = for_location.x, y = for_location.y,
+ width = 1, height = 1 };
+ pointing_to = for_location_rect;
+ }
deck.dismiss.connect(on_deck_dismissed);
- deck.success.connect(on_deck_success);
- deck.failure.connect(on_deck_failure);
- Gtk.Box content_area = (Gtk.Box) get_content_area();
- content_area.margin = 8;
- content_area.add(deck);
-
- get_action_area().visible = false;
- get_action_area().no_show_all = true;
+ add(deck);
}
~DeckWindow() {
deck.dismiss.disconnect(on_deck_dismissed);
- deck.success.disconnect(on_deck_success);
- deck.failure.disconnect(on_deck_failure);
}
private void on_deck_dismissed(bool user_request, bool final) {
+ dismiss(user_request, final);
if (final)
- response(Gtk.ResponseType.CLOSE);
- }
-
- private void on_deck_success() {
- response(Gtk.ResponseType.OK);
- }
-
- private void on_deck_failure(string? user_message) {
- if (!String.is_empty(user_message))
- Application.instance.error_message(user_message);
-
- response(Gtk.ResponseType.CLOSE);
+ destroy();
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]