summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew P. <pan.pav.7c5@gmail.com>2014-05-14 01:52:42 +0300
committerAndrew P. <pan.pav.7c5@gmail.com>2014-05-14 01:52:42 +0300
commit26741cccf350e2c80cea10612b49e0a51cd10211 (patch)
tree3a021a4182c2b4560abb12bd84ed53508c3dda54
parentc71cc7a05b6fc62b3d70cf16722bda3778fb227c (diff)
downloadlightdm-gtk-greeter-git-26741cccf350e2c80cea10612b49e0a51cd10211.tar.gz
GTK2 compatability
-rw-r--r--src/Makefile.am4
-rw-r--r--src/greetermenubar.c20
-rw-r--r--src/lightdm-gtk-greeter.c34
-rw-r--r--src/lightdm-gtk-greeter.glade229
4 files changed, 163 insertions, 124 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 976f475..e148345 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,7 +40,9 @@ lightdm_gtk_greeter_LDADD = \
if MAINTAINER_MODE
lightdm-gtk-greeter-ui.h: $(srcdir)/lightdm-gtk-greeter.glade Makefile
- $(AM_V_GEN) exo-csource --static --strip-comments --strip-content --name=lightdm_gtk_greeter_ui $< >$@
+ $(AM_V_GEN) sed "s/GtkMenuBar/GreeterMenuBar/g" $< > $(srcdir)/lightdm-gtk-greeter-temp.glade
+ $(AM_V_GEN) exo-csource --static --strip-comments --strip-content --name=lightdm_gtk_greeter_ui $(srcdir)/lightdm-gtk-greeter-temp.glade >$@
+ $(AM_V_GEN) rm -f $(srcdir)/lightdm-gtk-greeter-temp.glade
DISTCLEANFILES = \
$(lightdm_gtk_greeter_built_sources)
diff --git a/src/greetermenubar.c b/src/greetermenubar.c
index 8e938f0..d8dd1b9 100644
--- a/src/greetermenubar.c
+++ b/src/greetermenubar.c
@@ -1,17 +1,19 @@
#include <gtk/gtk.h>
#include "greetermenubar.h"
-/* Forward declarations */
+#if GTK_CHECK_VERSION (3, 0, 0)
static void greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation);
+#endif
G_DEFINE_TYPE(GreeterMenuBar, greeter_menu_bar, GTK_TYPE_MENU_BAR);
-
static void
greeter_menu_bar_class_init(GreeterMenuBarClass* klass)
{
+ #if GTK_CHECK_VERSION (3, 0, 0)
GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass);
widget_class->size_allocate = greeter_menu_bar_size_allocate;
+ #endif
}
static void
@@ -26,14 +28,7 @@ greeter_menu_bar_new()
return GTK_WIDGET(g_object_new(greeter_menu_bar_get_type(), NULL));
}
-static GtkShadowType
-get_shadow_type(GtkWidget* widget)
-{
- GtkShadowType shadow_type = GTK_SHADOW_OUT;
- gtk_widget_style_get(widget, "shadow-type", &shadow_type, NULL);
- return shadow_type;
-}
-
+#if GTK_CHECK_VERSION (3, 0, 0)
static gint
sort_minimal_size(gconstpointer a, gconstpointer b, GtkRequestedSize* sizes)
{
@@ -89,8 +84,10 @@ greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
GtkRequestedSize* requested_sizes = g_newa(GtkRequestedSize, visible_count);
guint border_width = gtk_container_get_border_width(GTK_CONTAINER(widget));
GtkBorder border;
+ GtkShadowType shadow_type = GTK_SHADOW_OUT;
gtk_style_context_get_padding(context, flags, &border);
+ gtk_widget_style_get(widget, "shadow-type", &shadow_type, NULL);
remaining_space.x = (border_width + border.left);
remaining_space.y = (border_width + border.top);
@@ -99,7 +96,7 @@ greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
remaining_space.height = allocation->height -
2 * border_width - border.top - border.bottom;
- if (get_shadow_type(widget) != GTK_SHADOW_NONE)
+ if (shadow_type != GTK_SHADOW_NONE)
{
gtk_style_context_get_border(context, flags, &border);
@@ -189,3 +186,4 @@ greeter_menu_bar_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
}
g_list_free(shell_children);
}
+#endif \ No newline at end of file
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index 6f17a3f..e5055ac 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -453,8 +453,10 @@ init_indicators (GKeyFile* config)
g_hash_table_insert (builtin_items, "~session", session_menuitem);
g_hash_table_insert (builtin_items, "~language", language_menuitem);
g_hash_table_insert (builtin_items, "~a11y", a11y_menuitem);
+#if GTK_CHECK_VERSION (3, 0, 0)
g_hash_table_insert (builtin_items, "~host", host_menuitem);
g_hash_table_insert (builtin_items, "~clock", clock_menuitem);
+#endif
g_hash_table_iter_init (&iter, builtin_items);
while (g_hash_table_iter_next (&iter, NULL, &iter_value))
@@ -470,8 +472,10 @@ init_indicators (GKeyFile* config)
g_hash_table_remove (builtin_items, (gconstpointer)names[i]);
is_spacer = FALSE;
}
+ #if GTK_CHECK_VERSION (3, 0, 0)
else if (g_strcmp0 (names[i], "~separator") == 0)
{
+
GtkWidget *separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
iter_value = gtk_separator_menu_item_new ();
gtk_widget_show (separator);
@@ -488,6 +492,10 @@ init_indicators (GKeyFile* config)
iter_value = gtk_separator_menu_item_new ();
gtk_menu_item_set_label (iter_value, &names[i][1]);
}
+ #else
+ else
+ continue;
+ #endif
g_object_set_data (G_OBJECT (iter_value), INDICATOR_DATA_INDEX, GINT_TO_POINTER (i));
add_indicator_to_panel (iter_value, i, is_spacer);
continue;
@@ -2707,11 +2715,24 @@ main (int argc, char **argv)
g_signal_connect (G_OBJECT (power_menuitem),"activate", G_CALLBACK(power_menu_cb), NULL);
}
+#if !GTK_CHECK_VERSION (3, 0, 0)
+ GtkBox *menubar_box = GTK_BOX (gtk_builder_get_object (builder, "menubar_box"));
+#endif
+
/* Host label */
+#if GTK_CHECK_VERSION (3, 0, 0)
if (gtk_widget_get_visible (host_menuitem))
gtk_menu_item_set_label (GTK_MENU_ITEM (host_menuitem), lightdm_get_hostname ());
+#else
+ GtkWidget *host_label = gtk_label_new (lightdm_get_hostname ());
+ gtk_misc_set_alignment (GTK_MISC (host_label), 0, 0.5);
+ gtk_misc_set_padding (GTK_MISC (host_label), 6, 0);
+ gtk_widget_show (host_label);
+ gtk_box_pack_start (menubar_box, host_label, FALSE, TRUE, 0);
+#endif
/* Clock label */
+#if GTK_CHECK_VERSION (3, 0, 0)
if (gtk_widget_get_visible (clock_menuitem))
{
gtk_menu_item_set_label (GTK_MENU_ITEM (clock_menuitem), "");
@@ -2722,6 +2743,19 @@ main (int argc, char **argv)
clock_timeout_thread ();
gdk_threads_add_timeout (1000, (GSourceFunc) clock_timeout_thread, NULL);
}
+#else
+ if (g_key_file_get_boolean (config, "greeter", "show-clock", NULL))
+ {
+ clock_label = gtk_label_new ("");
+ gtk_widget_show_all (clock_label);
+ gtk_box_pack_start (menubar_box, clock_label, TRUE, TRUE, 0);
+ clock_format = g_key_file_get_value (config, "greeter", "clock-format", NULL);
+ if (!clock_format)
+ clock_format = "%a, %H:%M";
+ clock_timeout_thread();
+ gdk_threads_add_timeout (1000, (GSourceFunc) clock_timeout_thread, NULL);
+ }
+#endif
/* Users combobox */
renderer = gtk_cell_renderer_text_new();
diff --git a/src/lightdm-gtk-greeter.glade b/src/lightdm-gtk-greeter.glade
index 8b85218..1e15843 100644
--- a/src/lightdm-gtk-greeter.glade
+++ b/src/lightdm-gtk-greeter.glade
@@ -1,161 +1,166 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.2 -->
+<!-- Generated with glade 3.16.1 -->
<interface>
- <requires lib="gtk+" version="3.0"/>
- <requires lib="greeter_menu_bar" version="1.0"/>
<object class="GtkAccelGroup" id="a11y_accelgroup"/>
<object class="GtkAccelGroup" id="power_accelgroup"/>
<object class="GtkWindow" id="panel_window">
<property name="name">panel_window</property>
<property name="can_focus">False</property>
- <property name="valign">start</property>
<property name="decorated">False</property>
<accel-groups>
<group name="a11y_accelgroup"/>
<group name="power_accelgroup"/>
</accel-groups>
<child>
- <object class="GreeterMenuBar" id="menubar">
- <property name="name">menubar</property>
+ <object class="GtkHBox" id="menubar_box">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="valign">start</property>
- <property name="hexpand">True</property>
- <property name="pack_direction">rtl</property>
- <signal name="key-press-event" handler="menubar_key_press_cb" swapped="no"/>
+ <property name="can_focus">False</property>
+ <property name="homogeneous">True</property>
<child>
- <object class="GtkMenuItem" id="power_menuitem">
- <property name="name">power_menuitem</property>
+ <object class="GtkMenuBar" id="menubar">
+ <property name="name">menubar</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="power_menu">
+ <property name="halign">fill</property>
+ <property name="pack_direction">rtl</property>
+ <signal name="key-press-event" handler="menubar_key_press_cb" swapped="no"/>
+ <child>
+ <object class="GtkMenuItem" id="power_menuitem">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="accel_group">power_accelgroup</property>
- <child>
- <object class="GtkMenuItem" id="suspend_menuitem">
+ <property name="can_focus">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="power_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Suspend</property>
- <signal name="activate" handler="suspend_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="hibernate_menuitem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Hibernate</property>
- <signal name="activate" handler="hibernate_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="restart_menuitem">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Restart...</property>
- <signal name="activate" handler="restart_cb" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="shutdown_menuitem">
- <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="accel_path">&lt;Login&gt;/power/shutdown</property>
- <property name="label" translatable="yes">Shut Down...</property>
- <signal name="activate" handler="shutdown_cb" swapped="no"/>
+ <property name="accel_group">power_accelgroup</property>
+ <child>
+ <object class="GtkMenuItem" id="suspend_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Suspend</property>
+ <signal name="activate" handler="suspend_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="hibernate_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Hibernate</property>
+ <signal name="activate" handler="hibernate_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="restart_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Restart...</property>
+ <signal name="activate" handler="restart_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="shutdown_menuitem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_path">&lt;Login&gt;/power/shutdown</property>
+ <property name="label" translatable="yes">Shut Down...</property>
+ <signal name="activate" handler="shutdown_cb" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="a11y_menuitem">
- <property name="name">a11y_menuitem</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="a11y_menu">
+ <child>
+ <object class="GtkMenuItem" id="a11y_menuitem">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="accel_group">a11y_accelgroup</property>
- <child>
- <object class="GtkCheckMenuItem" id="large_font_menuitem">
- <property name="use_action_appearance">False</property>
+ <property name="can_focus">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="a11y_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="accel_path">&lt;Login&gt;/a11y/font</property>
- <property name="label" translatable="yes">Large Font</property>
- <signal name="toggled" handler="a11y_font_cb" swapped="no"/>
+ <property name="accel_group">a11y_accelgroup</property>
+ <child>
+ <object class="GtkCheckMenuItem" id="large_font_menuitem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_path">&lt;Login&gt;/a11y/font</property>
+ <property name="label" translatable="yes">Large Font</property>
+ <signal name="toggled" handler="a11y_font_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="high_contrast_menuitem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_path">&lt;Login&gt;/a11y/contrast</property>
+ <property name="label" translatable="yes">High Contrast</property>
+ <signal name="toggled" handler="a11y_contrast_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckMenuItem" id="keyboard_menuitem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="accel_path">&lt;Login&gt;/a11y/keyboard</property>
+ <property name="label" translatable="yes">On Screen Keyboard</property>
+ <property name="use_underline">True</property>
+ <signal name="toggled" handler="a11y_keyboard_cb" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
- <child>
- <object class="GtkCheckMenuItem" id="high_contrast_menuitem">
- <property name="use_action_appearance">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="language_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">[language_code]</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="language_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="accel_path">&lt;Login&gt;/a11y/contrast</property>
- <property name="label" translatable="yes">High Contrast</property>
- <signal name="toggled" handler="a11y_contrast_cb" swapped="no"/>
</object>
</child>
- <child>
- <object class="GtkCheckMenuItem" id="keyboard_menuitem">
- <property name="use_action_appearance">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="session_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="session_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="accel_path">&lt;Login&gt;/a11y/keyboard</property>
- <property name="label" translatable="yes">On Screen Keyboard</property>
- <property name="use_underline">True</property>
- <signal name="toggled" handler="a11y_keyboard_cb" swapped="no"/>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="language_menuitem">
- <property name="name">language_menuitem</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">[language_code]</property>
- <child type="submenu">
- <object class="GtkMenu" id="language_menu">
- <property name="visible">True</property>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="clock_menuitem">
+ <property name="name">clock_menuitem</property>
+ <property name="visible">False</property>
<property name="can_focus">False</property>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkMenuItem" id="session_menuitem">
- <property name="name">session_menuitem</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child type="submenu">
- <object class="GtkMenu" id="session_menu">
- <property name="visible">True</property>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="host_menuitem">
+ <property name="name">host_menuitem</property>
+ <property name="visible">False</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="clock_menuitem">
- <property name="name">clock_menuitem</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- </child>
- <child>
- <object class="GtkSeparatorMenuItem" id="host_menuitem">
- <property name="name">host_menuitem</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
</child>
</object>
</child>