[gnome-calendar/gbsneto/event-editor: 11/16] time-selector: Make it a GtkBox directly
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gbsneto/event-editor: 11/16] time-selector: Make it a GtkBox directly
- Date: Mon, 2 Dec 2019 19:43:08 +0000 (UTC)
commit ce47cfea86ef7704bb3effac9f8a1cd37f3dea84
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Nov 14 15:28:57 2019 -0300
time-selector: Make it a GtkBox directly
src/gui/gcal-time-selector.c | 58 +--------------------
src/gui/gcal-time-selector.h | 3 +-
src/gui/gcal-time-selector.ui | 116 +++++++++++++++++-------------------------
3 files changed, 49 insertions(+), 128 deletions(-)
---
diff --git a/src/gui/gcal-time-selector.c b/src/gui/gcal-time-selector.c
index 1ce4bef4..d43a4910 100644
--- a/src/gui/gcal-time-selector.c
+++ b/src/gui/gcal-time-selector.c
@@ -25,16 +25,14 @@
struct _GcalTimeSelector
{
- GtkMenuButton parent;
+ GtkBox parent;
GtkAdjustment *hour_adjustment;
GtkAdjustment *minute_adjustment;
- GtkWidget *time_label;
GtkWidget *hour_spin;
GtkWidget *minute_spin;
GtkWidget *period_combo;
- GtkWidget *grid;
GDateTime *time;
@@ -54,43 +52,7 @@ enum
PM
};
-static void gcal_time_selector_constructed (GObject *object);
-
-G_DEFINE_TYPE (GcalTimeSelector, gcal_time_selector, GTK_TYPE_MENU_BUTTON);
-
-static void
-update_label (GcalTimeSelector *selector)
-{
- gchar *new_label;
-
- if (selector->time_format == GCAL_TIME_FORMAT_24H)
- {
- new_label = g_date_time_format (selector->time, "%H:%M");
- }
- else
- {
- gchar *time_str;
- gint hour, minute, period;
-
- hour = (gint) gtk_adjustment_get_value (selector->hour_adjustment);
- minute = (gint) gtk_adjustment_get_value (selector->minute_adjustment);
-
-
- period = gtk_combo_box_get_active (GTK_COMBO_BOX (selector->period_combo));
- time_str = g_strdup_printf ("%.2d:%.2d", hour, minute);
-
- if (period == AM)
- new_label = g_strdup_printf (_("%s AM"), time_str);
- else
- new_label = g_strdup_printf (_("%s PM"), time_str);
-
- g_free (time_str);
- }
-
- gtk_label_set_label (GTK_LABEL (selector->time_label), new_label);
-
- g_clear_pointer (&new_label, g_free);
-}
+G_DEFINE_TYPE (GcalTimeSelector, gcal_time_selector, GTK_TYPE_BOX);
static void
update_time (GcalTimeSelector *selector)
@@ -228,7 +190,6 @@ gcal_time_selector_class_init (GcalTimeSelectorClass *klass)
GObjectClass *object_class;
object_class = G_OBJECT_CLASS (klass);
- object_class->constructed = gcal_time_selector_constructed;
object_class->dispose = gcal_time_selector_dispose;
object_class->finalize = gcal_time_selector_finalize;
object_class->get_property = gcal_time_selector_get_property;
@@ -249,13 +210,11 @@ gcal_time_selector_class_init (GcalTimeSelectorClass *klass)
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
"/org/gnome/calendar/ui/gui/gcal-time-selector.ui");
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, time_label);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, hour_adjustment);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, hour_spin);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, minute_adjustment);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, minute_spin);
gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, period_combo);
- gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (klass), GcalTimeSelector, grid);
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), on_output);
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), update_time);
@@ -269,17 +228,6 @@ gcal_time_selector_init (GcalTimeSelector *self)
gtk_widget_init_template (GTK_WIDGET (self));
}
-static void
-gcal_time_selector_constructed (GObject *object)
-{
- GcalTimeSelector *selector = GCAL_TIME_SELECTOR (object);
-
- /* chaining up */
- G_OBJECT_CLASS (gcal_time_selector_parent_class)->constructed (object);
-
- gtk_widget_set_direction (selector->grid, GTK_TEXT_DIR_LTR);
-}
-
/* Public API */
GtkWidget*
gcal_time_selector_new (void)
@@ -326,8 +274,6 @@ gcal_time_selector_set_time (GcalTimeSelector *selector,
gtk_adjustment_set_value (selector->hour_adjustment, hour);
gtk_adjustment_set_value (selector->minute_adjustment, minute);
- update_label (selector);
-
g_signal_handlers_unblock_by_func (selector->hour_adjustment, update_time, selector);
g_signal_handlers_unblock_by_func (selector->minute_adjustment, update_time, selector);
diff --git a/src/gui/gcal-time-selector.h b/src/gui/gcal-time-selector.h
index b276dcc6..a469fbcb 100644
--- a/src/gui/gcal-time-selector.h
+++ b/src/gui/gcal-time-selector.h
@@ -26,8 +26,7 @@
G_BEGIN_DECLS
#define GCAL_TYPE_TIME_SELECTOR (gcal_time_selector_get_type ())
-
-G_DECLARE_FINAL_TYPE (GcalTimeSelector, gcal_time_selector, GCAL, TIME_SELECTOR, GtkMenuButton)
+G_DECLARE_FINAL_TYPE (GcalTimeSelector, gcal_time_selector, GCAL, TIME_SELECTOR, GtkBox)
GtkWidget* gcal_time_selector_new (void);
diff --git a/src/gui/gcal-time-selector.ui b/src/gui/gcal-time-selector.ui
index f595d0c9..45d4e4d2 100644
--- a/src/gui/gcal-time-selector.ui
+++ b/src/gui/gcal-time-selector.ui
@@ -1,15 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <template class="GcalTimeSelector" parent="GtkMenuButton">
- <property name="use_popover">True</property>
- <property name="popover">time_selector_popover</property>
+ <template class="GcalTimeSelector" parent="GtkBox">
+ <property name="spacing">6</property>
+
+ <!-- Hour -->
<child>
- <object class="GtkLabel" id="time_label">
+ <object class="GtkSpinButton" id="hour_spin">
<property name="visible">True</property>
- <property name="label" translatable="yes">00:00</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0.5</property>
+ <property name="input_purpose">number</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">hour_adjustment</property>
+ <signal name="output" handler="on_output" object="GcalTimeSelector" swapped="no"/>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">:</property>
+ </object>
+ </child>
+
+ <!-- Minute -->
+ <child>
+ <object class="GtkSpinButton" id="minute_spin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0.5</property>
+ <property name="input_purpose">number</property>
+ <property name="orientation">vertical</property>
+ <property name="adjustment">minute_adjustment</property>
+ <signal name="output" handler="on_output" object="GcalTimeSelector" swapped="no"/>
+ </object>
+ </child>
+
+
+ <!-- AM/PM -->
+ <child>
+ <object class="GtkComboBoxText" id="period_combo">
+ <property name="valign">center</property>
+ <property name="active">0</property>
+ <signal name="changed" handler="update_time" object="GcalTimeSelector" swapped="yes"/>
+ <items>
+ <item translatable="yes">AM</item>
+ <item translatable="yes">PM</item>
+ </items>
</object>
</child>
</template>
+
<object class="GtkAdjustment" id="hour_adjustment">
<property name="upper">23</property>
<property name="step_increment">1</property>
@@ -22,69 +63,4 @@
<property name="page_increment">10</property>
<signal name="value-changed" handler="update_time" object="GcalTimeSelector" swapped="yes"/>
</object>
- <object class="GtkPopover" id="time_selector_popover">
- <property name="position">bottom</property>
- <child>
- <object class="GtkGrid" id="grid">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="column_spacing">6</property>
- <child>
- <object class="GtkSpinButton" id="hour_spin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.5</property>
- <property name="input_purpose">number</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">hour_adjustment</property>
- <signal name="output" handler="on_output" object="GcalTimeSelector" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="minute_spin">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0.5</property>
- <property name="input_purpose">number</property>
- <property name="orientation">vertical</property>
- <property name="adjustment">minute_adjustment</property>
- <signal name="output" handler="on_output" object="GcalTimeSelector" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">:</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="period_combo">
- <property name="valign">center</property>
- <property name="active">0</property>
- <signal name="changed" handler="update_time" object="GcalTimeSelector" swapped="yes"/>
- <items>
- <item translatable="yes">AM</item>
- <item translatable="yes">PM</item>
- </items>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]