summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Bacher <[email protected]>2011-08-24 10:45:15 +0200
committergit-ubuntu importer <[email protected]>2011-08-24 09:15:12 +0000
commitef1dcf34db415d90562a54d097a2a44c2681be3d (patch)
treedc08158f80a99db652fb801f5d3bec301ffdfb04
parentf7119b99a814f8a6b5500df4304f570aeb12689d (diff)
parent6a6cdd6c34e19ac8d8855ef77a822e6d266d335f (diff)
0.0.3-0ubuntu1 (patches applied)applied/0.0.3-0ubuntu1
Imported using git-ubuntu import.
-rw-r--r--Makefile.in3
-rw-r--r--NEWS3
-rw-r--r--TODO1
-rwxr-xr-xconfigure40
-rw-r--r--configure.ac3
-rw-r--r--data/Makefile.am4
-rw-r--r--data/Makefile.in60
-rw-r--r--data/cog.pngbin0 -> 3253 bytes
-rw-r--r--debian/changelog7
-rw-r--r--debian/patches/series1
-rw-r--r--debian/patches/update_to_trunk.patch433
-rw-r--r--src/Makefile.am4
-rw-r--r--src/Makefile.in35
-rw-r--r--src/config.vapi2
-rw-r--r--src/fixes.vapi26
-rw-r--r--src/settings-daemon.c429
-rw-r--r--src/unity-greeter.c327
-rw-r--r--src/unity-greeter.vala22
-rw-r--r--src/user-list.c714
-rw-r--r--src/user-list.vala112
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@
diff --git a/NEWS b/NEWS
index 3f2c3756..9eb5e240 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/TODO b/TODO
deleted file mode 100644
index 42f8f8ad..00000000
--- a/TODO
+++ /dev/null
@@ -1 +0,0 @@
-Use ConsoleKit to see who is logged in \ No newline at end of file
diff --git a/configure b/configure
index 6182892f..c0b1d7c7 100755
--- a/configure
+++ b/configure
@@ -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
new file mode 100644
index 00000000..c2124eec
--- /dev/null
+++ b/data/cog.png
Binary files differ
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