diff options
author | Andrew P. <pan.pav.7c5@gmail.com> | 2014-05-14 01:52:42 +0300 |
---|---|---|
committer | Andrew P. <pan.pav.7c5@gmail.com> | 2014-05-14 01:52:42 +0300 |
commit | 26741cccf350e2c80cea10612b49e0a51cd10211 (patch) | |
tree | 3a021a4182c2b4560abb12bd84ed53508c3dda54 | |
parent | c71cc7a05b6fc62b3d70cf16722bda3778fb227c (diff) | |
download | lightdm-gtk-greeter-git-26741cccf350e2c80cea10612b49e0a51cd10211.tar.gz |
GTK2 compatability
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/greetermenubar.c | 20 | ||||
-rw-r--r-- | src/lightdm-gtk-greeter.c | 34 | ||||
-rw-r--r-- | src/lightdm-gtk-greeter.glade | 229 |
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"><Login>/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"><Login>/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"><Login>/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"><Login>/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"><Login>/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"><Login>/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"><Login>/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"><Login>/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> |