diff options
| author | Sebastien Bacher <[email protected]> | 2011-08-24 10:45:15 +0200 |
|---|---|---|
| committer | git-ubuntu importer <[email protected]> | 2011-08-24 09:15:12 +0000 |
| commit | ef1dcf34db415d90562a54d097a2a44c2681be3d (patch) | |
| tree | dc08158f80a99db652fb801f5d3bec301ffdfb04 | |
| parent | f7119b99a814f8a6b5500df4304f570aeb12689d (diff) | |
| parent | 6a6cdd6c34e19ac8d8855ef77a822e6d266d335f (diff) | |
0.0.3-0ubuntu1 (patches applied)applied/0.0.3-0ubuntu1
Imported using git-ubuntu import.
| -rw-r--r-- | Makefile.in | 3 | ||||
| -rw-r--r-- | NEWS | 3 | ||||
| -rw-r--r-- | TODO | 1 | ||||
| -rwxr-xr-x | configure | 40 | ||||
| -rw-r--r-- | configure.ac | 3 | ||||
| -rw-r--r-- | data/Makefile.am | 4 | ||||
| -rw-r--r-- | data/Makefile.in | 60 | ||||
| -rw-r--r-- | data/cog.png | bin | 0 -> 3253 bytes | |||
| -rw-r--r-- | debian/changelog | 7 | ||||
| -rw-r--r-- | debian/patches/series | 1 | ||||
| -rw-r--r-- | debian/patches/update_to_trunk.patch | 433 | ||||
| -rw-r--r-- | src/Makefile.am | 4 | ||||
| -rw-r--r-- | src/Makefile.in | 35 | ||||
| -rw-r--r-- | src/config.vapi | 2 | ||||
| -rw-r--r-- | src/fixes.vapi | 26 | ||||
| -rw-r--r-- | src/settings-daemon.c | 429 | ||||
| -rw-r--r-- | src/unity-greeter.c | 327 | ||||
| -rw-r--r-- | src/unity-greeter.vala | 22 | ||||
| -rw-r--r-- | src/user-list.c | 714 | ||||
| -rw-r--r-- | src/user-list.vala | 112 |
20 files changed, 1424 insertions, 802 deletions
diff --git a/Makefile.in b/Makefile.in index 924302b0..c8d155cd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -35,7 +35,7 @@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ - TODO compile depcomp install-sh missing + compile depcomp install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -125,6 +125,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EXEEXT = @EXEEXT@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -5,6 +5,9 @@ Overview of changes in unity-greeter 0.0.3 * Setup indicators to run in greeter mode * Allow OS name and version to be configurable * Run gnome-settings-daemon to get power management, a11y, xrandr etc + * Fix translations + * Get menubar with transparent background (finally) + * Update to latest design Overview of changes in unity-greeter 0.0.2 @@ -1 +0,0 @@ -Use ConsoleKit to see who is logged in
\ No newline at end of file @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for unity-greeter 0.0.2. +# Generated by GNU Autoconf 2.68 for unity-greeter 0.0.3. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -616,8 +616,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unity-greeter' PACKAGE_TARNAME='unity-greeter' -PACKAGE_VERSION='0.0.2' -PACKAGE_STRING='unity-greeter 0.0.2' +PACKAGE_VERSION='0.0.3' +PACKAGE_STRING='unity-greeter 0.0.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -625,6 +625,7 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +GETTEXT_PACKAGE DATADIRNAME ALL_LINGUAS INTLTOOL_PERL @@ -1309,7 +1310,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unity-greeter 0.0.2 to adapt to many kinds of systems. +\`configure' configures unity-greeter 0.0.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1375,7 +1376,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unity-greeter 0.0.2:";; + short | recursive ) echo "Configuration of unity-greeter 0.0.3:";; esac cat <<\_ACEOF @@ -1478,7 +1479,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unity-greeter configure 0.0.2 +unity-greeter configure 0.0.3 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1646,7 +1647,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unity-greeter $as_me 0.0.2, which was +It was created by unity-greeter $as_me 0.0.3, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2462,7 +2463,7 @@ fi # Define the identity of the package. PACKAGE='unity-greeter' - VERSION='0.0.2' + VERSION='0.0.3' cat >>confdefs.h <<_ACEOF @@ -3956,12 +3957,16 @@ if test -n "$UNITY_GREETER_CFLAGS"; then gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 @@ -3971,6 +3976,8 @@ if test -n "$UNITY_GREETER_CFLAGS"; then gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else @@ -3988,12 +3995,16 @@ if test -n "$UNITY_GREETER_LIBS"; then gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 @@ -4003,6 +4014,8 @@ if test -n "$UNITY_GREETER_LIBS"; then gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else @@ -4029,6 +4042,8 @@ fi gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft " 2>&1` else UNITY_GREETER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " @@ -4036,6 +4051,8 @@ fi gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft " 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -4046,6 +4063,8 @@ fi gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft ) were not met: $UNITY_GREETER_PKG_ERRORS @@ -4646,6 +4665,7 @@ _ACEOF + ac_config_files="$ac_config_files Makefile data/Makefile po/Makefile.in src/Makefile" cat >confcache <<\_ACEOF @@ -5190,7 +5210,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unity-greeter $as_me 0.0.2, which was +This file was extended by unity-greeter $as_me 0.0.3, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5256,7 +5276,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unity-greeter config.status 0.0.2 +unity-greeter config.status 0.0.3 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 83df2ca6..d7281464 100644 --- a/configure.ac +++ b/configure.ac @@ -20,6 +20,8 @@ PKG_CHECK_MODULES(UNITY_GREETER, [ gdk-x11-3.0 indicator3-0.4 liblightdm-gobject-1 >= 0.9.2 + freetype2 + cairo-ft ]) dnl ########################################################################### @@ -29,6 +31,7 @@ dnl ########################################################################### IT_PROG_INTLTOOL(0.35.0) GETTEXT_PACKAGE=unity-greeter AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", Gettext package) +AC_SUBST(GETTEXT_PACKAGE) dnl ########################################################################### dnl Files to generate diff --git a/data/Makefile.am b/data/Makefile.am index 2d573b5b..a930d985 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,5 +1,7 @@ -dist_xgreeter_DATA = unity-greeter.desktop xgreeterdir = $(datarootdir)/xgreeters +dist_xgreeter_DATA = unity-greeter.desktop + +dist_pkgdata_DATA = cog.png configdir = $(sysconfdir)/lightdm dist_config_DATA = unity-greeter.conf diff --git a/data/Makefile.in b/data/Makefile.in index 868196ed..22d8e2f5 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -33,8 +33,9 @@ NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data -DIST_COMMON = $(dist_config_DATA) $(dist_xgreeter_DATA) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(dist_config_DATA) $(dist_pkgdata_DATA) \ + $(dist_xgreeter_DATA) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -72,8 +73,9 @@ am__nobase_list = $(am__nobase_strip_setup); \ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(configdir)" "$(DESTDIR)$(xgreeterdir)" -DATA = $(dist_config_DATA) $(dist_xgreeter_DATA) +am__installdirs = "$(DESTDIR)$(configdir)" "$(DESTDIR)$(pkgdatadir)" \ + "$(DESTDIR)$(xgreeterdir)" +DATA = $(dist_config_DATA) $(dist_pkgdata_DATA) $(dist_xgreeter_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -95,6 +97,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EXEEXT = @EXEEXT@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -178,8 +181,9 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -dist_xgreeter_DATA = unity-greeter.desktop xgreeterdir = $(datarootdir)/xgreeters +dist_xgreeter_DATA = unity-greeter.desktop +dist_pkgdata_DATA = cog.png configdir = $(sysconfdir)/lightdm dist_config_DATA = unity-greeter.conf DISTCLEANFILES = \ @@ -238,6 +242,26 @@ uninstall-dist_configDATA: test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(configdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(configdir)" && rm -f $$files +install-dist_pkgdataDATA: $(dist_pkgdata_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ + done + +uninstall-dist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files install-dist_xgreeterDATA: $(dist_xgreeter_DATA) @$(NORMAL_INSTALL) test -z "$(xgreeterdir)" || $(MKDIR_P) "$(DESTDIR)$(xgreeterdir)" @@ -299,7 +323,7 @@ check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: - for dir in "$(DESTDIR)$(configdir)" "$(DESTDIR)$(xgreeterdir)"; do \ + for dir in "$(DESTDIR)$(configdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(xgreeterdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -348,7 +372,8 @@ info: info-am info-am: -install-data-am: install-dist_configDATA install-dist_xgreeterDATA +install-data-am: install-dist_configDATA install-dist_pkgdataDATA \ + install-dist_xgreeterDATA install-dvi: install-dvi-am @@ -392,21 +417,24 @@ ps: ps-am ps-am: -uninstall-am: uninstall-dist_configDATA uninstall-dist_xgreeterDATA +uninstall-am: uninstall-dist_configDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_xgreeterDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ - install-dist_configDATA install-dist_xgreeterDATA install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-dist_configDATA uninstall-dist_xgreeterDATA + install-dist_configDATA install-dist_pkgdataDATA \ + install-dist_xgreeterDATA install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am \ + uninstall-dist_configDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_xgreeterDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/data/cog.png b/data/cog.png Binary files differnew file mode 100644 index 00000000..c2124eec --- /dev/null +++ b/data/cog.png diff --git a/debian/changelog b/debian/changelog index 90d0b00c..b70b1391 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +unity-greeter (0.0.3-0ubuntu1) oneiric; urgency=low + + * New upstream version + * debian/patches/update_to_trunk.patch: dropped, it's in the new version + + -- Sebastien Bacher <[email protected]> Wed, 24 Aug 2011 10:45:15 +0200 + unity-greeter (0.0.2-0ubuntu4) oneiric; urgency=low * debian/patches/update_to_trunk.patch: updated to current trunk diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index cec842b2..00000000 --- a/debian/patches/series +++ /dev/null @@ -1 +0,0 @@ -update_to_trunk.patch diff --git a/debian/patches/update_to_trunk.patch b/debian/patches/update_to_trunk.patch deleted file mode 100644 index 722aacaa..00000000 --- a/debian/patches/update_to_trunk.patch +++ /dev/null @@ -1,433 +0,0 @@ -diff -Nur unity-greeter-0.0.2.vcs/configure.ac unity-greeter-0.0.2/configure.ac ---- unity-greeter-0.0.2.vcs/configure.ac 2011-08-23 15:47:58.727996235 +0200 -+++ unity-greeter-0.0.2/configure.ac 2011-08-23 15:48:11.975996739 +0200 -@@ -1,6 +1,6 @@ - dnl Process this file with autoconf to produce a configure script. - --AC_INIT(unity-greeter, 0.0.2) -+AC_INIT(unity-greeter, 0.0.3) - AC_CONFIG_MACRO_DIR(m4) - AM_INIT_AUTOMAKE - AM_PROG_CC_C_O -diff -Nur unity-greeter-0.0.2.vcs/data/unity-greeter.conf unity-greeter-0.0.2/data/unity-greeter.conf ---- unity-greeter-0.0.2.vcs/data/unity-greeter.conf 2011-08-23 15:47:58.735996234 +0200 -+++ unity-greeter-0.0.2/data/unity-greeter.conf 2011-08-23 15:48:11.975996739 +0200 -@@ -1,5 +1,7 @@ - # - # background = Background file to use, either an image path or a color (e.g. #772953) -+# os-name = Name of this OS -+# os-version = Version of this OS - # theme-name = GTK+ theme to use - # font-name = Font to use - # xft-antialias = Whether to antialias Xft fonts (true or false) -@@ -9,7 +11,10 @@ - # - [greeter] - background=/usr/share/backgrounds/warty-final-ubuntu.png -+os-name=ubuntu -+os-version=11.10 - theme-name=Ambiance -+icon-theme-name=ubuntu-mono-dark - font-name=Ubuntu 11 - xft-antialias=true - xft-dpi=96 -diff -Nur unity-greeter-0.0.2.vcs/NEWS unity-greeter-0.0.2/NEWS ---- unity-greeter-0.0.2.vcs/NEWS 2011-08-23 15:47:58.715996233 +0200 -+++ unity-greeter-0.0.2/NEWS 2011-08-23 15:48:11.975996739 +0200 -@@ -1,11 +1,19 @@ --Overview of changes in lightdm 0.0.2 -+Overview of changes in unity-greeter 0.0.3 -+ -+ * Set icon theme -+ * Use power indicator -+ * Setup indicators to run in greeter mode -+ * Allow OS name and version to be configurable -+ * Run gnome-settings-daemon to get power management, a11y, xrandr etc -+ -+Overview of changes in unity-greeter 0.0.2 - - * Add copyright headers to .vala files -- * Update to work with LightDM 0.9 -+ * Update to work with lightdm 0.9 - * Add a config file and load Ambiance theme - * Fit to primary monitor - * Set root background - --Overview of changes in lightdm 0.0.1 -+Overview of changes in unity-greeter 0.0.1 - - * Initial release -diff -Nur unity-greeter-0.0.2.vcs/po/POTFILES.in unity-greeter-0.0.2/po/POTFILES.in ---- unity-greeter-0.0.2.vcs/po/POTFILES.in 2011-08-23 15:47:58.719996234 +0200 -+++ unity-greeter-0.0.2/po/POTFILES.in 2011-08-23 15:48:11.975996739 +0200 -@@ -1,3 +1,5 @@ - # List of source files containing translatable strings. - # Please keep this file sorted alphabetically. -+src/settings-daemon.vala - src/unity-greeter.vala -+src/user-list.vala -diff -Nur unity-greeter-0.0.2.vcs/po/POTFILES.skip unity-greeter-0.0.2/po/POTFILES.skip ---- unity-greeter-0.0.2.vcs/po/POTFILES.skip 2011-08-23 15:47:58.719996234 +0200 -+++ unity-greeter-0.0.2/po/POTFILES.skip 2011-08-23 15:48:11.979996739 +0200 -@@ -1 +1,3 @@ -+src/settings-daemon.c - src/unity-greeter.c -+src/user-list.c -diff -Nur unity-greeter-0.0.2.vcs/src/Makefile.am unity-greeter-0.0.2/src/Makefile.am ---- unity-greeter-0.0.2.vcs/src/Makefile.am 2011-08-23 15:47:58.731996234 +0200 -+++ unity-greeter-0.0.2/src/Makefile.am 2011-08-23 15:48:11.979996739 +0200 -@@ -4,6 +4,7 @@ - config.vapi \ - fixes.vapi \ - indicator.vapi \ -+ settings-daemon.vala \ - unity-greeter.vala \ - user-list.vala - -diff -Nur unity-greeter-0.0.2.vcs/src/settings-daemon.vala unity-greeter-0.0.2/src/settings-daemon.vala ---- unity-greeter-0.0.2.vcs/src/settings-daemon.vala 1970-01-01 01:00:00.000000000 +0100 -+++ unity-greeter-0.0.2/src/settings-daemon.vala 2011-08-23 15:48:11.979996739 +0200 -@@ -0,0 +1,96 @@ -+/* -*- Mode:Vala; indent-tabs-mode:nil; tab-width:4 -*- -+ * -+ * Copyright (C) 2011 Canonical Ltd -+ * -+ * This program is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program. If not, see <http://www.gnu.org/licenses/>. -+ * -+ * Authored by: Michael Terry <[email protected]> -+ */ -+ -+public class SettingsDaemon : Object -+{ -+ public async void start () -+ { -+ configure (); -+ yield run (); -+ } -+ -+ private void configure () -+ { -+ string[] disabled = {"org.gnome.settings-daemon.plugins.background", -+ "org.gnome.settings-daemon.plugins.clipboard", -+ "org.gnome.settings-daemon.plugins.font", -+ "org.gnome.settings-daemon.plugins.gconf", -+ "org.gnome.settings-daemon.plugins.housekeeping", -+ "org.gnome.settings-daemon.plugins.keybindings", -+ "org.gnome.settings-daemon.plugins.keyboard", -+ "org.gnome.settings-daemon.plugins.media-keys", -+ "org.gnome.settings-daemon.plugins.mouse", -+ "org.gnome.settings-daemon.plugins.print-notifications", -+ "org.gnome.settings-daemon.plugins.smartcard", -+ "org.gnome.settings-daemon.plugins.sound", -+ "org.gnome.settings-daemon.plugins.wacom", -+ "org.gnome.settings-daemon.plugins.xsettings"}; -+ -+ string[] enabled = {"org.gnome.settings-daemon.plugins.a11y-keyboard", -+ "org.gnome.settings-daemon.plugins.a11y-settings", -+ "org.gnome.settings-daemon.plugins.color", -+ "org.gnome.settings-daemon.plugins.cursor", -+ "org.gnome.settings-daemon.plugins.power", -+ "org.gnome.settings-daemon.plugins.xrandr"}; -+ -+ Settings settings; -+ -+ foreach (weak string schema in disabled) -+ { -+ settings = new Settings (schema); -+ settings.set_boolean ("active", false); -+ } -+ -+ foreach (weak string schema in enabled) -+ { -+ settings = new Settings (schema); -+ settings.set_boolean ("active", true); -+ } -+ -+ /* We want to block the screensaver from being activated by g-s-d or -+ any of the indicators. So we own the name, preventing dbus -+ activation by anyone else. -+ If the screensaver were allowed to start, it would disable X's -+ builtin blanking logic which we do use and instead, blanking would -+ require gnome-session and it's Presence DBus interface to be run. */ -+ GLib.Bus.own_name (GLib.BusType.SESSION, "org.gnome.ScreenSaver", -+ GLib.BusNameOwnerFlags.NONE); -+ } -+ -+ private async void run () -+ { -+ /* Activate g-s-d over dbus */ -+ try -+ { -+ var proxy = new GLib.DBusProxy.for_bus_sync (GLib.BusType.SESSION, -+ GLib.DBusProxyFlags.NONE, null, -+ "org.gnome.SettingsDaemon", -+ "/org/gnome/SettingsDaemon", -+ "org.gnome.SettingsDaemon", -+ null); -+ -+ /* This tells g-s-d to activate its plugins */ -+ yield proxy.call ("Awake", null, GLib.DBusCallFlags.NONE, -1, null); -+ } -+ catch (Error e) -+ { -+ debug ("Could not start gnome-settings-daemon over DBus: %s", e.message); -+ } -+ } -+} -diff -Nur unity-greeter-0.0.2.vcs/src/unity-greeter.vala unity-greeter-0.0.2/src/unity-greeter.vala ---- unity-greeter-0.0.2.vcs/src/unity-greeter.vala 2011-08-23 15:47:58.731996234 +0200 -+++ unity-greeter-0.0.2/src/unity-greeter.vala 2011-08-23 15:48:11.979996739 +0200 -@@ -35,6 +35,8 @@ - - private static Cairo.Surface background_surface; - -+ private SettingsDaemon settings_daemon; -+ - private UserList user_list; - - private Gtk.Window main_window; -@@ -63,11 +65,19 @@ - } - } - -+ if (!test_mode) -+ { -+ settings_daemon = new SettingsDaemon (); -+ settings_daemon.start (); -+ } -+ - user_list = new UserList (); - user_list.user_selected.connect (user_selected_cb); - user_list.respond_to_prompt.connect (respond_to_prompt_cb); - user_list.start_session.connect (start_session_cb); - user_list.default_background = get_config_value ("greeter", "background", "#000000"); -+ user_list.os_name = get_config_value ("greeter", "os-name", "ubuntu"); -+ user_list.os_version = get_config_value ("greeter", "os-version", ""); - user_list.show (); - - foreach (var session in LightDM.get_sessions ()) -@@ -330,9 +340,11 @@ - X.ClearWindow (Gdk.X11Display.get_xdisplay (screen.get_display ()), Gdk.X11Window.get_xid (screen.get_root_window ())); - } - -- - public static int main (string[] args) - { -+ /* Disable the stupid global menubar */ -+ Environment.unset_variable ("UBUNTU_MENUPROXY"); -+ - Gtk.init (ref args); - - /* Set the cursor to not be the crap default */ -@@ -380,6 +392,9 @@ - var value = get_config_value ("greeter", "theme-name"); - if (value != null) - settings.set ("gtk-theme-name", value, null); -+ value = get_config_value ("greeter", "icon-theme-name"); -+ if (value != null) -+ settings.set ("gtk-icon-theme-name", value, null); - value = get_config_value ("greeter", "font-name"); - if (value != null) - settings.set ("gtk-font-name", value, null); -diff -Nur unity-greeter-0.0.2.vcs/src/user-list.vala unity-greeter-0.0.2/src/user-list.vala ---- unity-greeter-0.0.2.vcs/src/user-list.vala 2011-08-23 15:47:58.731996234 +0200 -+++ unity-greeter-0.0.2/src/user-list.vala 2011-08-23 15:48:11.983996738 +0200 -@@ -49,6 +49,8 @@ - public class UserList : Gtk.Container - { - public string default_background = "#000000"; -+ public string os_name = ""; -+ public string os_version = ""; - - private int grid_size = 40; - private int grid_x_offset; -@@ -147,10 +149,48 @@ - - options_menu = new Gtk.Menu (); - -+ setup_indicators (); -+ } -+ -+ async void greeter_set_env (string key, string val) -+ { -+ GLib.Environment.set_variable (key, val, true); -+ -+ /* And also set it in the DBus activation environment so that any -+ * indicator services pick it up. */ -+ try -+ { -+ var proxy = new GLib.DBusProxy.for_bus_sync (GLib.BusType.SESSION, -+ GLib.DBusProxyFlags.NONE, null, -+ "org.freedesktop.DBus", -+ "/org/freedesktop/DBus", -+ "org.freedesktop.DBus", -+ null); -+ -+ var builder = new GLib.VariantBuilder (GLib.VariantType.ARRAY); -+ builder.add ("{ss}", key, val); -+ -+ yield proxy.call ("UpdateActivationEnvironment", -+ new GLib.Variant ("(a{ss})", builder), -+ GLib.DBusCallFlags.NONE, -1, null); -+ } -+ catch (Error e) -+ { -+ warning ("Could not get set environment for indicators: %s", e.message); -+ return; -+ } -+ } -+ -+ async void setup_indicators () -+ { -+ greeter_set_env ("INDICATOR_GREETER_MODE", "1"); // reduced functionality -+ greeter_set_env ("GIO_USE_VFS", "local"); // no gvfsd -+ greeter_set_env ("RUNNING_UNDER_GDM", "1"); // for gnome-settings-daemon -+ - load_indicator ("/usr/lib/indicators3/6/libsession.so"); - load_indicator ("/usr/lib/indicators3/6/libdatetime.so"); -+ load_indicator ("/usr/lib/indicators3/6/libpower.so"); - load_indicator ("/usr/lib/indicators3/6/libsoundmenu.so"); -- //load_indicator ("/usr/lib/indicators3/6/libapplication.so"); - } - - public void show_prompt (string text, bool secret = false) -@@ -581,7 +621,7 @@ - entry.background_pattern = null; - } - } -- -+ - private void draw_entries (Cairo.Context c) - { - foreach (var entry in entries) -@@ -591,19 +631,19 @@ - - if (entry.is_active) - { -- c.move_to (0, 0.25 * grid_size); -- c.rel_line_to (0.4 * grid_size, 0.25 * grid_size); -- c.rel_line_to (-0.4 * grid_size, 0.25 * grid_size); -+ c.move_to (0.1 * grid_size, 0.4 * grid_size); -+ c.rel_line_to (0.15 * grid_size, 0.1 * grid_size); -+ c.rel_line_to (-0.15 * grid_size, 0.1 * grid_size); - c.close_path (); -- c.set_source_rgb (1.0, 1.0, 1.0); -+ c.set_source_rgba (1.0, 1.0, 1.0, 0.5); - c.fill (); - } - -- c.set_font_size (0.6 * grid_size); -+ c.set_font_size (0.5 * grid_size); - Cairo.TextExtents extents; - c.text_extents (entry.label, out extents); - c.move_to (grid_size / 2, grid_size - (grid_size - (extents.height)) / 2); -- c.set_source_rgb (1.0, 1.0, 1.0); -+ c.set_source_rgba (1.0, 1.0, 1.0, 0.5); - c.show_text (entry.label); - - c.restore (); -@@ -676,7 +716,8 @@ - - /* Draw overlay */ - bc.set_source (overlay); -- bc.paint (); -+ bc.rectangle (grid_size - 1, grid_size - 1, get_allocated_width () - grid_size * 2 + 2, get_allocated_height () - grid_size * 2 + 2); -+ bc.fill (); - - var pattern = new Cairo.Pattern.for_surface (surface); - pattern.set_extend (Cairo.Extend.REPEAT); -@@ -728,16 +769,16 @@ - c.show_text (utsname.nodename); - - /* Release */ -+ Cairo.TextExtents logo_extents; - c.set_font_size (0.8 * grid_size); -- c.move_to (grid_size, get_allocated_height () - grid_size); -+ c.text_extents (os_name, out logo_extents); -+ c.move_to (grid_size, get_allocated_height () - grid_size - (grid_size - logo_extents.height) / 2); - c.set_source_rgba (1.0, 1.0, 1.0, 0.5); -- c.show_text ("ubuntu"); -- Cairo.TextExtents logo_extents; -- c.text_extents ("ubuntu", out logo_extents); -+ c.show_text (os_name); - c.set_font_size (0.4 * grid_size); -- c.move_to (grid_size + logo_extents.width, get_allocated_height () - grid_size); -+ c.move_to (grid_size + logo_extents.width, get_allocated_height () - grid_size - (grid_size - logo_extents.height) / 2); - c.set_source_rgba (1.0, 1.0, 1.0, 0.5); -- c.show_text (" 11.10"); -+ c.show_text (" " + os_version); - - int base_x, base_y; - get_selected_location (out base_x, out base_y); -@@ -765,26 +806,44 @@ - c.restore (); - - /* Draw box */ -- cairo_rounded_rectangle (c, 0, 0, box_width * grid_size, box_height * grid_size, 0.2 * grid_size); -- c.set_source_rgba (0.0, 0.0, 0.0, 0.5); -- c.fill (); -+ var border = 0.1 * grid_size; -+ var box_w = box_width * grid_size - border * 2; -+ var box_h = box_height * grid_size - border * 2; -+ var box_r = 0.2 * grid_size; -+ cairo_rounded_rectangle (c, -+ border + 0.5, border + 0.5, -+ box_w - 1, box_h - 1, -+ box_r); -+ c.set_source_rgba (0.0, 0.0, 0.0, 0.4); -+ c.fill_preserve (); -+ c.set_line_width (1.0); -+ c.set_source_rgba (1.0, 1.0, 1.0, 0.25); -+ c.stroke (); -+ -+ cairo_rounded_rectangle (c, -+ border + 0.5 + 2, border + 0.5 + 2, -+ box_w - 5, box_h - 5, -+ box_r - 2); -+ c.stroke (); - - /* Selected item */ - if (selected_entry != null) - { - Cairo.TextExtents extents; -- c.set_font_size (0.6 * grid_size); -+ c.set_font_size (0.5 * grid_size); - c.text_extents (selected_entry.label, out extents); -+ var text_y = grid_size - (grid_size - border - extents.height) / 4; -+ - if (selected_entry.is_active) - { -- c.move_to (0, (grid_size - extents.height) / 2 + 0.25 * grid_size); -- c.rel_line_to (0.4 * grid_size, 0.25 * grid_size); -- c.rel_line_to (-0.4 * grid_size, 0.25 * grid_size); -+ c.move_to (0.1 * grid_size, text_y - extents.height / 2 - 0.1 * grid_size); -+ c.rel_line_to (0.15 * grid_size, 0.1 * grid_size); -+ c.rel_line_to (-0.15 * grid_size, 0.1 * grid_size); - c.close_path (); - c.set_source_rgb (1.0, 1.0, 1.0); - c.fill (); - } -- c.move_to (grid_size / 2, grid_size); -+ c.move_to (grid_size / 2, text_y); - c.set_source_rgb (1.0, 1.0, 1.0); - c.show_text (selected_entry.label); - } -@@ -822,7 +881,7 @@ - var w = width - radius * 2; - var h = height - radius * 2; - var kappa = 0.5522847498 * radius; -- c.move_to (radius, 0); -+ c.move_to (x + radius, y); - c.rel_line_to (w, 0); - c.rel_curve_to (kappa, 0, radius, radius - kappa, radius, radius); - c.rel_line_to (0, h); diff --git a/src/Makefile.am b/src/Makefile.am index 66c77997..78ce6cc7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -12,8 +12,10 @@ unity_greeter_CFLAGS = \ $(UNITY_GREETER_CFLAGS) \ $(WARN_CFLAGS) \ -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" \ + -DLOCALEDIR=\""$(localedir)"\" \ -DVERSION=\"$(VERSION)\" \ - -DCONFIG_FILE=\""$(sysconfdir)/lightdm/unity-greeter.conf"\" + -DCONFIG_FILE=\""$(sysconfdir)/lightdm/unity-greeter.conf"\" \ + -DPKGDATADIR=\""$(pkgdatadir)"\" unity_greeter_VALAFLAGS = \ --pkg posix \ diff --git a/src/Makefile.in b/src/Makefile.in index 601294bb..ac3f749b 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -35,7 +35,8 @@ POST_UNINSTALL = : sbin_PROGRAMS = unity-greeter$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - unity-greeter.c unity_greeter_vala.stamp user-list.c + settings-daemon.c unity-greeter.c unity_greeter_vala.stamp \ + user-list.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -46,7 +47,8 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" PROGRAMS = $(sbin_PROGRAMS) -am_unity_greeter_OBJECTS = unity_greeter-unity-greeter.$(OBJEXT) \ +am_unity_greeter_OBJECTS = unity_greeter-settings-daemon.$(OBJEXT) \ + unity_greeter-unity-greeter.$(OBJEXT) \ unity_greeter-user-list.$(OBJEXT) unity_greeter_OBJECTS = $(am_unity_greeter_OBJECTS) am__DEPENDENCIES_1 = @@ -105,6 +107,7 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EXEEXT = @EXEEXT@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -192,6 +195,7 @@ unity_greeter_SOURCES = \ config.vapi \ fixes.vapi \ indicator.vapi \ + settings-daemon.vala \ unity-greeter.vala \ user-list.vala @@ -199,8 +203,10 @@ unity_greeter_CFLAGS = \ $(UNITY_GREETER_CFLAGS) \ $(WARN_CFLAGS) \ -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" \ + -DLOCALEDIR=\""$(localedir)"\" \ -DVERSION=\"$(VERSION)\" \ - -DCONFIG_FILE=\""$(sysconfdir)/lightdm/unity-greeter.conf"\" + -DCONFIG_FILE=\""$(sysconfdir)/lightdm/unity-greeter.conf"\" \ + -DPKGDATADIR=\""$(pkgdatadir)"\" unity_greeter_VALAFLAGS = \ --pkg posix \ @@ -296,6 +302,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unity_greeter-settings-daemon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unity_greeter-unity-greeter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unity_greeter-user-list.Po@am__quote@ @@ -315,6 +322,22 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +unity_greeter-settings-daemon.o: settings-daemon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -MT unity_greeter-settings-daemon.o -MD -MP -MF $(DEPDIR)/unity_greeter-settings-daemon.Tpo -c -o unity_greeter-settings-daemon.o `test -f 'settings-daemon.c' || echo '$(srcdir)/'`settings-daemon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unity_greeter-settings-daemon.Tpo $(DEPDIR)/unity_greeter-settings-daemon.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='settings-daemon.c' object='unity_greeter-settings-daemon.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -c -o unity_greeter-settings-daemon.o `test -f 'settings-daemon.c' || echo '$(srcdir)/'`settings-daemon.c + +unity_greeter-settings-daemon.obj: settings-daemon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -MT unity_greeter-settings-daemon.obj -MD -MP -MF $(DEPDIR)/unity_greeter-settings-daemon.Tpo -c -o unity_greeter-settings-daemon.obj `if test -f 'settings-daemon.c'; then $(CYGPATH_W) 'settings-daemon.c'; else $(CYGPATH_W) '$(srcdir)/settings-daemon.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unity_greeter-settings-daemon.Tpo $(DEPDIR)/unity_greeter-settings-daemon.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='settings-daemon.c' object='unity_greeter-settings-daemon.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -c -o unity_greeter-settings-daemon.obj `if test -f 'settings-daemon.c'; then $(CYGPATH_W) 'settings-daemon.c'; else $(CYGPATH_W) '$(srcdir)/settings-daemon.c'; fi` + unity_greeter-unity-greeter.o: unity-greeter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -MT unity_greeter-unity-greeter.o -MD -MP -MF $(DEPDIR)/unity_greeter-unity-greeter.Tpo -c -o unity_greeter-unity-greeter.o `test -f 'unity-greeter.c' || echo '$(srcdir)/'`unity-greeter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unity_greeter-unity-greeter.Tpo $(DEPDIR)/unity_greeter-unity-greeter.Po @@ -346,6 +369,11 @@ unity_greeter-user-list.obj: user-list.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='user-list.c' object='unity_greeter-user-list.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unity_greeter_CFLAGS) $(CFLAGS) -c -o unity_greeter-user-list.obj `if test -f 'user-list.c'; then $(CYGPATH_W) 'user-list.c'; else $(CYGPATH_W) '$(srcdir)/user-list.c'; fi` +$(srcdir)/settings-daemon.c: $(srcdir)/unity_greeter_vala.stamp + @if test -f $@; then :; else \ + rm -f $(srcdir)/unity_greeter_vala.stamp; \ + $(am__cd) $(srcdir) && $(MAKE) $(AM_MAKEFLAGS) unity_greeter_vala.stamp; \ + fi $(srcdir)/unity-greeter.c: $(srcdir)/unity_greeter_vala.stamp @if test -f $@; then :; else \ rm -f $(srcdir)/unity_greeter_vala.stamp; \ @@ -475,6 +503,7 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -rm -f settings-daemon.c -rm -f unity-greeter.c -rm -f unity_greeter_vala.stamp -rm -f user-list.c diff --git a/src/config.vapi b/src/config.vapi index d10c1ea3..fc9b59b0 100644 --- a/src/config.vapi +++ b/src/config.vapi @@ -2,6 +2,8 @@ namespace Config { public const string GETTEXT_PACKAGE; + public const string LOCALEDIR; public const string VERSION; public const string CONFIG_FILE; + public const string PKGDATADIR; } diff --git a/src/fixes.vapi b/src/fixes.vapi index 1d34aa1f..1a37dc2a 100644 --- a/src/fixes.vapi +++ b/src/fixes.vapi @@ -8,4 +8,28 @@ namespace X [CCode (cname = "XClearWindow")] public int ClearWindow (X.Display display, X.Window w); public const int RetainPermanent; -}
\ No newline at end of file +} + +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "ft2build.h")] +namespace FreeType +{ + [SimpleType] + [CCode (cname = "FT_Library")] + public struct Library { } + + [SimpleType] + [CCode (cname = "FT_Face")] + public struct Face { } + + [CCode (cname = "FT_Init_FreeType")] + public void init (out Library library); + + [CCode (cname = "FT_New_Face")] + public void new_face (Library library, string filepathname, int face_index, out Face face); +} + +namespace Cairo +{ + [CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "cairo-ft.h")] + public Cairo.FontFace ft_font_face_create_for_ft_face (FreeType.Face face, int load_flags); +} diff --git a/src/settings-daemon.c b/src/settings-daemon.c new file mode 100644 index 00000000..e5026681 --- /dev/null +++ b/src/settings-daemon.c @@ -0,0 +1,429 @@ +/* settings-daemon.c generated by valac 0.13.1, the Vala compiler + * generated from settings-daemon.vala, do not modify */ + +/* -*- Mode:Vala; indent-tabs-mode:nil; tab-width:4 -*- + * + * Copyright (C) 2011 Canonical Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Authored by: Michael Terry <[email protected]> + */ + +#include <glib.h> +#include <glib-object.h> +#include <gio/gio.h> +#include <stdlib.h> +#include <string.h> + + +#define TYPE_SETTINGS_DAEMON (settings_daemon_get_type ()) +#define SETTINGS_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SETTINGS_DAEMON, SettingsDaemon)) +#define SETTINGS_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SETTINGS_DAEMON, SettingsDaemonClass)) +#define IS_SETTINGS_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SETTINGS_DAEMON)) +#define IS_SETTINGS_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SETTINGS_DAEMON)) +#define SETTINGS_DAEMON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SETTINGS_DAEMON, SettingsDaemonClass)) + +typedef struct _SettingsDaemon SettingsDaemon; +typedef struct _SettingsDaemonClass SettingsDaemonClass; +typedef struct _SettingsDaemonPrivate SettingsDaemonPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef struct _SettingsDaemonStartData SettingsDaemonStartData; +#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +typedef struct _SettingsDaemonRunData SettingsDaemonRunData; + +struct _SettingsDaemon { + GObject parent_instance; + SettingsDaemonPrivate * priv; +}; + +struct _SettingsDaemonClass { + GObjectClass parent_class; +}; + +struct _SettingsDaemonStartData { + int _state_; + GObject* _source_object_; + GAsyncResult* _res_; + GSimpleAsyncResult* _async_result; + SettingsDaemon* self; +}; + +struct _SettingsDaemonRunData { + int _state_; + GObject* _source_object_; + GAsyncResult* _res_; + GSimpleAsyncResult* _async_result; + SettingsDaemon* self; + GDBusProxy* _tmp0_; + GDBusProxy* proxy; + GVariant* _tmp1_; + GVariant* _tmp2_; + GError* e; + GError * _inner_error_; +}; + + +static gpointer settings_daemon_parent_class = NULL; + +GType settings_daemon_get_type (void) G_GNUC_CONST; +enum { + SETTINGS_DAEMON_DUMMY_PROPERTY +}; +static void settings_daemon_start_data_free (gpointer _data); +void settings_daemon_start (SettingsDaemon* self, GAsyncReadyCallback _callback_, gpointer _user_data_); +void settings_daemon_start_finish (SettingsDaemon* self, GAsyncResult* _res_); +static gboolean settings_daemon_start_co (SettingsDaemonStartData* _data_); +static void settings_daemon_configure (SettingsDaemon* self); +static void settings_daemon_run (SettingsDaemon* self, GAsyncReadyCallback _callback_, gpointer _user_data_); +static void settings_daemon_run_finish (SettingsDaemon* self, GAsyncResult* _res_); +static void settings_daemon_start_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_); +static void settings_daemon_run_data_free (gpointer _data); +static gboolean settings_daemon_run_co (SettingsDaemonRunData* _data_); +static void settings_daemon_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_); +SettingsDaemon* settings_daemon_new (void); +SettingsDaemon* settings_daemon_construct (GType object_type); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); + + +static void settings_daemon_start_data_free (gpointer _data) { + SettingsDaemonStartData* _data_; + _data_ = _data; + _g_object_unref0 (_data_->self); + g_slice_free (SettingsDaemonStartData, _data_); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +void settings_daemon_start (SettingsDaemon* self, GAsyncReadyCallback _callback_, gpointer _user_data_) { + SettingsDaemonStartData* _data_; + _data_ = g_slice_new0 (SettingsDaemonStartData); + _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, settings_daemon_start); + g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, settings_daemon_start_data_free); + _data_->self = _g_object_ref0 (self); + settings_daemon_start_co (_data_); +} + + +void settings_daemon_start_finish (SettingsDaemon* self, GAsyncResult* _res_) { + SettingsDaemonStartData* _data_; + _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_)); +} + + +static void settings_daemon_start_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) { + SettingsDaemonStartData* _data_; + _data_ = _user_data_; + _data_->_source_object_ = source_object; + _data_->_res_ = _res_; + settings_daemon_start_co (_data_); +} + + +static gboolean settings_daemon_start_co (SettingsDaemonStartData* _data_) { + switch (_data_->_state_) { + case 0: + goto _state_0; + case 1: + goto _state_1; + default: + g_assert_not_reached (); + } + _state_0: + settings_daemon_configure (_data_->self); + _data_->_state_ = 1; + settings_daemon_run (_data_->self, settings_daemon_start_ready, _data_); + return FALSE; + _state_1: + settings_daemon_run_finish (_data_->self, _data_->_res_); + if (_data_->_state_ == 0) { + g_simple_async_result_complete_in_idle (_data_->_async_result); + } else { + g_simple_async_result_complete (_data_->_async_result); + } + g_object_unref (_data_->_async_result); + return FALSE; +} + + +static void settings_daemon_configure (SettingsDaemon* self) { + gchar* _tmp0_; + gchar* _tmp1_; + gchar* _tmp2_; + gchar* _tmp3_; + gchar* _tmp4_; + gchar* _tmp5_; + gchar* _tmp6_; + gchar* _tmp7_; + gchar* _tmp8_; + gchar* _tmp9_; + gchar* _tmp10_; + gchar* _tmp11_; + gchar* _tmp12_; + gchar* _tmp13_; + gchar** _tmp14_ = NULL; + gchar** disabled; + gint disabled_length1; + gint _disabled_size_; + gchar* _tmp15_; + gchar* _tmp16_; + gchar* _tmp17_; + gchar* _tmp18_; + gchar* _tmp19_; + gchar* _tmp20_; + gchar** _tmp21_ = NULL; + gchar** enabled; + gint enabled_length1; + gint _enabled_size_; + GSettings* settings = NULL; + g_return_if_fail (self != NULL); + _tmp0_ = g_strdup ("org.gnome.settings-daemon.plugins.background"); + _tmp1_ = g_strdup ("org.gnome.settings-daemon.plugins.clipboard"); + _tmp2_ = g_strdup ("org.gnome.settings-daemon.plugins.font"); + _tmp3_ = g_strdup ("org.gnome.settings-daemon.plugins.gconf"); + _tmp4_ = g_strdup ("org.gnome.settings-daemon.plugins.housekeeping"); + _tmp5_ = g_strdup ("org.gnome.settings-daemon.plugins.keybindings"); + _tmp6_ = g_strdup ("org.gnome.settings-daemon.plugins.keyboard"); + _tmp7_ = g_strdup ("org.gnome.settings-daemon.plugins.media-keys"); + _tmp8_ = g_strdup ("org.gnome.settings-daemon.plugins.mouse"); + _tmp9_ = g_strdup ("org.gnome.settings-daemon.plugins.print-notifications"); + _tmp10_ = g_strdup ("org.gnome.settings-daemon.plugins.smartcard"); + _tmp11_ = g_strdup ("org.gnome.settings-daemon.plugins.sound"); + _tmp12_ = g_strdup ("org.gnome.settings-daemon.plugins.wacom"); + _tmp13_ = g_strdup ("org.gnome.settings-daemon.plugins.xsettings"); + _tmp14_ = g_new0 (gchar*, 14 + 1); + _tmp14_[0] = _tmp0_; + _tmp14_[1] = _tmp1_; + _tmp14_[2] = _tmp2_; + _tmp14_[3] = _tmp3_; + _tmp14_[4] = _tmp4_; + _tmp14_[5] = _tmp5_; + _tmp14_[6] = _tmp6_; + _tmp14_[7] = _tmp7_; + _tmp14_[8] = _tmp8_; + _tmp14_[9] = _tmp9_; + _tmp14_[10] = _tmp10_; + _tmp14_[11] = _tmp11_; + _tmp14_[12] = _tmp12_; + _tmp14_[13] = _tmp13_; + disabled = _tmp14_; + disabled_length1 = 14; + _disabled_size_ = disabled_length1; + _tmp15_ = g_strdup ("org.gnome.settings-daemon.plugins.a11y-keyboard"); + _tmp16_ = g_strdup ("org.gnome.settings-daemon.plugins.a11y-settings"); + _tmp17_ = g_strdup ("org.gnome.settings-daemon.plugins.color"); + _tmp18_ = g_strdup ("org.gnome.settings-daemon.plugins.cursor"); + _tmp19_ = g_strdup ("org.gnome.settings-daemon.plugins.power"); + _tmp20_ = g_strdup ("org.gnome.settings-daemon.plugins.xrandr"); + _tmp21_ = g_new0 (gchar*, 6 + 1); + _tmp21_[0] = _tmp15_; + _tmp21_[1] = _tmp16_; + _tmp21_[2] = _tmp17_; + _tmp21_[3] = _tmp18_; + _tmp21_[4] = _tmp19_; + _tmp21_[5] = _tmp20_; + enabled = _tmp21_; + enabled_length1 = 6; + _enabled_size_ = enabled_length1; + { + gchar** schema_collection = NULL; + gint schema_collection_length1 = 0; + gint _schema_collection_size_ = 0; + gint schema_it; + schema_collection = disabled; + schema_collection_length1 = disabled_length1; + for (schema_it = 0; schema_it < disabled_length1; schema_it = schema_it + 1) { + const gchar* schema = NULL; + schema = schema_collection[schema_it]; + { + GSettings* _tmp22_ = NULL; + _tmp22_ = g_settings_new (schema); + _g_object_unref0 (settings); + settings = _tmp22_; + g_settings_set_boolean (settings, "active", FALSE); + } + } + } + { + gchar** schema_collection = NULL; + gint schema_collection_length1 = 0; + gint _schema_collection_size_ = 0; + gint schema_it; + schema_collection = enabled; + schema_collection_length1 = enabled_length1; + for (schema_it = 0; schema_it < enabled_length1; schema_it = schema_it + 1) { + const gchar* schema = NULL; + schema = schema_collection[schema_it]; + { + GSettings* _tmp23_ = NULL; + _tmp23_ = g_settings_new (schema); + _g_object_unref0 (settings); + settings = _tmp23_; + g_settings_set_boolean (settings, "active", TRUE); + } + } + } + g_bus_own_name_with_closures (G_BUS_TYPE_SESSION, "org.gnome.ScreenSaver", G_BUS_NAME_OWNER_FLAGS_NONE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL))); + _g_object_unref0 (settings); + enabled = (_vala_array_free (enabled, enabled_length1, (GDestroyNotify) g_free), NULL); + disabled = (_vala_array_free (disabled, disabled_length1, (GDestroyNotify) g_free), NULL); +} + + +static void settings_daemon_run_data_free (gpointer _data) { + SettingsDaemonRunData* _data_; + _data_ = _data; + _g_object_unref0 (_data_->self); + g_slice_free (SettingsDaemonRunData, _data_); +} + + +static void settings_daemon_run (SettingsDaemon* self, GAsyncReadyCallback _callback_, gpointer _user_data_) { + SettingsDaemonRunData* _data_; + _data_ = g_slice_new0 (SettingsDaemonRunData); + _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, settings_daemon_run); + g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, settings_daemon_run_data_free); + _data_->self = _g_object_ref0 (self); + settings_daemon_run_co (_data_); +} + + +static void settings_daemon_run_finish (SettingsDaemon* self, GAsyncResult* _res_) { + SettingsDaemonRunData* _data_; + _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_)); +} + + +static void settings_daemon_run_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) { + SettingsDaemonRunData* _data_; + _data_ = _user_data_; + _data_->_source_object_ = source_object; + _data_->_res_ = _res_; + settings_daemon_run_co (_data_); +} + + +static gboolean settings_daemon_run_co (SettingsDaemonRunData* _data_) { + switch (_data_->_state_) { + case 0: + goto _state_0; + case 1: + goto _state_1; + default: + g_assert_not_reached (); + } + _state_0: + { + _data_->_tmp0_ = NULL; + _data_->_tmp0_ = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.gnome.SettingsDaemon", "/org/gnome/SettingsDaemon", "org.gnome.SettingsDaemon", NULL, &_data_->_inner_error_); + _data_->proxy = _data_->_tmp0_; + if (_data_->_inner_error_ != NULL) { + goto __catch0_g_error; + } + _data_->_state_ = 1; + g_dbus_proxy_call (_data_->proxy, "Awake", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, settings_daemon_run_ready, _data_); + return FALSE; + _state_1: + _data_->_tmp1_ = NULL; + _data_->_tmp1_ = g_dbus_proxy_call_finish (_data_->proxy, _data_->_res_, &_data_->_inner_error_); + _data_->_tmp2_ = _data_->_tmp1_; + _g_variant_unref0 (_data_->_tmp2_); + if (_data_->_inner_error_ != NULL) { + _g_object_unref0 (_data_->proxy); + goto __catch0_g_error; + } + _g_object_unref0 (_data_->proxy); + } + goto __finally0; + __catch0_g_error: + { + _data_->e = _data_->_inner_error_; + _data_->_inner_error_ = NULL; + g_debug ("settings-daemon.vala:93: Could not start gnome-settings-daemon over DB" \ +"us: %s", _data_->e->message); + _g_error_free0 (_data_->e); + } + __finally0: + if (_data_->_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code); + g_clear_error (&_data_->_inner_error_); + return FALSE; + } + if (_data_->_state_ == 0) { + g_simple_async_result_complete_in_idle (_data_->_async_result); + } else { + g_simple_async_result_complete (_data_->_async_result); + } + g_object_unref (_data_->_async_result); + return FALSE; +} + + +SettingsDaemon* settings_daemon_construct (GType object_type) { + SettingsDaemon * self = NULL; + self = (SettingsDaemon*) g_object_new (object_type, NULL); + return self; +} + + +SettingsDaemon* settings_daemon_new (void) { + return settings_daemon_construct (TYPE_SETTINGS_DAEMON); +} + + +static void settings_daemon_class_init (SettingsDaemonClass * klass) { + settings_daemon_parent_class = g_type_class_peek_parent (klass); +} + + +static void settings_daemon_instance_init (SettingsDaemon * self) { +} + + +GType settings_daemon_get_type (void) { + static volatile gsize settings_daemon_type_id__volatile = 0; + if (g_once_init_enter (&settings_daemon_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (SettingsDaemonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) settings_daemon_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SettingsDaemon), 0, (GInstanceInitFunc) settings_daemon_instance_init, NULL }; + GType settings_daemon_type_id; + settings_daemon_type_id = g_type_register_static (G_TYPE_OBJECT, "SettingsDaemon", &g_define_type_info, 0); + g_once_init_leave (&settings_daemon_type_id__volatile, settings_daemon_type_id); + } + return settings_daemon_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + + diff --git a/src/unity-greeter.c b/src/unity-greeter.c index 126761e0..f4c4c5b8 100644 --- a/src/unity-greeter.c +++ b/src/unity-greeter.c @@ -1,4 +1,4 @@ -/* unity-greeter.c generated by valac 0.13.0, the Vala compiler +/* unity-greeter.c generated by valac 0.13.1, the Vala compiler * generated from unity-greeter.vala, do not modify */ /* @@ -26,8 +26,9 @@ #include <stdlib.h> #include <string.h> #include <cairo.h> -#include <gdk/gdk.h> +#include <gio/gio.h> #include <glib/gi18n-lib.h> +#include <gdk/gdk.h> #include <X11/Xlib.h> #include <X11/Xatom.h> #include <X11/Xutil.h> @@ -51,6 +52,16 @@ typedef struct _UnityGreeter UnityGreeter; typedef struct _UnityGreeterClass UnityGreeterClass; typedef struct _UnityGreeterPrivate UnityGreeterPrivate; +#define TYPE_SETTINGS_DAEMON (settings_daemon_get_type ()) +#define SETTINGS_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SETTINGS_DAEMON, SettingsDaemon)) +#define SETTINGS_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SETTINGS_DAEMON, SettingsDaemonClass)) +#define IS_SETTINGS_DAEMON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SETTINGS_DAEMON)) +#define IS_SETTINGS_DAEMON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SETTINGS_DAEMON)) +#define SETTINGS_DAEMON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SETTINGS_DAEMON, SettingsDaemonClass)) + +typedef struct _SettingsDaemon SettingsDaemon; +typedef struct _SettingsDaemonClass SettingsDaemonClass; + #define TYPE_USER_LIST (user_list_get_type ()) #define USER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_USER_LIST, UserList)) #define USER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_USER_LIST, UserListClass)) @@ -85,6 +96,7 @@ struct _UnityGreeterClass { }; struct _UnityGreeterPrivate { + SettingsDaemon* settings_daemon; UserList* user_list; GtkWindow* main_window; LightDMGreeter* greeter; @@ -97,6 +109,8 @@ struct _UserList { GtkContainer parent_instance; UserListPrivate * priv; gchar* default_background; + gchar* os_name; + gchar* os_version; }; struct _UserListClass { @@ -125,6 +139,7 @@ void value_set_unity_greeter (GValue* value, gpointer v_object); void value_take_unity_greeter (GValue* value, gpointer v_object); gpointer value_get_unity_greeter (const GValue* value); GType unity_greeter_get_type (void) G_GNUC_CONST; +GType settings_daemon_get_type (void) G_GNUC_CONST; GType user_list_get_type (void) G_GNUC_CONST; #define UNITY_GREETER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_UNITY_GREETER, UnityGreeterPrivate)) enum { @@ -138,6 +153,10 @@ static void unity_greeter_show_prompt_cb (UnityGreeter* self, const gchar* text, static void _unity_greeter_show_prompt_cb_lightdm_greeter_show_prompt (LightDMGreeter* _sender, const gchar* text, LightDMPromptType type, gpointer self); static void unity_greeter_authentication_complete_cb (UnityGreeter* self); static void _unity_greeter_authentication_complete_cb_lightdm_greeter_authentication_complete (LightDMGreeter* _sender, gpointer self); +SettingsDaemon* settings_daemon_new (void); +SettingsDaemon* settings_daemon_construct (GType object_type); +void settings_daemon_start (SettingsDaemon* self, GAsyncReadyCallback _callback_, gpointer _user_data_); +void settings_daemon_start_finish (SettingsDaemon* self, GAsyncResult* _res_); UserList* user_list_new (void); UserList* user_list_construct (GType object_type); static void unity_greeter_user_selected_cb (UnityGreeter* self, const gchar* username); @@ -204,10 +223,12 @@ static gpointer _g_object_ref0 (gpointer self) { UnityGreeter* unity_greeter_construct (GType object_type) { UnityGreeter* self = NULL; LightDMGreeter* _tmp0_ = NULL; - UserList* _tmp1_ = NULL; - gchar* _tmp2_ = NULL; - GList* _tmp3_ = NULL; - GtkWindow* _tmp15_ = NULL; + UserList* _tmp2_ = NULL; + gchar* _tmp3_ = NULL; + gchar* _tmp4_ = NULL; + gchar* _tmp5_ = NULL; + GList* _tmp6_ = NULL; + GtkWindow* _tmp22_ = NULL; GError * _inner_error_ = NULL; self = (UnityGreeter*) g_type_create_instance (object_type); _tmp0_ = lightdm_greeter_new (); @@ -220,125 +241,146 @@ UnityGreeter* unity_greeter_construct (GType object_type) { { lightdm_greeter_connect_sync (self->priv->greeter, &_inner_error_); if (_inner_error_ != NULL) { - goto __catch0_g_error; + goto __catch1_g_error; } } - goto __finally0; - __catch0_g_error: + goto __finally1; + __catch1_g_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; - g_warning ("unity-greeter.vala:61: Failed to connect to LightDM daemon"); + g_warning ("unity-greeter.vala:63: Failed to connect to LightDM daemon"); exit (EXIT_FAILURE); _g_error_free0 (e); } - __finally0: + __finally1: if (_inner_error_ != NULL) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; } } - _tmp1_ = user_list_new (); + if (!unity_greeter_test_mode) { + SettingsDaemon* _tmp1_ = NULL; + _tmp1_ = settings_daemon_new (); + _g_object_unref0 (self->priv->settings_daemon); + self->priv->settings_daemon = _tmp1_; + settings_daemon_start (self->priv->settings_daemon, NULL, NULL); + } + _tmp2_ = user_list_new (); _g_object_unref0 (self->priv->user_list); - self->priv->user_list = g_object_ref_sink (_tmp1_); + self->priv->user_list = g_object_ref_sink (_tmp2_); g_signal_connect (self->priv->user_list, "user-selected", (GCallback) _unity_greeter_user_selected_cb_user_list_user_selected, self); g_signal_connect (self->priv->user_list, "respond-to-prompt", (GCallback) _unity_greeter_respond_to_prompt_cb_user_list_respond_to_prompt, self); g_signal_connect (self->priv->user_list, "start-session", (GCallback) _unity_greeter_start_session_cb_user_list_start_session, self); - _tmp2_ = unity_greeter_get_config_value ("greeter", "background", "#000000"); + _tmp3_ = unity_greeter_get_config_value ("greeter", "background", "#000000"); _g_free0 (self->priv->user_list->default_background); - self->priv->user_list->default_background = _tmp2_; + self->priv->user_list->default_background = _tmp3_; + _tmp4_ = unity_greeter_get_config_value ("greeter", "os-name", "ubuntu"); + _g_free0 (self->priv->user_list->os_name); + self->priv->user_list->os_name = _tmp4_; + _tmp5_ = unity_greeter_get_config_value ("greeter", "os-version", ""); + _g_free0 (self->priv->user_list->os_version); + self->priv->user_list->os_version = _tmp5_; gtk_widget_show ((GtkWidget*) self->priv->user_list); - _tmp3_ = lightdm_get_sessions (); + _tmp6_ = lightdm_get_sessions (); { GList* session_collection = NULL; GList* session_it = NULL; - session_collection = _tmp3_; + session_collection = _tmp6_; for (session_it = session_collection; session_it != NULL; session_it = session_it->next) { LightDMSession* session = NULL; session = (LightDMSession*) session_it->data; { - const gchar* _tmp4_ = NULL; - const gchar* _tmp5_ = NULL; - _tmp4_ = lightdm_session_get_key (session); - _tmp5_ = lightdm_session_get_name (session); - user_list_add_session (self->priv->user_list, _tmp4_, _tmp5_); + const gchar* _tmp7_ = NULL; + const gchar* _tmp8_ = NULL; + _tmp7_ = lightdm_session_get_key (session); + _tmp8_ = lightdm_session_get_name (session); + user_list_add_session (self->priv->user_list, _tmp7_, _tmp8_); } } } if (unity_greeter_test_mode) { + const gchar* _tmp9_ = NULL; + const gchar* _tmp10_ = NULL; user_list_add_entry (self->priv->user_list, "alice", "Alice User", "/usr/share/backgrounds/Berries_by_Orb9220.jpg", TRUE); user_list_add_entry (self->priv->user_list, "bob", "Bob User", "/usr/share/backgrounds/White_flowers_by_Garuna_bor-bor.jpg", FALSE); user_list_add_entry (self->priv->user_list, "carol", "Carol User", "/usr/share/backgrounds/Bird_by_Magnus.jpg", FALSE); - user_list_add_entry (self->priv->user_list, "*guest", "Guest Account", NULL, TRUE); - user_list_add_entry (self->priv->user_list, NULL, "Other...", NULL, FALSE); + _tmp9_ = _ ("Guest Account"); + user_list_add_entry (self->priv->user_list, "*guest", _tmp9_, NULL, TRUE); + _tmp10_ = _ ("Other..."); + user_list_add_entry (self->priv->user_list, NULL, _tmp10_, NULL, FALSE); user_list_add_session (self->priv->user_list, "gnome", "Ubuntu"); user_list_add_session (self->priv->user_list, "gnome-shell", "GNOME"); user_list_add_session (self->priv->user_list, "kde", "KDE"); user_list_set_session (self->priv->user_list, "gnome"); } else { - LightDMUserList* _tmp6_ = NULL; - GList* _tmp7_ = NULL; - gboolean _tmp14_; - _tmp6_ = lightdm_user_list_get_instance (); - _tmp7_ = lightdm_user_list_get_users (_tmp6_); + LightDMUserList* _tmp11_ = NULL; + GList* _tmp12_ = NULL; + gboolean _tmp19_; + const gchar* _tmp21_ = NULL; + _tmp11_ = lightdm_user_list_get_instance (); + _tmp12_ = lightdm_user_list_get_users (_tmp11_); { GList* user_collection = NULL; GList* user_it = NULL; - user_collection = _tmp7_; + user_collection = _tmp12_; for (user_it = user_collection; user_it != NULL; user_it = user_it->next) { LightDMUser* user = NULL; user = (LightDMUser*) user_it->data; { - const gchar* _tmp8_ = NULL; - gchar* _tmp9_; - gchar* label; - const gchar* _tmp10_ = NULL; const gchar* _tmp13_ = NULL; - _tmp8_ = lightdm_user_get_real_name (user); - _tmp9_ = g_strdup (_tmp8_); - label = _tmp9_; - _tmp10_ = lightdm_user_get_real_name (user); - if (g_strcmp0 (_tmp10_, "") == 0) { - const gchar* _tmp11_ = NULL; - gchar* _tmp12_; - _tmp11_ = lightdm_user_get_name (user); - _tmp12_ = g_strdup (_tmp11_); + gchar* _tmp14_; + gchar* label; + const gchar* _tmp15_ = NULL; + const gchar* _tmp18_ = NULL; + _tmp13_ = lightdm_user_get_real_name (user); + _tmp14_ = g_strdup (_tmp13_); + label = _tmp14_; + _tmp15_ = lightdm_user_get_real_name (user); + if (g_strcmp0 (_tmp15_, "") == 0) { + const gchar* _tmp16_ = NULL; + gchar* _tmp17_; + _tmp16_ = lightdm_user_get_name (user); + _tmp17_ = g_strdup (_tmp16_); _g_free0 (label); - label = _tmp12_; + label = _tmp17_; } - _tmp13_ = lightdm_user_get_name (user); - user_list_add_entry (self->priv->user_list, _tmp13_, label, NULL, FALSE); + _tmp18_ = lightdm_user_get_name (user); + user_list_add_entry (self->priv->user_list, _tmp18_, label, NULL, FALSE); _g_free0 (label); } } } - _tmp14_ = lightdm_greeter_get_has_guest_account_hint (self->priv->greeter); - if (_tmp14_) { - user_list_add_entry (self->priv->user_list, "*guest", "Guest Account", NULL, FALSE); + _tmp19_ = lightdm_greeter_get_has_guest_account_hint (self->priv->greeter); + if (_tmp19_) { + const gchar* _tmp20_ = NULL; + _tmp20_ = _ ("Guest Account"); + user_list_add_entry (self->priv->user_list, "*guest", _tmp20_, NULL, FALSE); } - user_list_add_entry (self->priv->user_list, NULL, "Other...", NULL, FALSE); + _tmp21_ = _ ("Other..."); + user_list_add_entry (self->priv->user_list, NULL, _tmp21_, NULL, FALSE); } - _tmp15_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_TOPLEVEL); + _tmp22_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_TOPLEVEL); _g_object_unref0 (self->priv->main_window); - self->priv->main_window = g_object_ref_sink (_tmp15_); + self->priv->main_window = g_object_ref_sink (_tmp22_); gtk_window_set_has_resize_grip (self->priv->main_window, FALSE); if (unity_greeter_test_mode) { gtk_window_set_default_size (self->priv->main_window, 1024, 600); } else { - GdkScreen* _tmp16_ = NULL; - GdkScreen* _tmp17_; + GdkScreen* _tmp23_ = NULL; + GdkScreen* _tmp24_; GdkScreen* screen; GdkRectangle geometry = {0}; - gint _tmp18_; - GdkRectangle _tmp19_ = {0}; - _tmp16_ = gdk_screen_get_default (); - _tmp17_ = _g_object_ref0 (_tmp16_); - screen = _tmp17_; - _tmp18_ = gdk_screen_get_primary_monitor (screen); - gdk_screen_get_monitor_geometry (screen, _tmp18_, &_tmp19_); - geometry = _tmp19_; + gint _tmp25_; + GdkRectangle _tmp26_ = {0}; + _tmp23_ = gdk_screen_get_default (); + _tmp24_ = _g_object_ref0 (_tmp23_); + screen = _tmp24_; + _tmp25_ = gdk_screen_get_primary_monitor (screen); + gdk_screen_get_monitor_geometry (screen, _tmp25_, &_tmp26_); + geometry = _tmp26_; gtk_window_set_default_size (self->priv->main_window, geometry.width, geometry.height); gtk_window_move (self->priv->main_window, geometry.x, geometry.y); _g_object_unref0 (screen); @@ -366,9 +408,14 @@ static void unity_greeter_show_message_cb (UnityGreeter* self, const gchar* text static void unity_greeter_show_prompt_cb (UnityGreeter* self, const gchar* text, LightDMPromptType type) { + const gchar* _tmp0_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); self->priv->prompted = TRUE; + _tmp0_ = _ ("Password:"); + if (g_strcmp0 (text, _tmp0_) == 0) { + text = ""; + } user_list_show_prompt (self->priv->user_list, text, type == LIGHTDM_PROMPT_TYPE_SECRET); } @@ -411,19 +458,19 @@ static void unity_greeter_authentication_complete_cb (UnityGreeter* self) { _tmp5_ = user_list_get_session (self->priv->user_list); lightdm_greeter_start_session_sync (self->priv->greeter, _tmp5_, &_inner_error_); if (_inner_error_ != NULL) { - goto __catch1_g_error; + goto __catch2_g_error; } } - goto __finally1; - __catch1_g_error: + goto __finally2; + __catch2_g_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; - g_warning ("unity-greeter.vala:164: Failed to start session: %s", e->message); + g_warning ("unity-greeter.vala:177: Failed to start session: %s", e->message); _g_error_free0 (e); } - __finally1: + __finally2: if (_inner_error_ != NULL) { _cairo_destroy0 (c); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -454,7 +501,7 @@ static void unity_greeter_authentication_complete_cb (UnityGreeter* self) { static void unity_greeter_user_selected_cb (UnityGreeter* self, const gchar* username) { g_return_if_fail (self != NULL); - g_debug ("unity-greeter.vala:191: start authentication %s", username); + g_debug ("unity-greeter.vala:204: start authentication %s", username); if (!unity_greeter_test_mode) { const gchar* _tmp0_ = NULL; _tmp0_ = lightdm_greeter_get_default_session_hint (self->priv->greeter); @@ -491,45 +538,49 @@ static void unity_greeter_start_authentication (UnityGreeter* self) { self->priv->test_is_authenticated = FALSE; _tmp0_ = user_list_get_selected (self->priv->user_list); if (_tmp0_ == NULL) { - unity_greeter_show_prompt_cb (self, "Username:", LIGHTDM_PROMPT_TYPE_QUESTION); + const gchar* _tmp1_ = NULL; + _tmp1_ = _ ("Username:"); + unity_greeter_show_prompt_cb (self, _tmp1_, LIGHTDM_PROMPT_TYPE_QUESTION); } else { - gboolean _tmp1_ = FALSE; - const gchar* _tmp2_ = NULL; - _tmp2_ = user_list_get_selected (self->priv->user_list); - if (g_strcmp0 (_tmp2_, "*guest") == 0) { - _tmp1_ = TRUE; + gboolean _tmp2_ = FALSE; + const gchar* _tmp3_ = NULL; + _tmp3_ = user_list_get_selected (self->priv->user_list); + if (g_strcmp0 (_tmp3_, "*guest") == 0) { + _tmp2_ = TRUE; } else { - const gchar* _tmp3_ = NULL; - _tmp3_ = user_list_get_selected (self->priv->user_list); - _tmp1_ = g_strcmp0 (_tmp3_, "bob") == 0; + const gchar* _tmp4_ = NULL; + _tmp4_ = user_list_get_selected (self->priv->user_list); + _tmp2_ = g_strcmp0 (_tmp4_, "bob") == 0; } - if (_tmp1_) { + if (_tmp2_) { self->priv->test_is_authenticated = TRUE; unity_greeter_authentication_complete_cb (self); } else { - const gchar* _tmp4_ = NULL; - gchar* _tmp5_; - _tmp4_ = user_list_get_selected (self->priv->user_list); - _tmp5_ = g_strdup (_tmp4_); + const gchar* _tmp5_ = NULL; + gchar* _tmp6_; + const gchar* _tmp7_ = NULL; + _tmp5_ = user_list_get_selected (self->priv->user_list); + _tmp6_ = g_strdup (_tmp5_); _g_free0 (self->priv->test_username); - self->priv->test_username = _tmp5_; - unity_greeter_show_prompt_cb (self, "Password:", LIGHTDM_PROMPT_TYPE_SECRET); + self->priv->test_username = _tmp6_; + _tmp7_ = _ ("Password:"); + unity_greeter_show_prompt_cb (self, _tmp7_, LIGHTDM_PROMPT_TYPE_SECRET); } } } else { - const gchar* _tmp6_ = NULL; - _tmp6_ = user_list_get_selected (self->priv->user_list); - if (_tmp6_ == NULL) { + const gchar* _tmp8_ = NULL; + _tmp8_ = user_list_get_selected (self->priv->user_list); + if (_tmp8_ == NULL) { lightdm_greeter_authenticate (self->priv->greeter, NULL); } else { - const gchar* _tmp7_ = NULL; - _tmp7_ = user_list_get_selected (self->priv->user_list); - if (g_strcmp0 (_tmp7_, "*guest") == 0) { + const gchar* _tmp9_ = NULL; + _tmp9_ = user_list_get_selected (self->priv->user_list); + if (g_strcmp0 (_tmp9_, "*guest") == 0) { lightdm_greeter_authenticate_as_guest (self->priv->greeter); } else { - const gchar* _tmp8_ = NULL; - _tmp8_ = user_list_get_selected (self->priv->user_list); - lightdm_greeter_authenticate (self->priv->greeter, _tmp8_); + const gchar* _tmp10_ = NULL; + _tmp10_ = user_list_get_selected (self->priv->user_list); + lightdm_greeter_authenticate (self->priv->greeter, _tmp10_); } } } @@ -541,14 +592,16 @@ static void unity_greeter_respond_to_prompt_cb (UnityGreeter* self, const gchar* g_return_if_fail (text != NULL); user_list_set_error (self->priv->user_list, NULL); if (unity_greeter_test_mode) { - g_debug ("unity-greeter.vala:246: response %s", text); + g_debug ("unity-greeter.vala:259: response %s", text); if (self->priv->test_username == NULL) { gchar* _tmp0_; - g_debug ("unity-greeter.vala:249: username=%s", text); + const gchar* _tmp1_ = NULL; + g_debug ("unity-greeter.vala:262: username=%s", text); _tmp0_ = g_strdup (text); _g_free0 (self->priv->test_username); self->priv->test_username = _tmp0_; - unity_greeter_show_prompt_cb (self, "Password:", LIGHTDM_PROMPT_TYPE_SECRET); + _tmp1_ = _ ("Password:"); + unity_greeter_show_prompt_cb (self, _tmp1_, LIGHTDM_PROMPT_TYPE_SECRET); } else { self->priv->test_is_authenticated = g_strcmp0 (text, "password") == 0; unity_greeter_authentication_complete_cb (self); @@ -589,13 +642,13 @@ gchar* unity_greeter_get_config_value (const gchar* group_name, const gchar* key _tmp0_ = g_key_file_get_value (unity_greeter_config, group_name, key, &_inner_error_); _tmp1_ = _tmp0_; if (_inner_error_ != NULL) { - goto __catch2_g_error; + goto __catch3_g_error; } result = _tmp1_; return result; } - goto __finally2; - __catch2_g_error: + goto __finally3; + __catch3_g_error: { GError* e = NULL; gboolean _tmp2_ = FALSE; @@ -608,14 +661,14 @@ gchar* unity_greeter_get_config_value (const gchar* group_name, const gchar* key _tmp2_ = g_error_matches (e, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND); } if (!_tmp2_) { - g_warning ("unity-greeter.vala:287: Error reading configuration item %s:%s: %s", group_name, key, e->message); + g_warning ("unity-greeter.vala:300: Error reading configuration item %s:%s: %s", group_name, key, e->message); } _tmp3_ = g_strdup (_default_); result = _tmp3_; _g_error_free0 (e); return result; } - __finally2: + __finally3: g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return NULL; @@ -659,7 +712,7 @@ static cairo_surface_t* unity_greeter_create_root_surface (GdkScreen* screen) { _tmp4_ = XOpenDisplay (_tmp3_); display = _tmp4_; if (display == NULL) { - g_warning ("unity-greeter.vala:301: Failed to create root pixmap"); + g_warning ("unity-greeter.vala:314: Failed to create root pixmap"); result = NULL; _XCloseDisplay0 (display); _g_object_unref0 (visual); @@ -737,12 +790,17 @@ gint unity_greeter_main (gchar** args, int args_length1) { gchar* value; gchar* _tmp13_ = NULL; gchar* _tmp14_ = NULL; - gchar* _tmp16_ = NULL; - gchar* _tmp18_ = NULL; + gchar* _tmp15_ = NULL; + gchar* _tmp17_ = NULL; gchar* _tmp19_ = NULL; - UnityGreeter* _tmp20_ = NULL; + gchar* _tmp20_ = NULL; + UnityGreeter* _tmp21_ = NULL; UnityGreeter* greeter; GError * _inner_error_ = NULL; + g_unsetenv ("UBUNTU_MENUPROXY"); + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); gtk_init (&args_length1, &args); _tmp0_ = gdk_get_default_root_window (); _tmp1_ = gdk_cursor_new (GDK_LEFT_PTR); @@ -762,11 +820,11 @@ gint unity_greeter_main (gchar** args, int args_length1) { { g_option_context_parse (c, &args_length1, &args, &_inner_error_); if (_inner_error_ != NULL) { - goto __catch3_g_error; + goto __catch4_g_error; } } - goto __finally3; - __catch3_g_error: + goto __finally4; + __catch4_g_error: { GError* e = NULL; const gchar* _tmp8_ = NULL; @@ -781,7 +839,7 @@ gint unity_greeter_main (gchar** args, int args_length1) { _g_option_context_free0 (c); return result; } - __finally3: + __finally4: if (_inner_error_ != NULL) { _g_option_context_free0 (c); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -800,21 +858,21 @@ gint unity_greeter_main (gchar** args, int args_length1) { { g_key_file_load_from_file (unity_greeter_config, CONFIG_FILE, G_KEY_FILE_NONE, &_inner_error_); if (_inner_error_ != NULL) { - goto __catch4_g_error; + goto __catch5_g_error; } } - goto __finally4; - __catch4_g_error: + goto __finally5; + __catch5_g_error: { GError* e = NULL; e = _inner_error_; _inner_error_ = NULL; if (!g_error_matches (e, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { - g_warning ("unity-greeter.vala:375: Failed to load configuration from %s: %s\n", CONFIG_FILE, e->message); + g_warning ("unity-greeter.vala:395: Failed to load configuration from %s: %s\n", CONFIG_FILE, e->message); } _g_error_free0 (e); } - __finally4: + __finally5: if (_inner_error_ != NULL) { _g_option_context_free0 (c); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -829,42 +887,48 @@ gint unity_greeter_main (gchar** args, int args_length1) { if (value != NULL) { g_object_set ((GObject*) settings, "gtk-theme-name", value, NULL, NULL); } - _tmp13_ = unity_greeter_get_config_value ("greeter", "font-name", NULL); + _tmp13_ = unity_greeter_get_config_value ("greeter", "icon-theme-name", NULL); _g_free0 (value); value = _tmp13_; if (value != NULL) { - g_object_set ((GObject*) settings, "gtk-font-name", value, NULL, NULL); + g_object_set ((GObject*) settings, "gtk-icon-theme-name", value, NULL, NULL); } - _tmp14_ = unity_greeter_get_config_value ("greeter", "xft-dpi", NULL); + _tmp14_ = unity_greeter_get_config_value ("greeter", "font-name", NULL); _g_free0 (value); value = _tmp14_; if (value != NULL) { - gdouble _tmp15_; - _tmp15_ = double_parse (value); - g_object_set ((GObject*) settings, "gtk-xft-dpi", (gint) (1024 * _tmp15_), NULL, NULL); + g_object_set ((GObject*) settings, "gtk-font-name", value, NULL, NULL); } - _tmp16_ = unity_greeter_get_config_value ("greeter", "xft-antialias", NULL); + _tmp15_ = unity_greeter_get_config_value ("greeter", "xft-dpi", NULL); _g_free0 (value); - value = _tmp16_; + value = _tmp15_; if (value != NULL) { - gint _tmp17_; - _tmp17_ = g_strcmp0 (value, "true"); - g_object_set ((GObject*) settings, "gtk-xft-antialias", _tmp17_ == 0, NULL, NULL); + gdouble _tmp16_; + _tmp16_ = double_parse (value); + g_object_set ((GObject*) settings, "gtk-xft-dpi", (gint) (1024 * _tmp16_), NULL, NULL); } - _tmp18_ = unity_greeter_get_config_value ("greeter", "xft-hintstyle", NULL); + _tmp17_ = unity_greeter_get_config_value ("greeter", "xft-antialias", NULL); _g_free0 (value); - value = _tmp18_; + value = _tmp17_; if (value != NULL) { - g_object_set ((GObject*) settings, "gtk-xft-hintstyle", value, NULL, NULL); + gint _tmp18_; + _tmp18_ = g_strcmp0 (value, "true"); + g_object_set ((GObject*) settings, "gtk-xft-antialias", _tmp18_ == 0, NULL, NULL); } - _tmp19_ = unity_greeter_get_config_value ("greeter", "xft-rgba", NULL); + _tmp19_ = unity_greeter_get_config_value ("greeter", "xft-hintstyle", NULL); _g_free0 (value); value = _tmp19_; if (value != NULL) { + g_object_set ((GObject*) settings, "gtk-xft-hintstyle", value, NULL, NULL); + } + _tmp20_ = unity_greeter_get_config_value ("greeter", "xft-rgba", NULL); + _g_free0 (value); + value = _tmp20_; + if (value != NULL) { g_object_set ((GObject*) settings, "gtk-xft-rgba", value, NULL, NULL); } - _tmp20_ = unity_greeter_new (); - greeter = _tmp20_; + _tmp21_ = unity_greeter_new (); + greeter = _tmp21_; unity_greeter_show (greeter); gtk_main (); result = EXIT_SUCCESS; @@ -1011,6 +1075,7 @@ static void unity_greeter_instance_init (UnityGreeter * self) { static void unity_greeter_finalize (UnityGreeter* obj) { UnityGreeter * self; self = UNITY_GREETER (obj); + _g_object_unref0 (self->priv->settings_daemon); _g_object_unref0 (self->priv->user_list); _g_object_unref0 (self->priv->main_window); _g_object_unref0 (self->priv->greeter); diff --git a/src/unity-greeter.vala b/src/unity-greeter.vala index 416e0ecd..cc2d16e9 100644 --- a/src/unity-greeter.vala +++ b/src/unity-greeter.vala @@ -88,8 +88,8 @@ public class UnityGreeter user_list.add_entry ("alice", "Alice User", "/usr/share/backgrounds/Berries_by_Orb9220.jpg", true); user_list.add_entry ("bob", "Bob User", "/usr/share/backgrounds/White_flowers_by_Garuna_bor-bor.jpg"); user_list.add_entry ("carol", "Carol User", "/usr/share/backgrounds/Bird_by_Magnus.jpg"); - user_list.add_entry ("*guest", "Guest Account", null, true); - user_list.add_entry (null, "Other..."); + user_list.add_entry ("*guest", _("Guest Account"), null, true); + user_list.add_entry (null, _("Other...")); user_list.add_session ("gnome", "Ubuntu"); user_list.add_session ("gnome-shell", "GNOME"); @@ -106,8 +106,8 @@ public class UnityGreeter user_list.add_entry (user.name, label, null); } if (greeter.has_guest_account_hint) - user_list.add_entry ("*guest", "Guest Account", null); - user_list.add_entry (null, "Other..."); + user_list.add_entry ("*guest", _("Guest Account"), null); + user_list.add_entry (null, _("Other...")); } main_window = new Gtk.Window (); @@ -137,6 +137,9 @@ public class UnityGreeter private void show_prompt_cb (string text, LightDM.PromptType type) { prompted = true; + if (text == _("Password:")) + text = ""; + user_list.show_prompt (text, type == LightDM.PromptType.SECRET); } @@ -224,7 +227,7 @@ public class UnityGreeter test_is_authenticated = false; if (user_list.selected == null) - show_prompt_cb ("Username:", LightDM.PromptType.QUESTION); + show_prompt_cb (_("Username:"), LightDM.PromptType.QUESTION); else if (user_list.selected == "*guest" || user_list.selected == "bob") { test_is_authenticated = true; @@ -233,7 +236,7 @@ public class UnityGreeter else { test_username = user_list.selected; - show_prompt_cb ("Password:", LightDM.PromptType.SECRET); + show_prompt_cb (_("Password:"), LightDM.PromptType.SECRET); } } else @@ -258,7 +261,7 @@ public class UnityGreeter { debug ("username=%s", text); test_username = text; - show_prompt_cb ("Password:", LightDM.PromptType.SECRET); + show_prompt_cb (_("Password:"), LightDM.PromptType.SECRET); } else { @@ -345,6 +348,11 @@ public class UnityGreeter /* Disable the stupid global menubar */ Environment.unset_variable ("UBUNTU_MENUPROXY"); + /* Initialize i18n */ + Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8"); + Intl.textdomain (Config.GETTEXT_PACKAGE); + Gtk.init (ref args); /* Set the cursor to not be the crap default */ diff --git a/src/user-list.c b/src/user-list.c index a55a97e9..923a5d6f 100644 --- a/src/user-list.c +++ b/src/user-list.c @@ -1,4 +1,4 @@ -/* user-list.c generated by valac 0.13.0, the Vala compiler +/* user-list.c generated by valac 0.13.1, the Vala compiler * generated from user-list.vala, do not modify */ /* @@ -28,6 +28,11 @@ #include <math.h> #include <gtk/gtk.h> #include <libindicator/indicator-object.h> +#include <ft2build.h> +#include <cairo-ft.h> +#include <sys/utsname.h> +#include <glib/gi18n-lib.h> +#include <gio/gio.h> #include <libindicator/indicator.h> #include <libindicator/indicator-desktop-shortcuts.h> #include <libindicator/indicator-image-helper.h> @@ -35,7 +40,6 @@ #include <libindicator/indicator-service-manager.h> #include <gdk/gdk.h> #include <gdk-pixbuf/gdk-pixdata.h> -#include <sys/utsname.h> #include <gobject/gvaluecollector.h> @@ -78,9 +82,14 @@ typedef struct _UserListPrivate UserListPrivate; #define _user_entry_unref0(var) ((var == NULL) ? NULL : (var = (user_entry_unref (var), NULL))) #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _cairo_font_face_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_font_face_destroy (var), NULL))) #define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL))) +#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) +#define _g_variant_builder_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_builder_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +typedef struct _UserListGreeterSetEnvData UserListGreeterSetEnvData; +typedef struct _UserListSetupIndicatorsData UserListSetupIndicatorsData; +#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) #define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL))) struct _UserEntry { @@ -122,6 +131,8 @@ struct _UserList { GtkContainer parent_instance; UserListPrivate * priv; gchar* default_background; + gchar* os_name; + gchar* os_version; }; struct _UserListClass { @@ -144,15 +155,45 @@ struct _UserListPrivate { GList* indicators; gchar* error; gchar* message; + cairo_font_face_t* font_face; GtkEntry* prompt_entry; GtkButton* login_button; GtkButton* options_button; GtkMenu* options_menu; GSList* session_group; gboolean complete; + cairo_t* menubar_cairo_context; gint box_height; }; +struct _UserListGreeterSetEnvData { + int _state_; + GObject* _source_object_; + GAsyncResult* _res_; + GSimpleAsyncResult* _async_result; + UserList* self; + gchar* key; + gchar* val; + GDBusProxy* _tmp0_; + GDBusProxy* proxy; + GVariantBuilder* _tmp1_; + GVariantBuilder* builder; + GVariant* _tmp2_; + GVariant* _tmp3_; + GVariant* _tmp4_; + GVariant* _tmp5_; + GError* e; + GError * _inner_error_; +}; + +struct _UserListSetupIndicatorsData { + int _state_; + GObject* _source_object_; + GAsyncResult* _res_; + GSimpleAsyncResult* _async_result; + UserList* self; +}; + static gpointer user_entry_parent_class = NULL; static gpointer session_menu_item_parent_class = NULL; @@ -194,12 +235,26 @@ static void _g_list_free__g_object_unref0_ (GList* self); #define USER_LIST_KEY_Down ((guint) 0xff54) UserList* user_list_new (void); UserList* user_list_construct (GType object_type); +static gboolean user_list_menubar_draw_cb (UserList* self, cairo_t* c); +static gboolean _user_list_menubar_draw_cb_gtk_widget_draw (GtkWidget* _sender, cairo_t* cr, gpointer self); static void user_list_prompt_entry_activate_cb (UserList* self); static void _user_list_prompt_entry_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self); static void user_list_login_button_clicked_cb (UserList* self); static void _user_list_login_button_clicked_cb_gtk_button_clicked (GtkButton* _sender, gpointer self); static void user_list_options_button_clicked_cb (UserList* self); static void _user_list_options_button_clicked_cb_gtk_button_clicked (GtkButton* _sender, gpointer self); +static void user_list_setup_indicators (UserList* self, GAsyncReadyCallback _callback_, gpointer _user_data_); +static void user_list_setup_indicators_finish (UserList* self, GAsyncResult* _res_); +static void user_list_draw_child_cb (UserList* self, GtkWidget* child); +static void user_list_draw_background (UserList* self, cairo_t* c); +static void _user_list_draw_child_cb_gtk_callback (GtkWidget* widget, gpointer self); +static void user_list_greeter_set_env_data_free (gpointer _data); +static void user_list_greeter_set_env (UserList* self, const gchar* key, const gchar* val, GAsyncReadyCallback _callback_, gpointer _user_data_); +static void user_list_greeter_set_env_finish (UserList* self, GAsyncResult* _res_); +static gboolean user_list_greeter_set_env_co (UserListGreeterSetEnvData* _data_); +static void user_list_greeter_set_env_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_); +static void user_list_setup_indicators_data_free (gpointer _data); +static gboolean user_list_setup_indicators_co (UserListSetupIndicatorsData* _data_); static void user_list_load_indicator (UserList* self, const gchar* filename); void user_list_show_prompt (UserList* self, const gchar* text, gboolean secret); void user_list_show_authenticated (UserList* self); @@ -214,6 +269,8 @@ void user_list_add_entry (UserList* self, const gchar* name, const gchar* label, static guint user_list_get_n_entries (UserList* self); static void user_list_select_entry (UserList* self, UserEntry* entry); static void user_list_update_entry_location (UserList* self, UserEntry* entry); +static void user_list_options_menu_position_cb (UserList* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in); +static void _user_list_options_menu_position_cb_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self); static guint user_list_get_n_below (UserList* self); static guint user_list_get_n_above (UserList* self); static gboolean user_list_scroll_animate_cb (UserList* self); @@ -494,6 +551,13 @@ static void _g_list_free__g_object_unref0_ (GList* self) { } +static gboolean _user_list_menubar_draw_cb_gtk_widget_draw (GtkWidget* _sender, cairo_t* cr, gpointer self) { + gboolean result; + result = user_list_menubar_draw_cb (self, cr); + return result; +} + + static void _user_list_prompt_entry_activate_cb_gtk_entry_activate (GtkEntry* _sender, gpointer self) { user_list_prompt_entry_activate_cb (self); } @@ -511,58 +575,110 @@ static void _user_list_options_button_clicked_cb_gtk_button_clicked (GtkButton* UserList* user_list_construct (GType object_type) { UserList * self = NULL; - GtkMenuBar* _tmp0_ = NULL; - GtkEntry* _tmp1_ = NULL; - GtkButton* _tmp2_ = NULL; - GtkLabel* _tmp3_ = NULL; + FT_Library library; + FT_Library _tmp0_; + FT_Face face; + FT_Face _tmp1_; + cairo_font_face_t* _tmp2_ = NULL; + GtkMenuBar* _tmp3_ = NULL; + struct utsname _tmp4_ = {0}; + struct utsname _tmp5_ = {0}; + GtkMenuItem* _tmp6_ = NULL; + GtkMenuItem* i; + GtkEntry* _tmp7_ = NULL; + GtkBorder b = {0}; + GtkButton* _tmp8_ = NULL; + const gchar* _tmp9_ = NULL; + gchar* _tmp10_; + gchar* _tmp11_; + gchar* _tmp12_; + gchar* _tmp13_; + GtkLabel* _tmp14_ = NULL; + GtkLabel* _tmp15_; GtkLabel* label; - GtkButton* _tmp4_ = NULL; - GtkLabel* _tmp5_ = NULL; - GtkMenu* _tmp6_ = NULL; + GtkButton* _tmp16_ = NULL; + gchar* _tmp17_ = NULL; + gchar* _tmp18_; + GtkImage* _tmp19_ = NULL; + GtkImage* _tmp20_; + GtkImage* image; + GtkMenu* _tmp21_ = NULL; self = (UserList*) g_object_new (object_type, NULL); g_object_set ((GtkWidget*) self, "can-focus", FALSE, NULL); self->priv->background_alpha = 1.0; - _tmp0_ = (GtkMenuBar*) gtk_menu_bar_new (); + FT_Init_FreeType (&_tmp0_); + library = _tmp0_; + FT_New_Face (library, "/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf", 0, &_tmp1_); + face = _tmp1_; + _tmp2_ = cairo_ft_font_face_create_for_ft_face (face, 0); + _cairo_font_face_destroy0 (self->priv->font_face); + self->priv->font_face = _tmp2_; + _tmp3_ = (GtkMenuBar*) gtk_menu_bar_new (); _g_object_unref0 (self->priv->menubar); - self->priv->menubar = g_object_ref_sink (_tmp0_); + self->priv->menubar = g_object_ref_sink (_tmp3_); + g_signal_connect_object ((GtkWidget*) self->priv->menubar, "draw", (GCallback) _user_list_menubar_draw_cb_gtk_widget_draw, self, G_CONNECT_AFTER); gtk_menu_bar_set_pack_direction (self->priv->menubar, GTK_PACK_DIRECTION_RTL); gtk_widget_show ((GtkWidget*) self->priv->menubar); gtk_container_add ((GtkContainer*) self, (GtkWidget*) self->priv->menubar); - _tmp1_ = (GtkEntry*) gtk_entry_new (); + uname (&_tmp4_); + _tmp5_ = _tmp4_; + _tmp6_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp5_.nodename); + i = g_object_ref_sink (_tmp6_); + gtk_menu_item_set_right_justified (i, TRUE); + gtk_widget_show ((GtkWidget*) i); + gtk_menu_shell_append ((GtkMenuShell*) self->priv->menubar, (GtkWidget*) i); + _tmp7_ = (GtkEntry*) gtk_entry_new (); _g_object_unref0 (self->priv->prompt_entry); - self->priv->prompt_entry = g_object_ref_sink (_tmp1_); + self->priv->prompt_entry = g_object_ref_sink (_tmp7_); + gtk_entry_set_invisible_char (self->priv->prompt_entry, (guint) 10043U); gtk_entry_set_has_frame (self->priv->prompt_entry, FALSE); + memset (&b, 0, sizeof (GtkBorder)); + b.left = (gint16) 15; + b.right = (gint16) 15; + b.top = (gint16) 15; + b.bottom = (gint16) 15; + gtk_entry_set_inner_border (self->priv->prompt_entry, &b); g_signal_connect_object (self->priv->prompt_entry, "activate", (GCallback) _user_list_prompt_entry_activate_cb_gtk_entry_activate, self, 0); gtk_container_add ((GtkContainer*) self, (GtkWidget*) self->priv->prompt_entry); - _tmp2_ = (GtkButton*) gtk_button_new (); + _tmp8_ = (GtkButton*) gtk_button_new (); _g_object_unref0 (self->priv->login_button); - self->priv->login_button = g_object_ref_sink (_tmp2_); - _tmp3_ = (GtkLabel*) gtk_label_new ("<span font_size=\"large\">Login</span>"); - label = g_object_ref_sink (_tmp3_); + self->priv->login_button = g_object_ref_sink (_tmp8_); + _tmp9_ = _ ("Login"); + _tmp10_ = g_strconcat ("<span font_size=\"large\">", _tmp9_, NULL); + _tmp11_ = _tmp10_; + _tmp12_ = g_strconcat (_tmp11_, "</span>", NULL); + _tmp13_ = _tmp12_; + _tmp14_ = (GtkLabel*) gtk_label_new (_tmp13_); + _tmp15_ = g_object_ref_sink (_tmp14_); + _g_free0 (_tmp13_); + _g_free0 (_tmp11_); + label = _tmp15_; gtk_label_set_use_markup (label, TRUE); gtk_widget_show ((GtkWidget*) label); gtk_container_add ((GtkContainer*) self->priv->login_button, (GtkWidget*) label); g_signal_connect_object (self->priv->login_button, "clicked", (GCallback) _user_list_login_button_clicked_cb_gtk_button_clicked, self, 0); gtk_container_add ((GtkContainer*) self, (GtkWidget*) self->priv->login_button); - _tmp4_ = (GtkButton*) gtk_button_new (); + _tmp16_ = (GtkButton*) gtk_button_new (); _g_object_unref0 (self->priv->options_button); - self->priv->options_button = g_object_ref_sink (_tmp4_); - _tmp5_ = (GtkLabel*) gtk_label_new ("<span size=\"x-large\" color=\"white\">⚙</span>"); - _g_object_unref0 (label); - label = g_object_ref_sink (_tmp5_); - gtk_label_set_use_markup (label, TRUE); - gtk_widget_show ((GtkWidget*) label); + self->priv->options_button = g_object_ref_sink (_tmp16_); + _tmp17_ = g_build_filename (PKGDATADIR, "cog.png", NULL, NULL); + _tmp18_ = _tmp17_; + _tmp19_ = (GtkImage*) gtk_image_new_from_file (_tmp18_); + _tmp20_ = g_object_ref_sink (_tmp19_); + _g_free0 (_tmp18_); + image = _tmp20_; + gtk_widget_show ((GtkWidget*) image); gtk_button_set_relief (self->priv->options_button, GTK_RELIEF_NONE); - gtk_container_add ((GtkContainer*) self->priv->options_button, (GtkWidget*) label); + gtk_container_add ((GtkContainer*) self->priv->options_button, (GtkWidget*) image); g_signal_connect_object (self->priv->options_button, "clicked", (GCallback) _user_list_options_button_clicked_cb_gtk_button_clicked, self, 0); gtk_container_add ((GtkContainer*) self, (GtkWidget*) self->priv->options_button); - _tmp6_ = (GtkMenu*) gtk_menu_new (); + _tmp21_ = (GtkMenu*) gtk_menu_new (); _g_object_unref0 (self->priv->options_menu); - self->priv->options_menu = g_object_ref_sink (_tmp6_); - user_list_load_indicator (self, "/usr/lib/indicators3/6/libsession.so"); - user_list_load_indicator (self, "/usr/lib/indicators3/6/libdatetime.so"); - user_list_load_indicator (self, "/usr/lib/indicators3/6/libsoundmenu.so"); + self->priv->options_menu = g_object_ref_sink (_tmp21_); + user_list_setup_indicators (self, NULL, NULL); + _g_object_unref0 (image); _g_object_unref0 (label); + _g_object_unref0 (i); return self; } @@ -572,6 +688,202 @@ UserList* user_list_new (void) { } +static void user_list_draw_child_cb (UserList* self, GtkWidget* child) { + g_return_if_fail (self != NULL); + g_return_if_fail (child != NULL); + gtk_container_propagate_draw ((GtkContainer*) self->priv->menubar, child, self->priv->menubar_cairo_context); +} + + +static gpointer _cairo_reference0 (gpointer self) { + return self ? cairo_reference (self) : NULL; +} + + +static void _user_list_draw_child_cb_gtk_callback (GtkWidget* widget, gpointer self) { + user_list_draw_child_cb (self, widget); +} + + +static gboolean user_list_menubar_draw_cb (UserList* self, cairo_t* c) { + gboolean result = FALSE; + cairo_t* _tmp0_; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (c != NULL, FALSE); + user_list_draw_background (self, c); + _tmp0_ = _cairo_reference0 (c); + _cairo_destroy0 (self->priv->menubar_cairo_context); + self->priv->menubar_cairo_context = _tmp0_; + gtk_container_forall ((GtkContainer*) self->priv->menubar, _user_list_draw_child_cb_gtk_callback, self); + result = FALSE; + return result; +} + + +static void user_list_greeter_set_env_data_free (gpointer _data) { + UserListGreeterSetEnvData* _data_; + _data_ = _data; + _g_free0 (_data_->key); + _g_free0 (_data_->val); + _g_object_unref0 (_data_->self); + g_slice_free (UserListGreeterSetEnvData, _data_); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +static void user_list_greeter_set_env (UserList* self, const gchar* key, const gchar* val, GAsyncReadyCallback _callback_, gpointer _user_data_) { + UserListGreeterSetEnvData* _data_; + _data_ = g_slice_new0 (UserListGreeterSetEnvData); + _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, user_list_greeter_set_env); + g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, user_list_greeter_set_env_data_free); + _data_->self = _g_object_ref0 (self); + _data_->key = g_strdup (key); + _data_->val = g_strdup (val); + user_list_greeter_set_env_co (_data_); +} + + +static void user_list_greeter_set_env_finish (UserList* self, GAsyncResult* _res_) { + UserListGreeterSetEnvData* _data_; + _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_)); +} + + +static void user_list_greeter_set_env_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) { + UserListGreeterSetEnvData* _data_; + _data_ = _user_data_; + _data_->_source_object_ = source_object; + _data_->_res_ = _res_; + user_list_greeter_set_env_co (_data_); +} + + +static gboolean user_list_greeter_set_env_co (UserListGreeterSetEnvData* _data_) { + switch (_data_->_state_) { + case 0: + goto _state_0; + case 1: + goto _state_1; + default: + g_assert_not_reached (); + } + _state_0: + g_setenv (_data_->key, _data_->val, TRUE); + { + _data_->_tmp0_ = NULL; + _data_->_tmp0_ = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", NULL, &_data_->_inner_error_); + _data_->proxy = _data_->_tmp0_; + if (_data_->_inner_error_ != NULL) { + goto __catch6_g_error; + } + _data_->_tmp1_ = NULL; + _data_->_tmp1_ = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); + _data_->builder = _data_->_tmp1_; + g_variant_builder_add (_data_->builder, "{ss}", _data_->key, _data_->val, NULL); + _data_->_tmp2_ = NULL; + _data_->_tmp2_ = g_variant_new ("(a{ss})", _data_->builder, NULL); + _data_->_tmp3_ = g_variant_ref_sink (_data_->_tmp2_); + _data_->_state_ = 1; + g_dbus_proxy_call (_data_->proxy, "UpdateActivationEnvironment", _data_->_tmp3_, G_DBUS_CALL_FLAGS_NONE, -1, NULL, user_list_greeter_set_env_ready, _data_); + return FALSE; + _state_1: + _data_->_tmp4_ = NULL; + _data_->_tmp4_ = g_dbus_proxy_call_finish (_data_->proxy, _data_->_res_, &_data_->_inner_error_); + _data_->_tmp5_ = _data_->_tmp4_; + _g_variant_unref0 (_data_->_tmp5_); + _g_variant_unref0 (_data_->_tmp3_); + if (_data_->_inner_error_ != NULL) { + _g_variant_builder_unref0 (_data_->builder); + _g_object_unref0 (_data_->proxy); + goto __catch6_g_error; + } + _g_variant_builder_unref0 (_data_->builder); + _g_object_unref0 (_data_->proxy); + } + goto __finally6; + __catch6_g_error: + { + _data_->e = _data_->_inner_error_; + _data_->_inner_error_ = NULL; + g_warning ("user-list.vala:217: Could not get set environment for indicators: %s", _data_->e->message); + _g_error_free0 (_data_->e); + if (_data_->_state_ == 0) { + g_simple_async_result_complete_in_idle (_data_->_async_result); + } else { + g_simple_async_result_complete (_data_->_async_result); + } + g_object_unref (_data_->_async_result); + return FALSE; + } + __finally6: + if (_data_->_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _data_->_inner_error_->message, g_quark_to_string (_data_->_inner_error_->domain), _data_->_inner_error_->code); + g_clear_error (&_data_->_inner_error_); + return FALSE; + } + if (_data_->_state_ == 0) { + g_simple_async_result_complete_in_idle (_data_->_async_result); + } else { + g_simple_async_result_complete (_data_->_async_result); + } + g_object_unref (_data_->_async_result); + return FALSE; +} + + +static void user_list_setup_indicators_data_free (gpointer _data) { + UserListSetupIndicatorsData* _data_; + _data_ = _data; + _g_object_unref0 (_data_->self); + g_slice_free (UserListSetupIndicatorsData, _data_); +} + + +static void user_list_setup_indicators (UserList* self, GAsyncReadyCallback _callback_, gpointer _user_data_) { + UserListSetupIndicatorsData* _data_; + _data_ = g_slice_new0 (UserListSetupIndicatorsData); + _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, user_list_setup_indicators); + g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, user_list_setup_indicators_data_free); + _data_->self = _g_object_ref0 (self); + user_list_setup_indicators_co (_data_); +} + + +static void user_list_setup_indicators_finish (UserList* self, GAsyncResult* _res_) { + UserListSetupIndicatorsData* _data_; + _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_)); +} + + +static gboolean user_list_setup_indicators_co (UserListSetupIndicatorsData* _data_) { + switch (_data_->_state_) { + case 0: + goto _state_0; + default: + g_assert_not_reached (); + } + _state_0: + user_list_greeter_set_env (_data_->self, "INDICATOR_GREETER_MODE", "1", NULL, NULL); + user_list_greeter_set_env (_data_->self, "GIO_USE_VFS", "local", NULL, NULL); + user_list_greeter_set_env (_data_->self, "RUNNING_UNDER_GDM", "1", NULL, NULL); + user_list_load_indicator (_data_->self, "/usr/lib/indicators3/6/libsession.so"); + user_list_load_indicator (_data_->self, "/usr/lib/indicators3/6/libdatetime.so"); + user_list_load_indicator (_data_->self, "/usr/lib/indicators3/6/libpower.so"); + user_list_load_indicator (_data_->self, "/usr/lib/indicators3/6/libsoundmenu.so"); + if (_data_->_state_ == 0) { + g_simple_async_result_complete_in_idle (_data_->_async_result); + } else { + g_simple_async_result_complete (_data_->_async_result); + } + g_object_unref (_data_->_async_result); + return FALSE; +} + + void user_list_show_prompt (UserList* self, const gchar* text, gboolean secret) { gchar* _tmp0_; g_return_if_fail (self != NULL); @@ -602,15 +914,17 @@ void user_list_show_authenticated (UserList* self) { void user_list_login_complete (UserList* self) { - gchar* _tmp0_; + const gchar* _tmp0_ = NULL; + gchar* _tmp1_; g_return_if_fail (self != NULL); self->priv->complete = TRUE; gtk_widget_set_sensitive ((GtkWidget*) self, FALSE); _g_free0 (self->priv->error); self->priv->error = NULL; - _tmp0_ = g_strdup ("Logging in..."); + _tmp0_ = _ ("Logging in..."); + _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->message); - self->priv->message = _tmp0_; + self->priv->message = _tmp1_; gtk_widget_hide ((GtkWidget*) self->priv->login_button); gtk_widget_hide ((GtkWidget*) self->priv->prompt_entry); gtk_widget_queue_draw ((GtkWidget*) self); @@ -627,11 +941,6 @@ void user_list_set_error (UserList* self, const gchar* text) { } -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - static void _user_list_indicator_added_cb_indicator_object_entry_added (IndicatorObject* _sender, IndicatorObjectEntry* entry, gpointer self) { user_list_indicator_added_cb (self, entry); } @@ -678,6 +987,9 @@ static void user_list_indicator_added_cb (UserList* self, IndicatorObjectEntry* GtkMenuItem* menuitem; GtkHBox* _tmp1_ = NULL; GtkHBox* hbox; + GList* _tmp2_ = NULL; + GList* _tmp3_; + guint _tmp4_; g_return_if_fail (self != NULL); g_return_if_fail (entry != NULL); _tmp0_ = (GtkMenuItem*) gtk_menu_item_new (); @@ -696,7 +1008,11 @@ static void user_list_indicator_added_cb (UserList* self, IndicatorObjectEntry* if (entry->menu != NULL) { gtk_menu_item_set_submenu (menuitem, entry->menu); } - gtk_menu_shell_append ((GtkMenuShell*) self->priv->menubar, (GtkWidget*) menuitem); + _tmp2_ = gtk_container_get_children ((GtkContainer*) self->priv->menubar); + _tmp3_ = _tmp2_; + _tmp4_ = g_list_length (_tmp3_); + gtk_menu_shell_insert ((GtkMenuShell*) self->priv->menubar, (GtkWidget*) menuitem, ((gint) _tmp4_) - 1); + _g_list_free0 (_tmp3_); _g_object_unref0 (hbox); _g_object_unref0 (menuitem); } @@ -758,7 +1074,7 @@ void user_list_add_entry (UserList* self, const gchar* name, const gchar* label, _g_free0 (e->background_filename); e->background_filename = _tmp3_; e->is_active = is_active; - e->width = (gdouble) 7; + e->width = (gdouble) 5; _tmp4_ = user_list_get_n_entries (self); e->index = (gint) _tmp4_; _tmp5_ = _user_entry_ref0 (e); @@ -798,16 +1114,53 @@ static void user_list_prompt_entry_activate_cb (UserList* self) { static void user_list_login_button_clicked_cb (UserList* self) { g_return_if_fail (self != NULL); - g_debug ("user-list.vala:299: login %s", self->priv->selected_entry->name); + g_debug ("user-list.vala:377: login %s", self->priv->selected_entry->name); g_signal_emit_by_name (self, "start-session"); } +static void user_list_options_menu_position_cb (UserList* self, GtkMenu* menu, gint* x, gint* y, gboolean* push_in) { + gint _x = 0; + gint _y = 0; + gboolean _push_in = FALSE; + GtkAllocation button_allocation = {0}; + GtkAllocation _tmp0_ = {0}; + GdkWindow* _tmp1_ = NULL; + gint _tmp2_; + gint _tmp3_; + g_return_if_fail (self != NULL); + g_return_if_fail (menu != NULL); + gtk_widget_get_allocation ((GtkWidget*) self->priv->options_button, &_tmp0_); + button_allocation = _tmp0_; + _tmp1_ = gtk_widget_get_window ((GtkWidget*) self); + gdk_window_get_origin (_tmp1_, &_tmp2_, &_tmp3_); + _x = _tmp2_; + _y = _tmp3_; + _x = _x + button_allocation.x; + _y = _y + (button_allocation.y + button_allocation.height); + _push_in = TRUE; + if (x) { + *x = _x; + } + if (y) { + *y = _y; + } + if (push_in) { + *push_in = _push_in; + } +} + + +static void _user_list_options_menu_position_cb_gtk_menu_position_func (GtkMenu* menu, gint* x, gint* y, gboolean* push_in, gpointer self) { + user_list_options_menu_position_cb (self, menu, x, y, push_in); +} + + static void user_list_options_button_clicked_cb (UserList* self) { guint32 _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = gtk_get_current_event_time (); - gtk_menu_popup (self->priv->options_menu, NULL, NULL, NULL, NULL, (guint) 0, _tmp0_); + gtk_menu_popup (self->priv->options_menu, NULL, NULL, _user_list_options_menu_position_cb_gtk_menu_position_func, self, (guint) 0, _tmp0_); } @@ -861,10 +1214,10 @@ static gboolean user_list_scroll_animate_cb (UserList* self) { gdouble step; speed = 0.1; step = entry->target_y - entry->y; - if (entry->direction < 0) { + if (entry->direction < ((gdouble) 0)) { step = -step; } - if (step < 0) { + if (step < ((gdouble) 0)) { gint _tmp1_; _tmp1_ = user_list_get_height (self); step = step + _tmp1_; @@ -875,10 +1228,10 @@ static gboolean user_list_scroll_animate_cb (UserList* self) { gboolean _tmp2_ = FALSE; gboolean _tmp5_ = FALSE; entry->y = entry->y + (speed * entry->direction); - if (entry->direction < 0) { + if (entry->direction < ((gdouble) 0)) { guint _tmp3_; _tmp3_ = user_list_get_n_above (self); - _tmp2_ = entry->y < (-((gint) _tmp3_)); + _tmp2_ = entry->y < ((gdouble) (-((gint) _tmp3_))); } else { _tmp2_ = FALSE; } @@ -887,10 +1240,10 @@ static gboolean user_list_scroll_animate_cb (UserList* self) { _tmp4_ = user_list_get_n_entries (self); entry->y = entry->y + _tmp4_; } - if (entry->direction > 0) { + if (entry->direction > ((gdouble) 0)) { guint _tmp6_; _tmp6_ = user_list_get_n_below (self); - _tmp5_ = entry->y >= _tmp6_; + _tmp5_ = entry->y >= ((gdouble) _tmp6_); } else { _tmp5_ = FALSE; } @@ -912,7 +1265,7 @@ static gboolean user_list_scroll_animate_cb (UserList* self) { gtk_widget_queue_draw ((GtkWidget*) self); if (!animating) { self->priv->scroll_animate_timer = (guint) 0; - g_debug ("user-list.vala:371: stop scroll animation"); + g_debug ("user-list.vala:460: stop scroll animation"); result = FALSE; return result; } else { @@ -925,14 +1278,14 @@ static gboolean user_list_scroll_animate_cb (UserList* self) { static gboolean user_list_background_animate_cb (UserList* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); - self->priv->background_alpha = self->priv->background_alpha + 0.07; + self->priv->background_alpha = self->priv->background_alpha + 0.05; if (self->priv->background_alpha > 1.0) { self->priv->background_alpha = 1.0; } gtk_widget_queue_draw ((GtkWidget*) self); if (self->priv->background_alpha == 1.0) { self->priv->background_animate_timer = (guint) 0; - g_debug ("user-list.vala:390: stop background animation"); + g_debug ("user-list.vala:479: stop background animation"); result = FALSE; return result; } else { @@ -965,7 +1318,7 @@ static void user_list_select_entry (UserList* self, UserEntry* entry) { gboolean _tmp6_ = FALSE; g_return_if_fail (self != NULL); g_return_if_fail (entry != NULL); - g_debug ("user-list.vala:399: select %s", entry->name); + g_debug ("user-list.vala:488: select %s", entry->name); direction = 1.0; if (self->priv->selected_entry != NULL) { _tmp0_ = entry->y > self->priv->selected_entry->y; @@ -986,9 +1339,9 @@ static void user_list_select_entry (UserList* self, UserEntry* entry) { g_signal_emit_by_name (self, "user-selected", self->priv->selected_entry->name); if (self->priv->old_selected_entry != NULL) { self->priv->background_alpha = 0.0; - if (self->priv->background_animate_timer == 0) { + if (self->priv->background_animate_timer == ((guint) 0)) { guint _tmp3_; - g_debug ("user-list.vala:419: start background animation"); + g_debug ("user-list.vala:508: start background animation"); _tmp3_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 10, _user_list_background_animate_cb_gsource_func, g_object_ref (self), g_object_unref); self->priv->background_animate_timer = _tmp3_; } @@ -1019,13 +1372,13 @@ static void user_list_select_entry (UserList* self, UserEntry* entry) { } } if (animate) { - _tmp6_ = self->priv->scroll_animate_timer == 0; + _tmp6_ = self->priv->scroll_animate_timer == ((guint) 0); } else { _tmp6_ = FALSE; } if (_tmp6_) { guint _tmp7_; - g_debug ("user-list.vala:440: start scroll animation"); + g_debug ("user-list.vala:529: start scroll animation"); _tmp7_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 10, _user_list_scroll_animate_cb_gsource_func, g_object_ref (self), g_object_unref); self->priv->scroll_animate_timer = _tmp7_; } @@ -1260,10 +1613,11 @@ static void user_list_real_size_allocate (GtkWidget* base, GtkAllocation* alloca GtkRequisition natural_size = {0}; GtkRequisition _tmp5_ = {0}; GtkAllocation child_allocation = {0}; + gint _tmp6_; gint base_x = 0; gint base_y = 0; - gint _tmp6_; gint _tmp7_; + gint _tmp8_; self = (UserList*) base; _tmp1_ = gtk_widget_get_allocated_height ((GtkWidget*) self); if ((*allocation).height != _tmp1_) { @@ -1287,21 +1641,21 @@ static void user_list_real_size_allocate (GtkWidget* base, GtkAllocation* alloca natural_size = _tmp5_; memset (&child_allocation, 0, sizeof (GtkAllocation)); natural_size.height = 32; - natural_size.width = 300; - child_allocation.x = (*allocation).width - natural_size.width; + _tmp6_ = gtk_widget_get_allocated_width ((GtkWidget*) self); + natural_size.width = _tmp6_; + child_allocation.x = 0; child_allocation.y = 0; child_allocation.width = natural_size.width; child_allocation.height = natural_size.height; gtk_widget_size_allocate ((GtkWidget*) self->priv->menubar, &child_allocation); - user_list_get_selected_location (self, &_tmp6_, &_tmp7_); - base_x = _tmp6_; - base_y = _tmp7_; + user_list_get_selected_location (self, &_tmp7_, &_tmp8_); + base_x = _tmp7_; + base_y = _tmp8_; child_allocation.x = base_x + (self->priv->grid_size / 2); - child_allocation.y = base_y + (self->priv->grid_size * 2); + child_allocation.y = (base_y + (self->priv->grid_size * 2)) - (self->priv->grid_size / 2); child_allocation.width = self->priv->grid_size * 8; child_allocation.height = self->priv->grid_size; gtk_widget_size_allocate ((GtkWidget*) self->priv->prompt_entry, &child_allocation); - child_allocation.y = child_allocation.y - (self->priv->grid_size / 2); gtk_widget_size_allocate ((GtkWidget*) self->priv->login_button, &child_allocation); child_allocation.x = ((base_x + (self->priv->box_width * self->priv->grid_size)) - self->priv->grid_size) - (self->priv->grid_size / 4); child_allocation.y = base_y + (self->priv->grid_size / 4); @@ -1315,10 +1669,10 @@ static void user_list_real_size_allocate (GtkWidget* base, GtkAllocation* alloca GList* entry_it = NULL; entry_collection = self->priv->entries; for (entry_it = entry_collection; entry_it != NULL; entry_it = entry_it->next) { - UserEntry* _tmp8_; + UserEntry* _tmp9_; UserEntry* entry = NULL; - _tmp8_ = _user_entry_ref0 ((UserEntry*) entry_it->data); - entry = _tmp8_; + _tmp9_ = _user_entry_ref0 ((UserEntry*) entry_it->data); + entry = _tmp9_; { _cairo_pattern_destroy0 (entry->background_pattern); entry->background_pattern = NULL; @@ -1348,18 +1702,18 @@ static void user_list_draw_entries (UserList* self, cairo_t* c) { cairo_save (c); cairo_translate (c, (gdouble) 0, entry->y * self->priv->grid_size); if (entry->is_active) { - cairo_move_to (c, (gdouble) 0, 0.25 * self->priv->grid_size); - cairo_rel_line_to (c, 0.4 * self->priv->grid_size, 0.25 * self->priv->grid_size); - cairo_rel_line_to (c, (-0.4) * self->priv->grid_size, 0.25 * self->priv->grid_size); + cairo_move_to (c, (gdouble) 8, ((self->priv->grid_size / 2) + 0.5) - 4); + cairo_rel_line_to (c, (gdouble) 5, (gdouble) 4); + cairo_rel_line_to (c, (gdouble) (-5), (gdouble) 4); cairo_close_path (c); - cairo_set_source_rgb (c, 1.0, 1.0, 1.0); + cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.5); cairo_fill (c); } - cairo_set_font_size (c, 0.6 * self->priv->grid_size); + cairo_set_font_size (c, 0.5 * self->priv->grid_size); cairo_text_extents (c, entry->label, &_tmp1_); extents = _tmp1_; cairo_move_to (c, (gdouble) (self->priv->grid_size / 2), self->priv->grid_size - ((self->priv->grid_size - extents.height) / 2)); - cairo_set_source_rgb (c, 1.0, 1.0, 1.0); + cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.5); cairo_show_text (c, entry->label); cairo_restore (c); _user_entry_unref0 (entry); @@ -1408,7 +1762,9 @@ static cairo_pattern_t* user_list_make_background (UserList* self, const gchar* cairo_surface_t* surface; cairo_t* _tmp34_ = NULL; cairo_t* bc; - cairo_pattern_t* _tmp35_ = NULL; + gint _tmp35_; + gint _tmp36_; + cairo_pattern_t* _tmp37_ = NULL; cairo_pattern_t* pattern; GError * _inner_error_ = NULL; g_return_val_if_fail (self != NULL, NULL); @@ -1417,7 +1773,7 @@ static cairo_pattern_t* user_list_make_background (UserList* self, const gchar* } _tmp0_ = gtk_widget_get_allocated_width ((GtkWidget*) self); _tmp1_ = gtk_widget_get_allocated_height ((GtkWidget*) self); - g_debug ("user-list.vala:618: making background %s at %dx%d", filename, _tmp0_, _tmp1_); + g_debug ("user-list.vala:705: making background %s at %dx%d", filename, _tmp0_, _tmp1_); _tmp3_ = gdk_color_parse (filename, &_tmp2_); color = _tmp2_; if (_tmp3_) { @@ -1432,26 +1788,26 @@ static cairo_pattern_t* user_list_make_background (UserList* self, const gchar* _tmp5_ = gdk_pixbuf_new_from_file (filename, &_inner_error_); _tmp6_ = _tmp5_; if (_inner_error_ != NULL) { - goto __catch5_g_error; + goto __catch7_g_error; } _g_object_unref0 (orig_image); orig_image = _tmp6_; } - goto __finally5; - __catch5_g_error: + goto __finally7; + __catch7_g_error: { GError* e = NULL; cairo_pattern_t* _tmp7_ = NULL; e = _inner_error_; _inner_error_ = NULL; - g_debug ("user-list.vala:633: Error loading background: %s", e->message); + g_debug ("user-list.vala:720: Error loading background: %s", e->message); _tmp7_ = cairo_pattern_create_rgb ((gdouble) 0, (gdouble) 0, (gdouble) 0); result = _tmp7_; _g_error_free0 (e); _g_object_unref0 (orig_image); return result; } - __finally5: + __finally7: if (_inner_error_ != NULL) { _g_object_unref0 (orig_image); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); @@ -1524,9 +1880,12 @@ static cairo_pattern_t* user_list_make_background (UserList* self, const gchar* gdk_cairo_set_source_pixbuf (bc, image, (gdouble) 0, (gdouble) 0); cairo_paint (bc); cairo_set_source (bc, overlay); - cairo_paint (bc); - _tmp35_ = cairo_pattern_create_for_surface (surface); - pattern = _tmp35_; + _tmp35_ = gtk_widget_get_allocated_width ((GtkWidget*) self); + _tmp36_ = gtk_widget_get_allocated_height ((GtkWidget*) self); + cairo_rectangle (bc, (gdouble) (self->priv->grid_size - 1), (gdouble) (self->priv->grid_size - 1), (gdouble) ((_tmp35_ - (self->priv->grid_size * 2)) + 2), (gdouble) ((_tmp36_ - (self->priv->grid_size * 2)) + 2)); + cairo_fill (bc); + _tmp37_ = cairo_pattern_create_for_surface (surface); + pattern = _tmp37_; cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); result = pattern; _cairo_destroy0 (bc); @@ -1577,26 +1936,9 @@ static cairo_pattern_t* user_list_get_background_for_user (UserList* self, UserE } -static gboolean user_list_real_draw (GtkWidget* base, cairo_t* c) { - UserList * self; - gboolean result = FALSE; - struct utsname utsname = {0}; - gint _tmp6_; - cairo_text_extents_t logo_extents = {0}; - cairo_text_extents_t _tmp7_ = {0}; - gint _tmp8_; - gint base_x = 0; - gint base_y = 0; - gint _tmp9_; - gint _tmp10_; - guint _tmp11_; - guint _tmp12_; - guint _tmp13_; - guint _tmp14_; - guint _tmp15_; - gboolean _tmp17_ = FALSE; - self = (UserList*) base; - g_return_val_if_fail (c != NULL, FALSE); +static void user_list_draw_background (UserList* self, cairo_t* c) { + g_return_if_fail (self != NULL); + g_return_if_fail (c != NULL); if (self->priv->background_alpha == 1.0) { cairo_pattern_t* _tmp0_ = NULL; cairo_pattern_t* _tmp1_; @@ -1621,94 +1963,132 @@ static gboolean user_list_real_draw (GtkWidget* base, cairo_t* c) { _cairo_pattern_destroy0 (_tmp5_); cairo_paint_with_alpha (c, self->priv->background_alpha); } - cairo_select_font_face (c, "ubuntu", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size (c, 0.4 * self->priv->grid_size); - cairo_move_to (c, (gdouble) self->priv->grid_size, (gdouble) self->priv->grid_size); - cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.5); - uname (&utsname); - cairo_show_text (c, utsname.nodename); +} + + +static gboolean user_list_real_draw (GtkWidget* base, cairo_t* c) { + UserList * self; + gboolean result = FALSE; + cairo_text_extents_t logo_extents = {0}; + cairo_text_extents_t _tmp0_ = {0}; + gint _tmp1_; + gint _tmp2_; + gchar* _tmp3_; + gchar* _tmp4_; + gint base_x = 0; + gint base_y = 0; + gint _tmp5_; + gint _tmp6_; + guint _tmp7_; + guint _tmp8_; + guint _tmp9_; + guint _tmp10_; + guint _tmp11_; + gint border; + gint box_w; + gint box_h; + gdouble box_r; + gboolean _tmp13_ = FALSE; + self = (UserList*) base; + g_return_val_if_fail (c != NULL, FALSE); + user_list_draw_background (self, c); + cairo_set_font_face (c, self->priv->font_face); cairo_set_font_size (c, 0.8 * self->priv->grid_size); - _tmp6_ = gtk_widget_get_allocated_height ((GtkWidget*) self); - cairo_move_to (c, (gdouble) self->priv->grid_size, (gdouble) (_tmp6_ - self->priv->grid_size)); + cairo_text_extents (c, self->os_name, &_tmp0_); + logo_extents = _tmp0_; + _tmp1_ = gtk_widget_get_allocated_height ((GtkWidget*) self); + cairo_move_to (c, (gdouble) self->priv->grid_size, (_tmp1_ - self->priv->grid_size) - ((self->priv->grid_size - logo_extents.height) / 2)); cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.5); - cairo_show_text (c, "ubuntu"); - cairo_text_extents (c, "ubuntu", &_tmp7_); - logo_extents = _tmp7_; + cairo_show_text (c, self->os_name); cairo_set_font_size (c, 0.4 * self->priv->grid_size); - _tmp8_ = gtk_widget_get_allocated_height ((GtkWidget*) self); - cairo_move_to (c, self->priv->grid_size + logo_extents.width, (gdouble) (_tmp8_ - self->priv->grid_size)); + _tmp2_ = gtk_widget_get_allocated_height ((GtkWidget*) self); + cairo_move_to (c, self->priv->grid_size + logo_extents.width, (_tmp2_ - self->priv->grid_size) - ((self->priv->grid_size - logo_extents.height) / 2)); cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.5); - cairo_show_text (c, " 11.10"); - user_list_get_selected_location (self, &_tmp9_, &_tmp10_); - base_x = _tmp9_; - base_y = _tmp10_; + _tmp3_ = g_strconcat (" ", self->os_version, NULL); + _tmp4_ = _tmp3_; + cairo_show_text (c, _tmp4_); + _g_free0 (_tmp4_); + user_list_get_selected_location (self, &_tmp5_, &_tmp6_); + base_x = _tmp5_; + base_y = _tmp6_; cairo_save (c); cairo_translate (c, (gdouble) base_x, (gdouble) base_y); cairo_save (c); - _tmp11_ = user_list_get_n_above (self); - _tmp12_ = user_list_get_n_above (self); - cairo_rectangle (c, (gdouble) 0, (gdouble) ((-_tmp11_) * self->priv->grid_size), (gdouble) (self->priv->box_width * self->priv->grid_size), (gdouble) (_tmp12_ * self->priv->grid_size)); + _tmp7_ = user_list_get_n_above (self); + _tmp8_ = user_list_get_n_above (self); + cairo_rectangle (c, (gdouble) 0, (gdouble) ((-_tmp7_) * self->priv->grid_size), (gdouble) (self->priv->box_width * self->priv->grid_size), (gdouble) (_tmp8_ * self->priv->grid_size)); cairo_clip (c); user_list_draw_entries (self, c); - _tmp13_ = user_list_get_n_entries (self); - cairo_translate (c, (gdouble) 0, (gdouble) ((-_tmp13_) * self->priv->grid_size)); + _tmp9_ = user_list_get_n_entries (self); + cairo_translate (c, (gdouble) 0, (gdouble) ((-_tmp9_) * self->priv->grid_size)); user_list_draw_entries (self, c); cairo_restore (c); cairo_save (c); - _tmp14_ = user_list_get_n_below (self); - cairo_rectangle (c, (gdouble) 0, (gdouble) (self->priv->box_height * self->priv->grid_size), (gdouble) (self->priv->box_width * self->priv->grid_size), (gdouble) (_tmp14_ * self->priv->grid_size)); + _tmp10_ = user_list_get_n_below (self); + cairo_rectangle (c, (gdouble) 0, (gdouble) (self->priv->box_height * self->priv->grid_size), (gdouble) (self->priv->box_width * self->priv->grid_size), (gdouble) (_tmp10_ * self->priv->grid_size)); cairo_clip (c); cairo_translate (c, (gdouble) 0, (gdouble) ((self->priv->box_height - 1) * self->priv->grid_size)); user_list_draw_entries (self, c); - _tmp15_ = user_list_get_n_entries (self); - cairo_translate (c, (gdouble) 0, (gdouble) (_tmp15_ * self->priv->grid_size)); + _tmp11_ = user_list_get_n_entries (self); + cairo_translate (c, (gdouble) 0, (gdouble) (_tmp11_ * self->priv->grid_size)); user_list_draw_entries (self, c); cairo_restore (c); - user_list_cairo_rounded_rectangle (self, c, (gdouble) 0, (gdouble) 0, (gdouble) (self->priv->box_width * self->priv->grid_size), (gdouble) (self->priv->box_height * self->priv->grid_size), 0.2 * self->priv->grid_size); - cairo_set_source_rgba (c, 0.0, 0.0, 0.0, 0.5); - cairo_fill (c); + border = 5; + box_w = (self->priv->box_width * self->priv->grid_size) - (border * 2); + box_h = (self->priv->box_height * self->priv->grid_size) - (border * 2); + box_r = 0.2 * self->priv->grid_size; + user_list_cairo_rounded_rectangle (self, c, border + 0.5, border + 0.5, (gdouble) (box_w - 1), (gdouble) (box_h - 1), box_r); + cairo_set_source_rgba (c, 0.0, 0.0, 0.0, 0.4); + cairo_fill_preserve (c); + cairo_set_line_width (c, 1.0); + cairo_set_source_rgba (c, 1.0, 1.0, 1.0, 0.25); + cairo_stroke (c); + user_list_cairo_rounded_rectangle (self, c, (border + 0.5) + 2, (border + 0.5) + 2, (gdouble) (box_w - 5), (gdouble) (box_h - 5), box_r - 2); + cairo_stroke (c); if (self->priv->selected_entry != NULL) { cairo_text_extents_t extents = {0}; - cairo_text_extents_t _tmp16_ = {0}; - cairo_set_font_size (c, 0.6 * self->priv->grid_size); - cairo_text_extents (c, self->priv->selected_entry->label, &_tmp16_); - extents = _tmp16_; + cairo_text_extents_t _tmp12_ = {0}; + gdouble text_y; + cairo_set_font_size (c, 0.5 * self->priv->grid_size); + cairo_text_extents (c, self->priv->selected_entry->label, &_tmp12_); + extents = _tmp12_; + text_y = self->priv->grid_size - (((self->priv->grid_size - border) - extents.height) / 4); if (self->priv->selected_entry->is_active) { - cairo_move_to (c, (gdouble) 0, ((self->priv->grid_size - extents.height) / 2) + (0.25 * self->priv->grid_size)); - cairo_rel_line_to (c, 0.4 * self->priv->grid_size, 0.25 * self->priv->grid_size); - cairo_rel_line_to (c, (-0.4) * self->priv->grid_size, 0.25 * self->priv->grid_size); + cairo_move_to (c, (gdouble) 8, ((text_y - (extents.height / 2)) + 0.5) - 4); + cairo_rel_line_to (c, (gdouble) 5, (gdouble) 4); + cairo_rel_line_to (c, (gdouble) (-5), (gdouble) 4); cairo_close_path (c); cairo_set_source_rgb (c, 1.0, 1.0, 1.0); cairo_fill (c); } - cairo_move_to (c, (gdouble) (self->priv->grid_size / 2), (gdouble) self->priv->grid_size); + cairo_move_to (c, (gdouble) (self->priv->grid_size / 2), text_y); cairo_set_source_rgb (c, 1.0, 1.0, 1.0); cairo_show_text (c, self->priv->selected_entry->label); } if (self->priv->error != NULL) { - _tmp17_ = TRUE; + _tmp13_ = TRUE; } else { - _tmp17_ = self->priv->message != NULL; + _tmp13_ = self->priv->message != NULL; } - if (_tmp17_) { + if (_tmp13_) { cairo_text_extents_t extents = {0}; gchar* text = NULL; - cairo_text_extents_t _tmp20_ = {0}; + cairo_text_extents_t _tmp16_ = {0}; if (self->priv->error == NULL) { - gchar* _tmp18_; - _tmp18_ = g_strdup (self->priv->message); + gchar* _tmp14_; + _tmp14_ = g_strdup (self->priv->message); _g_free0 (text); - text = _tmp18_; + text = _tmp14_; } else { - gchar* _tmp19_; - _tmp19_ = g_strdup (self->priv->error); + gchar* _tmp15_; + _tmp15_ = g_strdup (self->priv->error); _g_free0 (text); - text = _tmp19_; + text = _tmp15_; } - cairo_set_font_size (c, 0.4 * self->priv->grid_size); - cairo_text_extents (c, text, &_tmp20_); - extents = _tmp20_; - cairo_move_to (c, (gdouble) (self->priv->grid_size / 2), (gdouble) (self->priv->grid_size * 2)); + cairo_set_font_size (c, 0.3 * self->priv->grid_size); + cairo_text_extents (c, text, &_tmp16_); + extents = _tmp16_; + cairo_move_to (c, (gdouble) (self->priv->grid_size / 2), self->priv->grid_size * 1.25); if (self->priv->error != NULL) { cairo_set_source_rgb (c, 1.0, 0.0, 0.0); } else { @@ -1723,10 +2103,10 @@ static gboolean user_list_real_draw (GtkWidget* base, cairo_t* c) { GList* child_it = NULL; child_collection = self->priv->children; for (child_it = child_collection; child_it != NULL; child_it = child_it->next) { - GtkWidget* _tmp21_; + GtkWidget* _tmp17_; GtkWidget* child = NULL; - _tmp21_ = _g_object_ref0 ((GtkWidget*) child_it->data); - child = _tmp21_; + _tmp17_ = _g_object_ref0 ((GtkWidget*) child_it->data); + child = _tmp17_; { gtk_container_propagate_draw ((GtkContainer*) self, child, c); _g_object_unref0 (child); @@ -1747,7 +2127,7 @@ static void user_list_cairo_rounded_rectangle (UserList* self, cairo_t* c, gdoub w = width - (radius * 2); h = height - (radius * 2); kappa = 0.5522847498 * radius; - cairo_move_to (c, radius, (gdouble) 0); + cairo_move_to (c, x + radius, y); cairo_rel_line_to (c, w, (gdouble) 0); cairo_rel_curve_to (c, kappa, (gdouble) 0, radius, radius - kappa, radius, radius); cairo_rel_line_to (c, (gdouble) 0, h); @@ -1811,10 +2191,10 @@ static gboolean user_list_real_button_release_event (GtkWidget* base, GdkEventBu gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; y = entry->y; - if (y > 0) { + if (y > ((gdouble) 0)) { y = y + (self->priv->box_height - 1); } - if ((*event).x >= base_x) { + if ((*event).x >= ((gdouble) base_x)) { _tmp5_ = (*event).x <= (base_x + (entry->width * self->priv->grid_size)); } else { _tmp5_ = FALSE; @@ -1975,9 +2355,15 @@ static void user_list_class_init (UserListClass * klass) { static void user_list_instance_init (UserList * self) { gchar* _tmp0_; + gchar* _tmp1_; + gchar* _tmp2_; self->priv = USER_LIST_GET_PRIVATE (self); _tmp0_ = g_strdup ("#000000"); self->default_background = _tmp0_; + _tmp1_ = g_strdup (""); + self->os_name = _tmp1_; + _tmp2_ = g_strdup (""); + self->os_version = _tmp2_; self->priv->grid_size = 40; self->priv->box_width = 9; self->priv->entries = NULL; @@ -1996,6 +2382,8 @@ static void user_list_finalize (GObject* obj) { UserList * self; self = USER_LIST (obj); _g_free0 (self->default_background); + _g_free0 (self->os_name); + _g_free0 (self->os_version); __g_list_free__user_entry_unref0_0 (self->priv->entries); _user_entry_unref0 (self->priv->selected_entry); _user_entry_unref0 (self->priv->old_selected_entry); @@ -2004,10 +2392,12 @@ static void user_list_finalize (GObject* obj) { __g_list_free__g_object_unref0_0 (self->priv->indicators); _g_free0 (self->priv->error); _g_free0 (self->priv->message); + _cairo_font_face_destroy0 (self->priv->font_face); _g_object_unref0 (self->priv->prompt_entry); _g_object_unref0 (self->priv->login_button); _g_object_unref0 (self->priv->options_button); _g_object_unref0 (self->priv->options_menu); + _cairo_destroy0 (self->priv->menubar_cairo_context); G_OBJECT_CLASS (user_list_parent_class)->finalize (obj); } diff --git a/src/user-list.vala b/src/user-list.vala index 0cd0db3d..8b1ca8aa 100644 --- a/src/user-list.vala +++ b/src/user-list.vala @@ -73,6 +73,8 @@ public class UserList : Gtk.Container private string? error; private string? message; + + private Cairo.FontFace font_face; private Gtk.Entry prompt_entry; private Gtk.Button login_button; @@ -120,18 +122,38 @@ public class UserList : Gtk.Container can_focus = false; background_alpha = 1.0; + FreeType.Library library; + FreeType.init (out library); + FreeType.Face face; + FreeType.new_face (library, "/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf", 0, out face); + font_face = Cairo.ft_font_face_create_for_ft_face (face, 0); + menubar = new Gtk.MenuBar (); + + menubar.draw.connect_after (menubar_draw_cb); menubar.pack_direction = Gtk.PackDirection.RTL; menubar.show (); add (menubar); + var i = new Gtk.MenuItem.with_label (Posix.utsname ().nodename); + i.right_justified = true; + i.show (); + menubar.append (i); + prompt_entry = new Gtk.Entry (); + prompt_entry.invisible_char = '✻'; prompt_entry.has_frame = false; + var b = Gtk.Border (); + b.left = 15; + b.right = 15; + b.top = 15; + b.bottom = 15; + prompt_entry.set_inner_border (b); prompt_entry.activate.connect (prompt_entry_activate_cb); add (prompt_entry); login_button = new Gtk.Button (); - var label = new Gtk.Label ("<span font_size=\"large\">Login</span>"); + var label = new Gtk.Label ("<span font_size=\"large\">" + _("Login") + "</span>"); label.use_markup = true; label.show (); login_button.add (label); @@ -139,11 +161,10 @@ public class UserList : Gtk.Container add (login_button); options_button = new Gtk.Button (); - label = new Gtk.Label ("<span size=\"x-large\" color=\"white\">⚙</span>"); - label.use_markup = true; - label.show (); + var image = new Gtk.Image.from_file (Path.build_filename (Config.PKGDATADIR, "cog.png", null)); + image.show (); options_button.relief = Gtk.ReliefStyle.NONE; - options_button.add (label); + options_button.add (image); options_button.clicked.connect (options_button_clicked_cb); add (options_button); @@ -152,6 +173,23 @@ public class UserList : Gtk.Container setup_indicators (); } + private Cairo.Context menubar_cairo_context; + + private void draw_child_cb (Gtk.Widget child) + { + menubar.propagate_draw (child, menubar_cairo_context); + } + + private bool menubar_draw_cb (Cairo.Context c) + { + draw_background (c); + + menubar_cairo_context = c; + menubar.forall (draw_child_cb); + + return false; + } + async void greeter_set_env (string key, string val) { GLib.Environment.set_variable (key, val, true); @@ -219,7 +257,7 @@ public class UserList : Gtk.Container sensitive = false; error = null; - message = "Logging in..."; + message = _("Logging in..."); login_button.hide (); prompt_entry.hide (); @@ -259,7 +297,7 @@ public class UserList : Gtk.Container if (entry.menu != null) menuitem.submenu = entry.menu; - menubar.append (menuitem); + menubar.insert (menuitem, (int) menubar.get_children ().length () - 1); } private void indicator_removed_cb (Indicator.ObjectEntry entry) @@ -312,7 +350,7 @@ public class UserList : Gtk.Container e.label = label; e.background_filename = background; e.is_active = is_active; - e.width = 7; + e.width = 5; e.index = (int) n_entries; entries.append (e); @@ -339,10 +377,21 @@ public class UserList : Gtk.Container debug ("login %s", selected_entry.name); start_session (); } + + private void options_menu_position_cb (Gtk.Menu menu, out int x, out int y, out bool push_in) + { + Gtk.Allocation button_allocation; + options_button.get_allocation (out button_allocation); + + get_window ().get_origin (out x, out y); + x += button_allocation.x; + y += button_allocation.y + button_allocation.height; + push_in = true; + } private void options_button_clicked_cb () { - options_menu.popup (null, null, null, 0, Gtk.get_current_event_time ()); + options_menu.popup (null, null, options_menu_position_cb, 0, Gtk.get_current_event_time ()); } private void update_entry_location (UserEntry entry) @@ -417,7 +466,7 @@ public class UserList : Gtk.Container private bool background_animate_cb () { - background_alpha += 0.07; + background_alpha += 0.05; if (background_alpha > 1.0) background_alpha = 1.0; @@ -588,8 +637,8 @@ public class UserList : Gtk.Container menubar.get_preferred_size (null, out natural_size); var child_allocation = Gtk.Allocation (); natural_size.height = 32; - natural_size.width = 300; - child_allocation.x = allocation.width - natural_size.width; + natural_size.width = get_allocated_width (); + child_allocation.x = 0; child_allocation.y = 0; child_allocation.width = natural_size.width; child_allocation.height = natural_size.height; @@ -599,12 +648,10 @@ public class UserList : Gtk.Container int base_x, base_y; get_selected_location (out base_x, out base_y); child_allocation.x = base_x + grid_size / 2; - child_allocation.y = base_y + grid_size * 2; + child_allocation.y = base_y + grid_size * 2 - grid_size / 2; child_allocation.width = grid_size * 8; child_allocation.height = grid_size; prompt_entry.size_allocate (child_allocation); - - child_allocation.y -= grid_size / 2; login_button.size_allocate (child_allocation); child_allocation.x = base_x + box_width * grid_size - grid_size - grid_size / 4; @@ -631,9 +678,9 @@ public class UserList : Gtk.Container if (entry.is_active) { - c.move_to (0.1 * grid_size, 0.4 * grid_size); - c.rel_line_to (0.15 * grid_size, 0.1 * grid_size); - c.rel_line_to (-0.15 * grid_size, 0.1 * grid_size); + c.move_to (8, grid_size / 2 + 0.5 - 4); + c.rel_line_to (5, 4); + c.rel_line_to (-5, 4); c.close_path (); c.set_source_rgba (1.0, 1.0, 1.0, 0.5); c.fill (); @@ -739,10 +786,9 @@ public class UserList : Gtk.Container entry.background_pattern = make_background (entry.background_filename); return entry.background_pattern; } - - public override bool draw (Cairo.Context c) + + private void draw_background (Cairo.Context c) { - /* Draw background */ if (background_alpha == 1.0) { c.set_source (get_background_for_user (selected_entry)); @@ -758,15 +804,13 @@ public class UserList : Gtk.Container c.set_source (get_background_for_user (selected_entry)); c.paint_with_alpha (background_alpha); } + } - c.select_font_face ("ubuntu", Cairo.FontSlant.NORMAL, Cairo.FontWeight.NORMAL); + public override bool draw (Cairo.Context c) + { + draw_background (c); - /* Hostname */ - c.set_font_size (0.4 * grid_size); - c.move_to (grid_size, grid_size); - c.set_source_rgba (1.0, 1.0, 1.0, 0.5); - var utsname = Posix.utsname (); - c.show_text (utsname.nodename); + c.set_font_face (font_face); /* Release */ Cairo.TextExtents logo_extents; @@ -806,7 +850,7 @@ public class UserList : Gtk.Container c.restore (); /* Draw box */ - var border = 0.1 * grid_size; + var border = 5; var box_w = box_width * grid_size - border * 2; var box_h = box_height * grid_size - border * 2; var box_r = 0.2 * grid_size; @@ -836,9 +880,9 @@ public class UserList : Gtk.Container if (selected_entry.is_active) { - c.move_to (0.1 * grid_size, text_y - extents.height / 2 - 0.1 * grid_size); - c.rel_line_to (0.15 * grid_size, 0.1 * grid_size); - c.rel_line_to (-0.15 * grid_size, 0.1 * grid_size); + c.move_to (8, text_y - extents.height / 2 + 0.5 - 4); + c.rel_line_to (5, 4); + c.rel_line_to (-5, 4); c.close_path (); c.set_source_rgb (1.0, 1.0, 1.0); c.fill (); @@ -858,9 +902,9 @@ public class UserList : Gtk.Container else text = error; - c.set_font_size (0.4 * grid_size); + c.set_font_size (0.3 * grid_size); c.text_extents (text, out extents); - c.move_to (grid_size / 2, grid_size * 2); + c.move_to (grid_size / 2, grid_size * 1.25); if (error != null) c.set_source_rgb (1.0, 0.0, 0.0); else |
