Compare commits
	
		
			21 Commits
		
	
	
		
			wip/rancel
			...
			wip/new-no
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | bf374ccabb | ||
|   | 02060d2bbc | ||
|   | 8750f1edc0 | ||
|   | 798f17a97d | ||
|   | a4091adbf2 | ||
|   | ecf795b6ef | ||
|   | 75447b249c | ||
|   | 26d2fb8a37 | ||
|   | f7223763d2 | ||
|   | 0b414308fb | ||
|   | 060917ae2b | ||
|   | 9f2e5b9b51 | ||
|   | 4a07eb77f6 | ||
|   | fbe379c81c | ||
|   | a07e8bbf37 | ||
|   | a6aabb1d3a | ||
|   | aef6273fed | ||
|   | be8b1c7d2d | ||
|   | 14bc748cea | ||
|   | c32917f6c1 | ||
|   | 182d45dace | 
							
								
								
									
										35
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -6,20 +6,28 @@ | ||||
| ABOUT-NLS | ||||
| ChangeLog | ||||
| INSTALL | ||||
| Makefile | ||||
| Makefile.in | ||||
| aclocal.m4 | ||||
| autom4te.cache | ||||
| data/org.gnome.Shell.desktop | ||||
| data/org.gnome.Shell.desktop.in | ||||
| config.h | ||||
| config.h.in | ||||
| config.log | ||||
| config.status | ||||
| config | ||||
| configure | ||||
| data/50-gnome-shell-*.xml | ||||
| data/gnome-shell.desktop | ||||
| data/gnome-shell.desktop.in | ||||
| data/gnome-shell-wayland.desktop | ||||
| data/gnome-shell-wayland.desktop.in | ||||
| data/gnome-shell-extension-prefs.desktop | ||||
| data/gnome-shell-extension-prefs.desktop.in | ||||
| data/gnome-shell-theme.gresource | ||||
| data/gschemas.compiled | ||||
| data/perf-background.xml | ||||
| data/org.gnome.shell.gschema.xml | ||||
| data/org.gnome.shell.gschema.valid | ||||
| data/org.gnome.Shell.PortalHelper.desktop | ||||
| data/org.gnome.Shell.PortalHelper.service | ||||
| data/theme/.sass-cache | ||||
| data/org.gnome.shell.evolution.calendar.gschema.xml | ||||
| data/org.gnome.shell.evolution.calendar.gschema.valid | ||||
| docs/reference/*/*.args | ||||
| docs/reference/*/*.bak | ||||
| docs/reference/*/*.hierarchy | ||||
| @@ -33,9 +41,15 @@ docs/reference/*/*.types | ||||
| docs/reference/*/html/ | ||||
| docs/reference/*/xml/ | ||||
| docs/reference/shell/doc-gen-* | ||||
| gtk-doc.make | ||||
| js/misc/config.js | ||||
| js/js-resources.c | ||||
| js/js-resources.h | ||||
| intltool-extract.in | ||||
| intltool-merge.in | ||||
| intltool-update.in | ||||
| libtool | ||||
| m4/ | ||||
| man/gnome-shell.1 | ||||
| omf.make | ||||
| po/*.gmo | ||||
| @@ -44,6 +58,7 @@ po/*.header | ||||
| po/*.sed | ||||
| po/*.sin | ||||
| po/.intltool-merge-cache | ||||
| po/Makefile.in.in | ||||
| po/Makevars.template | ||||
| po/POTFILES | ||||
| po/Rules-quot | ||||
| @@ -53,7 +68,10 @@ src/*.gir | ||||
| src/*.typelib | ||||
| src/*-enum-types.[ch] | ||||
| src/*-marshal.[ch] | ||||
| src/Makefile | ||||
| src/Makefile.in | ||||
| src/calendar-server/evolution-calendar.desktop | ||||
| src/calendar-server/evolution-calendar.desktop.in | ||||
| src/calendar-server/org.gnome.Shell.CalendarServer.service | ||||
| src/gnome-shell | ||||
| src/gnome-shell-calendar-server | ||||
| @@ -62,9 +80,7 @@ src/gnome-shell-extension-tool | ||||
| src/gnome-shell-hotplug-sniffer | ||||
| src/gnome-shell-perf-helper | ||||
| src/gnome-shell-perf-tool | ||||
| src/gnome-shell-portal-helper | ||||
| src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service | ||||
| src/org-gtk-application.[ch] | ||||
| src/run-js-test | ||||
| src/test-recorder | ||||
| src/test-recorder.ogg | ||||
| @@ -76,6 +92,7 @@ src/st-scroll-view-fade-generated.c | ||||
| src/stamp-st-scroll-view-fade-generated.c | ||||
| stamp-h1 | ||||
| tests/run-test.sh | ||||
| xmldocs.make | ||||
| *~ | ||||
| *.patch | ||||
| *.sw? | ||||
|   | ||||
							
								
								
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,6 +1,3 @@ | ||||
| [submodule "data/theme/gnome-shell-sass"] | ||||
| 	path = data/theme/gnome-shell-sass | ||||
| 	url = https://git.gnome.org/browse/gnome-shell-sass | ||||
| [submodule "subprojects/gvc"] | ||||
| 	path = subprojects/gvc | ||||
| 	url = https://git.gnome.org/browse/libgnome-volume-control | ||||
| [submodule "src/gvc"] | ||||
| 	path = src/gvc | ||||
| 	url = git://git.gnome.org/libgnome-volume-control | ||||
|   | ||||
							
								
								
									
										12
									
								
								HACKING
									
									
									
									
									
								
							
							
						
						| @@ -132,7 +132,7 @@ There are many approaches to classes in JavaScript. We use our own class framewo | ||||
| (sigh), which is built in gjs. The advantage is that it supports inheriting from | ||||
| GObjects, although this feature isn't used very often in the Shell itself. | ||||
|  | ||||
|     var IconLabelMenuItem = new Lang.Class({ | ||||
|     const IconLabelMenuItem = new Lang.Class({ | ||||
|         Name: 'IconLabelMenuItem', | ||||
|         Extends: PopupMenu.PopupMenuBaseItem, | ||||
|  | ||||
| @@ -169,7 +169,7 @@ GObject Introspection is a powerful feature that allows us to have native | ||||
| bindings for almost any library built around GObject. If a library requires | ||||
| you to inherit from a type to use it, you can do so: | ||||
|  | ||||
|     var MyClutterActor = new Lang.Class({ | ||||
|     const MyClutterActor = new Lang.Class({ | ||||
|         Name: 'MyClutterActor', | ||||
|         Extends: Clutter.Actor, | ||||
|  | ||||
| @@ -215,7 +215,7 @@ that has a property called `actor`. We call this wrapper class the "delegate". | ||||
| We sometimes use expando properties to set a property called `_delegate` on | ||||
| the actor itself: | ||||
|  | ||||
|     var MyClass = new Lang.Class({ | ||||
|     const MyClass = new Lang.Class({ | ||||
|         Name: 'MyClass', | ||||
|  | ||||
|         _init: function() { | ||||
| @@ -264,7 +264,7 @@ prototype: | ||||
|     const Lang = imports.lang; | ||||
|     const FnorbLib = imports.fborbLib; | ||||
|  | ||||
|     var MyClass = new Lang.Class({ | ||||
|     const MyClass = new Lang.Class({ | ||||
|         _init: function() { | ||||
|             let fnorb = new FnorbLib.Fnorb(); | ||||
|             fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate)); | ||||
| @@ -304,9 +304,9 @@ designed around setting properties, like Tweener. If you want to animate an | ||||
| arbitrary property, create a getter and setter, and use Tweener to animate the | ||||
| property. | ||||
|  | ||||
|     var ANIMATION_TIME = 2000; | ||||
|     const ANIMATION_TIME = 2000; | ||||
|  | ||||
|     var MyClass = new Lang.Class({ | ||||
|     const MyClass = new Lang.Class({ | ||||
|         Name: 'MyClass', | ||||
|  | ||||
|         _init: function() { | ||||
|   | ||||
							
								
								
									
										33
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,33 @@ | ||||
| # Point to our macro directory and pick up user flags from the environment | ||||
| ACLOCAL_AMFLAGS  = -I m4 ${ACLOCAL_FLAGS} | ||||
|  | ||||
| SUBDIRS = data js src  tests po docs | ||||
|  | ||||
| if BUILD_BROWSER_PLUGIN | ||||
| SUBDIRS += browser-plugin | ||||
| endif | ||||
|  | ||||
| if ENABLE_MAN | ||||
| SUBDIRS += man | ||||
| endif | ||||
|  | ||||
| EXTRA_DIST =		\ | ||||
| 	.project	\ | ||||
| 	.settings	\ | ||||
| 	autogen.sh	\ | ||||
| 	tools/check-for-missing.py | ||||
|  | ||||
| # These are files checked into Git that we don't want to distribute | ||||
| DIST_EXCLUDE =					\ | ||||
| 	.gitignore				\ | ||||
| 	.gitmodules				\ | ||||
| 	gnome-shell.doap			\ | ||||
| 	HACKING					\ | ||||
| 	MAINTAINERS				\ | ||||
| 	tools/build/* | ||||
|  | ||||
| distcheck-hook: | ||||
| 	@echo "Checking disted files against files in git" | ||||
| 	@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE) | ||||
|  | ||||
| DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man | ||||
							
								
								
									
										29
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,29 @@ | ||||
| #!/bin/sh | ||||
| # Run this to generate all the initial makefiles, etc. | ||||
|  | ||||
| srcdir=`dirname $0` | ||||
| test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| PKG_NAME="gnome-shell" | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
|   && test -d $srcdir/src) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
|     echo " top-level gnome-shell directory" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| # Fetch submodules if needed | ||||
| if test ! -f src/gvc/Makefile.am; | ||||
| then | ||||
|   echo "+ Setting up submodules" | ||||
|   git submodule init | ||||
| fi | ||||
| git submodule update | ||||
|  | ||||
| which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from GNOME Git (or from" | ||||
|     echo "your OS vendor's package manager)." | ||||
|     exit 1 | ||||
| } | ||||
| USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh | ||||
							
								
								
									
										20
									
								
								browser-plugin/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
|  | ||||
| mozillalibdir = $(BROWSER_PLUGIN_DIR) | ||||
|  | ||||
| mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_LIBADD = 	\ | ||||
| 	$(BROWSER_PLUGIN_LIBS) | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_SOURCES = 	\ | ||||
| 	browser-plugin.c \ | ||||
| 	npapi/npapi.h \ | ||||
| 	npapi/npfunctions.h \ | ||||
| 	npapi/npruntime.h \ | ||||
| 	npapi/nptypes.h | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_CFLAGS = 	\ | ||||
| 	$(BROWSER_PLUGIN_CFLAGS)		\ | ||||
| 	-DG_LOG_DOMAIN=\"GnomeShellBrowserPlugin\" | ||||
| @@ -33,16 +33,20 @@ | ||||
| #include <json-glib/json-glib.h> | ||||
|  | ||||
| #define ORIGIN "extensions.gnome.org" | ||||
| #define PLUGIN_NAME "GNOME Shell Integration" | ||||
| #define PLUGIN_DESCRIPTION "This plugin provides integration with GNOME Shell " \ | ||||
| #define PLUGIN_NAME "Gnome Shell Integration" | ||||
| #define PLUGIN_DESCRIPTION "This plugin provides integration with Gnome Shell " \ | ||||
|       "for live extension enabling and disabling. " \ | ||||
|       "It can be used only by extensions.gnome.org" | ||||
| #define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::GNOME Shell Integration Dummy Content-Type"; | ||||
| #define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::Gnome Shell Integration Dummy Content-Type"; | ||||
|  | ||||
| #define PLUGIN_API_VERSION 5 | ||||
|  | ||||
| #define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation" | ||||
|  | ||||
| typedef struct { | ||||
|   GDBusProxy *proxy; | ||||
| } PluginData; | ||||
|  | ||||
| static NPNetscapeFuncs funcs; | ||||
|  | ||||
| static inline gchar * | ||||
| @@ -141,6 +145,121 @@ check_origin_and_protocol (NPP instance) | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| /* =============== public entry points =================== */ | ||||
|  | ||||
| NPError | ||||
| NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin) | ||||
| { | ||||
|   /* global initialization routine, called once when plugin | ||||
|      is loaded */ | ||||
|  | ||||
|   g_debug ("plugin loaded"); | ||||
|  | ||||
|   memcpy (&funcs, pfuncs, sizeof (funcs)); | ||||
|  | ||||
|   plugin->size = sizeof(NPPluginFuncs); | ||||
|   plugin->newp = NPP_New; | ||||
|   plugin->destroy = NPP_Destroy; | ||||
|   plugin->getvalue = NPP_GetValue; | ||||
|   plugin->setwindow = NPP_SetWindow; | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_Shutdown(void) | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| const char* | ||||
| NP_GetMIMEDescription(void) | ||||
| { | ||||
|   return PLUGIN_MIME_STRING; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_GetValue(void         *instance, | ||||
|             NPPVariable   variable, | ||||
|             void         *value) | ||||
| { | ||||
|   switch (variable) { | ||||
|   case NPPVpluginNameString: | ||||
|     *(char**)value = PLUGIN_NAME; | ||||
|     break; | ||||
|   case NPPVpluginDescriptionString: | ||||
|     *(char**)value = PLUGIN_DESCRIPTION; | ||||
|     break; | ||||
|   default: | ||||
|     ; | ||||
|   } | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_New(NPMIMEType    mimetype, | ||||
|         NPP           instance, | ||||
|         uint16_t      mode, | ||||
|         int16_t       argc, | ||||
|         char        **argn, | ||||
|         char        **argv, | ||||
|         NPSavedData  *saved) | ||||
| { | ||||
|   /* instance initialization function */ | ||||
|   PluginData *data; | ||||
|   GError *error = NULL; | ||||
|  | ||||
|   g_debug ("plugin created"); | ||||
|  | ||||
|   if (!check_origin_and_protocol (instance)) | ||||
|     return NPERR_GENERIC_ERROR; | ||||
|  | ||||
|   data = g_slice_new (PluginData); | ||||
|   instance->pdata = data; | ||||
|  | ||||
|   data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, | ||||
|                                                G_DBUS_PROXY_FLAGS_NONE, | ||||
|                                                NULL, /* interface info */ | ||||
|                                                "org.gnome.Shell", | ||||
|                                                "/org/gnome/Shell", | ||||
|                                                "org.gnome.Shell.Extensions", | ||||
|                                                NULL, /* GCancellable */ | ||||
|                                                &error); | ||||
|   if (!data->proxy) | ||||
|     { | ||||
|       /* ignore error if the shell is not running, otherwise warn */ | ||||
|       if (error->domain != G_DBUS_ERROR || | ||||
|           error->code != G_DBUS_ERROR_NAME_HAS_NO_OWNER) | ||||
|         { | ||||
|           g_warning ("Failed to set up Shell proxy: %s", error->message); | ||||
|         } | ||||
|       g_clear_error (&error); | ||||
|       return NPERR_GENERIC_ERROR; | ||||
|     } | ||||
|  | ||||
|   g_debug ("plugin created successfully"); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_Destroy(NPP           instance, | ||||
| 	    NPSavedData **saved) | ||||
| { | ||||
|   /* instance finalization function */ | ||||
|  | ||||
|   PluginData *data = instance->pdata; | ||||
|  | ||||
|   g_debug ("plugin destroyed"); | ||||
|  | ||||
|   g_object_unref (data->proxy); | ||||
|  | ||||
|   g_slice_free (PluginData, data); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| /* =================== scripting interface =================== */ | ||||
|  | ||||
| typedef struct { | ||||
| @@ -211,18 +330,45 @@ static NPObject * | ||||
| plugin_object_allocate (NPP      instance, | ||||
|                         NPClass *klass) | ||||
| { | ||||
|   PluginObject *obj = (PluginObject *) funcs.memalloc (sizeof (PluginObject)); | ||||
|   PluginData *data = instance->pdata; | ||||
|   PluginObject *obj = g_slice_new0 (PluginObject); | ||||
|  | ||||
|   memset (obj, 0, sizeof (PluginObject)); | ||||
|   obj->instance = instance; | ||||
|   obj->proxy = g_object_ref (data->proxy); | ||||
|   obj->settings = g_settings_new (SHELL_SCHEMA); | ||||
|   obj->signal_id = g_signal_connect (obj->proxy, "g-signal", | ||||
|                                      G_CALLBACK (on_shell_signal), obj); | ||||
|  | ||||
|   return (NPObject*) obj; | ||||
|   obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION, | ||||
|                                          "org.gnome.Shell", | ||||
|                                          G_BUS_NAME_WATCHER_FLAGS_NONE, | ||||
|                                          on_shell_appeared, | ||||
|                                          NULL, | ||||
|                                          obj, | ||||
|                                          NULL); | ||||
|  | ||||
|   g_debug ("plugin object created"); | ||||
|  | ||||
|   return (NPObject*)obj; | ||||
| } | ||||
|  | ||||
| static void | ||||
| plugin_object_deallocate (NPObject *npobj) | ||||
| { | ||||
|   funcs.memfree (npobj); | ||||
|   PluginObject *obj = (PluginObject*)npobj; | ||||
|  | ||||
|   g_signal_handler_disconnect (obj->proxy, obj->signal_id); | ||||
|   g_object_unref (obj->proxy); | ||||
|  | ||||
|   if (obj->listener) | ||||
|     funcs.releaseobject (obj->listener); | ||||
|  | ||||
|   if (obj->watch_name_id) | ||||
|     g_bus_unwatch_name (obj->watch_name_id); | ||||
|  | ||||
|   g_debug ("plugin object destroyed"); | ||||
|  | ||||
|   g_slice_free (PluginObject, obj); | ||||
| } | ||||
|  | ||||
| static inline gboolean | ||||
| @@ -873,149 +1019,6 @@ init_methods_and_properties (void) | ||||
|   onextension_changed_id = funcs.getstringidentifier ("onchange"); | ||||
| } | ||||
|  | ||||
| /* =============== public entry points =================== */ | ||||
|  | ||||
| NPError | ||||
| NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin) | ||||
| { | ||||
|   /* global initialization routine, called once when plugin | ||||
|      is loaded */ | ||||
|  | ||||
|   g_debug ("plugin loaded"); | ||||
|  | ||||
|   memcpy (&funcs, pfuncs, sizeof (funcs)); | ||||
|  | ||||
|   plugin->size = sizeof(NPPluginFuncs); | ||||
|   plugin->newp = NPP_New; | ||||
|   plugin->destroy = NPP_Destroy; | ||||
|   plugin->getvalue = NPP_GetValue; | ||||
|   plugin->setwindow = NPP_SetWindow; | ||||
|   plugin->event = NPP_HandleEvent; | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_Shutdown(void) | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| const char* | ||||
| NP_GetMIMEDescription(void) | ||||
| { | ||||
|   return PLUGIN_MIME_STRING; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_GetValue(void         *instance, | ||||
|             NPPVariable   variable, | ||||
|             void         *value) | ||||
| { | ||||
|   switch (variable) { | ||||
|   case NPPVpluginNameString: | ||||
|     *(char**)value = PLUGIN_NAME; | ||||
|     break; | ||||
|   case NPPVpluginDescriptionString: | ||||
|     *(char**)value = PLUGIN_DESCRIPTION; | ||||
|     break; | ||||
|   default: | ||||
|     ; | ||||
|   } | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_New(NPMIMEType    mimetype, | ||||
|         NPP           instance, | ||||
|         uint16_t      mode, | ||||
|         int16_t       argc, | ||||
|         char        **argn, | ||||
|         char        **argv, | ||||
|         NPSavedData  *saved) | ||||
| { | ||||
|   /* instance initialization function */ | ||||
|   PluginObject *obj; | ||||
|   GError *error = NULL; | ||||
|  | ||||
|   g_debug ("plugin created"); | ||||
|  | ||||
|   if (!check_origin_and_protocol (instance)) | ||||
|     return NPERR_GENERIC_ERROR; | ||||
|  | ||||
|   /* set windowless mode */ | ||||
|   funcs.setvalue(instance, NPPVpluginWindowBool, NULL); | ||||
|  | ||||
|   g_debug ("creating scriptable object"); | ||||
|   init_methods_and_properties (); | ||||
|   obj = (PluginObject *) funcs.createobject (instance, &plugin_class); | ||||
|   instance->pdata = obj; | ||||
|  | ||||
|   obj->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, | ||||
|                                               G_DBUS_PROXY_FLAGS_NONE, | ||||
|                                               NULL, /* interface info */ | ||||
|                                               "org.gnome.Shell", | ||||
|                                               "/org/gnome/Shell", | ||||
|                                               "org.gnome.Shell.Extensions", | ||||
|                                               NULL, /* GCancellable */ | ||||
|                                               &error); | ||||
|   if (!obj->proxy) | ||||
|     { | ||||
|       /* ignore error if the shell is not running, otherwise warn */ | ||||
|       if (!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER)) | ||||
|         { | ||||
|           g_warning ("Failed to set up Shell proxy: %s", error->message); | ||||
|         } | ||||
|       g_clear_error (&error); | ||||
|       return NPERR_GENERIC_ERROR; | ||||
|     } | ||||
|  | ||||
|   obj->settings = g_settings_new (SHELL_SCHEMA); | ||||
|   obj->signal_id = g_signal_connect (obj->proxy, "g-signal", | ||||
|                                      G_CALLBACK (on_shell_signal), obj); | ||||
|   obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION, | ||||
|                                          "org.gnome.Shell", | ||||
|                                          G_BUS_NAME_WATCHER_FLAGS_NONE, | ||||
|                                          on_shell_appeared, | ||||
|                                          NULL, | ||||
|                                          obj, | ||||
|                                          NULL); | ||||
|  | ||||
|   g_debug ("plugin created successfully"); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_Destroy(NPP           instance, | ||||
| 	    NPSavedData **saved) | ||||
| { | ||||
|   /* instance finalization function */ | ||||
|   PluginObject *obj = (PluginObject *) instance->pdata; | ||||
|  | ||||
|   if (!obj) | ||||
|     return NPERR_INVALID_INSTANCE_ERROR; | ||||
|  | ||||
|   g_debug ("plugin destroyed"); | ||||
|  | ||||
|   g_signal_handler_disconnect (obj->proxy, obj->signal_id); | ||||
|   g_object_unref (obj->proxy); | ||||
|  | ||||
|   if (obj->listener) | ||||
|     funcs.releaseobject (obj->listener); | ||||
|  | ||||
|   if (obj->restart_listener) | ||||
|     funcs.releaseobject (obj->restart_listener); | ||||
|  | ||||
|   if (obj->watch_name_id) | ||||
|     g_bus_unwatch_name (obj->watch_name_id); | ||||
|  | ||||
|   funcs.releaseobject((NPObject *)obj); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_GetValue(NPP          instance, | ||||
| 	     NPPVariable  variable, | ||||
| @@ -1026,11 +1029,13 @@ NPP_GetValue(NPP          instance, | ||||
|   switch (variable) { | ||||
|   case NPPVpluginScriptableNPObject: | ||||
|     g_debug ("creating scriptable object"); | ||||
|     if (!instance->pdata) | ||||
|       return NPERR_INVALID_INSTANCE_ERROR; | ||||
|     init_methods_and_properties (); | ||||
|  | ||||
|     funcs.retainobject (instance->pdata); | ||||
|     *(NPObject**)value = instance->pdata; | ||||
|     *(NPObject**)value = funcs.createobject (instance, &plugin_class); | ||||
|     break; | ||||
|  | ||||
|   case NPPVpluginNeedsXEmbed: | ||||
|     *(bool *)value = TRUE; | ||||
|     break; | ||||
|  | ||||
|   default: | ||||
| @@ -1048,11 +1053,3 @@ NPP_SetWindow(NPP          instance, | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| int16_t | ||||
| NPP_HandleEvent(NPP   instance, | ||||
|                 void *event) | ||||
| { | ||||
|   /* Ignore the event */ | ||||
|   return FALSE; | ||||
| } | ||||
|   | ||||
| @@ -1,19 +0,0 @@ | ||||
| plugin_sources = [ | ||||
|   'browser-plugin.c', | ||||
|   'npapi/npapi.h', | ||||
|   'npapi/npfunctions.h', | ||||
|   'npapi/npruntime.h', | ||||
|   'npapi/nptypes.h' | ||||
| ] | ||||
|  | ||||
| shared_module('gnome-shell-browser-plugin', plugin_sources, | ||||
|   dependencies: [gio_dep, json_glib_dep], | ||||
|   c_args: ['-DG_LOG_DOMAIN="GnomeShellBrowserPlugin"'], | ||||
|   # Browsers can unload and reload the module while browsing, which is not | ||||
|   # supported by GObject. | ||||
|   # We pass -Wl,-z,nodelete to the linker to ensure the module is never | ||||
|   # unloaded. See https://bugzilla.gnome.org/show_bug.cgi?id=737932. | ||||
|   link_args: ['-Wl,-z,nodelete'], | ||||
|   install: true, | ||||
|   install_dir: plugindir | ||||
| ) | ||||
| @@ -1,26 +0,0 @@ | ||||
| /* The prefix for our gettext translation domains. */ | ||||
| #mesondefine GETTEXT_PACKAGE | ||||
|  | ||||
| /* Version number of package */ | ||||
| #mesondefine VERSION | ||||
|  | ||||
| /* Version number of package */ | ||||
| #mesondefine PACKAGE_VERSION | ||||
|  | ||||
| /* Define to 1 if you have the `fdwalk' function. */ | ||||
| #mesondefine HAVE_FDWALK | ||||
|  | ||||
| /* Define to 1 if you have the `mallinfo' function. */ | ||||
| #mesondefine HAVE_MALLINFO | ||||
|  | ||||
| /* Define to 1 fi you have the <sys/resource.h> header file. */ | ||||
| #mesondefine HAVE_SYS_RESOURCE_H | ||||
|  | ||||
| /* Define if we have NetworkManager */ | ||||
| #mesondefine HAVE_NETWORKMANAGER | ||||
|  | ||||
| /* Define if we have systemd */ | ||||
| #mesondefine HAVE_SYSTEMD | ||||
|  | ||||
| /* Define if _NL_TIME_FIRST_WEEKDATE is available */ | ||||
| #mesondefine HAVE__NL_TIME_FIRST_WEEKDAY | ||||
							
								
								
									
										158
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,158 +0,0 @@ | ||||
| #!/bin/bash | ||||
| # configure script adapter for Meson | ||||
| # Based on build-api: https://github.com/cgwalters/build-api | ||||
| # Copyright 2010, 2011, 2013 Colin Walters <walters@verbum.org> | ||||
| # Copyright 2016, 2017 Emmanuele Bassi | ||||
| # Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php) | ||||
|  | ||||
| # Build API variables: | ||||
|  | ||||
| # Little helper function for reading args from the commandline. | ||||
| # it automatically handles -a b and -a=b variants, and returns 1 if | ||||
| # we need to shift $3. | ||||
| read_arg() { | ||||
|     # $1 = arg name | ||||
|     # $2 = arg value | ||||
|     # $3 = arg parameter | ||||
|     local rematch='^[^=]*=(.*)$' | ||||
|     if [[ $2 =~ $rematch ]]; then | ||||
| 	read "$1" <<< "${BASH_REMATCH[1]}" | ||||
|     else | ||||
| 	read "$1" <<< "$3" | ||||
| 	# There is no way to shift our callers args, so | ||||
| 	# return 1 to indicate they should do it instead. | ||||
| 	return 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| sanitycheck() { | ||||
|     # $1 = arg name | ||||
|     # $1 = arg command | ||||
|     # $2 = arg alternates | ||||
|     local cmd=$( which $2 2>/dev/null ) | ||||
|  | ||||
|     if [ -x "$cmd" ]; then | ||||
|         read "$1" <<< "$cmd" | ||||
|         return 0 | ||||
|     fi | ||||
|  | ||||
|     test -z $3 || { | ||||
|         for alt in $3; do | ||||
|             cmd=$( which $alt 2>/dev/null ) | ||||
|  | ||||
|             if [ -x "$cmd" ]; then | ||||
|                 read "$1" <<< "$cmd" | ||||
|                 return 0 | ||||
|             fi | ||||
|         done | ||||
|     } | ||||
|  | ||||
|     echo -e "\e[1;31mERROR\e[0m: Command '$2' not found" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| sanitycheck MESON 'meson' | ||||
| sanitycheck NINJA 'ninja' 'ninja-build' | ||||
|  | ||||
| enable_docs='-Denable-gtk-doc=false' | ||||
| enable_man='-Denable-man=false' | ||||
| enable_introspection='' | ||||
|  | ||||
| while (($# > 0)); do | ||||
|     case "${1%%=*}" in | ||||
| 	--prefix) read_arg prefix "$@" || shift;; | ||||
| 	--bindir) read_arg bindir "$@" || shift;; | ||||
| 	--sbindir) read_arg sbindir "$@" || shift;; | ||||
| 	--libexecdir) read_arg libexecdir "$@" || shift;; | ||||
| 	--datarootdir) read_arg datarootdir "$@" || shift;; | ||||
| 	--datadir) read_arg datadir "$@" || shift;; | ||||
| 	--sysconfdir) read_arg sysconfdir "$@" || shift;; | ||||
| 	--libdir) read_arg libdir "$@" || shift;; | ||||
| 	--mandir) read_arg mandir "$@" || shift;; | ||||
| 	--includedir) read_arg includedir "$@" || shift;; | ||||
| 	--enable-gtk-doc) enable_docs='-Denable-gtk-doc=true';; | ||||
| 	--disable-gtk-doc) enable_docs='-Denable-gtk-doc=false';; | ||||
| 	--enable-man) enable_man='-Denable-man=true';; | ||||
| 	--disable-man) enable_man='-Denable-man=false';; | ||||
| 	--enable-introspection) enable_introspection='';; | ||||
| 	--disable-introspection) enable_introspection='-Ddisable_introspection=true';; | ||||
| 	*) echo -e "\e[1;33mINFO\e[0m: Ignoring unknown option '$1'";; | ||||
|     esac | ||||
|     shift | ||||
| done | ||||
|  | ||||
| # Defaults | ||||
| test -z ${prefix} && prefix="/usr/local" | ||||
| test -z ${bindir} && bindir=${prefix}/bin | ||||
| test -z ${sbindir} && sbindir=${prefix}/sbin | ||||
| test -z ${libexecdir} && libexecdir=${prefix}/bin | ||||
| test -z ${datarootdir} && datarootdir=${prefix}/share | ||||
| test -z ${datadir} && datadir=${datarootdir} | ||||
| test -z ${sysconfdir} && sysconfdir=${prefix}/etc | ||||
| test -z ${libdir} && libdir=${prefix}/lib | ||||
| test -z ${mandir} && mandir=${prefix}/share/man | ||||
| test -z ${includedir} && includedir=${prefix}/include | ||||
|  | ||||
| # The source directory is the location of this file | ||||
| srcdir=$(dirname $0) | ||||
|  | ||||
| # The build directory is the current location | ||||
| builddir=`pwd` | ||||
|  | ||||
| # If we're calling this file from the source directory then | ||||
| # we automatically create a build directory and ensure that | ||||
| # both Meson and Ninja invocations are relative to that | ||||
| # location | ||||
| if [[ -f "${builddir}/meson.build" ]]; then | ||||
|   mkdir -p _build | ||||
|   builddir="${builddir}/_build" | ||||
|   NINJA_OPT="-C ${builddir}" | ||||
| fi | ||||
|  | ||||
| # Wrapper Makefile for Ninja | ||||
| cat > Makefile <<END | ||||
| # Generated by configure; do not edit | ||||
|  | ||||
| all: | ||||
| 	CC="\$(CC)" CXX="\$(CXX)" ${NINJA} ${NINJA_OPT} | ||||
|  | ||||
| install: | ||||
| 	DESTDIR="\$(DESTDIR)" ${NINJA} ${NINJA_OPT} install | ||||
|  | ||||
| check: | ||||
| 	${MESON} test ${NINJA_OPT} | ||||
| END | ||||
|  | ||||
| echo "Summary:" | ||||
| echo "  meson:....... ${MESON}" | ||||
| echo "  ninja:....... ${NINJA}" | ||||
| echo "  prefix:...... ${prefix}" | ||||
| echo "  bindir:...... ${bindir}" | ||||
| echo "  sbindir:..... ${sbindir}" | ||||
| echo "  libexecdir:.. ${libexecdir}" | ||||
| echo "  datarootdir:. ${datarootdir}" | ||||
| echo "  datadir:..... ${datadir}" | ||||
| echo "  sysconfdir:.. ${sysconfdir}" | ||||
| echo "  libdir:...... ${libdir}" | ||||
| echo "  mandir:...... ${mandir}" | ||||
| echo "  includedir:.. ${includedir}" | ||||
| echo "  additional:.." | ||||
| echo "    - ${enable_docs} ${enable_man} ${enable_introspection}" | ||||
|  | ||||
| exec ${MESON} \ | ||||
| 	--prefix=${prefix} \ | ||||
| 	--libdir=${libdir} \ | ||||
| 	--libexecdir=${libexecdir} \ | ||||
| 	--datadir=${datadir} \ | ||||
| 	--sysconfdir=${sysconfdir} \ | ||||
| 	--bindir=${bindir} \ | ||||
| 	--includedir=${includedir} \ | ||||
| 	--mandir=${mandir} \ | ||||
| 	--default-library shared \ | ||||
| 	${enable_docs} \ | ||||
| 	${enable_man} \ | ||||
| 	${enable_introspection} \ | ||||
| 	${builddir} \ | ||||
| 	${srcdir} | ||||
|  | ||||
| # vim: ai ts=8 noet sts=2 ft=sh | ||||
							
								
								
									
										268
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,268 @@ | ||||
| AC_PREREQ(2.63) | ||||
| AC_INIT([gnome-shell],[3.13.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||
|  | ||||
| AC_CONFIG_HEADERS([config.h]) | ||||
| AC_CONFIG_SRCDIR([src/shell-global.c]) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| AC_CONFIG_AUX_DIR([config]) | ||||
|  | ||||
| AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"]) | ||||
| AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"]) | ||||
|  | ||||
| AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar foreign]) | ||||
| AM_MAINTAINER_MODE([enable]) | ||||
|  | ||||
| m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) | ||||
|  | ||||
| # Checks for programs. | ||||
| AC_PROG_CC | ||||
| AC_PROG_CXX | ||||
|  | ||||
| # Initialize libtool | ||||
| LT_PREREQ([2.2.6]) | ||||
| LT_INIT([disable-static]) | ||||
|  | ||||
| # i18n | ||||
| IT_PROG_INTLTOOL([0.40]) | ||||
|  | ||||
| GETTEXT_PACKAGE=gnome-shell | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", | ||||
|                    [The prefix for our gettext translation domains.]) | ||||
|  | ||||
| PKG_PROG_PKG_CONFIG([0.22]) | ||||
|  | ||||
| AC_PATH_PROG([XSLTPROC], [xsltproc]) | ||||
|  | ||||
| GLIB_GSETTINGS | ||||
|  | ||||
| # Get a value to substitute into gnome-shell.in | ||||
| AM_PATH_PYTHON([2.5]) | ||||
| AC_SUBST(PYTHON) | ||||
|  | ||||
| # We need at least this, since gst_plugin_register_static() was added | ||||
| # in 0.10.16, but nothing older than 0.10.21 has been tested. | ||||
| GSTREAMER_MIN_VERSION=0.11.92 | ||||
|  | ||||
| recorder_modules= | ||||
| build_recorder=false | ||||
| AC_MSG_CHECKING([for GStreamer (needed for recording functionality)]) | ||||
| if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then | ||||
|    AC_MSG_RESULT(yes) | ||||
|    build_recorder=true | ||||
|    recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0" | ||||
|    PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0) | ||||
| else | ||||
|    AC_MSG_RESULT(no) | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) | ||||
|  | ||||
| AC_ARG_ENABLE([systemd], | ||||
|               AS_HELP_STRING([--enable-systemd], [Use systemd]), | ||||
|               [enable_systemd=$enableval], | ||||
|               [enable_systemd=auto]) | ||||
| AS_IF([test x$enable_systemd != xno], [ | ||||
|   AC_MSG_CHECKING([for libsystemd-journal]) | ||||
|   PKG_CHECK_EXISTS([libsystemd-journal], | ||||
|                    [have_systemd=yes | ||||
|                     AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])], | ||||
|                    [have_systemd=no]) | ||||
|   AC_MSG_RESULT($have_systemd) | ||||
| ]) | ||||
|  | ||||
| AC_MSG_RESULT($enable_systemd) | ||||
|  | ||||
| CLUTTER_MIN_VERSION=1.15.90 | ||||
| GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 | ||||
| GJS_MIN_VERSION=1.39.0 | ||||
| MUTTER_MIN_VERSION=3.13.2 | ||||
| GTK_MIN_VERSION=3.7.9 | ||||
| GIO_MIN_VERSION=2.37.0 | ||||
| LIBECAL_MIN_VERSION=3.5.3 | ||||
| LIBEDATASERVER_MIN_VERSION=3.5.3 | ||||
| TELEPATHY_GLIB_MIN_VERSION=0.17.5 | ||||
| POLKIT_MIN_VERSION=0.100 | ||||
| STARTUP_NOTIFICATION_MIN_VERSION=0.11 | ||||
| GCR_MIN_VERSION=3.7.5 | ||||
| GNOME_DESKTOP_REQUIRED_VERSION=3.7.90 | ||||
| NETWORKMANAGER_MIN_VERSION=0.9.8 | ||||
| PULSE_MIN_VERS=2.0 | ||||
|  | ||||
| # Collect more than 20 libraries for a prize! | ||||
| SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION | ||||
|             libxml-2.0 | ||||
|             gtk+-3.0 >= $GTK_MIN_VERSION | ||||
|             atk-bridge-2.0 | ||||
|             gjs-internals-1.0 >= $GJS_MIN_VERSION | ||||
|             $recorder_modules | ||||
|             gdk-x11-3.0 libsoup-2.4 | ||||
|             xtst | ||||
|             clutter-x11-1.0 >= $CLUTTER_MIN_VERSION | ||||
|             clutter-glx-1.0 >= $CLUTTER_MIN_VERSION | ||||
|             libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION | ||||
|             gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION | ||||
|             libcanberra libcanberra-gtk3 | ||||
|             telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION | ||||
|             polkit-agent-1 >= $POLKIT_MIN_VERSION | ||||
|             gcr-base-3 >= $GCR_MIN_VERSION" | ||||
| if test x$have_systemd = xyes; then | ||||
|   SHARED_PCS="${SHARED_PCS} libsystemd-journal" | ||||
| fi | ||||
|  | ||||
| PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) | ||||
| PKG_CHECK_MODULES(MUTTER, libmutter >= $MUTTER_MIN_VERSION) | ||||
|  | ||||
| PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION) | ||||
| PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) | ||||
| PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) | ||||
| PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0) | ||||
| PKG_CHECK_MODULES(TRAY, gtk+-3.0) | ||||
| PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0) | ||||
| PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4) | ||||
| PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8) | ||||
|  | ||||
| AC_ARG_ENABLE(browser-plugin, | ||||
|               [AS_HELP_STRING([--enable-browser-plugin], | ||||
|                               [Enable browser plugin [default=yes]])],, | ||||
|               enable_browser_plugin=yes) | ||||
| AS_IF([test x$enable_browser_plugin = xyes], [ | ||||
|   PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2) | ||||
| ]) | ||||
| AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes) | ||||
|  | ||||
| PKG_CHECK_MODULES(BLUETOOTH, gnome-bluetooth-1.0 >= 3.9.0, | ||||
|         [AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet]) | ||||
| 	 AC_SUBST([HAVE_BLUETOOTH],[1])], | ||||
| 	[AC_DEFINE([HAVE_BLUETOOTH],[0]) | ||||
| 	 AC_SUBST([HAVE_BLUETOOTH],[0])]) | ||||
|  | ||||
| PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0) | ||||
| AC_SUBST(CALENDAR_SERVER_CFLAGS) | ||||
| AC_SUBST(CALENDAR_SERVER_LIBS) | ||||
|  | ||||
| GNOME_KEYBINDINGS_KEYSDIR=`$PKG_CONFIG --variable keysdir gnome-keybindings` | ||||
| AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR]) | ||||
|  | ||||
| GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION]) | ||||
|  | ||||
| MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter` | ||||
| AC_SUBST(MUTTER_GIR_DIR) | ||||
|  | ||||
| MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter` | ||||
| AC_SUBST(MUTTER_TYPELIB_DIR) | ||||
|  | ||||
| GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0` | ||||
| AC_SUBST(GJS_CONSOLE) | ||||
|  | ||||
| GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` | ||||
| AC_SUBST(GLIB_COMPILE_RESOURCES) | ||||
|  | ||||
| AC_CHECK_FUNCS(fdwalk) | ||||
| AC_CHECK_FUNCS(mallinfo) | ||||
| AC_CHECK_HEADERS([sys/resource.h]) | ||||
|  | ||||
| # _NL_TIME_FIRST_WEEKDAY is an enum and not a define | ||||
| AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY]) | ||||
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], | ||||
|                                    [[nl_langinfo(_NL_TIME_FIRST_WEEKDAY);]])], | ||||
|                [langinfo_ok=yes], [langinfo_ok=no]) | ||||
| AC_MSG_RESULT($langinfo_ok) | ||||
| if test "$langinfo_ok" = "yes"; then | ||||
|   AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1], | ||||
|             [Define if _NL_TIME_FIRST_WEEKDAY is available]) | ||||
| fi | ||||
|  | ||||
| AC_ARG_ENABLE(networkmanager, | ||||
|              AS_HELP_STRING([--disable-networkmanager], | ||||
|                             [disable NetworkManager support  @<:@default=auto@:>@]),, | ||||
|               [enable_networkmanager=auto]) | ||||
|  | ||||
| if test "x$enable_networkmanager" != "xno"; then | ||||
|    PKG_CHECK_MODULES(NETWORKMANAGER, | ||||
|                      [libnm-glib | ||||
|                      libnm-util >= $NETWORKMANAGER_MIN_VERSION | ||||
|                      libnm-gtk >= $NETWORKMANAGER_MIN_VERSION | ||||
|                      libsecret-unstable], | ||||
|                      [have_networkmanager=yes], | ||||
|                      [have_networkmanager=no]) | ||||
|  | ||||
|    GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS" | ||||
|    GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS" | ||||
| else | ||||
|    have_networkmanager="no  (disabled)" | ||||
| fi | ||||
|  | ||||
| if test "x$have_networkmanager" = "xyes"; then | ||||
|    AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager]) | ||||
|    AC_SUBST([HAVE_NETWORKMANAGER], [1]) | ||||
| else | ||||
|    if test "x$enable_networkmanager" = "xyes"; then | ||||
|       AC_MSG_ERROR([Couldn't find NetworkManager.]) | ||||
|    fi | ||||
|    AC_SUBST([HAVE_NETWORKMANAGER], [0]) | ||||
| fi | ||||
|  | ||||
| AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes") | ||||
|  | ||||
| # Sets GLIB_GENMARSHAL and GLIB_MKENUMS | ||||
| AM_PATH_GLIB_2_0() | ||||
|  | ||||
| GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) | ||||
|  | ||||
| AC_ARG_ENABLE(man, | ||||
|               [AS_HELP_STRING([--enable-man], | ||||
|                               [generate man pages [default=yes]])],, | ||||
|               enable_man=yes) | ||||
| if test "$enable_man" != no; then | ||||
|   AC_PATH_PROG([XSLTPROC], [xsltproc]) | ||||
|   if test -z "$XSLTPROC"; then | ||||
|     AC_MSG_ERROR([xsltproc is required for --enable-man]) | ||||
|   fi | ||||
| fi | ||||
| AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) | ||||
|  | ||||
| GNOME_COMPILE_WARNINGS([error]) | ||||
| case "$WARN_CFLAGS" in | ||||
|     *-Werror*) | ||||
|         WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations" | ||||
|         ;; | ||||
| esac | ||||
|  | ||||
| AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS" | ||||
| AC_SUBST(AM_CFLAGS) | ||||
|  | ||||
| BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}" | ||||
| AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to]) | ||||
|  | ||||
| AC_CONFIG_FILES([ | ||||
|   Makefile | ||||
|   data/Makefile | ||||
|   docs/Makefile | ||||
|   docs/reference/Makefile | ||||
|   docs/reference/shell/Makefile | ||||
|   docs/reference/shell/shell-docs.sgml | ||||
|   docs/reference/st/Makefile | ||||
|   docs/reference/st/st-docs.sgml | ||||
|   js/Makefile | ||||
|   src/calendar-server/evolution-calendar.desktop.in | ||||
|   src/Makefile | ||||
|   src/gvc/Makefile | ||||
|   browser-plugin/Makefile | ||||
|   tests/Makefile | ||||
|   po/Makefile.in | ||||
|   man/Makefile | ||||
| ]) | ||||
| AC_OUTPUT | ||||
|  | ||||
| echo " | ||||
| Build configuration: | ||||
|  | ||||
|        Prefix:                                 ${prefix} | ||||
|        Source code location:                   ${srcdir} | ||||
|        Compiler:                               ${CC} | ||||
|        Compiler Warnings:                      $enable_compile_warnings | ||||
|  | ||||
|        Support for NetworkManager:             $have_networkmanager | ||||
|        Support for GStreamer recording:        $build_recorder | ||||
| " | ||||
| @@ -1,24 +1,24 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.shell.keybindings" | ||||
|                 group="system" | ||||
|                 name="System" | ||||
|                 _name="System" | ||||
|                 wm_name="GNOME Shell" | ||||
|                 package="gnome-shell"> | ||||
| 
 | ||||
| 	<KeyListEntry name="toggle-message-tray" | ||||
|                       description="Show the notification list"/> | ||||
|                       _description="Show the message tray"/> | ||||
| 
 | ||||
| 	<KeyListEntry name="focus-active-notification" | ||||
|                       description="Focus the active notification"/> | ||||
|                       _description="Focus the active notification"/> | ||||
| 
 | ||||
| 	<KeyListEntry name="toggle-overview" | ||||
|                       description="Show the overview"/> | ||||
|                       _description="Show the overview"/> | ||||
| 
 | ||||
| 	<KeyListEntry name="toggle-application-view" | ||||
|                       description="Show all applications"/> | ||||
|                       _description="Show all applications"/> | ||||
| 
 | ||||
| 	<KeyListEntry name="open-application-menu" | ||||
|                       description="Open the application menu"/> | ||||
|                       _description="Open the application menu"/> | ||||
| 
 | ||||
| </KeyListEntries> | ||||
| 
 | ||||
							
								
								
									
										103
									
								
								data/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,103 @@ | ||||
| desktopdir=$(datadir)/applications | ||||
| desktop_DATA = gnome-shell.desktop gnome-shell-wayland.desktop  gnome-shell-extension-prefs.desktop | ||||
|  | ||||
| # We substitute in bindir so it works as an autostart | ||||
| # file when built in a non-system prefix | ||||
| %.desktop.in:%.desktop.in.in | ||||
| 	$(AM_V_GEN) sed -e "s|@bindir[@]|$(bindir)|" \ | ||||
| 	    -e "s|@VERSION[@]|$(VERSION)|" \ | ||||
| 	    $< > $@ || rm $@ | ||||
|  | ||||
| @INTLTOOL_DESKTOP_RULE@ | ||||
|  | ||||
| introspectiondir = $(datadir)/dbus-1/interfaces | ||||
| introspection_DATA =				\ | ||||
| 	org.gnome.Shell.Screencast.xml		\ | ||||
| 	org.gnome.Shell.Screenshot.xml		\ | ||||
| 	org.gnome.ShellSearchProvider.xml	\ | ||||
| 	org.gnome.ShellSearchProvider2.xml | ||||
|  | ||||
| themedir = $(pkgdatadir)/theme | ||||
| dist_theme_DATA =				\ | ||||
| 	theme/calendar-arrow-left.svg		\ | ||||
| 	theme/calendar-arrow-right.svg		\ | ||||
| 	theme/calendar-today.svg		\ | ||||
| 	theme/checkbox-focused.svg		\ | ||||
| 	theme/checkbox-off-focused.svg		\ | ||||
| 	theme/checkbox-off.svg			\ | ||||
| 	theme/checkbox.svg			\ | ||||
| 	theme/close-window.svg			\ | ||||
| 	theme/close.svg				\ | ||||
| 	theme/corner-ripple-ltr.png		\ | ||||
| 	theme/corner-ripple-rtl.png		\ | ||||
| 	theme/dash-placeholder.svg		\ | ||||
| 	theme/filter-selected-ltr.svg		\ | ||||
| 	theme/filter-selected-rtl.svg		\ | ||||
| 	theme/gnome-shell.css			\ | ||||
| 	theme/logged-in-indicator.svg		\ | ||||
| 	theme/menu-arrow-symbolic.svg		    \ | ||||
| 	theme/message-tray-background.png	\ | ||||
| 	theme/more-results.svg			\ | ||||
| 	theme/noise-texture.png			\ | ||||
| 	theme/page-indicator-active.svg		\ | ||||
| 	theme/page-indicator-inactive.svg	\ | ||||
| 	theme/page-indicator-checked.svg	\ | ||||
| 	theme/page-indicator-hover.svg		\ | ||||
| 	theme/panel-button-border.svg		\ | ||||
| 	theme/panel-button-highlight-narrow.svg	\ | ||||
| 	theme/panel-button-highlight-wide.svg	\ | ||||
| 	theme/process-working.svg		\ | ||||
| 	theme/running-indicator.svg		\ | ||||
| 	theme/source-button-border.svg		\ | ||||
| 	theme/summary-counter.svg		\ | ||||
| 	theme/toggle-off-us.svg			\ | ||||
| 	theme/toggle-off-intl.svg		\ | ||||
| 	theme/toggle-on-us.svg			\ | ||||
| 	theme/toggle-on-intl.svg		\ | ||||
| 	theme/ws-switch-arrow-up.png		\ | ||||
| 	theme/ws-switch-arrow-down.png | ||||
|  | ||||
| keysdir = @GNOME_KEYBINDINGS_KEYSDIR@ | ||||
| keys_in_files = 50-gnome-shell-system.xml.in | ||||
| keys_DATA = $(keys_in_files:.xml.in=.xml) | ||||
|  | ||||
| gsettings_SCHEMAS = org.gnome.shell.gschema.xml | ||||
|  | ||||
| @INTLTOOL_XML_NOMERGE_RULE@ | ||||
|  | ||||
| %.gschema.xml.in: %.gschema.xml.in.in Makefile | ||||
| 	$(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \ | ||||
| 	$< > $@ || rm $@ | ||||
|  | ||||
| @GSETTINGS_RULES@ | ||||
|  | ||||
| # We need to compile schemas at make time | ||||
| # to run from source tree | ||||
| gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid) | ||||
| 	$(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --targetdir=. . | ||||
|  | ||||
| all-local: gschemas.compiled | ||||
|  | ||||
| convertdir = $(datadir)/GConf/gsettings | ||||
| convert_DATA = gnome-shell-overrides.convert | ||||
|  | ||||
| EXTRA_DIST =						\ | ||||
| 	gnome-shell.desktop.in.in			\ | ||||
| 	gnome-shell-wayland.desktop.in.in		\ | ||||
| 	gnome-shell-extension-prefs.desktop.in.in	\ | ||||
| 	$(introspection_DATA)				\ | ||||
| 	$(menu_DATA)					\ | ||||
| 	$(convert_DATA)					\ | ||||
| 	$(keys_in_files)				\ | ||||
| 	org.gnome.shell.gschema.xml.in.in | ||||
|  | ||||
| CLEANFILES =						\ | ||||
| 	gnome-shell.desktop.in				\ | ||||
| 	gnome-shell-wayland.desktop.in			\ | ||||
| 	gnome-shell-extension-prefs.in			\ | ||||
| 	$(desktop_DATA)					\ | ||||
| 	$(keys_DATA)					\ | ||||
| 	$(gsettings_SCHEMAS)				\ | ||||
| 	gschemas.compiled				\ | ||||
| 	org.gnome.shell.gschema.valid			\ | ||||
| 	org.gnome.shell.gschema.xml.in | ||||
| @@ -1,7 +1,7 @@ | ||||
| [Desktop Entry] | ||||
| Type=Application | ||||
| Name=Shell Extensions | ||||
| Comment=Configure GNOME Shell Extensions | ||||
| _Name=GNOME Shell Extension Preferences | ||||
| _Comment=Configure GNOME Shell Extensions | ||||
| Exec=@bindir@/gnome-shell-extension-prefs %u | ||||
| X-GNOME-Bugzilla-Bugzilla=GNOME | ||||
| X-GNOME-Bugzilla-Product=gnome-shell | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| [org.gnome.shell.overrides] | ||||
| attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs | ||||
| button-layout = /desktop/gnome/shell/windows/button_layout | ||||
| edge-tiling = /desktop/gnome/shell/windows/edge_tiling | ||||
| workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary | ||||
|   | ||||
| @@ -1,45 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <gresources> | ||||
|   <gresource prefix="/org/gnome/shell/theme"> | ||||
|     <file>calendar-arrow-left.svg</file> | ||||
|     <file>calendar-arrow-right.svg</file> | ||||
|     <file>calendar-today.svg</file> | ||||
|     <file>checkbox-focused.svg</file> | ||||
|     <file>checkbox-off-focused.svg</file> | ||||
|     <file>checkbox-off.svg</file> | ||||
|     <file>checkbox.svg</file> | ||||
|     <file>close-window.svg</file> | ||||
|     <file>close-window-active.svg</file> | ||||
|     <file>close-window-hover.svg</file> | ||||
|     <file>close.svg</file> | ||||
|     <file>corner-ripple-ltr.png</file> | ||||
|     <file>corner-ripple-rtl.png</file> | ||||
|     <file>dash-placeholder.svg</file> | ||||
|     <file>filter-selected-ltr.svg</file> | ||||
|     <file>filter-selected-rtl.svg</file> | ||||
|     <file>gnome-shell.css</file> | ||||
|     <file>gnome-shell-high-contrast.css</file> | ||||
|     <file>logged-in-indicator.svg</file> | ||||
|     <file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file> | ||||
|     <file>no-events.svg</file> | ||||
|     <file>no-notifications.svg</file> | ||||
|     <file>noise-texture.png</file> | ||||
|     <file>pad-osd.css</file> | ||||
|     <file>page-indicator-active.svg</file> | ||||
|     <file>page-indicator-inactive.svg</file> | ||||
|     <file>page-indicator-checked.svg</file> | ||||
|     <file>page-indicator-hover.svg</file> | ||||
|     <file>process-working.svg</file> | ||||
|     <file>running-indicator.svg</file> | ||||
|     <file>source-button-border.svg</file> | ||||
|     <file>summary-counter.svg</file> | ||||
|     <file>toggle-off-us.svg</file> | ||||
|     <file>toggle-off-intl.svg</file> | ||||
|     <file>toggle-off-hc.svg</file> | ||||
|     <file>toggle-on-us.svg</file> | ||||
|     <file>toggle-on-intl.svg</file> | ||||
|     <file>toggle-on-hc.svg</file> | ||||
|     <file>ws-switch-arrow-up.png</file> | ||||
|     <file>ws-switch-arrow-down.png</file> | ||||
|   </gresource> | ||||
| </gresources> | ||||
							
								
								
									
										15
									
								
								data/gnome-shell-wayland.desktop.in.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,15 @@ | ||||
| [Desktop Entry] | ||||
| Type=Application | ||||
| _Name=GNOME Shell (wayland compositor) | ||||
| _Comment=Window management and application launching | ||||
| Exec=@bindir@/gnome-shell --wayland --display-server | ||||
| X-GNOME-Bugzilla-Bugzilla=GNOME | ||||
| X-GNOME-Bugzilla-Product=gnome-shell | ||||
| X-GNOME-Bugzilla-Component=general | ||||
| X-GNOME-Bugzilla-Version=@VERSION@ | ||||
| Categories=GNOME;GTK;Core; | ||||
| OnlyShowIn=GNOME; | ||||
| NoDisplay=true | ||||
| X-GNOME-Autostart-Phase=DisplayServer | ||||
| X-GNOME-Autostart-Notify=true | ||||
| X-GNOME-AutoRestart=false | ||||
| @@ -1,7 +1,7 @@ | ||||
| [Desktop Entry] | ||||
| Type=Application | ||||
| Name=GNOME Shell | ||||
| Comment=Window management and application launching | ||||
| _Name=GNOME Shell | ||||
| _Comment=Window management and application launching | ||||
| Exec=@bindir@/gnome-shell | ||||
| X-GNOME-Bugzilla-Bugzilla=GNOME | ||||
| X-GNOME-Bugzilla-Product=gnome-shell | ||||
| @@ -10,7 +10,7 @@ X-GNOME-Bugzilla-Version=@VERSION@ | ||||
| Categories=GNOME;GTK;Core; | ||||
| OnlyShowIn=GNOME; | ||||
| NoDisplay=true | ||||
| X-GNOME-Autostart-Phase=DisplayServer | ||||
| X-GNOME-Autostart-Phase=WindowManager | ||||
| X-GNOME-Provides=panel;windowmanager; | ||||
| X-GNOME-Autostart-Notify=true | ||||
| X-GNOME-AutoRestart=false | ||||
| @@ -1,4 +0,0 @@ | ||||
| [portal] | ||||
| DBusName=org.freedesktop.impl.portal.desktop.gnome | ||||
| Interfaces=org.freedesktop.impl.portal.Access | ||||
| UseIn=gnome | ||||
| @@ -1,95 +0,0 @@ | ||||
| desktop_files = [ | ||||
|   'org.gnome.Shell.desktop', | ||||
|   'gnome-shell-extension-prefs.desktop' | ||||
| ] | ||||
| service_files = [] | ||||
|  | ||||
| if have_networkmanager | ||||
|   desktop_files += 'org.gnome.Shell.PortalHelper.desktop' | ||||
|   service_files += 'org.gnome.Shell.PortalHelper.service' | ||||
| endif | ||||
|  | ||||
| desktopconf = configuration_data() | ||||
| # We substitute in bindir so it works as an autostart | ||||
| # file when built in a non-system prefix | ||||
| desktopconf.set('bindir', bindir) | ||||
| desktopconf.set('VERSION', meson.project_version()) | ||||
| foreach desktop_file : desktop_files | ||||
|   i18n.merge_file('desktop', | ||||
|     input: configure_file( | ||||
|       input: desktop_file + '.in.in', | ||||
|       output: desktop_file + '.in', | ||||
|       configuration: desktopconf | ||||
|     ), | ||||
|     output: desktop_file, | ||||
|     po_dir: '../po', | ||||
|     install: true, | ||||
|     install_dir: desktopdir, | ||||
|     type: 'desktop' | ||||
|   ) | ||||
| endforeach | ||||
|  | ||||
| serviceconf = configuration_data() | ||||
| serviceconf.set('libexecdir', libexecdir) | ||||
| foreach service_file : service_files | ||||
|   configure_file( | ||||
|     input: service_file + '.in', | ||||
|     output: service_file, | ||||
|     configuration: serviceconf, | ||||
|     install_dir: servicedir | ||||
|   ) | ||||
| endforeach | ||||
|  | ||||
|  | ||||
| dbus_interfaces = [ | ||||
|   'org.gnome.Shell.PadOsd.xml', | ||||
|   'org.gnome.Shell.Screencast.xml', | ||||
|   'org.gnome.Shell.Screenshot.xml', | ||||
|   'org.gnome.ShellSearchProvider.xml', | ||||
|   'org.gnome.ShellSearchProvider2.xml' | ||||
| ] | ||||
| install_data(dbus_interfaces, install_dir: ifacedir) | ||||
|  | ||||
|  | ||||
| subdir('theme') | ||||
|  | ||||
| theme_resources = gnome.compile_resources( | ||||
|   'gnome-shell-theme', 'gnome-shell-theme.gresource.xml', | ||||
|   source_dir: 'theme', | ||||
|   dependencies: theme_deps, | ||||
|   gresource_bundle: true, | ||||
|   install: true, | ||||
|   install_dir: pkgdatadir | ||||
| ) | ||||
|  | ||||
| perfconf = configuration_data() | ||||
| perfconf.set('datadir', datadir) | ||||
| configure_file( | ||||
|   input: 'perf-background.xml.in', | ||||
|   output: 'perf-background.xml', | ||||
|   configuration: perfconf, | ||||
|   install_dir: pkgdatadir | ||||
| ) | ||||
|  | ||||
|  | ||||
| install_data('gnome-shell.portal', install_dir: portaldir) | ||||
| install_data('50-gnome-shell-system.xml', install_dir: keysdir) | ||||
|  | ||||
|  | ||||
| schemaconf = configuration_data() | ||||
| schemaconf.set('GETTEXT_PACKAGE', meson.project_name()) | ||||
| schema = configure_file( | ||||
|   input: 'org.gnome.shell.gschema.xml.in', | ||||
|   output: 'org.gnome.shell.gschema.xml', | ||||
|   configuration: schemaconf, | ||||
|   install_dir: schemadir | ||||
| ) | ||||
|  | ||||
| # for unit tests - gnome.compile_schemas() only looks in srcdir | ||||
| custom_target('compile-schemas', | ||||
|   input: schema, | ||||
|   output: 'gschemas.compiled', | ||||
|   command: [find_program('glib-compile-schemas'), meson.current_build_dir()], | ||||
|   build_by_default: true) | ||||
|  | ||||
| install_data('gnome-shell-overrides.convert', install_dir: convertdir) | ||||
| @@ -1,28 +0,0 @@ | ||||
| <!DOCTYPE node PUBLIC | ||||
| '-//freedesktop//DTD D-BUS Object Introspection 1.0//EN' | ||||
| 'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'> | ||||
| <node> | ||||
|  | ||||
|   <!-- | ||||
|       org.gnome.Shell.PadOSD: | ||||
|       @short_description: Pad OSD interface | ||||
|  | ||||
|       The interface used to show button map OSD on pad devices. | ||||
|   --> | ||||
|   <interface name='org.gnome.Shell.Wacom.PadOsd'> | ||||
|  | ||||
|     <!-- | ||||
|         Show: | ||||
|         @device_node: device node file, usually in /dev/input/... | ||||
|         @edition_mode: whether toggling edition mode on when showing | ||||
|  | ||||
|         Shows the pad button map OSD for the requested device, the OSD | ||||
| 	will be shown according the current device settings (output | ||||
| 	mapping, left handed mode, ...) | ||||
|     --> | ||||
|     <method name='Show'> | ||||
|       <arg name='device_node' direction='in' type='o'/> | ||||
|       <arg name='edition_mode' direction='in' type='b'/> | ||||
|     </method> | ||||
|   </interface> | ||||
| </node> | ||||
| @@ -1,10 +0,0 @@ | ||||
| [Desktop Entry] | ||||
| Name=Network Login | ||||
| Type=Application | ||||
| Exec=gapplication launch org.gnome.Shell.PortalHelper | ||||
| DBusActivatable=true | ||||
| NoDisplay=true | ||||
| # Translators: Do NOT translate or transliterate this text (this is an icon file name)! | ||||
| Icon=network-workgroup | ||||
| StartupNotify=true | ||||
| OnlyShowIn=GNOME; | ||||
| @@ -1,3 +0,0 @@ | ||||
| [D-BUS Service] | ||||
| Name=org.gnome.Shell.PortalHelper | ||||
| Exec=@libexecdir@/gnome-shell-portal-helper | ||||
| @@ -38,6 +38,7 @@ | ||||
|     <method name="Screencast"> | ||||
|       <arg type="s" direction="in" name="file_template"/> | ||||
|       <arg type="a{sv}" direction="in" name="options"/> | ||||
|       <arg type="b" direction="in" name="flash"/> | ||||
|       <arg type="b" direction="out" name="success"/> | ||||
|       <arg type="s" direction="out" name="filename_used"/> | ||||
|     </method> | ||||
|   | ||||
| @@ -3,48 +3,40 @@ | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="development-tools" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary> | ||||
|       <_summary> | ||||
|         Enable internal tools useful for developers and testers from Alt-F2 | ||||
|       </summary> | ||||
|       <description> | ||||
|       </_summary> | ||||
|       <_description> | ||||
|         Allows access to internal debugging and monitoring tools | ||||
|         using the Alt-F2 dialog. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="enabled-extensions" type="as"> | ||||
|       <default>[]</default> | ||||
|       <summary>UUIDs of extensions to enable</summary> | ||||
|       <description> | ||||
|       <_summary>UUIDs of extensions to enable</_summary> | ||||
|       <_description> | ||||
|         GNOME Shell extensions have a UUID property; this key lists extensions | ||||
|         which should be loaded. Any extension that wants to be loaded needs | ||||
|         to be in this list. You can also manipulate this list with the | ||||
|         EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell. | ||||
|       </description> | ||||
|     </key> | ||||
|     <key name="disable-user-extensions" type="b"> | ||||
|       <default>false</default> | ||||
|       <summary>Disable user extensions</summary> | ||||
|       <description> | ||||
|         Disable all extensions the user has enabled without affecting | ||||
|         the “enabled-extension” setting. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="disable-extension-version-validation" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Disables the validation of extension version compatibility</summary> | ||||
|       <description> | ||||
|       <default>false</default> | ||||
|       <_summary>Disables the validation of extension version compatibility</_summary> | ||||
|       <_description> | ||||
|         GNOME Shell will only load extensions that claim to support the current | ||||
|         running version. Enabling this option will disable this check and try to | ||||
|         load all extensions regardless of the versions they claim to support. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="favorite-apps" type="as"> | ||||
|       <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default> | ||||
|       <summary>List of desktop file IDs for favorite applications</summary> | ||||
|       <description> | ||||
|       <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Documents.desktop' ]</default> | ||||
|       <_summary>List of desktop file IDs for favorite applications</_summary> | ||||
|       <_description> | ||||
|         The applications corresponding to these identifiers | ||||
|         will be displayed in the favorites area. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="app-picker-view" type="u"> | ||||
|       <default>0</default> | ||||
| @@ -55,82 +47,84 @@ | ||||
|     </key> | ||||
|     <key name="command-history" type="as"> | ||||
|       <default>[]</default> | ||||
|       <summary>History for command (Alt-F2) dialog</summary> | ||||
|       <_summary>History for command (Alt-F2) dialog</_summary> | ||||
|     </key> | ||||
|     <key name="looking-glass-history" type="as"> | ||||
|       <default>[]</default> | ||||
|       <!-- Translators: looking glass is a debugger and inspector tool, see https://wiki.gnome.org/Projects/GnomeShell/LookingGlass --> | ||||
|       <summary>History for the looking glass dialog</summary> | ||||
|       <_summary>History for the looking glass dialog</_summary> | ||||
|     </key> | ||||
|     <key name="always-show-log-out" type="b"> | ||||
|       <default>false</default> | ||||
|       <summary>Always show the “Log out” menu item in the user menu.</summary> | ||||
|       <description> | ||||
|         This key overrides the automatic hiding of the “Log out” | ||||
|       <_summary>Always show the 'Log out' menu item in the user menu.</_summary> | ||||
|       <_description> | ||||
|         This key overrides the automatic hiding of the 'Log out' | ||||
|         menu item in single-user, single-session situations. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="remember-mount-password" type="b"> | ||||
|       <default>false</default> | ||||
|       <summary>Whether to remember password for mounting encrypted or remote filesystems</summary> | ||||
|       <description> | ||||
|       <_summary>Whether to remember password for mounting encrypted or remote filesystems</_summary> | ||||
|       <_description> | ||||
|         The shell will request a password when an encrypted device or a | ||||
|         remote filesystem is mounted.  If the password can be saved for | ||||
|         future use a “Remember Password” checkbox will be present. | ||||
|         future use a 'Remember Password' checkbox will be present. | ||||
|         This key sets the default state of the checkbox. | ||||
|       </description> | ||||
|     </key> | ||||
|     <key name="had-bluetooth-devices-setup" type="b"> | ||||
|       <default>false</default> | ||||
|       <summary>Whether the default Bluetooth adapter had set up devices associated to it</summary> | ||||
|       <description> | ||||
|         The shell will only show a Bluetooth menu item if a Bluetooth | ||||
|         adapter is powered, or if there were devices set up associated | ||||
|         with the default adapter. This will be reset if the default | ||||
|         adapter is ever seen not to have devices associated to it. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <child name="calendar" schema="org.gnome.shell.calendar"/> | ||||
|     <child name="keybindings" schema="org.gnome.shell.keybindings"/> | ||||
|     <child name="keyboard" schema="org.gnome.shell.keyboard"/> | ||||
|     <child name="location" schema="org.gnome.shell.location"/> | ||||
|   </schema> | ||||
| 
 | ||||
|   <schema id="org.gnome.shell.calendar" path="/org/gnome/shell/calendar/" | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="show-weekdate" type="b"> | ||||
|       <default>false</default> | ||||
|       <_summary>Show the week date in the calendar</_summary> | ||||
|       <_description> | ||||
|         If true, display the ISO week date in the calendar. | ||||
|       </_description> | ||||
|       </key> | ||||
|   </schema> | ||||
| 
 | ||||
|   <schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/" | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="open-application-menu" type="as"> | ||||
|       <default>["<Super>F10"]</default> | ||||
|       <summary>Keybinding to open the application menu</summary> | ||||
|       <description> | ||||
|       <_summary>Keybinding to open the application menu</_summary> | ||||
|       <_description> | ||||
|         Keybinding to open the application menu. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="toggle-application-view" type="as"> | ||||
|       <default>["<Super>a"]</default> | ||||
|       <summary>Keybinding to open the “Show Applications” view</summary> | ||||
|       <description> | ||||
|         Keybinding to open the “Show Applications” view of the Activities | ||||
|       <_summary>Keybinding to open the "Show Applications" view</_summary> | ||||
|       <_description> | ||||
|         Keybinding to open the "Show Applications" view of the Activities | ||||
|         Overview. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="toggle-overview" type="as"> | ||||
|       <default>["<Super>s"]</default> | ||||
|       <summary>Keybinding to open the overview</summary> | ||||
|       <description> | ||||
|       <_summary>Keybinding to open the overview</_summary> | ||||
|       <_description> | ||||
|         Keybinding to open the Activities Overview. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="toggle-message-tray" type="as"> | ||||
|       <default>["<Super>v","<Super>m"]</default> | ||||
|       <summary>Keybinding to toggle the visibility of the notification list</summary> | ||||
|       <description> | ||||
|         Keybinding to toggle the visibility of the notification list. | ||||
|       </description> | ||||
|       <default>["<Super>m"]</default> | ||||
|       <_summary>Keybinding to toggle the visibility of the message tray</_summary> | ||||
|       <_description> | ||||
|         Keybinding to toggle the visibility of the message tray. | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="focus-active-notification" type="as"> | ||||
|       <default>["<Super>n"]</default> | ||||
|       <summary>Keybinding to focus the active notification</summary> | ||||
|       <description> | ||||
|       <_summary>Keybinding to focus the active notification</_summary> | ||||
|       <_description> | ||||
|         Keybinding to focus the active notification. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key name="pause-resume-tweens" type="as"> | ||||
|       <default>[]</default> | ||||
| @@ -143,10 +137,36 @@ | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="keyboard-type" type="s"> | ||||
|       <default>'touch'</default> | ||||
|       <summary>Which keyboard to use</summary> | ||||
|       <description> | ||||
|       <_summary>Which keyboard to use</_summary> | ||||
|       <_description> | ||||
|         The type of keyboard to use. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|   </schema> | ||||
| 
 | ||||
|   <enum id="org.gnome.shell.geoclue.AccuracyLevel"> | ||||
|     <value value="0" nick="off"/> | ||||
|     <value value="1" nick="country"/> | ||||
|     <value value="4" nick="city"/> | ||||
|     <value value="5" nick="neighborhood"/> | ||||
|     <value value="6" nick="street"/> | ||||
|     <value value="8" nick="exact"/> | ||||
|   </enum> | ||||
|   <schema id="org.gnome.shell.location" | ||||
|           path="/org/gnome/shell/location/" | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="max-accuracy-level" enum="org.gnome.shell.geoclue.AccuracyLevel"> | ||||
|       <default>'exact'</default> | ||||
|       <_summary>The maximum accuracy level of location.</_summary> | ||||
|       <_description> | ||||
|         Configures the maximum level of location accuracy applications are | ||||
|         allowed to see. Valid options are 'off' (disable location tracking), | ||||
|         'country', 'city', 'neighborhood', 'street', and 'exact' (typically | ||||
|         requires GPS receiver). Please keep in mind that this only controls | ||||
|         what GeoClue will allow applications to see and they can find user's | ||||
|         location on their own using network resources (albeit with street-level | ||||
|         accuracy at best). | ||||
|       </_description> | ||||
|     </key> | ||||
|   </schema> | ||||
| 
 | ||||
| @@ -173,12 +193,12 @@ | ||||
|           gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="app-icon-mode" enum="org.gnome.shell.window-switcher.AppIconMode"> | ||||
|       <default>'both'</default> | ||||
|       <summary>The application icon mode.</summary> | ||||
|       <description> | ||||
|       <_summary>The application icon mode.</_summary> | ||||
|       <_description> | ||||
| 	Configures how the windows are shown in the switcher. Valid possibilities | ||||
| 	are “thumbnail-only” (shows a thumbnail of the window), “app-icon-only” | ||||
| 	(shows only the application icon) or “both”. | ||||
|       </description> | ||||
| 	are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' | ||||
| 	(shows only the application icon) or 'both'. | ||||
|       </_description> | ||||
|     </key> | ||||
|     <key type="b" name="current-workspace-only"> | ||||
|       <default>true</default> | ||||
| @@ -194,43 +214,43 @@ | ||||
| 	  gettext-domain="@GETTEXT_PACKAGE@"> | ||||
|     <key name="attach-modal-dialogs" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Attach modal dialog to the parent window</summary> | ||||
|       <description> | ||||
|       <_summary>Attach modal dialog to the parent window</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.mutter when running | ||||
|         GNOME Shell. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
| 
 | ||||
|     <key name="edge-tiling" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Enable edge tiling when dropping windows on screen edges</summary> | ||||
|       <description> | ||||
|       <_summary>Enable edge tiling when dropping windows on screen edges</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.mutter when running GNOME Shell. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
| 
 | ||||
|     <key name="dynamic-workspaces" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Workspaces are managed dynamically</summary> | ||||
|       <description> | ||||
|       <_summary>Workspaces are managed dynamically</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.mutter when running GNOME Shell. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
| 
 | ||||
|     <key name="workspaces-only-on-primary" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Workspaces only on primary monitor</summary> | ||||
|       <description> | ||||
|       <_summary>Workspaces only on primary monitor</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.mutter when running GNOME Shell. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
| 
 | ||||
|     <key name="focus-change-on-pointer-rest" type="b"> | ||||
|       <default>true</default> | ||||
|       <summary>Delay focus changes in mouse mode until the pointer stops moving</summary> | ||||
|       <description> | ||||
|       <_summary>Delay focus changes in mouse mode until the pointer stops moving</_summary> | ||||
|       <_description> | ||||
|         This key overrides the key in org.gnome.mutter when running GNOME Shell. | ||||
|       </description> | ||||
|       </_description> | ||||
|     </key> | ||||
|   </schema> | ||||
| </schemalist> | ||||
| @@ -1,31 +0,0 @@ | ||||
| <!-- With an animated background, performance will differ depending on whether | ||||
|      one layer or two layers are being blended together. This messes up our | ||||
|      benchmarks. We could just benchmark a single image, but since blended | ||||
|      images are present for much of the day with the GNOME default background, | ||||
|      we want to make sure that also performs well; for that reason we ship | ||||
|      an "animated" background that animates super-slowly to use during | ||||
|      performance tests; it will be in the blended state until 2030. --> | ||||
| <background> | ||||
|   <starttime> | ||||
|     <year>1990</year> | ||||
|     <month>1</month> | ||||
|     <day>1</day> | ||||
|     <hour>0</hour> | ||||
|     <minute>00</minute> | ||||
|     <second>00</second> | ||||
|   </starttime> | ||||
|  | ||||
| <!-- One transition that takes 40 years --> | ||||
| <transition type="overlay"> | ||||
| <duration>1261440000.0</duration> | ||||
| <from>@datadir@/backgrounds/gnome/adwaita-morning.jpg</from> | ||||
| <to>@datadir@/backgrounds/gnome/adwaita-day.jpg</to> | ||||
| </transition> | ||||
|  | ||||
| <!-- A single slide doesn't work, so another slide for 1 minute after 40 years --> | ||||
| <static> | ||||
| <duration>60</duration> | ||||
| <file>/usr/share/backgrounds/gnome/Sandstone.jpg</file> | ||||
| </static> | ||||
|  | ||||
| </background> | ||||
| @@ -1,3 +0,0 @@ | ||||
| To generate the css files, from the project directory: | ||||
|  | ||||
| sass --sourcemap=none --update . | ||||
| @@ -1,34 +0,0 @@ | ||||
| Summary | ||||
| ------- | ||||
|  | ||||
| * Do not edit the CSS directly, edit the source SCSS files and process them with SASS (running | ||||
|   `make` should do that when you have the required software installed, as described below; | ||||
|   run `./parse-sass.sh` manually if it doesn't) | ||||
| * Most SASS preprocessors should produce similar results, however the build system | ||||
|   integration and 'parse-sass.sh' script use sassc. You should be able to install | ||||
|   it with `pkcon install sassc` or your distribution's package manager. | ||||
|  | ||||
| How to tweak the theme | ||||
| ---------------------- | ||||
|  | ||||
| Adwaita is a complex theme, so to keep it maintainable it's written and processed in SASS, the | ||||
| generated CSS is then transformed into a gresource file during gtk build and used at runtime in a  | ||||
| non-legible or editable form. | ||||
|  | ||||
| It is very likely your change will happen in the _common.scss file. That's where all the widget  | ||||
| selectors are defined. Here's a rundown of the "supporting" stylesheets, that are unlikely to be the  | ||||
| right place for a drive by stylesheet fix: | ||||
|  | ||||
| _colors.scss        - global color definitions. We keep the number of defined colors to a necessary minimum,  | ||||
|                       most colors are derived from a handful of basics. It is an exact copy of the gtk+  | ||||
|                       counterpart. Light theme is used for the classic theme and dark is for GNOME3 shell  | ||||
|                       default. | ||||
|  | ||||
| _drawing.scss       - drawing helper mixings/functions to allow easier definition of widget drawing under | ||||
|                       specific context. This is why Adwaita isn't 15000 LOC. | ||||
|  | ||||
| _common.scss        - actual definitions of style for each widget. This is where you are likely to add/remove | ||||
|                       your changes. | ||||
|                        | ||||
| You can read about SASS at http://sass-lang.com/documentation/. Once you make your changes to the | ||||
| _common.scss file, you can either run make or the ./parse-sass.sh script. | ||||
| @@ -10,11 +10,11 @@ | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="24" | ||||
|    height="24" | ||||
|    width="29" | ||||
|    height="29" | ||||
|    id="svg10621" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.91 r13725" | ||||
|    inkscape:version="0.48.2 r9819" | ||||
|    sodipodi:docname="calendar-today.svg"> | ||||
|   <defs | ||||
|      id="defs10623"> | ||||
| @@ -118,6 +118,17 @@ | ||||
|        fx="51" | ||||
|        fy="30" | ||||
|        r="42" /> | ||||
|     <radialGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient34508-1-3" | ||||
|        id="radialGradient3113" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)" | ||||
|        cx="51" | ||||
|        cy="30" | ||||
|        fx="51" | ||||
|        fy="30" | ||||
|        r="42" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
| @@ -126,23 +137,22 @@ | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="8" | ||||
|      inkscape:cx="-23.537329" | ||||
|      inkscape:cy="-31.442864" | ||||
|      inkscape:zoom="15.839192" | ||||
|      inkscape:cx="20.652108" | ||||
|      inkscape:cy="11.839084" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      showgrid="true" | ||||
|      fit-margin-top="0" | ||||
|      fit-margin-left="0" | ||||
|      fit-margin-right="0" | ||||
|      fit-margin-bottom="0" | ||||
|      inkscape:window-width="2133" | ||||
|      inkscape:window-height="1241" | ||||
|      inkscape:window-x="238" | ||||
|      inkscape:window-y="88" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false"> | ||||
|      inkscape:window-width="1280" | ||||
|      inkscape:window-height="741" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid3109" | ||||
| @@ -159,7 +169,7 @@ | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
| @@ -167,12 +177,28 @@ | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-469.08263,-537.99307)"> | ||||
|     <circle | ||||
|        style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.23756906;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|        id="path7305" | ||||
|        cx="481.57138" | ||||
|        cy="559.4649" | ||||
|        r="1.5" /> | ||||
|      transform="translate(-469.08263,-532.99307)"> | ||||
|     <path | ||||
|        sodipodi:type="arc" | ||||
|        style="opacity:0.4625;color:#000000;fill:url(#radialGradient3113);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="path34506-3" | ||||
|        sodipodi:cx="51" | ||||
|        sodipodi:cy="30" | ||||
|        sodipodi:rx="42" | ||||
|        sodipodi:ry="16" | ||||
|        d="M 9,29.999999 A 42,16 0 0 1 93,30 l -42,0 z" | ||||
|        sodipodi:start="3.1415927" | ||||
|        sodipodi:end="6.2831853" | ||||
|        transform="matrix(0.43692393,0,0,1.3783114,461.29951,517.6437)" | ||||
|        inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png" | ||||
|        inkscape:export-xdpi="90" | ||||
|        inkscape:export-ydpi="90" /> | ||||
|     <rect | ||||
|        style="fill:#ffffff;fill-opacity:0.50196078;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none" | ||||
|        id="rect2996" | ||||
|        width="31" | ||||
|        height="3" | ||||
|        x="468.08264" | ||||
|        y="558.99304" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.1 KiB | 
| @@ -14,7 +14,7 @@ | ||||
|    height="22" | ||||
|    id="svg3199" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="checkbox.svg"> | ||||
|   <defs | ||||
|      id="defs3201"> | ||||
| @@ -132,54 +132,51 @@ | ||||
|        xlink:href="#linearGradient10597-5" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient5581-5-2-4-6-8-7-35-8" | ||||
|        id="linearGradient11811" | ||||
|        y2="-388.72955" | ||||
|        x2="-93.031357" | ||||
|        y1="-396.34738" | ||||
|        x1="-93.031357" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.685418)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(3.0317573,0,0,1.0053174,-102.66338,-0.82153381)" | ||||
|        x1="63.568954" | ||||
|        y1="127.16142" | ||||
|        x2="63.568954" | ||||
|        y2="152.6618" /> | ||||
|        id="linearGradient14219-6" | ||||
|        xlink:href="#linearGradient15404-9" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient5581-5-2-4-6-8-7-35-8"> | ||||
|        id="linearGradient15404-9" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop5583-0-92-8-0-7-6-5-1" | ||||
|          id="stop15406-6" | ||||
|          offset="0" | ||||
|          style="stop-color:#454c4c;stop-opacity:1;" /> | ||||
|          style="stop-color:#515151;stop-opacity:1" /> | ||||
|       <stop | ||||
|          style="stop-color:#393f3f;stop-opacity:1;" | ||||
|          offset="0.40000001" | ||||
|          id="stop5585-4-7-2-7-9-9-92-0" /> | ||||
|       <stop | ||||
|          id="stop5587-6-7-2-0-3-1-21-5" | ||||
|          id="stop15408-7" | ||||
|          offset="1" | ||||
|          style="stop-color:#2d3232;stop-opacity:1;" /> | ||||
|          style="stop-color:#292929;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#a2a2a2" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#2d2d2d" | ||||
|      borderopacity="1" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="22.627417" | ||||
|      inkscape:cx="9.6447897" | ||||
|      inkscape:cy="12.591409" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="71.516955" | ||||
|      inkscape:cy="5.8710559" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="1412" | ||||
|      inkscape:window-height="1067" | ||||
|      inkscape:window-x="184" | ||||
|      inkscape:window-y="233" | ||||
|      inkscape:window-x="2635" | ||||
|      inkscape:window-y="226" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid14843" | ||||
| @@ -206,56 +203,87 @@ | ||||
|      id="layer1" | ||||
|      transform="translate(-342.5,-521.36218)"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        id="use5671" | ||||
|        transform="matrix(1.3594109,0,0,1.3564242,319.2059,481.99447)"> | ||||
|       <rect | ||||
|          transform="matrix(0.47304779,0,0,0.4807373,-6.3607039,-29.396216)" | ||||
|          rx="4.4136767" | ||||
|          y="125.3458" | ||||
|          x="50.440369" | ||||
|          height="29.154205" | ||||
|          width="29.559635" | ||||
|          id="rect11803" | ||||
|          style="color:#000000;fill:url(#linearGradient11811);fill-opacity:1;stroke:#3465a4;stroke-width:1.54426003000000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          ry="4.4233952" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11809" | ||||
|          d="m 17.87105,33.844107 0,-0.773112 c 0,-1.031264 0.807171,-1.836142 1.811982,-1.836142 l 9.612456,0 c 1.004811,0 1.787822,0.804878 1.787822,1.836142 l 0,0.773112 c 0,-1.031264 -0.783011,-1.836142 -1.787822,-1.836142 l -9.612456,0 c -1.004811,0 -1.811982,0.804878 -1.811982,1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|       <path | ||||
|          sodipodi:nodetypes="csssscssc" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          d="m 17.87105,41.158551 0,0.773112 c 0,1.031264 0.807171,1.836142 1.811982,1.836142 l 9.612456,0 c 1.004811,0 1.787822,-0.804878 1.787822,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          id="path11867" | ||||
|          inkscape:connector-curvature="0" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11869" | ||||
|          d="m 17.87105,41.895784 0,0.773112 c 0,1.031264 0.644622,1.836142 1.649433,1.836142 l 10.067593,0 c 1.004811,0 1.495234,-0.804878 1.495234,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#000000;fill-opacity:0.85253451;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|        transform="matrix(0.80230061,0,0,0.80230061,-87.624044,-453.10297)" | ||||
|        id="g14586-0" | ||||
|        style="stroke-width:2.3714385;stroke-miterlimit:4;stroke-dasharray:none"> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="matrix(1.9969286,0,0,1.9969286,-397.05491,877.00482)" | ||||
|          id="g15291-9-6" | ||||
|          style="stroke-width:1.18754292;stroke-miterlimit:4;stroke-dasharray:none;display:inline;enable-background:new"> | ||||
|         <g | ||||
|            transform="translate(877.50354,-102.83507)" | ||||
|            id="g16853-4-9" | ||||
|            style="stroke-width:1.18754292;stroke-miterlimit:4;stroke-dasharray:none;enable-background:new"> | ||||
|           <rect | ||||
|              transform="scale(1,-1)" | ||||
|              style="color:#000000;fill:url(#linearGradient14219-6);fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:1.24833274;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|              id="rect6506-6" | ||||
|              width="11.281681" | ||||
|              height="11.26221" | ||||
|              x="-409.59354" | ||||
|              y="-284.40115" | ||||
|              rx="1.0052766" | ||||
|              ry="1.0052764" /> | ||||
|         </g> | ||||
|       </g> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="translate(343.99999,987.99997)" | ||||
|          id="g5886-5" | ||||
|          style="stroke-width:2.3714385;stroke-miterlimit:4;stroke-dasharray:none;display:inline;enable-background:new" /> | ||||
|     </g> | ||||
|     <g | ||||
|        transform="matrix(0.84337,0,0,0.84337,-110.16632,-503.56182)" | ||||
|        id="g14586"> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="matrix(1.9969286,0,0,1.9969286,-397.05491,877.00482)" | ||||
|          id="g15291-9" | ||||
|          style="display:inline;enable-background:new"> | ||||
|         <g | ||||
|            transform="translate(877.50354,-102.83507)" | ||||
|            id="g16853-4" | ||||
|            style="enable-background:new" /> | ||||
|       </g> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="translate(343.99999,987.99997)" | ||||
|          id="g5886" | ||||
|          style="display:inline;enable-background:new"> | ||||
|         <path | ||||
|            style="fill:none;stroke:url(#linearGradient5891-0-4);stroke-width:7.11431503;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | ||||
|            d="m 198.5,240 5.25,5.25 13.98616,-14.43081" | ||||
|            id="path5835" | ||||
|            inkscape:path-effect="#path-effect5837-4-6" | ||||
|            inkscape:original-d="m 198.5,240 5.25,5.25 13.98616,-14.43081" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="ccc" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            inkscape:original-d="m 198.5,240 5.25,5.25 13.91205,-14.31964" | ||||
|            inkscape:path-effect="#path-effect5837-4-6" | ||||
|            id="path5880" | ||||
|            d="m 198.5,240 5.25,5.25 13.91205,-14.31964" | ||||
|            style="fill:none;stroke:#4787c8;stroke-width:3.55715752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | ||||
|            sodipodi:nodetypes="ccc" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#7ea7d3;stroke-width:1.18571913px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            d="m 197.45937,240.47455 c -0.17828,-0.29362 -0.20087,-0.67548 -0.0603,-0.98892 0.14055,-0.31344 0.43739,-0.54812 0.77144,-0.62817 0.33405,-0.08 0.69314,-0.01 0.99635,0.15175 0.30321,0.16144 0.55146,0.40727 0.79165,0.65284 l 3.66429,3.74643 12.87946,-12.98973 c 0.20796,-0.20974 0.42306,-0.41969 0.68548,-0.55522 0.26242,-0.13553 0.57293,-0.19052 0.85827,-0.11426 0.14267,0.0381 0.27708,0.10787 0.38874,0.20452 0.11167,0.0966 0.20021,0.22004 0.25479,0.35726 0.0546,0.13722 0.075,0.28793 0.0585,0.43468 -0.0165,0.14674 -0.07,0.28919 -0.15422,0.41052" | ||||
|            id="path5882" | ||||
|            inkscape:path-effect="#path-effect5884-4-7" | ||||
|            inkscape:original-d="m 197.45937,240.47455 c 0.65604,-0.56057 2.02485,-1.34847 2.49911,-0.8125 l 3.66429,3.74643 12.87946,-12.98973 c 0.6875,-0.6875 2.09152,0.7375 2.09152,0.7375" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="csccc" /> | ||||
|       </g> | ||||
|     </g> | ||||
|     <rect | ||||
|        style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="rect17347" | ||||
|        width="21.943846" | ||||
|        height="21.943846" | ||||
|        x="342.29913" | ||||
|        y="521.58435" /> | ||||
|     <path | ||||
|        inkscape:connector-curvature="0" | ||||
|        style="opacity:0.8;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        d="m 359.97505,524.8252 -7.88606,7.71465 -2.57155,-2.57155 -2.91442,-0.0427 0,2.35727 4.02875,3.98587 c 0.80342,0.80309 2.111,0.80309 2.91442,0 l 8.18609,-8.22894 0,-0.38573 c 0,-1.24128 0.19944,-1.76801 -0.82915,-2.29836 z" | ||||
|        id="rect5147-9-1-5-7-6-5-8-7" | ||||
|        sodipodi:nodetypes="ccccccccscc" /> | ||||
|     <path | ||||
|        style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:sans-serif;-inkscape-font-specification:sans-serif" | ||||
|        d="m 361.65223,524.52745 -9.5602,9.36735 -2.56345,-2.56344 -2.92846,-0.0214 0.0153,2.32639 4.02203,4.02206 c 0.80341,0.80309 2.10565,0.80309 2.90906,0 l 10.95049,-11.05765 0.003,-2.1502 z" | ||||
|        id="path12830-4-17-0" | ||||
|        inkscape:connector-curvature="0" | ||||
|        sodipodi:nodetypes="cccccccccc" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB | 
| @@ -14,10 +14,22 @@ | ||||
|    height="22" | ||||
|    id="svg3199" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="checkbox-off.svg"> | ||||
|   <defs | ||||
|      id="defs3201"> | ||||
|     <linearGradient | ||||
|        id="linearGradient15404" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop15406" | ||||
|          offset="0" | ||||
|          style="stop-color:#515151;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop15408" | ||||
|          offset="1" | ||||
|          style="stop-color:#292929;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
| @@ -44,6 +56,16 @@ | ||||
|        effect="spiro" | ||||
|        id="path-effect5884-4-7" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        y2="-388.72955" | ||||
|        x2="-93.031357" | ||||
|        y1="-396.34738" | ||||
|        x1="-93.031357" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.685418)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="linearGradient14219" | ||||
|        xlink:href="#linearGradient15404" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient10013-4-63-6"> | ||||
| @@ -88,55 +110,30 @@ | ||||
|        id="linearGradient15376" | ||||
|        xlink:href="#linearGradient10597-5" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient5581-5-2-4-6-8-7-35-8" | ||||
|        id="linearGradient11811" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(3.0317573,0,0,1.0053174,-102.66338,-0.82153381)" | ||||
|        x1="63.568954" | ||||
|        y1="127.16142" | ||||
|        x2="63.568954" | ||||
|        y2="152.6618" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient5581-5-2-4-6-8-7-35-8"> | ||||
|       <stop | ||||
|          id="stop5583-0-92-8-0-7-6-5-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#454c4c;stop-opacity:1;" /> | ||||
|       <stop | ||||
|          style="stop-color:#393f3f;stop-opacity:1;" | ||||
|          offset="0.40000001" | ||||
|          id="stop5585-4-7-2-7-9-9-92-0" /> | ||||
|       <stop | ||||
|          id="stop5587-6-7-2-0-3-1-21-5" | ||||
|          offset="1" | ||||
|          style="stop-color:#2d3232;stop-opacity:1;" /> | ||||
|     </linearGradient> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#a2a2a2" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#2d2d2d" | ||||
|      borderopacity="1" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="5.6568542" | ||||
|      inkscape:cx="19.79113" | ||||
|      inkscape:cy="11.232334" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="6.1225392" | ||||
|      inkscape:cy="3.6003241" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="1412" | ||||
|      inkscape:window-height="1067" | ||||
|      inkscape:window-x="184" | ||||
|      inkscape:window-y="233" | ||||
|      inkscape:window-x="2116" | ||||
|      inkscape:window-y="261" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid14843" | ||||
| @@ -163,44 +160,39 @@ | ||||
|      id="layer1" | ||||
|      transform="translate(-342.5,-521.36218)"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        id="use5671" | ||||
|        transform="matrix(1.3594109,0,0,1.3564242,319.2059,481.99447)"> | ||||
|       <rect | ||||
|          transform="matrix(0.47304779,0,0,0.4807373,-6.3607039,-29.396216)" | ||||
|          rx="4.4136767" | ||||
|          y="125.3458" | ||||
|          x="50.440369" | ||||
|          height="29.154205" | ||||
|          width="29.559635" | ||||
|          id="rect11803" | ||||
|          style="color:#000000;fill:url(#linearGradient11811);fill-opacity:1;stroke:#3465a4;stroke-width:1.54426003000000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          ry="4.4233952" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11809" | ||||
|          d="m 17.87105,33.844107 0,-0.773112 c 0,-1.031264 0.807171,-1.836142 1.811982,-1.836142 l 9.612456,0 c 1.004811,0 1.787822,0.804878 1.787822,1.836142 l 0,0.773112 c 0,-1.031264 -0.783011,-1.836142 -1.787822,-1.836142 l -9.612456,0 c -1.004811,0 -1.811982,0.804878 -1.811982,1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|       <path | ||||
|          sodipodi:nodetypes="csssscssc" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          d="m 17.87105,41.158551 0,0.773112 c 0,1.031264 0.807171,1.836142 1.811982,1.836142 l 9.612456,0 c 1.004811,0 1.787822,-0.804878 1.787822,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          id="path11867" | ||||
|          inkscape:connector-curvature="0" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11869" | ||||
|          d="m 17.87105,41.895784 0,0.773112 c 0,1.031264 0.644622,1.836142 1.649433,1.836142 l 10.067593,0 c 1.004811,0 1.495234,-0.804878 1.495234,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#000000;fill-opacity:0.85253451;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|        transform="matrix(0.80230061,0,0,0.80230061,-87.624044,-453.10297)" | ||||
|        id="g14586" | ||||
|        style="stroke-width:2.3714385;stroke-miterlimit:4;stroke-dasharray:none"> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="matrix(1.9969286,0,0,1.9969286,-397.05491,877.00482)" | ||||
|          id="g15291-9" | ||||
|          style="stroke-width:1.18754292;stroke-miterlimit:4;stroke-dasharray:none;display:inline;enable-background:new"> | ||||
|         <g | ||||
|            transform="translate(877.50354,-102.83507)" | ||||
|            id="g16853-4" | ||||
|            style="stroke-width:1.18754292;stroke-miterlimit:4;stroke-dasharray:none;enable-background:new"> | ||||
|           <rect | ||||
|              transform="scale(1,-1)" | ||||
|              style="color:#000000;fill:url(#linearGradient14219);fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:1.24833274;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|              id="rect6506-6" | ||||
|              width="11.281681" | ||||
|              height="11.26221" | ||||
|              x="-409.59354" | ||||
|              y="-284.40115" | ||||
|              rx="1.0052766" | ||||
|              ry="1.0052764" /> | ||||
|         </g> | ||||
|       </g> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="translate(343.99999,987.99997)" | ||||
|          id="g5886" | ||||
|          style="stroke-width:2.3714385;stroke-miterlimit:4;stroke-dasharray:none;display:inline;enable-background:new" /> | ||||
|     </g> | ||||
|     <rect | ||||
|        style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="rect17347" | ||||
|        width="21.943846" | ||||
|        height="21.943846" | ||||
|        x="342.29913" | ||||
|        y="521.58435" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 6.5 KiB | 
| @@ -14,10 +14,22 @@ | ||||
|    height="22" | ||||
|    id="svg3199" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="checkbox-focused.svg"> | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="checkbox.svg"> | ||||
|   <defs | ||||
|      id="defs3201"> | ||||
|     <linearGradient | ||||
|        id="linearGradient15404" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop15406" | ||||
|          offset="0" | ||||
|          style="stop-color:#515151;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop15408" | ||||
|          offset="1" | ||||
|          style="stop-color:#292929;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
| @@ -32,6 +44,27 @@ | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient5872-5-1" | ||||
|        id="linearGradient5891-0-4" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        x1="205.84143" | ||||
|        y1="246.7094" | ||||
|        x2="206.74803" | ||||
|        y2="231.24142" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient5872-5-1"> | ||||
|       <stop | ||||
|          style="stop-color:#0b2e52;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop5874-4-4" /> | ||||
|       <stop | ||||
|          style="stop-color:#1862af;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop5876-0-5" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect5837-4-6" | ||||
| @@ -44,6 +77,16 @@ | ||||
|        effect="spiro" | ||||
|        id="path-effect5884-4-7" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        y2="-388.72955" | ||||
|        x2="-93.031357" | ||||
|        y1="-396.34738" | ||||
|        x1="-93.031357" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.685418)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="linearGradient14219" | ||||
|        xlink:href="#linearGradient15404" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient10013-4-63-6"> | ||||
| @@ -88,55 +131,30 @@ | ||||
|        id="linearGradient15376" | ||||
|        xlink:href="#linearGradient10597-5" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient5581-5-2-4-6-8-7-35-8" | ||||
|        id="linearGradient11811" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(3.0317573,0,0,1.0053174,-102.66338,-0.82153381)" | ||||
|        x1="63.568954" | ||||
|        y1="127.16142" | ||||
|        x2="63.568954" | ||||
|        y2="152.6618" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient5581-5-2-4-6-8-7-35-8"> | ||||
|       <stop | ||||
|          id="stop5583-0-92-8-0-7-6-5-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#454c4c;stop-opacity:1;" /> | ||||
|       <stop | ||||
|          style="stop-color:#393f3f;stop-opacity:1;" | ||||
|          offset="0.40000001" | ||||
|          id="stop5585-4-7-2-7-9-9-92-0" /> | ||||
|       <stop | ||||
|          id="stop5587-6-7-2-0-3-1-21-5" | ||||
|          offset="1" | ||||
|          style="stop-color:#2d3232;stop-opacity:1;" /> | ||||
|     </linearGradient> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#a2a2a2" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#2d2d2d" | ||||
|      borderopacity="1" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="9.6447897" | ||||
|      inkscape:cy="12.591409" | ||||
|      inkscape:zoom="4" | ||||
|      inkscape:cx="71.247925" | ||||
|      inkscape:cy="33.339093" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="1412" | ||||
|      inkscape:window-height="1067" | ||||
|      inkscape:window-x="184" | ||||
|      inkscape:window-y="233" | ||||
|      inkscape:window-x="2116" | ||||
|      inkscape:window-y="261" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid14843" | ||||
| @@ -163,44 +181,38 @@ | ||||
|      id="layer1" | ||||
|      transform="translate(-342.5,-521.36218)"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        id="use5671" | ||||
|        transform="matrix(1.3594109,0,0,1.3564242,319.2059,481.99447)"> | ||||
|       <rect | ||||
|          transform="matrix(0.47304779,0,0,0.4807373,-6.3607039,-29.396216)" | ||||
|          rx="4.4136767" | ||||
|          y="125.3458" | ||||
|          x="50.440369" | ||||
|          height="29.154205" | ||||
|          width="29.559635" | ||||
|          id="rect11803" | ||||
|          style="color:#000000;fill:url(#linearGradient11811);fill-opacity:1;stroke:#1c1f1f;stroke-width:1.54426003;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          ry="4.4233952" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11809" | ||||
|          d="m 17.87105,33.844107 0,-0.773112 c 0,-1.031264 0.807171,-1.836142 1.811982,-1.836142 l 9.612456,0 c 1.004811,0 1.787822,0.804878 1.787822,1.836142 l 0,0.773112 c 0,-1.031264 -0.783011,-1.836142 -1.787822,-1.836142 l -9.612456,0 c -1.004811,0 -1.811982,0.804878 -1.811982,1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|       <path | ||||
|          sodipodi:nodetypes="csssscssc" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          d="m 17.87105,41.158551 0,0.773112 c 0,1.031264 0.807171,1.836142 1.811982,1.836142 l 9.612456,0 c 1.004811,0 1.787822,-0.804878 1.787822,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          id="path11867" | ||||
|          inkscape:connector-curvature="0" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11869" | ||||
|          d="m 17.87105,41.895784 0,0.773112 c 0,1.031264 0.644622,1.836142 1.649433,1.836142 l 10.067593,0 c 1.004811,0 1.495234,-0.804878 1.495234,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#000000;fill-opacity:0.85253451;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|        transform="matrix(0.84337,0,0,0.84337,-110.16632,-503.56182)" | ||||
|        id="g14586"> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="matrix(1.9969286,0,0,1.9969286,-397.05491,877.00482)" | ||||
|          id="g15291-9" | ||||
|          style="display:inline;enable-background:new"> | ||||
|         <g | ||||
|            transform="translate(877.50354,-102.83507)" | ||||
|            id="g16853-4" | ||||
|            style="enable-background:new"> | ||||
|           <rect | ||||
|              transform="scale(1,-1)" | ||||
|              style="color:#000000;fill:url(#linearGradient14219);fill-opacity:1;fill-rule:nonzero;stroke:#868686;stroke-width:0.59377144999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|              id="rect6506-6" | ||||
|              width="11.281681" | ||||
|              height="11.26221" | ||||
|              x="-409.59354" | ||||
|              y="-284.40115" | ||||
|              rx="0.95632279" | ||||
|              ry="0.95632273" /> | ||||
|         </g> | ||||
|       </g> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="translate(343.99999,987.99997)" | ||||
|          id="g5886" | ||||
|          style="display:inline;enable-background:new" /> | ||||
|     </g> | ||||
|     <rect | ||||
|        style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="rect17347" | ||||
|        width="21.943846" | ||||
|        height="21.943846" | ||||
|        x="342.29913" | ||||
|        y="521.58435" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 6.8 KiB | 
| @@ -14,8 +14,8 @@ | ||||
|    height="22" | ||||
|    id="svg3199" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="checkbox.svg"> | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="checkbox-focused.svg"> | ||||
|   <defs | ||||
|      id="defs3201"> | ||||
|     <linearGradient | ||||
| @@ -131,55 +131,30 @@ | ||||
|        id="linearGradient15376" | ||||
|        xlink:href="#linearGradient10597-5" | ||||
|        inkscape:collect="always" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient5581-5-2-4-6-8-7-35-8" | ||||
|        id="linearGradient11811" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(3.0317573,0,0,1.0053174,-102.66338,-0.82153381)" | ||||
|        x1="63.568954" | ||||
|        y1="127.16142" | ||||
|        x2="63.568954" | ||||
|        y2="152.6618" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient5581-5-2-4-6-8-7-35-8"> | ||||
|       <stop | ||||
|          id="stop5583-0-92-8-0-7-6-5-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#454c4c;stop-opacity:1;" /> | ||||
|       <stop | ||||
|          style="stop-color:#393f3f;stop-opacity:1;" | ||||
|          offset="0.40000001" | ||||
|          id="stop5585-4-7-2-7-9-9-92-0" /> | ||||
|       <stop | ||||
|          id="stop5587-6-7-2-0-3-1-21-5" | ||||
|          offset="1" | ||||
|          style="stop-color:#2d3232;stop-opacity:1;" /> | ||||
|     </linearGradient> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#a2a2a2" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#2d2d2d" | ||||
|      borderopacity="1" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="-0.17876005" | ||||
|      inkscape:cy="11.944326" | ||||
|      inkscape:cx="64.516955" | ||||
|      inkscape:cy="13.871056" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1375" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:window-width="1412" | ||||
|      inkscape:window-height="1067" | ||||
|      inkscape:window-x="2635" | ||||
|      inkscape:window-y="226" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid14843" | ||||
| @@ -196,7 +171,7 @@ | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
| @@ -206,56 +181,63 @@ | ||||
|      id="layer1" | ||||
|      transform="translate(-342.5,-521.36218)"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        id="use5671" | ||||
|        transform="matrix(1.3594109,0,0,1.3564242,319.2059,481.99447)"> | ||||
|       <rect | ||||
|          transform="matrix(0.47304779,0,0,0.4807373,-6.3607039,-29.396216)" | ||||
|          rx="4.4136767" | ||||
|          y="125.3458" | ||||
|          x="50.440369" | ||||
|          height="29.154205" | ||||
|          width="29.559635" | ||||
|          id="rect11803" | ||||
|          style="color:#000000;fill:url(#linearGradient11811);fill-opacity:1;stroke:#1c1f1f;stroke-width:1.54426003;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          ry="4.4233952" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11809" | ||||
|          d="m 17.87105,33.844107 0,-0.773112 c 0,-1.031264 0.807171,-1.836142 1.811982,-1.836142 l 9.612456,0 c 1.004811,0 1.787822,0.804878 1.787822,1.836142 l 0,0.773112 c 0,-1.031264 -0.783011,-1.836142 -1.787822,-1.836142 l -9.612456,0 c -1.004811,0 -1.811982,0.804878 -1.811982,1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|       <path | ||||
|          sodipodi:nodetypes="csssscssc" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          d="m 17.87105,41.158551 0,0.773112 c 0,1.031264 0.807171,1.836142 1.811982,1.836142 l 9.612456,0 c 1.004811,0 1.787822,-0.804878 1.787822,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          id="path11867" | ||||
|          inkscape:connector-curvature="0" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          id="path11869" | ||||
|          d="m 17.87105,41.895784 0,0.773112 c 0,1.031264 0.644622,1.836142 1.649433,1.836142 l 10.067593,0 c 1.004811,0 1.495234,-0.804878 1.495234,-1.836142 l 0,-0.773112 c 0,1.031264 -0.783011,1.836142 -1.787822,1.836142 l -9.612456,0 c -1.004811,0 -1.811982,-0.804878 -1.811982,-1.836142 z" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.15;color:#000000;fill:#000000;fill-opacity:0.85253451;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" | ||||
|          sodipodi:nodetypes="csssscssc" /> | ||||
|        transform="matrix(0.84337,0,0,0.84337,-110.16632,-503.56182)" | ||||
|        id="g14586"> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="matrix(1.9969286,0,0,1.9969286,-397.05491,877.00482)" | ||||
|          id="g15291-9" | ||||
|          style="display:inline;enable-background:new"> | ||||
|         <g | ||||
|            transform="translate(877.50354,-102.83507)" | ||||
|            id="g16853-4" | ||||
|            style="enable-background:new"> | ||||
|           <rect | ||||
|              transform="scale(1,-1)" | ||||
|              style="color:#000000;fill:url(#linearGradient14219);fill-opacity:1;fill-rule:nonzero;stroke:#868686;stroke-width:0.59377144999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|              id="rect6506-6" | ||||
|              width="11.281681" | ||||
|              height="11.26221" | ||||
|              x="-409.59354" | ||||
|              y="-284.40115" | ||||
|              rx="0.95632279" | ||||
|              ry="0.95632273" /> | ||||
|         </g> | ||||
|       </g> | ||||
|       <g | ||||
|          inkscape:export-ydpi="90" | ||||
|          inkscape:export-xdpi="90" | ||||
|          inkscape:export-filename="/home/jimmac/SparkleShare/gnome-mockups/boxes/interactive/img/checkbox-on.png" | ||||
|          transform="translate(343.99999,987.99997)" | ||||
|          id="g5886" | ||||
|          style="display:inline;enable-background:new"> | ||||
|         <path | ||||
|            style="fill:none;stroke:url(#linearGradient5891-0-4);stroke-width:7.11431503;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | ||||
|            d="m 198.5,240 5.25,5.25 13.98616,-14.43081" | ||||
|            id="path5835" | ||||
|            inkscape:path-effect="#path-effect5837-4-6" | ||||
|            inkscape:original-d="m 198.5,240 5.25,5.25 13.98616,-14.43081" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="ccc" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            inkscape:original-d="m 198.5,240 5.25,5.25 13.91205,-14.31964" | ||||
|            inkscape:path-effect="#path-effect5837-4-6" | ||||
|            id="path5880" | ||||
|            d="m 198.5,240 5.25,5.25 13.91205,-14.31964" | ||||
|            style="fill:none;stroke:#4787c8;stroke-width:3.55715752;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | ||||
|            sodipodi:nodetypes="ccc" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#7ea7d3;stroke-width:1.18571913px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            d="m 197.45937,240.47455 c -0.17828,-0.29362 -0.20087,-0.67548 -0.0603,-0.98892 0.14055,-0.31344 0.43739,-0.54812 0.77144,-0.62817 0.33405,-0.08 0.69314,-0.01 0.99635,0.15175 0.30321,0.16144 0.55146,0.40727 0.79165,0.65284 l 3.66429,3.74643 12.87946,-12.98973 c 0.20796,-0.20974 0.42306,-0.41969 0.68548,-0.55522 0.26242,-0.13553 0.57293,-0.19052 0.85827,-0.11426 0.14267,0.0381 0.27708,0.10787 0.38874,0.20452 0.11167,0.0966 0.20021,0.22004 0.25479,0.35726 0.0546,0.13722 0.075,0.28793 0.0585,0.43468 -0.0165,0.14674 -0.07,0.28919 -0.15422,0.41052" | ||||
|            id="path5882" | ||||
|            inkscape:path-effect="#path-effect5884-4-7" | ||||
|            inkscape:original-d="m 197.45937,240.47455 c 0.65604,-0.56057 2.02485,-1.34847 2.49911,-0.8125 l 3.66429,3.74643 12.87946,-12.98973 c 0.6875,-0.6875 2.09152,0.7375 2.09152,0.7375" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="csccc" /> | ||||
|       </g> | ||||
|     </g> | ||||
|     <rect | ||||
|        style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="rect17347" | ||||
|        width="21.943846" | ||||
|        height="21.943846" | ||||
|        x="342.29913" | ||||
|        y="521.58435" /> | ||||
|     <path | ||||
|        inkscape:connector-curvature="0" | ||||
|        style="opacity:0.8;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        d="m 359.97505,524.8252 -7.88606,7.71465 -2.57155,-2.57155 -2.91442,-0.0427 0,2.35727 4.02875,3.98587 c 0.80342,0.80309 2.111,0.80309 2.91442,0 l 8.18609,-8.22894 0,-0.38573 c 0,-1.24128 0.19944,-1.76801 -0.82915,-2.29836 z" | ||||
|        id="rect5147-9-1-5-7-6-5-8-7" | ||||
|        sodipodi:nodetypes="ccccccccscc" /> | ||||
|     <path | ||||
|        style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:sans-serif;-inkscape-font-specification:sans-serif" | ||||
|        d="m 361.65223,524.52745 -9.5602,9.36735 -2.56345,-2.56344 -2.92846,-0.0214 0.0153,2.32639 4.02203,4.02206 c 0.80341,0.80309 2.10565,0.80309 2.90906,0 l 10.95049,-11.05765 0.003,-2.1502 z" | ||||
|        id="path12830-4-17-0" | ||||
|        inkscape:connector-curvature="0" | ||||
|        sodipodi:nodetypes="cccccccccc" /> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.8 KiB | 
| @@ -1,81 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    version="1.0" | ||||
|    id="Foreground" | ||||
|    x="0px" | ||||
|    y="0px" | ||||
|    width="32" | ||||
|    height="32" | ||||
|    viewBox="0 0 32 32" | ||||
|    enable-background="new 0 0 16 16" | ||||
|    xml:space="preserve" | ||||
|    sodipodi:version="0.32" | ||||
|    inkscape:version="0.92.2 5c3e80d, 2017-08-06" | ||||
|    sodipodi:docname="close-window-active.svg" | ||||
|    inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata | ||||
|      id="metadata2399"><rdf:RDF><cc:Work | ||||
|          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs | ||||
|      id="defs2397"><linearGradient | ||||
|        id="linearGradient3173"><stop | ||||
|          style="stop-color:#c4c4c4;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop3175" /><stop | ||||
|          style="stop-color:#ffffff;stop-opacity:1;" | ||||
|          offset="1" | ||||
|          id="stop3177" /></linearGradient><inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 11 : 1" | ||||
|        inkscape:vp_y="0 : 1375 : 0" | ||||
|        inkscape:vp_z="22 : 11 : 1" | ||||
|        inkscape:persp3d-origin="11 : 7.3333334 : 1" | ||||
|        id="perspective2401" /></defs><sodipodi:namedview | ||||
|      inkscape:window-height="1106" | ||||
|      inkscape:window-width="1700" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:pageopacity="0" | ||||
|      guidetolerance="10.0" | ||||
|      gridtolerance="10.0" | ||||
|      objecttolerance="10.0" | ||||
|      borderopacity="1.0" | ||||
|      bordercolor="#666666" | ||||
|      pagecolor="#797979" | ||||
|      id="base" | ||||
|      showgrid="false" | ||||
|      inkscape:zoom="4" | ||||
|      inkscape:cx="28.483745" | ||||
|      inkscape:cy="67.714004" | ||||
|      inkscape:window-x="1427" | ||||
|      inkscape:window-y="127" | ||||
|      inkscape:current-layer="Foreground" | ||||
|      showguides="true" | ||||
|      inkscape:guide-bbox="true" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:window-maximized="0" | ||||
|      inkscape:document-rotation="0"><inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid11246" | ||||
|        empspacing="32" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /></sodipodi:namedview><path | ||||
|      d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z" | ||||
|      id="path883" | ||||
|      style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#a5c8ec;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" | ||||
|      sodipodi:nodetypes="csssc" | ||||
|      inkscape:connector-curvature="0" /><path | ||||
|      d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z" | ||||
|      inkscape:connector-curvature="0" | ||||
|      id="path887" | ||||
|      style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new" | ||||
|      sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg> | ||||
| Before Width: | Height: | Size: 4.6 KiB | 
| @@ -1,81 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    version="1.0" | ||||
|    id="Foreground" | ||||
|    x="0px" | ||||
|    y="0px" | ||||
|    width="32" | ||||
|    height="32" | ||||
|    viewBox="0 0 32 32" | ||||
|    enable-background="new 0 0 16 16" | ||||
|    xml:space="preserve" | ||||
|    sodipodi:version="0.32" | ||||
|    inkscape:version="0.92.2 5c3e80d, 2017-08-06" | ||||
|    sodipodi:docname="close-window-hover.svg" | ||||
|    inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata | ||||
|      id="metadata2399"><rdf:RDF><cc:Work | ||||
|          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs | ||||
|      id="defs2397"><linearGradient | ||||
|        id="linearGradient3173"><stop | ||||
|          style="stop-color:#c4c4c4;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop3175" /><stop | ||||
|          style="stop-color:#ffffff;stop-opacity:1;" | ||||
|          offset="1" | ||||
|          id="stop3177" /></linearGradient><inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 11 : 1" | ||||
|        inkscape:vp_y="0 : 1375 : 0" | ||||
|        inkscape:vp_z="22 : 11 : 1" | ||||
|        inkscape:persp3d-origin="11 : 7.3333334 : 1" | ||||
|        id="perspective2401" /></defs><sodipodi:namedview | ||||
|      inkscape:window-height="1106" | ||||
|      inkscape:window-width="1700" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:pageopacity="0" | ||||
|      guidetolerance="10.0" | ||||
|      gridtolerance="10.0" | ||||
|      objecttolerance="10.0" | ||||
|      borderopacity="1.0" | ||||
|      bordercolor="#666666" | ||||
|      pagecolor="#797979" | ||||
|      id="base" | ||||
|      showgrid="false" | ||||
|      inkscape:zoom="4" | ||||
|      inkscape:cx="28.483745" | ||||
|      inkscape:cy="67.714004" | ||||
|      inkscape:window-x="1427" | ||||
|      inkscape:window-y="127" | ||||
|      inkscape:current-layer="Foreground" | ||||
|      showguides="true" | ||||
|      inkscape:guide-bbox="true" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:window-maximized="0" | ||||
|      inkscape:document-rotation="0"><inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid11246" | ||||
|        empspacing="32" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /></sodipodi:namedview><path | ||||
|      inkscape:connector-curvature="0" | ||||
|      sodipodi:nodetypes="csssc" | ||||
|      style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#2975c4;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" | ||||
|      id="path822" | ||||
|      d="m 4.4362021,16 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 C 9.6090297,27.607281 4.4362021,22.410122 4.4362021,16 Z" /><path | ||||
|      sodipodi:nodetypes="ccsccccccccccccccccccccccc" | ||||
|      style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new" | ||||
|      id="path826" | ||||
|      inkscape:connector-curvature="0" | ||||
|      d="m 11.718386,11.764547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,16.018351 12.015167,13.61116 C 11.79279,13.405784 11.69527,13.116003 11.71839,12.819755 Z" /></svg> | ||||
| Before Width: | Height: | Size: 4.6 KiB | 
| @@ -7,6 +7,7 @@ | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    version="1.0" | ||||
| @@ -15,71 +16,137 @@ | ||||
|    y="0px" | ||||
|    width="32" | ||||
|    height="32" | ||||
|    viewBox="0 0 32 32" | ||||
|    viewBox="0 0 23.272727 23.272727" | ||||
|    enable-background="new 0 0 16 16" | ||||
|    xml:space="preserve" | ||||
|    sodipodi:version="0.32" | ||||
|    inkscape:version="0.92.2 5c3e80d, 2017-08-06" | ||||
|    inkscape:version="0.48+devel r10081 custom" | ||||
|    sodipodi:docname="close-window.svg" | ||||
|    inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata | ||||
|      id="metadata2399"><rdf:RDF><cc:Work | ||||
|          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs | ||||
|      id="defs2397"><linearGradient | ||||
|        id="linearGradient3173"><stop | ||||
|          style="stop-color:#c4c4c4;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop3175" /><stop | ||||
|          style="stop-color:#ffffff;stop-opacity:1;" | ||||
|          offset="1" | ||||
|          id="stop3177" /></linearGradient><inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 11 : 1" | ||||
|        inkscape:vp_y="0 : 1375 : 0" | ||||
|        inkscape:vp_z="22 : 11 : 1" | ||||
|        inkscape:persp3d-origin="11 : 7.3333334 : 1" | ||||
|        id="perspective2401" /></defs><sodipodi:namedview | ||||
|      inkscape:window-height="1106" | ||||
|      inkscape:window-width="1700" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:pageopacity="0" | ||||
|      guidetolerance="10.0" | ||||
|      gridtolerance="10.0" | ||||
|      objecttolerance="10.0" | ||||
|      borderopacity="1.0" | ||||
|      bordercolor="#666666" | ||||
|      pagecolor="#797979" | ||||
|      id="base" | ||||
|      showgrid="false" | ||||
|      inkscape:zoom="4" | ||||
|      inkscape:cx="28.483745" | ||||
|      inkscape:cy="67.714004" | ||||
|      inkscape:window-x="1427" | ||||
|      inkscape:window-y="127" | ||||
|      inkscape:current-layer="Foreground" | ||||
|      showguides="true" | ||||
|      inkscape:guide-bbox="true" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:window-maximized="0" | ||||
|      inkscape:document-rotation="0"><inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid11246" | ||||
|        empspacing="32" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /></sodipodi:namedview><path | ||||
|      d="m 4.4362021,15.860384 c 0,-6.410121 5.1728276,-11.60728 11.5529359,-11.60728 6.380109,0 11.552937,5.197159 11.552937,11.60728 0,6.410122 -5.172828,11.607281 -11.552937,11.607281 -6.3801083,0 -11.5529359,-5.197159 -11.5529359,-11.607281 z" | ||||
|      id="path2394-32" | ||||
|      style="color:#000000;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#2975c4;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" | ||||
|      sodipodi:nodetypes="csssc" | ||||
|      inkscape:connector-curvature="0" /><path | ||||
|      style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.49900004;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.74932218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" | ||||
|      d="m 6.4654832,15.001321 c -0.025906,0.288419 -0.044417,0.579469 -0.044417,0.874662 0,5.313347 4.2883848,9.621271 9.5768588,9.621271 5.288466,0 9.575143,-4.307924 9.575143,-9.621271 0,-0.295193 -0.01852,-0.586243 -0.04441,-0.874662 -0.440376,4.903023 -4.536071,8.746611 -9.53073,8.746611 -4.994659,0 -9.0920617,-3.843588 -9.5324391,-8.746611 z" | ||||
|      id="path2561" | ||||
|      inkscape:connector-curvature="0" /><path | ||||
|      d="m 11.718386,11.639547 h 1.055207 c 0.01091,-1.26e-4 0.02193,-4.86e-4 0.03298,0 0.269026,0.01183 0.538019,0.135679 0.725455,0.329752 l 2.407192,2.407192 2.440166,-2.407192 c 0.28029,-0.243226 0.471333,-0.322366 0.725455,-0.329752 h 1.055207 v 1.055208 c 0,0.302285 -0.03623,0.581049 -0.263801,0.791405 l -2.407191,2.407191 2.374217,2.374216 c 0.198577,0.198559 0.296768,0.478484 0.296775,0.758432 v 1.055206 h -1.055211 c -0.279947,-10e-6 -0.559877,-0.09824 -0.75843,-0.296777 l -2.407192,-2.407192 -2.407192,2.407192 c -0.198551,0.198579 -0.478493,0.296777 -0.758429,0.296777 H 11.71839 v -1.055206 c -3e-6,-0.279936 0.0982,-0.559873 0.296777,-0.758432 L 14.422359,15.893351 12.015167,13.48616 C 11.79279,13.280784 11.69527,12.991003 11.71839,12.694755 Z" | ||||
|      inkscape:connector-curvature="0" | ||||
|      id="path27279-0-5" | ||||
|      style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Andale Mono';-inkscape-font-specification:'Andale Mono';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.87958801;marker:none;enable-background:new" | ||||
|      sodipodi:nodetypes="ccsccccccccccccccccccccccc" /></svg> | ||||
|    id="metadata2399"><rdf:RDF><cc:Work | ||||
|        rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||||
|          rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs | ||||
|    id="defs2397"><linearGradient | ||||
|      id="linearGradient3173"><stop | ||||
|        style="stop-color:#c4c4c4;stop-opacity:1;" | ||||
|        offset="0" | ||||
|        id="stop3175" /><stop | ||||
|        style="stop-color:#ffffff;stop-opacity:1;" | ||||
|        offset="1" | ||||
|        id="stop3177" /></linearGradient><inkscape:perspective | ||||
|      sodipodi:type="inkscape:persp3d" | ||||
|      inkscape:vp_x="0 : 8 : 1" | ||||
|      inkscape:vp_y="0 : 1000 : 0" | ||||
|      inkscape:vp_z="16 : 8 : 1" | ||||
|      inkscape:persp3d-origin="8 : 5.3333333 : 1" | ||||
|      id="perspective2401" /><filter | ||||
|      color-interpolation-filters="sRGB" | ||||
|      inkscape:collect="always" | ||||
|      id="filter16494-4" | ||||
|      x="-0.20989846" | ||||
|      width="1.4197969" | ||||
|      y="-0.20903821" | ||||
|      height="1.4180764"><feGaussianBlur | ||||
|        inkscape:collect="always" | ||||
|        stdDeviation="1.3282637" | ||||
|        id="feGaussianBlur16496-8" /></filter><radialGradient | ||||
|      inkscape:collect="always" | ||||
|      xlink:href="#linearGradient16498-6" | ||||
|      id="radialGradient16504-1" | ||||
|      cx="7.6582627" | ||||
|      cy="5.8191104" | ||||
|      fx="7.6582627" | ||||
|      fy="5.8191104" | ||||
|      r="8.6928644" | ||||
|      gradientTransform="matrix(1.0474339,0,0,1.0517402,-0.3632615,-0.42032492)" | ||||
|      gradientUnits="userSpaceOnUse" /><linearGradient | ||||
|      inkscape:collect="always" | ||||
|      id="linearGradient16498-6"><stop | ||||
|        style="stop-color:#7b7b7b;stop-opacity:1" | ||||
|        offset="0" | ||||
|        id="stop16500-8" /><stop | ||||
|        style="stop-color:#101010;stop-opacity:1" | ||||
|        offset="1" | ||||
|        id="stop16502-0" /></linearGradient><filter | ||||
|      color-interpolation-filters="sRGB" | ||||
|      inkscape:collect="always" | ||||
|      id="filter16524-9" | ||||
|      x="-0.212979" | ||||
|      width="1.425958" | ||||
|      y="-0.21305652" | ||||
|      height="1.426113"><feGaussianBlur | ||||
|        inkscape:collect="always" | ||||
|        stdDeviation="0.71020915" | ||||
|        id="feGaussianBlur16526-0" /></filter></defs><sodipodi:namedview | ||||
|    inkscape:window-height="1114" | ||||
|    inkscape:window-width="1463" | ||||
|    inkscape:pageshadow="2" | ||||
|    inkscape:pageopacity="0" | ||||
|    guidetolerance="10.0" | ||||
|    gridtolerance="10.0" | ||||
|    objecttolerance="10.0" | ||||
|    borderopacity="1.0" | ||||
|    bordercolor="#666666" | ||||
|    pagecolor="#000000" | ||||
|    id="base" | ||||
|    showgrid="false" | ||||
|    inkscape:zoom="1" | ||||
|    inkscape:cx="10.720189" | ||||
|    inkscape:cy="13.739577" | ||||
|    inkscape:window-x="0" | ||||
|    inkscape:window-y="26" | ||||
|    inkscape:current-layer="Foreground" | ||||
|    showguides="true" | ||||
|    inkscape:guide-bbox="true" | ||||
|    borderlayer="true" | ||||
|    inkscape:showpageshadow="false" | ||||
|    inkscape:window-maximized="0"><inkscape:grid | ||||
|      type="xygrid" | ||||
|      id="grid11246" | ||||
|      empspacing="5" | ||||
|      visible="true" | ||||
|      enabled="true" | ||||
|      snapvisiblegridlinesonly="true" /></sodipodi:namedview> | ||||
|  | ||||
| <g | ||||
|    style="display:inline" | ||||
|    id="g16402-8" | ||||
|    transform="translate(4.7533483,2.8238929)"><g | ||||
|      id="g3175-4"><path | ||||
|        sodipodi:type="inkscape:offset" | ||||
|        inkscape:radius="0" | ||||
|        inkscape:original="M 7.65625 0.125 C 3.2589349 0.125 -0.3125 3.7070002 -0.3125 8.125 C -0.3125 12.543001 3.2589349 16.125 7.65625 16.125 C 12.053566 16.125 15.625 12.543001 15.625 8.125 C 15.625 3.7070002 12.053566 0.125 7.65625 0.125 z " | ||||
|        xlink:href="#path2394-32" | ||||
|        style="opacity:0.52994014;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.18181825;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter16494-4);enable-background:accumulate" | ||||
|        id="path16480-5" | ||||
|        inkscape:href="#path2394-32" | ||||
|        d="m 7.65625,0.125 c -4.3973151,0 -7.96875,3.5820002 -7.96875,8 0,4.418001 3.5714349,8 7.96875,8 4.397316,0 7.96875,-3.581999 7.96875,-8 0,-4.4179998 -3.571434,-8 -7.96875,-8 z" | ||||
|        transform="translate(0,1.028519)" /><path | ||||
|        clip-rule="evenodd" | ||||
|        d="m -0.30428257,8.1237596 c 0,-4.4179998 3.56522987,-7.9999996 7.96254497,-7.9999996 4.3973156,0 7.9625456,3.5819998 7.9625456,7.9999996 0,4.4180014 -3.56523,8.0000004 -7.9625456,8.0000004 -4.3973151,0 -7.96254497,-3.581999 -7.96254497,-8.0000004 z" | ||||
|        id="path2394-32" | ||||
|        style="color:#000000;fill:url(#radialGradient16504-1);fill-opacity:1;fill-rule:nonzero;stroke:#eeeeec;stroke-width:1.4545455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        sodipodi:nodetypes="csssc" | ||||
|        inkscape:connector-curvature="0" /><g | ||||
|        id="g3172-6" /></g><g | ||||
|      transform="matrix(0.72727273,0,0,0.72727273,2.368236,2.1803254)" | ||||
|      style="fill:#ffffff;fill-opacity:1;display:inline" | ||||
|      id="g27275-6-6" | ||||
|      inkscape:label="window-close"><g | ||||
|        style="fill:#ffffff;fill-opacity:1;display:inline" | ||||
|        id="g27277-1-1" | ||||
|        transform="translate(-41,-760)"><path | ||||
|          sodipodi:type="inkscape:offset" | ||||
|          inkscape:radius="0" | ||||
|          inkscape:original="M 44.21875 764.1875 L 44.21875 765.1875 C 44.19684 765.46825 44.289258 765.74287 44.5 765.9375 L 46.78125 768.21875 L 44.5 770.46875 C 44.31181 770.65692 44.218747 770.92221 44.21875 771.1875 L 44.21875 772.1875 L 45.21875 772.1875 C 45.48404 772.1875 45.749336 772.09444 45.9375 771.90625 L 48.21875 769.625 L 50.5 771.90625 C 50.688164 772.0944 50.953449 772.18749 51.21875 772.1875 L 52.21875 772.1875 L 52.21875 771.1875 C 52.218742 770.9222 52.125688 770.65692 51.9375 770.46875 L 49.6875 768.21875 L 51.96875 765.9375 C 52.18441 765.73815 52.21875 765.47397 52.21875 765.1875 L 52.21875 764.1875 L 51.21875 764.1875 C 50.977922 764.1945 50.796875 764.2695 50.53125 764.5 L 48.21875 766.78125 L 45.9375 764.5 C 45.75987 764.31608 45.504951 764.1987 45.25 764.1875 C 45.23954 764.18704 45.22912 764.18738 45.21875 764.1875 L 44.21875 764.1875 z " | ||||
|          xlink:href="#path27279-0-5" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter16524-9);enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" | ||||
|          id="path16506-5" | ||||
|          inkscape:href="#path27279-0-5" | ||||
|          d="m 44.21875,764.1875 0,1 c -0.02191,0.28075 0.07051,0.55537 0.28125,0.75 l 2.28125,2.28125 -2.28125,2.25 c -0.18819,0.18817 -0.281253,0.45346 -0.28125,0.71875 l 0,1 1,0 c 0.26529,0 0.530586,-0.0931 0.71875,-0.28125 L 48.21875,769.625 50.5,771.90625 c 0.188164,0.18815 0.453449,0.28124 0.71875,0.28125 l 1,0 0,-1 c -8e-6,-0.2653 -0.09306,-0.53058 -0.28125,-0.71875 l -2.25,-2.25 2.28125,-2.28125 c 0.21566,-0.19935 0.25,-0.46353 0.25,-0.75 l 0,-1 -1,0 c -0.240828,0.007 -0.421875,0.082 -0.6875,0.3125 l -2.3125,2.28125 L 45.9375,764.5 c -0.17763,-0.18392 -0.432549,-0.3013 -0.6875,-0.3125 -0.01046,-4.6e-4 -0.02088,-1.2e-4 -0.03125,0 l -1,0 z" | ||||
|          transform="translate(0,1.3535534)" /><path | ||||
|          sodipodi:nodetypes="ccsccccccccccccccccccccccc" | ||||
|          style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" | ||||
|          id="path27279-0-5" | ||||
|          inkscape:connector-curvature="0" | ||||
|          d="m 44.226475,764.17222 1,0 c 0.01037,-1.2e-4 0.02079,-4.6e-4 0.03125,0 0.254951,0.0112 0.50987,0.12858 0.6875,0.3125 l 2.28125,2.28125 2.3125,-2.28125 c 0.265625,-0.2305 0.446672,-0.3055 0.6875,-0.3125 l 1,0 0,1 c 0,0.28647 -0.03434,0.55065 -0.25,0.75 l -2.28125,2.28125 2.25,2.25 c 0.188188,0.18817 0.281242,0.45345 0.28125,0.71875 l 0,1 -1,0 c -0.265301,-1e-5 -0.530586,-0.0931 -0.71875,-0.28125 l -2.28125,-2.28125 -2.28125,2.28125 c -0.188164,0.18819 -0.45346,0.28125 -0.71875,0.28125 l -1,0 0,-1 c -3e-6,-0.26529 0.09306,-0.53058 0.28125,-0.71875 l 2.28125,-2.25 -2.28125,-2.28125 c -0.210742,-0.19463 -0.30316,-0.46925 -0.28125,-0.75 l 0,-1 z" /></g></g></g></svg> | ||||
| Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 9.4 KiB | 
| @@ -1,14 +0,0 @@ | ||||
| @import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors | ||||
| @import "gnome-shell-sass/_drawing"; | ||||
| @import "gnome-shell-sass/_common"; | ||||
|  | ||||
| //force symbolic icons | ||||
| stage { | ||||
|   -st-icon-style: symbolic; | ||||
| } | ||||
|  | ||||
| .toggle-switch { width: 48px; } | ||||
| .toggle-switch-us, .toggle-switch-intl { | ||||
|   background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg"); | ||||
|   &:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); } | ||||
| } | ||||
| @@ -1,5 +0,0 @@ | ||||
| $variant: 'dark'; | ||||
|  | ||||
| @import "gnome-shell-sass/_colors"; //use gtk colors | ||||
| @import "gnome-shell-sass/_drawing"; | ||||
| @import "gnome-shell-sass/_common"; | ||||
							
								
								
									
										90
									
								
								data/theme/menu-arrow-symbolic.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,90 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="16" | ||||
|    height="16" | ||||
|    id="svg3863" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.4 r9939" | ||||
|    sodipodi:docname="menu-arrow.svg"> | ||||
|   <defs | ||||
|      id="defs3865" /> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="15.836083" | ||||
|      inkscape:cx="-3.1641676" | ||||
|      inkscape:cy="11.823817" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="true" | ||||
|      inkscape:grid-bbox="true" | ||||
|      inkscape:document-units="px" | ||||
|      showguides="true" | ||||
|      inkscape:guide-bbox="true" | ||||
|      inkscape:window-width="1366" | ||||
|      inkscape:window-height="702" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:snap-bbox="true"> | ||||
|     <sodipodi:guide | ||||
|        orientation="1,0" | ||||
|        position="15.996443,16.922964" | ||||
|        id="guide3873" /> | ||||
|     <sodipodi:guide | ||||
|        orientation="0,1" | ||||
|        position="28.041217,3.1256134" | ||||
|        id="guide3875" /> | ||||
|     <sodipodi:guide | ||||
|        orientation="0,1" | ||||
|        position="-0.80372916,24.469088" | ||||
|        id="guide3877" /> | ||||
|     <sodipodi:guide | ||||
|        orientation="1,0" | ||||
|        position="3.0363102,34.649657" | ||||
|        id="guide3879" /> | ||||
|     <sodipodi:guide | ||||
|        orientation="1,0" | ||||
|        position="29.023553,28.577037" | ||||
|        id="guide3881" /> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid2988" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata3868"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      id="layer1" | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      transform="translate(0,-16)"> | ||||
|     <path | ||||
|        style="fill:#ffffff;fill-opacity:1;stroke:none" | ||||
|        d="m 4,23 8,0 -4,5 z" | ||||
|        id="path3883" | ||||
|        inkscape:connector-curvature="0" | ||||
|        sodipodi:nodetypes="cccc" /> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.5 KiB | 
| @@ -1,21 +0,0 @@ | ||||
| theme_sources = files([ | ||||
|   'gnome-shell-high-contrast.scss', | ||||
|   'gnome-shell.scss', | ||||
|   'gnome-shell-sass/_colors.scss', | ||||
|   'gnome-shell-sass/_common.scss', | ||||
|   'gnome-shell-sass/_drawing.scss', | ||||
|   'gnome-shell-sass/_high-contrast-colors.scss' | ||||
| ]) | ||||
|  | ||||
| theme_deps = [] | ||||
|  | ||||
| if sassc.found() | ||||
|   parse_sass = files('parse-sass.sh') | ||||
|  | ||||
|   theme_deps += custom_target('update-theme', | ||||
|     output: 'theme-update.stamp', | ||||
|     depend_files: theme_sources, | ||||
|     command: [parse_sass, '@OUTPUT@'], | ||||
|     build_by_default: true | ||||
|   ) | ||||
| endif | ||||
| @@ -1,40 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="16" | ||||
|    height="16" | ||||
|    viewBox="0 0 4.2333333 4.2333333" | ||||
|    version="1.1" | ||||
|    id="svg8"> | ||||
|   <defs | ||||
|      id="defs2" /> | ||||
|   <metadata | ||||
|      id="metadata5"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      id="layer1" | ||||
|      style="display:inline" | ||||
|      transform="translate(0,-292.76667)"> | ||||
|     <path | ||||
|        style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.17969394" | ||||
|        d="m 3.1749998,294.88333 a 1.0583333,1.0583333 0 0 1 -1.0583332,1.05833 1.0583333,1.0583333 0 0 1 -1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583333,-1.05833 1.0583333,1.0583333 0 0 1 1.0583332,1.05833 z" | ||||
|        id="path4485" /> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								data/theme/message-tray-background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 25 KiB | 
							
								
								
									
										114
									
								
								data/theme/more-results.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,114 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="16" | ||||
|    height="16" | ||||
|    id="svg12430" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.4 r9939" | ||||
|    sodipodi:docname="more-results.svg"> | ||||
|   <defs | ||||
|      id="defs12432" /> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#7a7a7a" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="90.509668" | ||||
|      inkscape:cx="6.5009792" | ||||
|      inkscape:cy="8.3589595" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g14642-3-0" | ||||
|      showgrid="false" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:window-width="1440" | ||||
|      inkscape:window-height="840" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid13002" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata12435"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(0,-1036.3622)"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        transform="translate(-141.99984,638.37113)" | ||||
|        inkscape:label="zoom-in" | ||||
|        id="g14642-3-0"> | ||||
|       <path | ||||
|          sodipodi:type="inkscape:offset" | ||||
|          inkscape:radius="0" | ||||
|          inkscape:original="M 145.1875 400 C 144.5248 400 144 400.54899 144 401.21875 L 144 410.78125 C 144 411.45101 144.5248 412 145.1875 412 L 154.8125 412 C 155.4752 412 156 411.45101 156 410.78125 L 156 401.21875 C 156 400.54899 155.4752 400 154.8125 400 L 145.1875 400 z M 149 403 L 151 403 L 151 405 L 153 405 L 153 407 L 151 407 L 151 409 L 149 409 L 149 407 L 147 407 L 147 405 L 149 405 L 149 403 z " | ||||
|          xlink:href="#rect11749-5-0-1-8" | ||||
|          style="color:#bebebe;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;opacity:0.8" | ||||
|          id="path13004" | ||||
|          inkscape:href="#rect11749-5-0-1-8" | ||||
|          d="M 145.1875,400 C 144.5248,400 144,400.54899 144,401.21875 l 0,9.5625 c 0,0.66976 0.5248,1.21875 1.1875,1.21875 l 9.625,0 c 0.6627,0 1.1875,-0.54899 1.1875,-1.21875 l 0,-9.5625 C 156,400.54899 155.4752,400 154.8125,400 L 145.1875,400 z m 3.8125,3 2,0 0,2 2,0 0,2 -2,0 0,2 -2,0 0,-2 -2,0 0,-2 2,0 L 149,403 Z" | ||||
|          transform="translate(0,1)" /> | ||||
|       <use | ||||
|          x="0" | ||||
|          y="0" | ||||
|          xlink:href="#path13004" | ||||
|          id="use11960" | ||||
|          transform="translate(1,-1)" | ||||
|          width="16" | ||||
|          height="16" /> | ||||
|       <use | ||||
|          x="0" | ||||
|          y="0" | ||||
|          xlink:href="#use11960" | ||||
|          id="use11962" | ||||
|          transform="translate(-2,0)" | ||||
|          width="16" | ||||
|          height="16" /> | ||||
|       <path | ||||
|          style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" | ||||
|          d="M 7 5 L 7 7 L 5 7 L 5 9 L 7 9 L 7 11 L 9 11 L 9 9 L 11 9 L 11 7 L 9 7 L 9 5 L 7 5 z " | ||||
|          transform="translate(141.99984,397.99107)" | ||||
|          id="rect3757" /> | ||||
|       <path | ||||
|          inkscape:connector-curvature="0" | ||||
|          style="color:#bebebe;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" | ||||
|          d="M 145.1875,400 C 144.5248,400 144,400.54899 144,401.21875 l 0,9.5625 c 0,0.66976 0.5248,1.21875 1.1875,1.21875 l 9.625,0 c 0.6627,0 1.1875,-0.54899 1.1875,-1.21875 l 0,-9.5625 C 156,400.54899 155.4752,400 154.8125,400 L 145.1875,400 z m 3.8125,3 2,0 0,2 2,0 0,2 -2,0 0,2 -2,0 0,-2 -2,0 0,-2 2,0 L 149,403 Z" | ||||
|          id="rect11749-5-0-1-8" /> | ||||
|       <rect | ||||
|          style="fill:none;stroke:none" | ||||
|          id="rect3620-5-4" | ||||
|          width="15.981825" | ||||
|          height="16" | ||||
|          x="142" | ||||
|          y="398" | ||||
|          rx="0" | ||||
|          ry="0" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 4.4 KiB | 
| @@ -1,119 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="64px" | ||||
|    height="64px" | ||||
|    id="svg3471" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="New document 5"> | ||||
|   <defs | ||||
|      id="defs3473" /> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="5.5" | ||||
|      inkscape:cx="32" | ||||
|      inkscape:cy="32" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="true" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:grid-bbox="true" | ||||
|      inkscape:window-width="1461" | ||||
|      inkscape:window-height="772" | ||||
|      inkscape:window-x="37" | ||||
|      inkscape:window-y="64" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata3476"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      id="layer1" | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer"> | ||||
|     <g | ||||
|        transform="matrix(4,0,0,4,1.9999997,2.3636364)" | ||||
|        id="g19145" | ||||
|        style="fill:#bebebe;fill-opacity:1;display:inline"> | ||||
|       <g | ||||
|          id="g19147" | ||||
|          inkscape:label="status" | ||||
|          style="fill:#bebebe;fill-opacity:1;display:inline" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          style="fill:#bebebe;fill-opacity:1" | ||||
|          id="g19149" | ||||
|          inkscape:label="devices" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          style="fill:#bebebe;fill-opacity:1" | ||||
|          id="g19151" | ||||
|          inkscape:label="apps" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          style="fill:#bebebe;fill-opacity:1" | ||||
|          id="g19153" | ||||
|          inkscape:label="places" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          style="fill:#bebebe;fill-opacity:1" | ||||
|          id="g19155" | ||||
|          inkscape:label="mimetypes" | ||||
|          transform="translate(-541.0002,-301)"> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            d="m 543.0002,301 c -1.05237,0 -2,0.84508 -2,1.9375 l 0,11.125 c 0,1.09242 0.94763,1.9375 2,1.9375 l 11,0 c 1.05237,0 2,-0.84508 2,-1.9375 l 0,-11.125 c 0,-1.09242 -0.94763,-1.9375 -2,-1.9375 l -11,0 z m 0,5 3.03125,0 0,2 -3.03125,0 0,-2 z m 4.03125,0 2.96875,0 0,2 -2.96875,0 0,-2 z m 3.96875,0 3,0 0,2 -3,0 0,-2 z m -8,3 3.03125,0 0,2 -3.03125,0 0,-2 z m 4.03125,0 2.96875,0 0,2 -2.96875,0 0,-2 z m 3.96875,0 3,0 0,2 -3,0 0,-2 z m -8,3 3.03125,0 0,2 -3.03125,0 0,-2 z m 4.03125,0 2.96875,0 0,2 -2.96875,0 0,-2 z m 3.96875,0 3,0 0,2 -3,0 0,-2 z" | ||||
|            id="path19157" | ||||
|            style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans" /> | ||||
|         <rect | ||||
|            height="1.9999993" | ||||
|            id="rect19159" | ||||
|            style="opacity:0.35;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|            width="2.9999993" | ||||
|            x="551.00018" | ||||
|            y="309" /> | ||||
|       </g> | ||||
|       <g | ||||
|          id="g19161" | ||||
|          inkscape:label="emblems" | ||||
|          style="fill:#bebebe;fill-opacity:1;display:inline" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          id="g19163" | ||||
|          inkscape:label="emotes" | ||||
|          style="fill:#bebebe;fill-opacity:1;display:inline" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          id="g19165" | ||||
|          inkscape:label="categories" | ||||
|          style="fill:#bebebe;fill-opacity:1;display:inline" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|       <g | ||||
|          id="g19167" | ||||
|          inkscape:label="actions" | ||||
|          style="fill:#bebebe;fill-opacity:1;display:inline" | ||||
|          transform="translate(-541.0002,-301)" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 4.7 KiB | 
| @@ -1,114 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="64px" | ||||
|    height="64px" | ||||
|    id="svg3393" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="New document 2"> | ||||
|   <defs | ||||
|      id="defs3395" /> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="5.5" | ||||
|      inkscape:cx="32" | ||||
|      inkscape:cy="32" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="true" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:grid-bbox="true" | ||||
|      inkscape:window-width="697" | ||||
|      inkscape:window-height="613" | ||||
|      inkscape:window-x="100" | ||||
|      inkscape:window-y="77" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata3398"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      id="layer1" | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer"> | ||||
|     <g | ||||
|        style="display:inline" | ||||
|        transform="matrix(4,0,0,4,0.29733827,-0.35415646)" | ||||
|        id="g19245"> | ||||
|       <g | ||||
|          id="g19247" | ||||
|          inkscape:label="status" | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19249" | ||||
|          inkscape:label="devices" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19251" | ||||
|          inkscape:label="apps" | ||||
|          transform="translate(-323.02908,-649.02581)"> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            d="m 331.9377,653 c 0.0187,0.16677 0.0625,0.32822 0.0625,0.5 0,2.48528 -2.01472,4.5 -4.5,4.5 -0.11769,0 -0.22834,-0.0224 -0.34375,-0.0312 l 0,2.21875 c 0,1.00412 0.80838,1.8125 1.8125,1.8125 l 1.54511,-5e-5 2,2.04688 2.0625,-2.04688 1.61114,0 c 1.00413,0 1.8125,-0.80838 1.8125,-1.8125 l 0,-5.375 c 0,-1.00412 -0.80837,-1.8125 -1.8125,-1.8125 z" | ||||
|            id="path19253" | ||||
|            sodipodi:nodetypes="csscsscccssssc" | ||||
|            style="opacity:0.5;color:#000000;fill:#c3c3c3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            d="m 327.5002,650 c -1.933,0 -3.5,1.567 -3.5,3.5 0,1.933 1.567,3.5 3.5,3.5 1.933,0 3.5,-1.567 3.5,-3.5 0,-1.933 -1.567,-3.5 -3.5,-3.5 z m -0.53125,1 1.03125,0 -0.0625,1.375 a 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.125,0.125 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 l 1.15625,-0.75 0.5,0.90625 -1.21875,0.625 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0.0937 0.19951718,0.19951718 0 0 0 0,0.0625 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0625 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0312,0.0312 l 1.25,0.625 -0.53125,0.90625 -1.15625,-0.781 a 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,0 0.19951718,0.19951718 0 0 0 -0.125,0.0937 0.19951718,0.19951718 0 0 0 -0.0312,0.0312 0.19951718,0.19951718 0 0 0 0,0.0312 0.19951718,0.19951718 0 0 0 0,0.0625 l 0.0625,1.3751 -1.03125,0 0.0937,-1.375 a 0.19951718,0.19951718 0 0 0 -0.0312,-0.0937 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0625,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 0.19951718,0.19951718 0 0 0 -0.0937,0.0312 l -1.1875,0.78125 -0.5,-0.90625 1.25,-0.625 a 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,-0.0625 0.19951718,0.19951718 0 0 0 -0.0312,-0.0312 0.19951718,0.19951718 0 0 0 -0.0312,0 l -1.25,-0.625 0.5,-0.90625 1.1875,0.75 a 0.19951718,0.19951718 0 0 0 0.0312,0.0312 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0625,0 0.19951718,0.19951718 0 0 0 0.0312,0 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0312 0.19951718,0.19951718 0 0 0 0,-0.0312 0.19951718,0.19951718 0 0 0 0.0312,-0.0625 0.19951718,0.19951718 0 0 0 0,-0.0312 L 326.96895,651 z" | ||||
|            id="path19255" | ||||
|            style="color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|       </g> | ||||
|       <g | ||||
|          id="g19257" | ||||
|          inkscape:label="places" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19259" | ||||
|          inkscape:label="mimetypes" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19261" | ||||
|          inkscape:label="emblems" | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19263" | ||||
|          inkscape:label="emotes" | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19265" | ||||
|          inkscape:label="categories" | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|       <g | ||||
|          id="g19267" | ||||
|          inkscape:label="actions" | ||||
|          style="display:inline" | ||||
|          transform="translate(-323.02908,-649.02581)" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 6.1 KiB | 
| @@ -1,30 +0,0 @@ | ||||
| .Leader { | ||||
|     stroke-width: .5 !important; | ||||
|     stroke: #535353; | ||||
|     fill: none !important; | ||||
| } | ||||
|  | ||||
| .Button { | ||||
|     stroke-width: .25; | ||||
|     stroke: #ededed; | ||||
|     fill: #ededed; | ||||
| } | ||||
|  | ||||
| .Ring { | ||||
|     stroke-width: .5 !important; | ||||
|     stroke: #535353 !important; | ||||
|     fill: none !important; | ||||
| } | ||||
|  | ||||
| .Label { | ||||
|     stroke: none !important; | ||||
|     stroke-width: .1 !important; | ||||
|     font-size: .1 !important; | ||||
|     fill: transparent !important; | ||||
| } | ||||
|  | ||||
| .TouchStrip, .TouchRing { | ||||
|     stroke-width: .1 !important; | ||||
|     stroke: #ededed !important; | ||||
|     fill: #535353 !important; | ||||
| } | ||||
							
								
								
									
										74
									
								
								data/theme/panel-button-border.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,74 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="17" | ||||
|    height="10" | ||||
|    id="svg2" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="panel-button-border.svg"> | ||||
|   <defs | ||||
|      id="defs4" /> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="44.8" | ||||
|      inkscape:cx="8.6594891" | ||||
|      inkscape:cy="5.7029946" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="true" | ||||
|      showguides="true" | ||||
|      inkscape:guide-bbox="true" | ||||
|      inkscape:window-width="1440" | ||||
|      inkscape:window-height="843" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="1" | ||||
|      guidetolerance="10000" | ||||
|      objecttolerance="10000"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid3792" | ||||
|        empspacing="10" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata7"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1"> | ||||
|     <rect | ||||
|        style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none" | ||||
|        id="rect3796" | ||||
|        width="7" | ||||
|        height="2" | ||||
|        x="5" | ||||
|        y="8" /> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.0 KiB | 
							
								
								
									
										111
									
								
								data/theme/panel-button-highlight-narrow.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,111 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="30" | ||||
|    height="25" | ||||
|    id="svg10621" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="panel-button-highlight-narrow.svg"> | ||||
|   <defs | ||||
|      id="defs10623"> | ||||
|     <radialGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient34508-1-3" | ||||
|        id="radialGradient99561-1" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)" | ||||
|        cx="51" | ||||
|        cy="30" | ||||
|        fx="51" | ||||
|        fy="30" | ||||
|        r="42" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient34508-1-3"> | ||||
|       <stop | ||||
|          style="stop-color:#ffffff;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop34510-1-9" /> | ||||
|       <stop | ||||
|          style="stop-color:#ffffff;stop-opacity:0;" | ||||
|          offset="1" | ||||
|          id="stop34512-4-5" /> | ||||
|     </linearGradient> | ||||
|     <radialGradient | ||||
|        r="42" | ||||
|        fy="30" | ||||
|        fx="51" | ||||
|        cy="30" | ||||
|        cx="51" | ||||
|        gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="radialGradient10592" | ||||
|        xlink:href="#linearGradient34508-1-3" | ||||
|        inkscape:collect="always" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1.979899" | ||||
|      inkscape:cx="-171.36384" | ||||
|      inkscape:cy="-53.255157" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      fit-margin-top="0" | ||||
|      fit-margin-left="0" | ||||
|      fit-margin-right="0" | ||||
|      fit-margin-bottom="0" | ||||
|      inkscape:window-width="1440" | ||||
|      inkscape:window-height="843" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="1" /> | ||||
|   <metadata | ||||
|      id="metadata10626"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-468.08632,-537.03477)"> | ||||
|     <path | ||||
|        sodipodi:type="arc" | ||||
|        style="opacity:0.4625;color:#000000;fill:url(#radialGradient10592);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="path34506-3" | ||||
|        sodipodi:cx="51" | ||||
|        sodipodi:cy="30" | ||||
|        sodipodi:rx="42" | ||||
|        sodipodi:ry="16" | ||||
|        d="M 9,29.999999 C 9.0000011,21.163443 27.804042,14 51.000002,14 74.195961,14 93,21.163444 93,30 l -42,0 z" | ||||
|        sodipodi:start="3.1415927" | ||||
|        sodipodi:end="6.2831853" | ||||
|        transform="matrix(0.35714286,0,0,1.5625,464.87203,515.15977)" | ||||
|        inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png" | ||||
|        inkscape:export-xdpi="90" | ||||
|        inkscape:export-ydpi="90" /> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 3.5 KiB | 
							
								
								
									
										111
									
								
								data/theme/panel-button-highlight-wide.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,111 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="84" | ||||
|    height="25" | ||||
|    id="svg10621" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.0 r9654" | ||||
|    sodipodi:docname="panel-button-highlight-wide.svg"> | ||||
|   <defs | ||||
|      id="defs10623"> | ||||
|     <radialGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient34508-1-3" | ||||
|        id="radialGradient99561-1" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)" | ||||
|        cx="51" | ||||
|        cy="30" | ||||
|        fx="51" | ||||
|        fy="30" | ||||
|        r="42" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient34508-1-3"> | ||||
|       <stop | ||||
|          style="stop-color:#ffffff;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop34510-1-9" /> | ||||
|       <stop | ||||
|          style="stop-color:#ffffff;stop-opacity:0;" | ||||
|          offset="1" | ||||
|          id="stop34512-4-5" /> | ||||
|     </linearGradient> | ||||
|     <radialGradient | ||||
|        r="42" | ||||
|        fy="30" | ||||
|        fx="51" | ||||
|        cy="30" | ||||
|        cx="51" | ||||
|        gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="radialGradient10592" | ||||
|        xlink:href="#linearGradient34508-1-3" | ||||
|        inkscape:collect="always" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1.979899" | ||||
|      inkscape:cx="-118.50071" | ||||
|      inkscape:cy="27.304508" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      fit-margin-top="0" | ||||
|      fit-margin-left="0" | ||||
|      fit-margin-right="0" | ||||
|      fit-margin-bottom="0" | ||||
|      inkscape:window-width="1440" | ||||
|      inkscape:window-height="843" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="1" /> | ||||
|   <metadata | ||||
|      id="metadata10626"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title /> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-441.08632,-537.03477)"> | ||||
|     <path | ||||
|        sodipodi:type="arc" | ||||
|        style="opacity:0.4625;color:#000000;fill:url(#radialGradient10592);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|        id="path34506-3" | ||||
|        sodipodi:cx="51" | ||||
|        sodipodi:cy="30" | ||||
|        sodipodi:rx="42" | ||||
|        sodipodi:ry="16" | ||||
|        d="M 9,29.999999 C 9.0000011,21.163443 27.804042,14 51.000002,14 74.195961,14 93,21.163444 93,30 l -42,0 z" | ||||
|        sodipodi:start="3.1415927" | ||||
|        sodipodi:end="6.2831853" | ||||
|        transform="matrix(1,0,0,1.5625,432.08632,515.15977)" | ||||
|        inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png" | ||||
|        inkscape:export-xdpi="90" | ||||
|        inkscape:export-ydpi="90" /> | ||||
|   </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 3.5 KiB | 
| @@ -1,10 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| srcdir=`dirname $0` | ||||
| stamp=${1} | ||||
| for scss in $srcdir/*.scss | ||||
| do | ||||
|   sassc -a $scss ${scss%%.scss}.css || exit 1 | ||||
| done | ||||
|  | ||||
| [ "$stamp" ] && touch $stamp | ||||
| Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 9.8 KiB | 
| @@ -1,133 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="48" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.91 r13725" | ||||
|    sodipodi:docname="toggle-off-hc.svg"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_z="744.09448 : 526.18109 : 1" | ||||
|        inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | ||||
|        id="perspective2865" /> | ||||
|     <inkscape:perspective | ||||
|        id="perspective2843" | ||||
|        inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | ||||
|        inkscape:vp_z="1 : 0.5 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="-6.1820581" | ||||
|      inkscape:cy="-16.463788" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1364" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|       <g | ||||
|          transform="matrix(1.5323214,0,0,1.2413968,-324.76058,489.69039)" | ||||
|          id="toggle-off" | ||||
|          inkscape:label="#g8477"> | ||||
|         <circle | ||||
|            cy="1033.993" | ||||
|            cx="571.95966" | ||||
|            id="path8444" | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|            r="7" /> | ||||
|         <rect | ||||
|            ry="2.0108337" | ||||
|            rx="1.9562569" | ||||
|            y="1031.9885" | ||||
|            x="565.0083" | ||||
|            height="4.0216675" | ||||
|            width="34.850178" | ||||
|            id="rect8461" | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> | ||||
|       </g> | ||||
|       <g | ||||
|          transform="matrix(1.5323214,0,0,1.2413968,-324.85635,491.16456)" | ||||
|          id="toggle-on" | ||||
|          inkscape:label="#g8481"> | ||||
|         <rect | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|            id="rect8475" | ||||
|            width="34.850178" | ||||
|            height="4.0216675" | ||||
|            x="565.0083" | ||||
|            y="1070.9279" | ||||
|            rx="1.9562569" | ||||
|            ry="2.0108337" /> | ||||
|         <circle | ||||
|            transform="scale(-1,1)" | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|            id="circle8463" | ||||
|            cx="-591.0213" | ||||
|            cy="1072.9402" | ||||
|            r="9" /> | ||||
|       </g> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 6.1 KiB | 
| @@ -7,127 +7,51 @@ | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="65" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    id="svg3273" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="toggle-off-us.svg"> | ||||
|    inkscape:version="0.47 r22583" | ||||
|    sodipodi:docname="New document 14"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
|      id="defs3275"> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_z="744.09448 : 526.18109 : 1" | ||||
|        inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | ||||
|        id="perspective2865" /> | ||||
|        id="perspective3281" /> | ||||
|     <inkscape:perspective | ||||
|        id="perspective2843" | ||||
|        id="perspective3261" | ||||
|        inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | ||||
|        inkscape:vp_z="1 : 0.5 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient76469-7-7-4" | ||||
|        id="linearGradient38024" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)" | ||||
|        x1="6" | ||||
|        y1="102.95528" | ||||
|        x2="6" | ||||
|        y2="84.505203" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient76469-7-7-4"> | ||||
|       <stop | ||||
|          style="stop-color:#2e3232;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop76471-7-1-5" /> | ||||
|       <stop | ||||
|          style="stop-color:#3e4545;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop76473-9-0-0" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4-0" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient37802-8" | ||||
|        id="linearGradient12311-3-1-0-5-4" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)" | ||||
|        x1="610.13782" | ||||
|        y1="501.43866" | ||||
|        x2="610.13782" | ||||
|        y2="492.52756" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient37802-8" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop37804-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#2c2c2c;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop37806-8" | ||||
|          offset="1" | ||||
|          style="stop-color:#16191a;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <linearGradient | ||||
|        y2="492.52756" | ||||
|        x2="610.13782" | ||||
|        y1="501.43866" | ||||
|        x1="610.13782" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="linearGradient13602" | ||||
|        xlink:href="#linearGradient37802-8" | ||||
|        inkscape:collect="always" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="-5.0602834" | ||||
|      inkscape:cy="16.473273" | ||||
|      inkscape:zoom="0.35" | ||||
|      inkscape:cx="32.000004" | ||||
|      inkscape:cy="10.999997" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1375" | ||||
|      inkscape:window-width="609" | ||||
|      inkscape:window-height="501" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|      id="metadata3278"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
| @@ -142,68 +66,61 @@ | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|      transform="translate(-343,-521.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|        id="g17454" | ||||
|        transform="translate(-453,448.36218)" | ||||
|        style="display:inline"> | ||||
|       <rect | ||||
|          transform="scale(-1,1)" | ||||
|          ry="4" | ||||
|          rx="4" | ||||
|          y="74.5" | ||||
|          x="-859.5" | ||||
|          height="19" | ||||
|          width="63.000004" | ||||
|          id="rect17456" | ||||
|          style="color:#000000;fill:none;stroke:#2e3436;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|       <rect | ||||
|          transform="scale(-1,1)" | ||||
|          ry="4" | ||||
|          rx="4" | ||||
|          y="74" | ||||
|          x="-828" | ||||
|          height="20" | ||||
|          width="31" | ||||
|          id="rect17458" | ||||
|          style="fill:#000000;fill-opacity:1;stroke:#5f5f5f;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> | ||||
|       <g | ||||
|          id="g37996" | ||||
|          transform="translate(-115,1277)"> | ||||
|         <rect | ||||
|            style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837" | ||||
|            id="rect13475" | ||||
|            width="98" | ||||
|            height="25" | ||||
|            x="644.5" | ||||
|            y="484.61118" | ||||
|            rx="4.7429576" | ||||
|            ry="3.8424656" /> | ||||
|         <rect | ||||
|            ry="3.8424656" | ||||
|            rx="4.7429576" | ||||
|            y="483.5" | ||||
|            x="644.5" | ||||
|            height="25" | ||||
|            width="98" | ||||
|            id="rect38000" | ||||
|            style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> | ||||
|       </g> | ||||
|       <g | ||||
|          transform="translate(-49.946213,-1.890275)" | ||||
|          id="g38002"> | ||||
|         <g | ||||
|            transform="translate(-115,1247)" | ||||
|            style="display:inline" | ||||
|            id="g38004"> | ||||
|           <rect | ||||
|              ry="3.7972314" | ||||
|              rx="4.6871223" | ||||
|              y="515.5" | ||||
|              x="694.53046" | ||||
|              height="25" | ||||
|              width="45.969578" | ||||
|              id="rect38006" | ||||
|              style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|           <path | ||||
|              sodipodi:nodetypes="cc" | ||||
|              style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|              d="m 699.09675,516.7365 36.86904,0" | ||||
|              id="path38016" | ||||
|              inkscape:path-effect="#path-effect77541-4" | ||||
|              inkscape:original-d="m 699.09675,516.7365 36.86904,0" | ||||
|              inkscape:connector-curvature="0" /> | ||||
|         </g> | ||||
|          transform="matrix(-1,0,0,1,1619.1239,-33.986291)" | ||||
|          id="g17460" | ||||
|          style="display:inline"> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            d="m 803.6322,115.48629 0,4.29495" | ||||
|            id="path17462" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" | ||||
|            d="m 806.62805,115.48629 0,4.29495" | ||||
|            id="path17464" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" | ||||
|            d="m 809.6239,115.48629 0,4.29495" | ||||
|            id="path17466" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|       </g> | ||||
|       <path | ||||
|          sodipodi:type="arc" | ||||
|          style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2.15627193;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|          id="path13479" | ||||
|          sodipodi:cx="16.4375" | ||||
|          sodipodi:cy="10.8125" | ||||
|          sodipodi:rx="4.3125" | ||||
|          sodipodi:ry="4.3125" | ||||
|          d="m 20.75,10.8125 a 4.3125,4.3125 0 1 1 -8.625,0 4.3125,4.3125 0 1 1 8.625,0 z" | ||||
|          transform="matrix(1.4212691,0,0,1.1514287,577.38488,1761.1138)" /> | ||||
|          style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.96875012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          id="path18722" | ||||
|          sodipodi:cx="47.6875" | ||||
|          sodipodi:cy="11.5625" | ||||
|          sodipodi:rx="3.9375" | ||||
|          sodipodi:ry="3.9375" | ||||
|          d="m 51.625,11.5625 c 0,2.174621 -1.762879,3.9375 -3.9375,3.9375 -2.174621,0 -3.9375,-1.762879 -3.9375,-3.9375 0,-2.1746212 1.762879,-3.9375 3.9375,-3.9375 2.174621,0 3.9375,1.7628788 3.9375,3.9375 z" | ||||
|          transform="matrix(1.0158729,0,0,1.0158729,795.55556,72.25399)" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 4.7 KiB | 
| @@ -7,171 +7,51 @@ | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="65" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    id="svg3012" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.48.5 r10040" | ||||
|    sodipodi:docname="toggle-on-intl.svg"> | ||||
|    inkscape:version="0.47 r22583" | ||||
|    sodipodi:docname="New document 6"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
|      id="defs3014"> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_z="744.09448 : 526.18109 : 1" | ||||
|        inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | ||||
|        id="perspective2865" /> | ||||
|        id="perspective3020" /> | ||||
|     <inkscape:perspective | ||||
|        id="perspective2843" | ||||
|        id="perspective2997" | ||||
|        inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | ||||
|        inkscape:vp_z="1 : 0.5 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient76469-7-7-4" | ||||
|        id="linearGradient38024" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)" | ||||
|        x1="6" | ||||
|        y1="102.95528" | ||||
|        x2="6" | ||||
|        y2="84.505203" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient76469-7-7-4"> | ||||
|       <stop | ||||
|          style="stop-color:#2e3232;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop76471-7-1-5" /> | ||||
|       <stop | ||||
|          style="stop-color:#3e4545;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop76473-9-0-0" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient37802" | ||||
|        id="linearGradient12311-3-1-0-5" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)" | ||||
|        x1="610.13782" | ||||
|        y1="501.43866" | ||||
|        x2="610.13782" | ||||
|        y2="492.52756" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient37802" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop37804" | ||||
|          offset="0" | ||||
|          style="stop-color:#2c2c2c;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop37806" | ||||
|          offset="1" | ||||
|          style="stop-color:#16191a;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient76469-7-7-4-3" | ||||
|        id="linearGradient77680" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1,0,0,1.0322581,717.71949,428.68472)" | ||||
|        x1="6" | ||||
|        y1="102.95528" | ||||
|        x2="6" | ||||
|        y2="84.505203" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient76469-7-7-4-3"> | ||||
|       <stop | ||||
|          style="stop-color:#2e3232;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop76471-7-1-5-7" /> | ||||
|       <stop | ||||
|          style="stop-color:#3e4545;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop76473-9-0-0-9" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4-0" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient37802-8" | ||||
|        id="linearGradient12311-3-1-0-5-4" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-256.56122,59.071426)" | ||||
|        x1="610.13782" | ||||
|        y1="501.43866" | ||||
|        x2="610.13782" | ||||
|        y2="492.52756" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient37802-8" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop37804-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#2c2c2c;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop37806-8" | ||||
|          offset="1" | ||||
|          style="stop-color:#16191a;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <linearGradient | ||||
|        y2="492.52756" | ||||
|        x2="610.13782" | ||||
|        y1="501.43866" | ||||
|        x1="610.13782" | ||||
|        gradientTransform="matrix(1.5918367,0,0,0.85714285,-900.56122,-423.92857)" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        id="linearGradient13602" | ||||
|        xlink:href="#linearGradient37802-8" | ||||
|        inkscape:collect="always" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="16.760995" | ||||
|      inkscape:cy="21.955673" | ||||
|      inkscape:zoom="0.35" | ||||
|      inkscape:cx="32.000004" | ||||
|      inkscape:cy="10.999997" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1375" | ||||
|      inkscape:window-width="609" | ||||
|      inkscape:window-height="501" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|      id="metadata3017"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
| @@ -186,70 +66,73 @@ | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|      transform="translate(-343,-521.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|        id="g17454" | ||||
|        transform="translate(-453,448.36218)" | ||||
|        style="display:inline"> | ||||
|       <rect | ||||
|          transform="scale(-1,1)" | ||||
|          ry="4" | ||||
|          rx="4" | ||||
|          y="74.5" | ||||
|          x="-859.5" | ||||
|          height="19" | ||||
|          width="63.000004" | ||||
|          id="rect17456" | ||||
|          style="color:#000000;fill:none;stroke:#2e3436;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|       <rect | ||||
|          transform="scale(-1,1)" | ||||
|          ry="4" | ||||
|          rx="4" | ||||
|          y="74" | ||||
|          x="-828" | ||||
|          height="20" | ||||
|          width="31" | ||||
|          id="rect17458" | ||||
|          style="fill:#000000;fill-opacity:1;stroke:#5f5f5f;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> | ||||
|       <g | ||||
|          id="g37996" | ||||
|          transform="translate(-115,1277)"> | ||||
|         <rect | ||||
|            style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837" | ||||
|            id="rect13475" | ||||
|            width="98" | ||||
|            height="25" | ||||
|            x="644.5" | ||||
|            y="484.61118" | ||||
|            rx="4.7429576" | ||||
|            ry="3.8424656" /> | ||||
|         <rect | ||||
|            ry="3.8424656" | ||||
|            rx="4.7429576" | ||||
|            y="483.5" | ||||
|            x="644.5" | ||||
|            height="25" | ||||
|            width="98" | ||||
|            id="rect38000" | ||||
|            style="color:#000000;fill:url(#linearGradient12311-3-1-0-5-4);fill-opacity:1;fill-rule:nonzero;stroke:#16191a;stroke-width:1.37920942;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" /> | ||||
|          transform="matrix(-1,0,0,1,1619.1239,-33.986291)" | ||||
|          id="g17460" | ||||
|          style="display:inline"> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" | ||||
|            d="m 803.6322,115.48629 0,4.29495" | ||||
|            id="path17462" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" | ||||
|            d="m 806.62805,115.48629 0,4.29495" | ||||
|            id="path17464" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|         <path | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" | ||||
|            d="m 809.6239,115.48629 0,4.29495" | ||||
|            id="path17466" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|       </g> | ||||
|       <g | ||||
|          transform="translate(-49.946213,-1.890275)" | ||||
|          id="g38002"> | ||||
|         <g | ||||
|            transform="translate(-115,1247)" | ||||
|            style="display:inline" | ||||
|            id="g38004"> | ||||
|           <rect | ||||
|              ry="3.7972314" | ||||
|              rx="4.6871223" | ||||
|              y="515.5" | ||||
|              x="694.53046" | ||||
|              height="25" | ||||
|              width="45.969578" | ||||
|              id="rect38006" | ||||
|              style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|           <path | ||||
|              sodipodi:nodetypes="cc" | ||||
|              style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|              d="m 699.09675,516.7365 36.86904,0" | ||||
|              id="path38016" | ||||
|              inkscape:path-effect="#path-effect77541-4" | ||||
|              inkscape:original-d="m 699.09675,516.7365 36.86904,0" | ||||
|              inkscape:connector-curvature="0" /> | ||||
|         </g> | ||||
|          style="font-size:8.95877075px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|          id="text17468" | ||||
|          transform="translate(0.34375,0)"> | ||||
|         <path | ||||
|            d="m 837.28518,80.750726 c 0.63282,6e-6 1.19566,0.123947 1.68852,0.371824 0.49284,0.247888 0.8807,0.609505 1.16359,1.084851 0.28287,0.472439 0.42431,1.022155 0.42431,1.649149 0,0.635748 -0.13853,1.200045 -0.41556,1.692892 -0.27706,0.489934 -0.66638,0.870507 -1.16797,1.141719 -0.5016,0.271213 -1.07756,0.406819 -1.72789,0.406819 -0.42869,0 -0.83551,-0.06562 -1.22045,-0.196848 -0.38495,-0.134148 -0.73053,-0.32808 -1.03674,-0.581795 -0.30329,-0.256631 -0.54534,-0.589085 -0.72615,-0.997363 -0.17789,-0.408276 -0.26684,-0.869045 -0.26683,-1.382311 -10e-6,-0.638658 0.13997,-1.200039 0.41994,-1.684144 0.27996,-0.487011 0.66782,-0.858835 1.16359,-1.115472 0.49576,-0.259541 1.06297,-0.389315 1.70164,-0.389321 m 0.57305,1.089225 c -0.20123,-0.05249 -0.40683,-0.07873 -0.61679,-0.07874 -0.20998,5e-6 -0.41412,0.02625 -0.61242,0.07874 -0.19831,0.04958 -0.38933,0.129779 -0.57305,0.240592 -0.18081,0.107907 -0.33974,0.242055 -0.47681,0.402445 -0.13706,0.160399 -0.24642,0.358705 -0.32808,0.594918 -0.0816,0.233306 -0.12248,0.491395 -0.12248,0.774269 0,0.67366 0.20851,1.214627 0.62554,1.622903 0.41702,0.408278 0.93758,0.612416 1.56166,0.612416 0.25954,0 0.51034,-0.04229 0.7524,-0.126858 0.24496,-0.08457 0.47097,-0.20997 0.67803,-0.376198 0.20705,-0.166226 0.37328,-0.392236 0.49868,-0.678032 0.12539,-0.285792 0.18809,-0.610956 0.1881,-0.975492 -10e-6,-0.297455 -0.0437,-0.568668 -0.13123,-0.813638 -0.0875,-0.247878 -0.20415,-0.453475 -0.34995,-0.61679 -0.14291,-0.163307 -0.31059,-0.301829 -0.50306,-0.415568 -0.18956,-0.11373 -0.38641,-0.195385 -0.59054,-0.244967" | ||||
|            style="line-height:125%;fill:#ffffff;fill-opacity:1;marker:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|            id="path18599" | ||||
|            inkscape:connector-curvature="0" /> | ||||
|         <path | ||||
|            d="m 843.5362,81.831203 0,1.17917 2.94834,0 0,1.014861 -2.94834,0 0,3.00713 -1.10673,0 0,-6.216022 4.31754,0 0,1.014861 -3.21081,0" | ||||
|            style="line-height:125%;fill:#ffffff;fill-opacity:1;marker:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|            id="path18601" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="ccccccccccc" /> | ||||
|         <path | ||||
|            d="m 849.71285,81.831203 0,1.17917 2.94834,0 0,1.014861 -2.94834,0 0,3.00713 -1.10672,0 0,-6.216022 4.31753,0 0,1.014861 -3.21081,0" | ||||
|            style="line-height:125%;fill:#ffffff;fill-opacity:1;marker:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|            id="path18603" | ||||
|            inkscape:connector-curvature="0" | ||||
|            sodipodi:nodetypes="ccccccccccc" /> | ||||
|       </g> | ||||
|       <text | ||||
|          xml:space="preserve" | ||||
|          style="font-size:13.79166794px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|          x="520.29974" | ||||
|          y="1997.0011" | ||||
|          id="text75614" | ||||
|          sodipodi:linespacing="125%" | ||||
|          transform="scale(1.1236771,0.88993537)"><tspan | ||||
|            sodipodi:role="line" | ||||
|            id="tspan75616" | ||||
|            x="520.29974" | ||||
|            y="1997.0011">OFF</tspan></text> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 7.2 KiB | 
| @@ -1,113 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||||
|  | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="48" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.91 r13725" | ||||
|    sodipodi:docname="toggle-on-hc.svg"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_z="744.09448 : 526.18109 : 1" | ||||
|        inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | ||||
|        id="perspective2865" /> | ||||
|     <inkscape:perspective | ||||
|        id="perspective2843" | ||||
|        inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | ||||
|        inkscape:vp_z="1 : 0.5 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="-222.95215" | ||||
|      inkscape:cy="3.9378433" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1364" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="true"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type | ||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|         <dc:title></dc:title> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <g | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|       <g | ||||
|          transform="matrix(1.5323214,0,0,1.2413968,-324.85635,441.50868)" | ||||
|          id="toggle-on" | ||||
|          inkscape:label="#g8481"> | ||||
|         <rect | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|            id="rect8475" | ||||
|            width="34.850178" | ||||
|            height="4.0216675" | ||||
|            x="565.0083" | ||||
|            y="1070.9279" | ||||
|            rx="1.9562569" | ||||
|            ry="2.0108337" /> | ||||
|         <circle | ||||
|            transform="scale(-1,1)" | ||||
|            style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||
|            id="circle8463" | ||||
|            cx="-591.0213" | ||||
|            cy="1072.9402" | ||||
|            r="9" /> | ||||
|       </g> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 4.4 KiB | 
| @@ -7,113 +7,51 @@ | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="65" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    id="svg3199" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.91 r13725" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="toggle-on-intl.svg"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
|      id="defs3201"> | ||||
|     <inkscape:perspective | ||||
|        sodipodi:type="inkscape:persp3d" | ||||
|        inkscape:vp_x="0 : 526.18109 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_z="744.09448 : 526.18109 : 1" | ||||
|        inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | ||||
|        id="perspective2865" /> | ||||
|        id="perspective3207" /> | ||||
|     <inkscape:perspective | ||||
|        id="perspective2843" | ||||
|        id="perspective3187" | ||||
|        inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | ||||
|        inkscape:vp_z="1 : 0.5 : 1" | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient77461" | ||||
|        id="linearGradient77551" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)" | ||||
|        x1="1164.7644" | ||||
|        y1="962.93695" | ||||
|        x2="1164.7644" | ||||
|        y2="970.51404" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient77461" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop77463" | ||||
|          offset="0" | ||||
|          style="stop-color:#182f4c;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop77465" | ||||
|          offset="1" | ||||
|          style="stop-color:#205b9a;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient76469-7-7-4" | ||||
|        id="linearGradient38024" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)" | ||||
|        x1="6" | ||||
|        y1="102.95528" | ||||
|        x2="6" | ||||
|        y2="84.505203" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient76469-7-7-4"> | ||||
|       <stop | ||||
|          style="stop-color:#2e3232;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop76471-7-1-5" /> | ||||
|       <stop | ||||
|          style="stop-color:#3e4545;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop76473-9-0-0" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="37.410841" | ||||
|      inkscape:cy="16.009314" | ||||
|      inkscape:cx="49.147112" | ||||
|      inkscape:cy="17.532036" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1376" | ||||
|      inkscape:window-width="1412" | ||||
|      inkscape:window-height="1067" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|      inkscape:window-y="26" | ||||
|      inkscape:window-maximized="0" /> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|      id="metadata3204"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work | ||||
|          rdf:about=""> | ||||
| @@ -128,65 +66,57 @@ | ||||
|      inkscape:label="Layer 1" | ||||
|      inkscape:groupmode="layer" | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|      transform="translate(-342.5,-521.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|       <g | ||||
|          id="g37996" | ||||
|          transform="translate(-115,1277)"> | ||||
|         <rect | ||||
|            style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837" | ||||
|            id="rect13475" | ||||
|            width="98" | ||||
|            height="25" | ||||
|            x="644.5" | ||||
|            y="484.61118" | ||||
|            rx="4.7429576" | ||||
|            ry="3.8424656" /> | ||||
|         <rect | ||||
|            ry="3.8424656" | ||||
|            rx="4.7429576" | ||||
|            y="483.5" | ||||
|            x="644.5" | ||||
|            height="25" | ||||
|            width="98" | ||||
|            id="rect38000" | ||||
|            style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|       </g> | ||||
|       <g | ||||
|          transform="translate(2.0625,-2)" | ||||
|          id="g38002"> | ||||
|         <g | ||||
|            transform="translate(-115,1247)" | ||||
|            style="display:inline" | ||||
|            id="g38004"> | ||||
|           <rect | ||||
|              ry="3.7972314" | ||||
|              rx="4.6871223" | ||||
|              y="515.5" | ||||
|              x="694.53046" | ||||
|              height="25" | ||||
|              width="45.969578" | ||||
|              id="rect38006" | ||||
|              style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|           <path | ||||
|              sodipodi:nodetypes="cc" | ||||
|              style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|              d="m 699.09675,516.7365 36.86904,0" | ||||
|              id="path38016" | ||||
|              inkscape:path-effect="#path-effect77541-4" | ||||
|              inkscape:original-d="m 699.09675,516.7365 36.86904,0" | ||||
|              inkscape:connector-curvature="0" /> | ||||
|         </g> | ||||
|       </g> | ||||
|        style="display:inline" | ||||
|        transform="translate(-453.5,448.36218)" | ||||
|        id="g16453"> | ||||
|       <rect | ||||
|          style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" | ||||
|          id="rect13678" | ||||
|          width="3.0646207" | ||||
|          height="12.414008" | ||||
|          x="554.77728" | ||||
|          y="1767.3566" /> | ||||
|          style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          id="rect16256-9-4" | ||||
|          width="63.000004" | ||||
|          height="19" | ||||
|          x="-859.5" | ||||
|          y="74.5" | ||||
|          rx="4" | ||||
|          ry="4" | ||||
|          transform="scale(-1,1)" /> | ||||
|       <rect | ||||
|          style="fill:#000000;fill-opacity:1;stroke:#5f5f5f;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" | ||||
|          id="rect16258-5-4" | ||||
|          width="31" | ||||
|          height="20" | ||||
|          x="-860" | ||||
|          y="74" | ||||
|          rx="4" | ||||
|          ry="4" | ||||
|          transform="scale(-1,1)" /> | ||||
|       <g | ||||
|          style="display:inline" | ||||
|          id="g16298-3-6" | ||||
|          transform="matrix(-1,0,0,1,1651.1322,-33.986291)"> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-3-5" | ||||
|            d="m 803.6322,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-0-2-0" | ||||
|            d="m 806.62805,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-8-7-1" | ||||
|            d="m 809.6239,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> | ||||
|       </g> | ||||
|       <path | ||||
|          style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          d="m 16,27.9375 0,10.125" | ||||
|          id="path19232" | ||||
|          inkscape:connector-curvature="0" | ||||
|          transform="translate(796,51.00002)" /> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 4.5 KiB | 
| @@ -7,14 +7,13 @@ | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    width="65" | ||||
|    height="22" | ||||
|    id="svg2857" | ||||
|    version="1.1" | ||||
|    inkscape:version="0.91 r13725" | ||||
|    inkscape:version="0.48.1 r9760" | ||||
|    sodipodi:docname="toggle-on-us.svg"> | ||||
|   <defs | ||||
|      id="defs2859"> | ||||
| @@ -32,96 +31,27 @@ | ||||
|        inkscape:vp_y="0 : 1000 : 0" | ||||
|        inkscape:vp_x="0 : 0.5 : 1" | ||||
|        sodipodi:type="inkscape:persp3d" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient76469-7-7-4" | ||||
|        id="linearGradient38024" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.0215462,0,0,1.0322581,717.22867,428.68472)" | ||||
|        x1="6" | ||||
|        y1="102.95528" | ||||
|        x2="6" | ||||
|        y2="84.505203" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        id="linearGradient76469-7-7-4"> | ||||
|       <stop | ||||
|          style="stop-color:#2e3232;stop-opacity:1" | ||||
|          offset="0" | ||||
|          id="stop76471-7-1-5" /> | ||||
|       <stop | ||||
|          style="stop-color:#3e4545;stop-opacity:1" | ||||
|          offset="1" | ||||
|          id="stop76473-9-0-0" /> | ||||
|     </linearGradient> | ||||
|     <inkscape:path-effect | ||||
|        effect="spiro" | ||||
|        id="path-effect77541-4" | ||||
|        is_visible="true" /> | ||||
|     <linearGradient | ||||
|        id="linearGradient77461-1" | ||||
|        inkscape:collect="always"> | ||||
|       <stop | ||||
|          id="stop77463-1" | ||||
|          offset="0" | ||||
|          style="stop-color:#182f4c;stop-opacity:1" /> | ||||
|       <stop | ||||
|          id="stop77465-4" | ||||
|          offset="1" | ||||
|          style="stop-color:#205b9a;stop-opacity:1" /> | ||||
|     </linearGradient> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient77461-1" | ||||
|        id="linearGradient77551-6-5" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)" | ||||
|        x1="1164.7644" | ||||
|        y1="962.93695" | ||||
|        x2="1164.7644" | ||||
|        y2="970.51404" /> | ||||
|     <linearGradient | ||||
|        inkscape:collect="always" | ||||
|        xlink:href="#linearGradient77461-1" | ||||
|        id="linearGradient11198" | ||||
|        gradientUnits="userSpaceOnUse" | ||||
|        gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)" | ||||
|        x1="1322.5831" | ||||
|        y1="-312.51855" | ||||
|        x2="1322.5831" | ||||
|        y2="-306.53461" /> | ||||
|   </defs> | ||||
|   <sodipodi:namedview | ||||
|      id="base" | ||||
|      pagecolor="#000000" | ||||
|      pagecolor="#ffffff" | ||||
|      bordercolor="#666666" | ||||
|      borderopacity="1.0" | ||||
|      inkscape:pageopacity="1" | ||||
|      inkscape:pageopacity="0.0" | ||||
|      inkscape:pageshadow="2" | ||||
|      inkscape:zoom="1" | ||||
|      inkscape:cx="-26.798898" | ||||
|      inkscape:cy="5.3753009" | ||||
|      inkscape:cx="19.689855" | ||||
|      inkscape:cy="2.0517979" | ||||
|      inkscape:document-units="px" | ||||
|      inkscape:current-layer="g37994" | ||||
|      inkscape:current-layer="layer1" | ||||
|      showgrid="false" | ||||
|      inkscape:window-width="2560" | ||||
|      inkscape:window-height="1376" | ||||
|      inkscape:window-x="0" | ||||
|      inkscape:window-y="27" | ||||
|      inkscape:window-maximized="1" | ||||
|      inkscape:window-width="941" | ||||
|      inkscape:window-height="751" | ||||
|      inkscape:window-x="2577" | ||||
|      inkscape:window-y="206" | ||||
|      inkscape:window-maximized="0" | ||||
|      borderlayer="true" | ||||
|      inkscape:showpageshadow="false" | ||||
|      inkscape:snap-nodes="false" | ||||
|      inkscape:snap-bbox="true" | ||||
|      showborder="false"> | ||||
|     <inkscape:grid | ||||
|        type="xygrid" | ||||
|        id="grid12954" | ||||
|        empspacing="5" | ||||
|        visible="true" | ||||
|        enabled="true" | ||||
|        snapvisiblegridlinesonly="true" /> | ||||
|   </sodipodi:namedview> | ||||
|      inkscape:showpageshadow="false" /> | ||||
|   <metadata | ||||
|      id="metadata2862"> | ||||
|     <rdf:RDF> | ||||
| @@ -140,68 +70,61 @@ | ||||
|      id="layer1" | ||||
|      transform="translate(-444.64286,-781.36218)"> | ||||
|     <g | ||||
|        transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)" | ||||
|        id="g37994"> | ||||
|        style="display:inline" | ||||
|        transform="translate(-351.35714,708.36218)" | ||||
|        id="g16453"> | ||||
|       <rect | ||||
|          style="color:#000000;fill:#4a90d9;fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:0.99999994000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|          id="rect16256-9-4" | ||||
|          width="63.000004" | ||||
|          height="19" | ||||
|          x="-859.5" | ||||
|          y="74.5" | ||||
|          rx="4" | ||||
|          ry="4" | ||||
|          transform="scale(-1,1)" /> | ||||
|       <rect | ||||
|          style="fill:#000000;fill-opacity:1;stroke:#5f5f5f;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" | ||||
|          id="rect16258-5-4" | ||||
|          width="31" | ||||
|          height="20" | ||||
|          x="-860" | ||||
|          y="74" | ||||
|          rx="4" | ||||
|          ry="4" | ||||
|          transform="scale(-1,1)" /> | ||||
|       <g | ||||
|          id="g37996" | ||||
|          transform="translate(-115,1277)"> | ||||
|         <rect | ||||
|            style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.19591837" | ||||
|            id="rect13475" | ||||
|            width="98" | ||||
|            height="25" | ||||
|            x="644.5" | ||||
|            y="484.61118" | ||||
|            rx="4.7429576" | ||||
|            ry="3.8424656" /> | ||||
|         <rect | ||||
|            ry="3.8424656" | ||||
|            rx="4.7429576" | ||||
|            y="483.5" | ||||
|            x="644.5" | ||||
|            height="25" | ||||
|            width="98" | ||||
|            id="rect38000" | ||||
|            style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" /> | ||||
|          style="display:inline" | ||||
|          id="g16298-3-6" | ||||
|          transform="matrix(-1,0,0,1,1651.1322,-33.986291)"> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-3-5" | ||||
|            d="m 803.6322,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-0-2-0" | ||||
|            d="m 806.62805,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> | ||||
|         <path | ||||
|            inkscape:connector-curvature="0" | ||||
|            id="path16265-8-7-1" | ||||
|            d="m 809.6239,115.48629 0,4.29495" | ||||
|            style="fill:none;stroke:#5f5f5f;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> | ||||
|       </g> | ||||
|       <g | ||||
|          transform="translate(2.0625,-2)" | ||||
|          id="g38002"> | ||||
|         <g | ||||
|            transform="translate(-115,1247)" | ||||
|            style="display:inline" | ||||
|            id="g38004"> | ||||
|           <rect | ||||
|              ry="3.7972314" | ||||
|              rx="4.6871223" | ||||
|              y="515.5" | ||||
|              x="694.53046" | ||||
|              height="25" | ||||
|              width="45.969578" | ||||
|              id="rect38006" | ||||
|              style="color:#000000;fill:url(#linearGradient38024);fill-opacity:1;fill-rule:nonzero;stroke:#1f2020;stroke-width:1.37920964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> | ||||
|           <path | ||||
|              sodipodi:nodetypes="cc" | ||||
|              style="opacity:0.1;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.37920964px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||||
|              d="m 699.09675,516.7365 36.86904,0" | ||||
|              id="path38016" | ||||
|              inkscape:path-effect="#path-effect77541-4" | ||||
|              inkscape:original-d="m 699.09675,516.7365 36.86904,0" | ||||
|              inkscape:connector-curvature="0" /> | ||||
|         </g> | ||||
|          style="font-size:8.95877075px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|          id="text42229-3-0"> | ||||
|         <path | ||||
|            d="m 808.01473,80.573953 c 0.63283,6e-6 1.19567,0.123947 1.68852,0.371824 0.49284,0.247888 0.88071,0.609505 1.16359,1.084851 0.28287,0.472439 0.42431,1.022155 0.42432,1.649149 -10e-6,0.635748 -0.13853,1.200045 -0.41557,1.692892 -0.27705,0.489934 -0.66637,0.870506 -1.16796,1.141719 -0.50161,0.271212 -1.07757,0.406819 -1.72789,0.406819 -0.4287,0 -0.83552,-0.06562 -1.22046,-0.196848 -0.38495,-0.134148 -0.73053,-0.32808 -1.03673,-0.581795 -0.3033,-0.256631 -0.54535,-0.589085 -0.72615,-0.997363 -0.1779,-0.408276 -0.26684,-0.869045 -0.26684,-1.382311 0,-0.638658 0.13998,-1.200039 0.41994,-1.684144 0.27996,-0.487011 0.66782,-0.858835 1.16359,-1.115472 0.49576,-0.259541 1.06298,-0.389315 1.70164,-0.389321 m 0.57305,1.089225 c -0.20123,-0.05249 -0.40682,-0.07873 -0.61679,-0.07874 -0.20998,5e-6 -0.41411,0.02625 -0.61242,0.07874 -0.19831,0.04958 -0.38932,0.129779 -0.57304,0.240592 -0.18081,0.107907 -0.33975,0.242055 -0.47681,0.402445 -0.13707,0.160399 -0.24643,0.358705 -0.32808,0.594918 -0.0817,0.233305 -0.12249,0.491395 -0.12249,0.774269 0,0.67366 0.20851,1.214627 0.62554,1.622902 0.41703,0.408279 0.93758,0.612417 1.56166,0.612416 0.25955,10e-7 0.51035,-0.04228 0.7524,-0.126857 0.24496,-0.08457 0.47097,-0.20997 0.67803,-0.376199 0.20705,-0.166225 0.37328,-0.392236 0.49868,-0.678031 0.1254,-0.285792 0.1881,-0.610956 0.1881,-0.975492 0,-0.297455 -0.0437,-0.568668 -0.13123,-0.813638 -0.0875,-0.247878 -0.20414,-0.453475 -0.34995,-0.61679 -0.1429,-0.163307 -0.31059,-0.301829 -0.50306,-0.415568 -0.18956,-0.11373 -0.38641,-0.195385 -0.59054,-0.244967" | ||||
|            style="line-height:125%;fill:#ffffff;fill-opacity:1;marker:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|            id="path18606" /> | ||||
|         <path | ||||
|            d="m 813.15903,80.639569 1.21608,0 3.4689,4.776844 0,-4.776844 1.10235,0 0,6.216022 -1.22921,0 -3.45577,-4.785594 0,4.785594 -1.10235,0 0,-6.216022" | ||||
|            style="line-height:125%;fill:#ffffff;fill-opacity:1;marker:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|            id="path18608" /> | ||||
|       </g> | ||||
|       <text | ||||
|          transform="scale(1.1000946,0.90901274)" | ||||
|          sodipodi:linespacing="125%" | ||||
|          id="text38018" | ||||
|          y="1955.5205" | ||||
|          x="495.94223" | ||||
|          style="font-size:13.29953671px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Cantarell;-inkscape-font-specification:Cantarell Bold" | ||||
|          xml:space="preserve"><tspan | ||||
|            y="1955.5205" | ||||
|            x="495.94223" | ||||
|            id="tspan38020" | ||||
|            sodipodi:role="line">ON</tspan></text> | ||||
|     </g> | ||||
|   </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 6.8 KiB | 
							
								
								
									
										1
									
								
								docs/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| SUBDIRS = reference | ||||
							
								
								
									
										1
									
								
								docs/reference/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| SUBDIRS = shell st | ||||
| @@ -1,5 +0,0 @@ | ||||
| version_conf = configuration_data() | ||||
| version_conf.set('VERSION', meson.project_version()) | ||||
|  | ||||
| subdir('shell') | ||||
| subdir('st') | ||||
							
								
								
									
										139
									
								
								docs/reference/shell/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,139 @@ | ||||
| ## Process this file with automake to produce Makefile.in | ||||
|  | ||||
| # We require automake 1.6 at least. | ||||
| AUTOMAKE_OPTIONS = 1.6 | ||||
|  | ||||
| # This is a blank Makefile.am for using gtk-doc. | ||||
| # Copy this to your project's API docs directory and modify the variables to | ||||
| # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples | ||||
| # of using the various options. | ||||
|  | ||||
| # The name of the module, e.g. 'glib'. | ||||
| DOC_MODULE=shell | ||||
|  | ||||
| # Uncomment for versioned docs and specify the version of the module, e.g. '2'. | ||||
| #DOC_MODULE_VERSION=2 | ||||
|  | ||||
|  | ||||
| # The top-level SGML file. You can change this if you want to. | ||||
| DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml | ||||
|  | ||||
| # Directories containing the source code | ||||
| # gtk-doc will search all .c and .h files beneath these paths | ||||
| # for inline comments documenting functions and macros. | ||||
| DOC_SOURCE_DIR=$(top_srcdir)/src | ||||
|  | ||||
| # Extra options to pass to gtkdoc-scangobj. Not normally needed. | ||||
| SCANGOBJ_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-scan. | ||||
| # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" | ||||
| SCAN_OPTIONS=--rebuild-types | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkdb. | ||||
| # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
| MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mktmpl | ||||
| # e.g. MKTMPL_OPTIONS=--only-section-tmpl | ||||
| MKTMPL_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkhtml | ||||
| MKHTML_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-fixref. Not normally needed. | ||||
| # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html | ||||
| FIXXREF_OPTIONS= | ||||
|  | ||||
| # Used for dependencies. The docs will be rebuilt if any of these change. | ||||
| # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h | ||||
| # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c | ||||
| HFILE_GLOB=$(top_srcdir)/src/*.h | ||||
| CFILE_GLOB=$(top_srcdir)/src/*.c | ||||
|  | ||||
| # Extra header to include when scanning, which are not under DOC_SOURCE_DIR | ||||
| # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h | ||||
| EXTRA_HFILES= | ||||
|  | ||||
| # Header files or dirs to ignore when scanning. Use base file/dir names | ||||
| # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code | ||||
| IGNORE_HFILES=					\ | ||||
| 	calendar-server				\ | ||||
| 	gvc					\ | ||||
| 	hotplug-sniffer				\ | ||||
| 	st					\ | ||||
| 	tray					\ | ||||
| 	gactionmuxer.h				\ | ||||
| 	gactionobservable.h			\ | ||||
| 	gactionobserver.h			\ | ||||
| 	shell-network-agent.h			\ | ||||
| 	shell-recorder-src.h | ||||
|  | ||||
| if !BUILD_RECORDER | ||||
| IGNORE_HFILES += shell-recorder.h | ||||
| endif | ||||
|  | ||||
| # Images to copy into HTML directory. | ||||
| # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png | ||||
| HTML_IMAGES= | ||||
|  | ||||
| doc-gen-org.gnome.Shell.SearchProvider.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml | ||||
| 	gdbus-codegen 						\ | ||||
| 	--interface-prefix org.gnome.ShellSearchProvider. 	\ | ||||
| 	--generate-docbook doc-gen				\ | ||||
| 	$(top_srcdir)/data/org.gnome.ShellSearchProvider.xml | ||||
|  | ||||
| doc-gen-org.gnome.Shell.SearchProvider2.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml | ||||
| 	gdbus-codegen 						\ | ||||
| 	--interface-prefix org.gnome.ShellSearchProvider2. 	\ | ||||
| 	--generate-docbook doc-gen				\ | ||||
| 	$(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml | ||||
|  | ||||
| doc-gen-org.gnome.Shell.Screenshot.xml: $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml | ||||
| 	gdbus-codegen 						\ | ||||
| 	--interface-prefix org.gnome.Shell.Screenshot.		\ | ||||
| 	--generate-docbook doc-gen				\ | ||||
| 	$(top_srcdir)/data/org.gnome.Shell.Screenshot.xml | ||||
|  | ||||
| # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). | ||||
| # e.g. content_files=running.sgml building.sgml changes-2.0.sgml | ||||
| content_files= \ | ||||
| 	doc-gen-org.gnome.Shell.SearchProvider.xml	\ | ||||
| 	doc-gen-org.gnome.Shell.SearchProvider2.xml	\ | ||||
| 	doc-gen-org.gnome.Shell.Screenshot.xml | ||||
|  | ||||
| # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded | ||||
| # These files must be listed here *and* in content_files | ||||
| # e.g. expand_content_files=running.sgml | ||||
| expand_content_files= | ||||
|  | ||||
| # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. | ||||
| # Only needed if you are using gtkdoc-scangobj to dynamically query widget | ||||
| # signals and properties. | ||||
| # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) | ||||
| # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) | ||||
| GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS) | ||||
| GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell-base.la $(top_builddir)/src/libgnome-shell.la | ||||
|  | ||||
| # This includes the standard gtk-doc make rules, copied by gtkdocize. | ||||
| include $(top_srcdir)/gtk-doc.make | ||||
|  | ||||
| # Other files to distribute | ||||
| # e.g. EXTRA_DIST += version.xml.in | ||||
| EXTRA_DIST += | ||||
|  | ||||
| # Files not to distribute | ||||
| # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types | ||||
| # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt | ||||
| DISTCLEANFILES = $(DOC_MODULES).types | ||||
|  | ||||
| # Comment this out if you want 'make check' to test you doc status | ||||
| # and run some sanity checks | ||||
| if ENABLE_GTK_DOC | ||||
| TESTS_ENVIRONMENT = cd $(srcdir) && \ | ||||
|   DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ | ||||
|   SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) | ||||
| #TESTS = $(GTKDOC_CHECK) | ||||
| endif | ||||
|  | ||||
| -include $(top_srcdir)/git.mk | ||||
| @@ -1,57 +0,0 @@ | ||||
| private_headers = [ | ||||
|   'gactionmuxer.h', | ||||
|   'gactionobservable.h', | ||||
|   'gactionobserver.h', | ||||
|   'shell-network-agent.h', | ||||
|   'shell-recorder-src.h' | ||||
| ] | ||||
|  | ||||
| if not enable_recorder | ||||
|   private_headers += 'shell-recorder.h' | ||||
| endif | ||||
|  | ||||
| exclude_directories = [ | ||||
|   'calendar-server', | ||||
|   'hotplug-sniffer', | ||||
|   'st', | ||||
|   'tray' | ||||
| ] | ||||
|  | ||||
| ifaces = [ | ||||
|   ['org.gnome.Shell.Screenshot', 'org.gnome.Shell.Screenshot.xml'], | ||||
|   ['org.gnome.ShellSearchProvider', 'org.gnome.Shell.SearchProvider.xml'], | ||||
|   ['org.gnome.ShellSearchProvider2', 'org.gnome.Shell.SearchProvider2.xml'] | ||||
| ] | ||||
| foreach iface : ifaces | ||||
|   custom_target(iface[0] + ' docs', | ||||
|     input: '../../../data/@0@.xml'.format(iface[0]), | ||||
|     output: 'doc-gen-' + iface[1], | ||||
|     command: [ | ||||
|       'gdbus-codegen', | ||||
|       '--interface-prefix=@0@.'.format(iface), | ||||
|       '--generate-docbook', 'doc-gen', | ||||
|       '--output-directory', '@OUTDIR@', | ||||
|       '@INPUT@' | ||||
|     ], | ||||
|     build_by_default: true | ||||
|   ) | ||||
| endforeach | ||||
|  | ||||
| configure_file( | ||||
|   input: 'version.xml.in', | ||||
|   output: 'version.xml', | ||||
|   configuration: version_conf | ||||
| ) | ||||
|  | ||||
| gnome.gtkdoc('shell', | ||||
|   main_sgml: 'shell-docs.sgml', | ||||
|   src_dir: [ | ||||
|     join_paths(meson.source_root(), 'src'), | ||||
|     join_paths(meson.build_root(), 'src') | ||||
|   ], | ||||
|   scan_args: [ | ||||
|     '--ignore-headers=' + ' '.join(private_headers + exclude_directories), | ||||
|     '--rebuild-types' | ||||
|   ], | ||||
|   install: true | ||||
| ) | ||||
| @@ -3,13 +3,12 @@ | ||||
|                "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" | ||||
| [ | ||||
|   <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'"> | ||||
|   <!ENTITY version SYSTEM "version.xml"> | ||||
| ]> | ||||
| <book id="index"> | ||||
|   <bookinfo> | ||||
|     <title>Shell Reference Manual</title> | ||||
|     <releaseinfo> | ||||
|       for Shell &version;. | ||||
|       for Shell @VERSION@. | ||||
|       <!--The latest version of this documentation can be found on-line at | ||||
|       <ulink role="online-location" url="http://[SERVER]/shell/index.html">http://[SERVER]/shell/</ulink>.--> | ||||
|     </releaseinfo> | ||||
| @@ -18,6 +17,7 @@ | ||||
|   <chapter> | ||||
|     <title>Actors</title> | ||||
|     <xi:include href="xml/shell-generic-container.xml"/> | ||||
|     <xi:include href="xml/shell-slicer.xml"/> | ||||
|     <xi:include href="xml/shell-stack.xml"/> | ||||
|   </chapter> | ||||
|   <chapter> | ||||
| @@ -46,21 +46,17 @@ | ||||
|     <xi:include href="doc-gen-org.gnome.Shell.SearchProvider.xml"/> | ||||
|     <xi:include href="doc-gen-org.gnome.Shell.SearchProvider2.xml"/> | ||||
|     <xi:include href="xml/shell-global.xml"/> | ||||
|     <xi:include href="xml/shell-action-modes.xml"/> | ||||
|     <xi:include href="xml/shell-keybinding-modes.xml"/> | ||||
|     <xi:include href="xml/shell-wm.xml"/> | ||||
|     <xi:include href="xml/shell-util.xml"/> | ||||
|     <xi:include href="xml/shell-mount-operation.xml"/> | ||||
|     <xi:include href="xml/shell-polkit-authentication-agent.xml"/> | ||||
|     <xi:include href="xml/shell-tp-client.xml"/> | ||||
|   </chapter> | ||||
|   <!-- FIXME: | ||||
|        Not generated at the moment, find out whether to blame gtk-doc or meson | ||||
|   --> | ||||
|   <!-- | ||||
|   <chapter id="object-tree"> | ||||
|     <title>Object Hierarchy</title> | ||||
|      <xi:include href="xml/tree_index.sgml"/> | ||||
|   </chapter> | ||||
|   --> | ||||
|   <index id="api-index-full"> | ||||
|     <title>API Index</title> | ||||
|     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> | ||||
| @@ -1 +0,0 @@ | ||||
| @VERSION@ | ||||
							
								
								
									
										104
									
								
								docs/reference/st/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,104 @@ | ||||
| ## Process this file with automake to produce Makefile.in | ||||
|  | ||||
| # We require automake 1.6 at least. | ||||
| AUTOMAKE_OPTIONS = 1.6 | ||||
|  | ||||
| # This is a blank Makefile.am for using gtk-doc. | ||||
| # Copy this to your project's API docs directory and modify the variables to | ||||
| # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples | ||||
| # of using the various options. | ||||
|  | ||||
| # The name of the module, e.g. 'glib'. | ||||
| DOC_MODULE=st | ||||
|  | ||||
| # Uncomment for versioned docs and specify the version of the module, e.g. '2'. | ||||
| #DOC_MODULE_VERSION=2 | ||||
|  | ||||
|  | ||||
| # The top-level SGML file. You can change this if you want to. | ||||
| DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml | ||||
|  | ||||
| # Directories containing the source code | ||||
| # gtk-doc will search all .c and .h files beneath these paths | ||||
| # for inline comments documenting functions and macros. | ||||
| DOC_SOURCE_DIR=$(top_srcdir)/src/st | ||||
|  | ||||
| # Extra options to pass to gtkdoc-scangobj. Not normally needed. | ||||
| SCANGOBJ_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-scan. | ||||
| # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" | ||||
| SCAN_OPTIONS=--rebuild-types --rebuild-sections | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkdb. | ||||
| # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
| MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mktmpl | ||||
| # e.g. MKTMPL_OPTIONS=--only-section-tmpl | ||||
| MKTMPL_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkhtml | ||||
| MKHTML_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-fixref. Not normally needed. | ||||
| # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html | ||||
| FIXXREF_OPTIONS= | ||||
|  | ||||
| # Used for dependencies. The docs will be rebuilt if any of these change. | ||||
| # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h | ||||
| # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c | ||||
| HFILE_GLOB=$(top_srcdir)/src/st/*.h | ||||
| CFILE_GLOB=$(top_srcdir)/src/st/*.c | ||||
|  | ||||
| # Extra header to include when scanning, which are not under DOC_SOURCE_DIR | ||||
| # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h | ||||
| EXTRA_HFILES= | ||||
|  | ||||
| # Header files or dirs to ignore when scanning. Use base file/dir names | ||||
| # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code | ||||
| IGNORE_HFILES=st-private.h st-theme-node-private.h | ||||
|  | ||||
| # Images to copy into HTML directory. | ||||
| # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png | ||||
| HTML_IMAGES= | ||||
|  | ||||
| # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). | ||||
| # e.g. content_files=running.sgml building.sgml changes-2.0.sgml | ||||
| content_files= | ||||
|  | ||||
| # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded | ||||
| # These files must be listed here *and* in content_files | ||||
| # e.g. expand_content_files=running.sgml | ||||
| expand_content_files= | ||||
|  | ||||
| # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. | ||||
| # Only needed if you are using gtkdoc-scangobj to dynamically query widget | ||||
| # signals and properties. | ||||
| # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) | ||||
| # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) | ||||
| GTKDOC_CFLAGS= | ||||
| GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la | ||||
|  | ||||
| # This includes the standard gtk-doc make rules, copied by gtkdocize. | ||||
| include $(top_srcdir)/gtk-doc.make | ||||
|  | ||||
| # Other files to distribute | ||||
| # e.g. EXTRA_DIST += version.xml.in | ||||
| EXTRA_DIST += | ||||
|  | ||||
| # Files not to distribute | ||||
| # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types | ||||
| # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt | ||||
| DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt | ||||
|  | ||||
| # Comment this out if you want 'make check' to test you doc status | ||||
| # and run some sanity checks | ||||
| if ENABLE_GTK_DOC | ||||
| TESTS_ENVIRONMENT = cd $(srcdir) && \ | ||||
|   DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ | ||||
|   SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) | ||||
| #TESTS = $(GTKDOC_CHECK) | ||||
| endif | ||||
|  | ||||
| -include $(top_srcdir)/git.mk | ||||
| @@ -1,24 +0,0 @@ | ||||
| private_headers = [ | ||||
|   'st-private.h', | ||||
|   'st-theme-node-private.h' | ||||
| ] | ||||
|  | ||||
| configure_file( | ||||
|   input: 'version.xml.in', | ||||
|   output: 'version.xml', | ||||
|   configuration: version_conf | ||||
| ) | ||||
|  | ||||
| gnome.gtkdoc('st', | ||||
|   main_sgml: 'st-docs.sgml', | ||||
|   src_dir: [ | ||||
|     join_paths(meson.source_root(), 'src', 'st'), | ||||
|     join_paths(meson.build_root(), 'src', 'st') | ||||
|   ], | ||||
|   scan_args: [ | ||||
|     '--ignore-headers=' + ' '.join(private_headers), | ||||
|     '--rebuild-sections', | ||||
|     '--rebuild-types' | ||||
|   ], | ||||
|   install: true | ||||
| ) | ||||
| @@ -3,13 +3,12 @@ | ||||
|                "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" | ||||
| [ | ||||
|   <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'"> | ||||
|   <!ENTITY version SYSTEM "version.xml"> | ||||
| ]> | ||||
| <book id="index"> | ||||
|   <bookinfo> | ||||
|     <title>St Reference Manual</title> | ||||
|     <releaseinfo> | ||||
|       for St &version;. | ||||
|       for St @VERSION@. | ||||
|       <!--The latest version of this documentation can be found on-line at | ||||
|       <ulink role="online-location" url="http://[SERVER]/st/index.html">http://[SERVER]/st/</ulink>.--> | ||||
|     </releaseinfo> | ||||
| @@ -36,6 +35,7 @@ | ||||
|       <xi:include href="xml/st-bin.xml"/> | ||||
|       <xi:include href="xml/st-box-layout.xml"/> | ||||
|       <xi:include href="xml/st-scroll-view.xml"/> | ||||
|       <xi:include href="xml/st-table.xml"/> | ||||
|     </chapter> | ||||
| 
 | ||||
|     <chapter id="styling"> | ||||
| @@ -47,15 +47,10 @@ | ||||
|       <xi:include href="xml/st-texture-cache.xml"/> | ||||
|     </chapter> | ||||
|   </part> | ||||
|   <!-- FIXME: | ||||
|        Not generated at the moment, find out whether to blame gtk-doc or meson | ||||
|   --> | ||||
|   <!-- | ||||
|   <chapter id="object-tree"> | ||||
|     <title>Object Hierarchy</title> | ||||
|      <xi:include href="xml/tree_index.sgml"/> | ||||
|   </chapter> | ||||
|   --> | ||||
|   <index id="api-index-full"> | ||||
|     <title>API Index</title> | ||||
|     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> | ||||
| @@ -1 +0,0 @@ | ||||
| @VERSION@ | ||||
| @@ -27,9 +27,7 @@ its dependencies to build from tarballs.</description> | ||||
|   <download-page rdf:resource="http://download.gnome.org/sources/gnome-shell/" /> | ||||
|   <bug-database rdf:resource="https://bugzilla.gnome.org/browse.cgi?product=gnome-shell" /> | ||||
|  | ||||
|   <category rdf:resource="http://api.gnome.org/doap-extensions#core" /> | ||||
|   <programming-language>JavaScript</programming-language> | ||||
|   <programming-language>C</programming-language> | ||||
|   <category rdf:resource="http://api.gnome.org/doap-extensions#desktop" /> | ||||
|  | ||||
|   <maintainer> | ||||
|     <foaf:Person> | ||||
|   | ||||
							
								
								
									
										38
									
								
								js/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,38 @@ | ||||
| NULL = | ||||
| BUILT_SOURCES = | ||||
|  | ||||
| misc/config.js: misc/config.js.in Makefile | ||||
| 	[ -d $(@D) ] || $(mkdir_p) $(@D) ; \ | ||||
| 	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \ | ||||
| 	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \ | ||||
| 	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \ | ||||
| 	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \ | ||||
| 	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \ | ||||
| 	    -e "s|[@]datadir@|$(datadir)|g" \ | ||||
| 	    -e "s|[@]libexecdir@|$(libexecdir)|g" \ | ||||
| 	    -e "s|[@]sysconfdir@|$(sysconfdir)|g" \ | ||||
|                $< > $@ | ||||
|  | ||||
| js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/js-resources.gresource.xml) | ||||
| js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js | ||||
| 	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< | ||||
| js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js | ||||
| 	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< | ||||
|  | ||||
| js_built_sources = js-resources.c js-resources.h | ||||
|  | ||||
| BUILT_SOURCES += $(js_built_sources) | ||||
|  | ||||
| all-local: $(js_built_sources) | ||||
|  | ||||
| js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files)) | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	$(js_resource_dist_files) \ | ||||
| 	js-resources.gresource.xml \ | ||||
| 	misc/config.js.in \ | ||||
| 	$(NULL) | ||||
|  | ||||
| CLEANFILES = \ | ||||
| 	$(js_built_sources) \ | ||||
| 	$(NULL) | ||||
| @@ -5,7 +5,6 @@ const GLib = imports.gi.GLib; | ||||
| const GObject = imports.gi.GObject; | ||||
| const Gio = imports.gi.Gio; | ||||
| const Gtk = imports.gi.Gtk; | ||||
| const Gdk = imports.gi.Gdk; | ||||
| const Pango = imports.gi.Pango; | ||||
| const Format = imports.format; | ||||
|  | ||||
| @@ -24,6 +23,11 @@ const GnomeShellIface = '<node> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const customCss = '.prefs-button { \ | ||||
|                        padding: 8px; \ | ||||
|                        border-radius: 20px; \ | ||||
|                    }'; | ||||
|  | ||||
| const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface); | ||||
|  | ||||
| function stripPrefix(string, prefix) { | ||||
| @@ -32,7 +36,7 @@ function stripPrefix(string, prefix) { | ||||
|     return string; | ||||
| } | ||||
|  | ||||
| var Application = new Lang.Class({ | ||||
| const Application = new Lang.Class({ | ||||
|     Name: 'Application', | ||||
|     _init: function() { | ||||
|         GLib.set_prgname('gnome-shell-extension-prefs'); | ||||
| @@ -58,6 +62,9 @@ var Application = new Lang.Class({ | ||||
|         if (!extension) | ||||
|             return false; | ||||
|  | ||||
|         if (ExtensionUtils.isOutOfDate(extension)) | ||||
|             return false; | ||||
|  | ||||
|         if (!extension.dir.get_child('prefs.js').query_exists(null)) | ||||
|             return false; | ||||
|  | ||||
| @@ -93,11 +100,9 @@ var Application = new Lang.Class({ | ||||
|             widget = this._buildErrorUI(extension, e); | ||||
|         } | ||||
|  | ||||
|         let dialog = new Gtk.Window({ modal: !this._skipMainWindow, | ||||
|                                       type_hint: Gdk.WindowTypeHint.DIALOG }); | ||||
|         dialog.set_titlebar(new Gtk.HeaderBar({ show_close_button: true, | ||||
|                                                 title: extension.metadata.name, | ||||
|                                                 visible: true })); | ||||
|         let dialog = new Gtk.Dialog({ use_header_bar: true, | ||||
|                                       modal: true, | ||||
|                                       title: extension.metadata.name }); | ||||
|  | ||||
|         if (this._skipMainWindow) { | ||||
|             this.application.add_window(dialog); | ||||
| @@ -110,7 +115,7 @@ var Application = new Lang.Class({ | ||||
|         } | ||||
|  | ||||
|         dialog.set_default_size(600, 400); | ||||
|         dialog.add(widget); | ||||
|         dialog.get_content_area().add(widget); | ||||
|         dialog.show(); | ||||
|     }, | ||||
|  | ||||
| @@ -146,21 +151,16 @@ var Application = new Lang.Class({ | ||||
|         this._window = new Gtk.ApplicationWindow({ application: app, | ||||
|                                                    window_position: Gtk.WindowPosition.CENTER }); | ||||
|  | ||||
|         this._window.set_default_size(800, 500); | ||||
|         this._window.set_size_request(800, 500); | ||||
|  | ||||
|         this._titlebar = new Gtk.HeaderBar({ show_close_button: true, | ||||
|                                              title: _("Shell Extensions") }); | ||||
|                                              title: _("GNOME Shell Extensions") }); | ||||
|         this._window.set_titlebar(this._titlebar); | ||||
|  | ||||
|         let killSwitch = new Gtk.Switch({ valign: Gtk.Align.CENTER }); | ||||
|         this._titlebar.pack_end(killSwitch); | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' }); | ||||
|         this._settings.bind('disable-user-extensions', killSwitch, 'active', | ||||
|                             Gio.SettingsBindFlags.DEFAULT | | ||||
|                             Gio.SettingsBindFlags.INVERT_BOOLEAN); | ||||
|  | ||||
|         let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER }); | ||||
|         let scroll = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER, | ||||
|                                               shadow_type: Gtk.ShadowType.IN, | ||||
|                                               halign: Gtk.Align.CENTER, | ||||
|                                               margin: 18 }); | ||||
|         this._window.add(scroll); | ||||
|  | ||||
|         this._extensionSelector = new Gtk.ListBox({ selection_mode: Gtk.SelectionMode.NONE }); | ||||
| @@ -179,6 +179,21 @@ var Application = new Lang.Class({ | ||||
|         this._window.show_all(); | ||||
|     }, | ||||
|  | ||||
|     _addCustomStyle: function() { | ||||
|         let provider = new Gtk.CssProvider(); | ||||
|  | ||||
|         try { | ||||
|             provider.load_from_data(customCss, -1); | ||||
|         } catch(e) { | ||||
|             log('Failed to add application style'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let screen = this._window.window.get_screen(); | ||||
|         let priority = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION; | ||||
|         Gtk.StyleContext.add_provider_for_screen(screen, provider, priority); | ||||
|     }, | ||||
|  | ||||
|     _sortList: function(row1, row2) { | ||||
|         let name1 = ExtensionUtils.extensions[row1.uuid].metadata.name; | ||||
|         let name2 = ExtensionUtils.extensions[row2.uuid].metadata.name; | ||||
| @@ -227,6 +242,7 @@ var Application = new Lang.Class({ | ||||
|  | ||||
|     _onStartup: function(app) { | ||||
|         this._buildUI(app); | ||||
|         this._addCustomStyle(); | ||||
|         this._scanExtensions(); | ||||
|     }, | ||||
|  | ||||
| @@ -253,19 +269,7 @@ var Application = new Lang.Class({ | ||||
|     } | ||||
| }); | ||||
|  | ||||
| var DescriptionLabel = new Lang.Class({ | ||||
|     Name: 'DescriptionLabel', | ||||
|     Extends: Gtk.Label, | ||||
|  | ||||
|     vfunc_get_preferred_height_for_width: function(width) { | ||||
|         // Hack: Request the maximum height allowed by the line limit | ||||
|         if (this.lines > 0) | ||||
|             return this.parent(0); | ||||
|         return this.parent(width); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| var ExtensionRow = new Lang.Class({ | ||||
| const ExtensionRow = new Lang.Class({ | ||||
|     Name: 'ExtensionRow', | ||||
|     Extends: Gtk.ListBoxRow, | ||||
|  | ||||
| @@ -274,19 +278,11 @@ var ExtensionRow = new Lang.Class({ | ||||
|  | ||||
|         this.uuid = uuid; | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' }); | ||||
|         this._settings = new Gio.Settings({ schema: 'org.gnome.shell' }); | ||||
|         this._settings.connect('changed::enabled-extensions', Lang.bind(this, | ||||
|             function() { | ||||
|                 this._switch.state = this._isEnabled(); | ||||
|             })); | ||||
|         this._settings.connect('changed::disable-extension-version-validation', | ||||
|             Lang.bind(this, function() { | ||||
|                 this._switch.sensitive = this._canEnable(); | ||||
|             })); | ||||
|         this._settings.connect('changed::disable-user-extensions', | ||||
|             Lang.bind(this, function() { | ||||
|                 this._switch.sensitive = this._canEnable(); | ||||
|             })); | ||||
|  | ||||
|         this._buildUI(); | ||||
|     }, | ||||
| @@ -295,8 +291,7 @@ var ExtensionRow = new Lang.Class({ | ||||
|         let extension = ExtensionUtils.extensions[this.uuid]; | ||||
|  | ||||
|         let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, | ||||
|                                  hexpand: true, margin_end: 24, spacing: 24, | ||||
|                                  margin: 12 }); | ||||
|                                  hexpand: true, margin: 12, spacing: 6 }); | ||||
|         this.add(hbox); | ||||
|  | ||||
|         let vbox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, | ||||
| @@ -310,9 +305,9 @@ var ExtensionRow = new Lang.Class({ | ||||
|         vbox.add(label); | ||||
|  | ||||
|         let desc = extension.metadata.description.split('\n')[0]; | ||||
|         label = new DescriptionLabel({ label: desc, wrap: true, lines: 2, | ||||
|                                        ellipsize: Pango.EllipsizeMode.END, | ||||
|                                        xalign: 0, yalign: 0 }); | ||||
|         label = new Gtk.Label({ label: desc, | ||||
|                                 ellipsize: Pango.EllipsizeMode.END, | ||||
|                                 halign: Gtk.Align.START }); | ||||
|         vbox.add(label); | ||||
|  | ||||
|         let button = new Gtk.Button({ valign: Gtk.Align.CENTER, | ||||
| @@ -320,13 +315,12 @@ var ExtensionRow = new Lang.Class({ | ||||
|         button.add(new Gtk.Image({ icon_name: 'emblem-system-symbolic', | ||||
|                                    icon_size: Gtk.IconSize.BUTTON, | ||||
|                                    visible: true })); | ||||
|         button.get_style_context().add_class('circular'); | ||||
|         button.get_style_context().add_class('prefs-button'); | ||||
|         hbox.add(button); | ||||
|  | ||||
|         this.prefsButton = button; | ||||
|  | ||||
|         this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER, | ||||
|                                         sensitive: this._canEnable(), | ||||
|                                         state: this._isEnabled() }); | ||||
|         this._switch.connect('notify::active', Lang.bind(this, | ||||
|             function() { | ||||
| @@ -339,14 +333,6 @@ var ExtensionRow = new Lang.Class({ | ||||
|         hbox.add(this._switch); | ||||
|     }, | ||||
|  | ||||
|     _canEnable: function() { | ||||
|         let extension = ExtensionUtils.extensions[this.uuid]; | ||||
|         let checkVersion = !this._settings.get_boolean('disable-extension-version-validation'); | ||||
|  | ||||
|         return !this._settings.get_boolean('disable-user-extensions') && | ||||
|                !(checkVersion && ExtensionUtils.isOutOfDate(extension)); | ||||
|     }, | ||||
|  | ||||
|     _isEnabled: function() { | ||||
|         let extensions = this._settings.get_strv('enabled-extensions'); | ||||
|         return extensions.indexOf(this.uuid) != -1; | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const Gio = imports.gi.Gio; | ||||
| const Lang = imports.lang; | ||||
| const Pango = imports.gi.Pango; | ||||
| const Signals = imports.signals; | ||||
| const St = imports.gi.St; | ||||
|  | ||||
| @@ -15,30 +13,30 @@ const ShellEntry = imports.ui.shellEntry; | ||||
| const Tweener = imports.ui.tweener; | ||||
| const UserWidget = imports.ui.userWidget; | ||||
|  | ||||
| var DEFAULT_BUTTON_WELL_ICON_SIZE = 16; | ||||
| var DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0; | ||||
| var DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3; | ||||
| const DEFAULT_BUTTON_WELL_ICON_SIZE = 24; | ||||
| const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0; | ||||
| const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3; | ||||
|  | ||||
| var MESSAGE_FADE_OUT_ANIMATION_TIME = 0.5; | ||||
| const MESSAGE_FADE_OUT_ANIMATION_TIME = 0.5; | ||||
|  | ||||
| var AuthPromptMode = { | ||||
| const AuthPromptMode = { | ||||
|     UNLOCK_ONLY: 0, | ||||
|     UNLOCK_OR_LOG_IN: 1 | ||||
| }; | ||||
|  | ||||
| var AuthPromptStatus = { | ||||
| const AuthPromptStatus = { | ||||
|     NOT_VERIFYING: 0, | ||||
|     VERIFYING: 1, | ||||
|     VERIFICATION_FAILED: 2, | ||||
|     VERIFICATION_SUCCEEDED: 3 | ||||
| }; | ||||
|  | ||||
| var BeginRequestType = { | ||||
| const BeginRequestType = { | ||||
|     PROVIDE_USERNAME: 0, | ||||
|     DONT_PROVIDE_USERNAME: 1 | ||||
| }; | ||||
|  | ||||
| var AuthPrompt = new Lang.Class({ | ||||
| const AuthPrompt = new Lang.Class({ | ||||
|     Name: 'AuthPrompt', | ||||
|  | ||||
|     _init: function(gdmClient, mode) { | ||||
| @@ -114,7 +112,6 @@ var AuthPrompt = new Lang.Class({ | ||||
|         this._message = new St.Label({ opacity: 0, | ||||
|                                        styleClass: 'login-dialog-message' }); | ||||
|         this._message.clutter_text.line_wrap = true; | ||||
|         this._message.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; | ||||
|         this.actor.add(this._message, { x_fill: false, x_align: St.Align.START, y_align: St.Align.START }); | ||||
|  | ||||
|         this._buttonBox = new St.BoxLayout({ style_class: 'login-dialog-button-box', | ||||
| @@ -129,7 +126,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|  | ||||
|         this._initButtons(); | ||||
|  | ||||
|         let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); | ||||
|         let spinnerIcon = global.datadir + '/theme/process-working.svg'; | ||||
|         this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE); | ||||
|         this._spinner.actor.opacity = 0; | ||||
|         this._spinner.actor.show(); | ||||
| @@ -137,12 +134,13 @@ var AuthPrompt = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onDestroy: function() { | ||||
|         this._userVerifier.destroy(); | ||||
|         this._userVerifier.clear(); | ||||
|         this._userVerifier.disconnectAll(); | ||||
|         this._userVerifier = null; | ||||
|     }, | ||||
|  | ||||
|     _initButtons: function() { | ||||
|         this.cancelButton = new St.Button({ style_class: 'modal-dialog-button button', | ||||
|         this.cancelButton = new St.Button({ style_class: 'modal-dialog-button', | ||||
|                                             button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, | ||||
|                                             reactive: true, | ||||
|                                             can_focus: true, | ||||
| @@ -164,7 +162,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|                               y_fill: false, | ||||
|                               x_align: St.Align.END, | ||||
|                               y_align: St.Align.MIDDLE }); | ||||
|         this.nextButton = new St.Button({ style_class: 'modal-dialog-button button', | ||||
|         this.nextButton = new St.Button({ style_class: 'modal-dialog-button', | ||||
|                                           button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, | ||||
|                                           reactive: true, | ||||
|                                           can_focus: true, | ||||
| @@ -188,24 +186,25 @@ var AuthPrompt = new Lang.Class({ | ||||
|                                              if (!this._userVerifier.hasPendingMessages) | ||||
|                                                  this._fadeOutMessage(); | ||||
|  | ||||
|                                              this._updateNextButtonSensitivity(this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING); | ||||
|                                              this._updateNextButtonSensitivity(this._entry.text.length > 0); | ||||
|                                          })); | ||||
|         this._entry.clutter_text.connect('activate', Lang.bind(this, function() { | ||||
|             if (this.nextButton.reactive) | ||||
|                 this.emit('next'); | ||||
|             this.emit('next'); | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|     _onAskQuestion: function(verifier, serviceName, question, passwordChar) { | ||||
|         if (this._preemptiveAnswer) { | ||||
|             if (this._queryingService) | ||||
|                 this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer); | ||||
|             this._preemptiveAnswer = null; | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (this._queryingService) | ||||
|             this.clear(); | ||||
|  | ||||
|         this._queryingService = serviceName; | ||||
|         if (this._preemptiveAnswer) { | ||||
|             this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer); | ||||
|             this._preemptiveAnswer = null; | ||||
|             return; | ||||
|         } | ||||
|         this.setPasswordChar(passwordChar); | ||||
|         this.setQuestion(question); | ||||
|  | ||||
| @@ -261,9 +260,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onVerificationComplete: function() { | ||||
|         this.setActorInDefaultButtonWell(null); | ||||
|         this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED; | ||||
|         this.cancelButton.reactive = false; | ||||
|     }, | ||||
|  | ||||
|     _onReset: function() { | ||||
| @@ -285,12 +282,6 @@ var AuthPrompt = new Lang.Class({ | ||||
|         if (oldActor) | ||||
|             Tweener.removeTweens(oldActor); | ||||
|  | ||||
|         let wasSpinner; | ||||
|         if (oldActor == this._spinner.actor) | ||||
|             wasSpinner = true; | ||||
|         else | ||||
|             wasSpinner = false; | ||||
|  | ||||
|         let isSpinner; | ||||
|         if (actor == this._spinner.actor) | ||||
|             isSpinner = true; | ||||
| @@ -300,11 +291,6 @@ var AuthPrompt = new Lang.Class({ | ||||
|         if (this._defaultButtonWellActor != actor && oldActor) { | ||||
|             if (!animate) { | ||||
|                 oldActor.opacity = 0; | ||||
|  | ||||
|                 if (wasSpinner) { | ||||
|                     if (this._spinner) | ||||
|                         this._spinner.stop(); | ||||
|                 } | ||||
|             } else { | ||||
|                 Tweener.addTween(oldActor, | ||||
|                                  { opacity: 0, | ||||
| @@ -313,7 +299,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|                                    transition: 'linear', | ||||
|                                    onCompleteScope: this, | ||||
|                                    onComplete: function() { | ||||
|                                       if (wasSpinner) { | ||||
|                                       if (isSpinner) { | ||||
|                                           if (this._spinner) | ||||
|                                               this._spinner.stop(); | ||||
|                                       } | ||||
| @@ -416,7 +402,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     updateSensitivity: function(sensitive) { | ||||
|         this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); | ||||
|         this._updateNextButtonSensitivity(sensitive); | ||||
|         this._entry.reactive = sensitive; | ||||
|         this._entry.clutter_text.editable = sensitive; | ||||
|     }, | ||||
| @@ -433,23 +419,19 @@ var AuthPrompt = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     setUser: function(user) { | ||||
|         let oldChild = this._userWell.get_child(); | ||||
|         if (oldChild) | ||||
|             oldChild.destroy(); | ||||
|  | ||||
|         if (user) { | ||||
|             let userWidget = new UserWidget.UserWidget(user); | ||||
|             this._userWell.set_child(userWidget.actor); | ||||
|         } else { | ||||
|             this._userWell.set_child(null); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     reset: function() { | ||||
|         let oldStatus = this.verificationStatus; | ||||
|         this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; | ||||
|         this.cancelButton.reactive = true; | ||||
|         this.nextButton.label = _("Next"); | ||||
|  | ||||
|         if (this._userVerifier) | ||||
|         if (oldStatus == AuthPromptStatus.VERIFYING) | ||||
|             this._userVerifier.cancel(); | ||||
|  | ||||
|         this._queryingService = null; | ||||
| @@ -504,7 +486,6 @@ var AuthPrompt = new Lang.Class({ | ||||
|  | ||||
|     finish: function(onComplete) { | ||||
|         if (!this._userVerifier.hasPendingMessages) { | ||||
|             this._userVerifier.clear(); | ||||
|             onComplete(); | ||||
|             return; | ||||
|         } | ||||
| @@ -512,15 +493,11 @@ var AuthPrompt = new Lang.Class({ | ||||
|         let signalId = this._userVerifier.connect('no-more-messages', | ||||
|                                                   Lang.bind(this, function() { | ||||
|                                                       this._userVerifier.disconnect(signalId); | ||||
|                                                       this._userVerifier.clear(); | ||||
|                                                       onComplete(); | ||||
|                                                   })); | ||||
|     }, | ||||
|  | ||||
|     cancel: function() { | ||||
|         if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) { | ||||
|             return; | ||||
|         } | ||||
|         this.reset(); | ||||
|         this.emit('cancelled'); | ||||
|     } | ||||
|   | ||||
| @@ -16,38 +16,10 @@ | ||||
|  * along with this program; if not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * In order for transformation animations to look good, they need to be | ||||
|  * incremental and have some order to them (e.g., fade out hidden items, | ||||
|  * then shrink to close the void left over). Chaining animations in this way can | ||||
|  * be error-prone and wordy using just Tweener callbacks. | ||||
|  * | ||||
|  * The classes in this file help with this: | ||||
|  * | ||||
|  * - Task.  encapsulates schedulable work to be run in a specific scope. | ||||
|  * | ||||
|  * - ConsecutiveBatch.  runs a series of tasks in order and completes | ||||
|  *                      when the last in the series finishes. | ||||
|  * | ||||
|  * - ConcurrentBatch.  runs a set of tasks at the same time and completes | ||||
|  *                     when the last to finish completes. | ||||
|  * | ||||
|  * - Hold.  prevents a batch from completing the pending task until | ||||
|  *          the hold is released. | ||||
|  * | ||||
|  * The tasks associated with a batch are specified in a list at batch | ||||
|  * construction time as either task objects or plain functions. | ||||
|  * Batches are task objects, themselves, so they can be nested. | ||||
|  * | ||||
|  * These classes aren't specific to GDM, but were found to be unintuitive and so | ||||
|  * are not used elsewhere. These APIs may ultimately get dropped entirely and | ||||
|  * replaced by something else. | ||||
|  */ | ||||
|  | ||||
| const Lang = imports.lang; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| var Task = new Lang.Class({ | ||||
| const Task = new Lang.Class({ | ||||
|     Name: 'Task', | ||||
|  | ||||
|     _init: function(scope, handler) { | ||||
| @@ -68,7 +40,7 @@ var Task = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(Task.prototype); | ||||
|  | ||||
| var Hold = new Lang.Class({ | ||||
| const Hold = new Lang.Class({ | ||||
|     Name: 'Hold', | ||||
|     Extends: Task, | ||||
|  | ||||
| @@ -110,7 +82,7 @@ var Hold = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(Hold.prototype); | ||||
|  | ||||
| var Batch = new Lang.Class({ | ||||
| const Batch = new Lang.Class({ | ||||
|     Name: 'Batch', | ||||
|     Extends: Task, | ||||
|  | ||||
| @@ -185,7 +157,7 @@ var Batch = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(Batch.prototype); | ||||
|  | ||||
| var ConcurrentBatch = new Lang.Class({ | ||||
| const ConcurrentBatch = new Lang.Class({ | ||||
|     Name: 'ConcurrentBatch', | ||||
|     Extends: Batch, | ||||
|  | ||||
| @@ -204,7 +176,7 @@ var ConcurrentBatch = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(ConcurrentBatch.prototype); | ||||
|  | ||||
| var ConsecutiveBatch = new Lang.Class({ | ||||
| const ConsecutiveBatch = new Lang.Class({ | ||||
|     Name: 'ConsecutiveBatch', | ||||
|     Extends: Batch, | ||||
|  | ||||
|   | ||||
| @@ -23,12 +23,6 @@ function FprintManager() { | ||||
|                                    g_object_path: '/net/reactivated/Fprint/Manager', | ||||
|                                    g_flags: (Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) }); | ||||
|  | ||||
|     try { | ||||
|         self.init(null); | ||||
|     } catch(e) { | ||||
|         log('Failed to connect to Fprint service: ' + e.message); | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     self.init(null); | ||||
|     return self; | ||||
| } | ||||
|   | ||||
| @@ -22,12 +22,10 @@ const Clutter = imports.gi.Clutter; | ||||
| const Gdm = imports.gi.Gdm; | ||||
| const Gio = imports.gi.Gio; | ||||
| const GLib = imports.gi.GLib; | ||||
| const GObject = imports.gi.GObject; | ||||
| const Gtk = imports.gi.Gtk; | ||||
| const Lang = imports.lang; | ||||
| const Mainloop = imports.mainloop; | ||||
| const Meta = imports.gi.Meta; | ||||
| const Pango = imports.gi.Pango; | ||||
| const Shell = imports.gi.Shell; | ||||
| const Signals = imports.signals; | ||||
| const St = imports.gi.St; | ||||
| @@ -49,9 +47,8 @@ const _FADE_ANIMATION_TIME = 0.25; | ||||
| const _SCROLL_ANIMATION_TIME = 0.5; | ||||
| const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; | ||||
| const _LOGO_ICON_HEIGHT = 48; | ||||
| const _MAX_BOTTOM_MENU_ITEMS = 5; | ||||
|  | ||||
| var UserListItem = new Lang.Class({ | ||||
| const UserListItem = new Lang.Class({ | ||||
|     Name: 'UserListItem', | ||||
|  | ||||
|     _init: function(user) { | ||||
| @@ -67,25 +64,10 @@ var UserListItem = new Lang.Class({ | ||||
|                                      reactive: true, | ||||
|                                      x_align: St.Align.START, | ||||
|                                      x_fill: true }); | ||||
|         this.actor.connect('destroy', | ||||
|                            Lang.bind(this, this._onDestroy)); | ||||
|  | ||||
|         this.actor.connect('key-focus-in', () => { | ||||
|             this._setSelected(true); | ||||
|         }); | ||||
|         this.actor.connect('key-focus-out', () => { | ||||
|             this._setSelected(false); | ||||
|         }); | ||||
|         this.actor.connect('notify::hover', () => { | ||||
|             this._setSelected(this.actor.hover); | ||||
|         }); | ||||
|  | ||||
|         this._userWidget = new UserWidget.UserWidget(this.user); | ||||
|         layout.add(this._userWidget.actor); | ||||
|  | ||||
|         this._userWidget.actor.bind_property('label-actor', this.actor, 'label-actor', | ||||
|                                              GObject.BindingFlags.SYNC_CREATE); | ||||
|  | ||||
|         this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', | ||||
|                                                  scale_x: 0 }); | ||||
|         layout.add(this._timedLoginIndicator); | ||||
| @@ -105,23 +87,10 @@ var UserListItem = new Lang.Class({ | ||||
|             this.actor.remove_style_pseudo_class('logged-in'); | ||||
|     }, | ||||
|  | ||||
|     _onDestroy: function() { | ||||
|         this.user.disconnect(this._userChangedId); | ||||
|     }, | ||||
|  | ||||
|     _onClicked: function() { | ||||
|         this.emit('activate'); | ||||
|     }, | ||||
|  | ||||
|     _setSelected: function(selected) { | ||||
|         if (selected) { | ||||
|             this.actor.add_style_pseudo_class('selected'); | ||||
|             this.actor.grab_key_focus(); | ||||
|         } else { | ||||
|             this.actor.remove_style_pseudo_class('selected'); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     showTimedLoginIndicator: function(time) { | ||||
|         let hold = new Batch.Hold(); | ||||
|  | ||||
| @@ -145,7 +114,7 @@ var UserListItem = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(UserListItem.prototype); | ||||
|  | ||||
| var UserList = new Lang.Class({ | ||||
| const UserList = new Lang.Class({ | ||||
|     Name: 'UserList', | ||||
|  | ||||
|     _init: function() { | ||||
| @@ -231,10 +200,6 @@ var UserList = new Lang.Class({ | ||||
|         return item; | ||||
|     }, | ||||
|  | ||||
|     containsUser: function(user) { | ||||
|         return this._items[user.get_user_name()] != null; | ||||
|     }, | ||||
|  | ||||
|     addUser: function(user) { | ||||
|         if (!user.is_loaded) | ||||
|             return; | ||||
| @@ -288,15 +253,11 @@ var UserList = new Lang.Class({ | ||||
|  | ||||
|         item.actor.destroy(); | ||||
|         delete this._items[userName]; | ||||
|     }, | ||||
|  | ||||
|     numItems: function() { | ||||
|         return Object.keys(this._items).length; | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(UserList.prototype); | ||||
|  | ||||
| var SessionMenuButton = new Lang.Class({ | ||||
| const SessionMenuButton = new Lang.Class({ | ||||
|     Name: 'SessionMenuButton', | ||||
|  | ||||
|     _init: function() { | ||||
| @@ -311,16 +272,7 @@ var SessionMenuButton = new Lang.Class({ | ||||
|  | ||||
|         this.actor = new St.Bin({ child: this._button }); | ||||
|  | ||||
|         let side = St.Side.TOP; | ||||
|         let align = 0; | ||||
|         if (Gdm.get_session_ids().length > _MAX_BOTTOM_MENU_ITEMS) { | ||||
|             if (this.actor.text_direction == Clutter.TextDirection.RTL) | ||||
|                 side = St.Side.RIGHT; | ||||
|             else | ||||
|                 side = St.Side.LEFT; | ||||
|             align = 0.5; | ||||
|         } | ||||
|         this._menu = new PopupMenu.PopupMenu(this._button, align, side); | ||||
|         this._menu = new PopupMenu.PopupMenu(this._button, 0, St.Side.TOP); | ||||
|         Main.uiGroup.add_actor(this._menu.actor); | ||||
|         this._menu.actor.hide(); | ||||
|  | ||||
| @@ -402,57 +354,35 @@ var SessionMenuButton = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(SessionMenuButton.prototype); | ||||
|  | ||||
| var GuestUser = new Lang.Class({ | ||||
|     Name: 'GuestUser', | ||||
|  | ||||
|     _init: function() { | ||||
|         this.is_loaded = true; | ||||
|         this.locked = false; | ||||
|     }, | ||||
|  | ||||
|     connect: function() { | ||||
|     }, | ||||
|     disconnect: function() { | ||||
|     }, | ||||
|  | ||||
|     is_system_account: function() { | ||||
|         return false; | ||||
|     }, | ||||
|  | ||||
|     get_icon_file: function() { | ||||
|         return null; // FIXME: Use an icon for guest? | ||||
|     }, | ||||
|  | ||||
|     get_real_name: function() { | ||||
|         return 'Guest'; // FIXME: Translatable | ||||
|     }, | ||||
|  | ||||
|     get_user_name: function() { | ||||
|         return '*guest'; // FIXME: No a real username... | ||||
|     }, | ||||
|  | ||||
|     is_logged_in: function() { | ||||
|         return false; // FIXME: Can be logged in.. | ||||
|     } | ||||
| }); | ||||
|  | ||||
| var LoginDialog = new Lang.Class({ | ||||
| const LoginDialog = new Lang.Class({ | ||||
|     Name: 'LoginDialog', | ||||
|  | ||||
|     _init: function(parentActor) { | ||||
|         this.actor = new Shell.GenericContainer({ style_class: 'login-dialog', | ||||
|                                                   visible: false }); | ||||
|         this.actor.get_accessible().set_role(Atk.Role.WINDOW); | ||||
|         this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW, | ||||
|                                      layout_manager: new Clutter.BinLayout(), | ||||
|                                      style_class: 'login-dialog', | ||||
|                                      visible: false }); | ||||
|  | ||||
|         this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true })); | ||||
|         this.actor.connect('allocate', Lang.bind(this, this._onAllocate)); | ||||
|         this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); | ||||
|         parentActor.add_child(this.actor); | ||||
|  | ||||
|         this._userManager = AccountsService.UserManager.get_default() | ||||
|         this._gdmClient = new Gdm.Client(); | ||||
|         let gdmClient = new Gdm.Client(); | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); | ||||
|         if (GLib.getenv('GDM_GREETER_TEST') != '1') { | ||||
|             this._greeter = gdmClient.get_greeter_sync(null); | ||||
|  | ||||
|             this._greeter.connect('default-session-name-changed', | ||||
|                                   Lang.bind(this, this._onDefaultSessionChanged)); | ||||
|  | ||||
|             this._greeter.connect('session-opened', | ||||
|                                   Lang.bind(this, this._onSessionOpened)); | ||||
|             this._greeter.connect('timed-login-requested', | ||||
|                                   Lang.bind(this, this._onTimedLoginRequested)); | ||||
|         } | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA }); | ||||
|  | ||||
|         this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, | ||||
|                                Lang.bind(this, this._updateBanner)); | ||||
| @@ -464,25 +394,30 @@ var LoginDialog = new Lang.Class({ | ||||
|                                Lang.bind(this, this._updateLogo)); | ||||
|  | ||||
|         this._textureCache = St.TextureCache.get_default(); | ||||
|         this._updateLogoTextureId = this._textureCache.connect('texture-file-changed', | ||||
|                                                                Lang.bind(this, this._updateLogoTexture)); | ||||
|         this._textureCache.connect('texture-file-changed', | ||||
|                                    Lang.bind(this, this._updateLogoTexture)); | ||||
|  | ||||
|         this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box', | ||||
|                                                     x_align: Clutter.ActorAlign.CENTER, | ||||
|                                                     y_align: Clutter.ActorAlign.CENTER, | ||||
|                                                     x_expand: true, | ||||
|                                                     y_expand: true, | ||||
|                                                     vertical: true, | ||||
|                                                     visible: false }); | ||||
|         this.actor.add_child(this._userSelectionBox); | ||||
|  | ||||
|         this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner', | ||||
|                                            text: '' }); | ||||
|         this._userSelectionBox.add(this._bannerLabel); | ||||
|         this._updateBanner(); | ||||
|  | ||||
|         this._userList = new UserList(); | ||||
|         this._userSelectionBox.add(this._userList.actor, | ||||
|                                    { expand: true, | ||||
|                                      x_fill: true, | ||||
|                                      y_fill: true }); | ||||
|  | ||||
|         this._guestUser = new GuestUser(); | ||||
|  | ||||
|         this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN); | ||||
|         this._authPrompt = new AuthPrompt.AuthPrompt(gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN); | ||||
|         this._authPrompt.connect('prompted', Lang.bind(this, this._onPrompted)); | ||||
|         this._authPrompt.connect('reset', Lang.bind(this, this._onReset)); | ||||
|         this._authPrompt.hide(); | ||||
| @@ -510,25 +445,11 @@ var LoginDialog = new Lang.Class({ | ||||
|                                      x_align: St.Align.START, | ||||
|                                      x_fill: true }); | ||||
|  | ||||
|         this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view', | ||||
|                                                opacity: 0, | ||||
|                                                vscrollbar_policy: Gtk.PolicyType.AUTOMATIC, | ||||
|                                                hscrollbar_policy: Gtk.PolicyType.NEVER }); | ||||
|         this.actor.add_child(this._bannerView); | ||||
|  | ||||
|         let bannerBox = new St.BoxLayout({ vertical: true }); | ||||
|  | ||||
|         this._bannerView.add_actor(bannerBox); | ||||
|         this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner', | ||||
|                                            text: '' }); | ||||
|         this._bannerLabel.clutter_text.line_wrap = true; | ||||
|         this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; | ||||
|         bannerBox.add_child(this._bannerLabel); | ||||
|         this._updateBanner(); | ||||
|  | ||||
|         this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin', | ||||
|                                         x_align: Clutter.ActorAlign.CENTER, | ||||
|                                         y_align: Clutter.ActorAlign.END }); | ||||
|                                         y_align: Clutter.ActorAlign.END, | ||||
|                                         x_expand: true, | ||||
|                                         y_expand: true }); | ||||
|         this.actor.add_child(this._logoBin); | ||||
|         this._updateLogo(); | ||||
|  | ||||
| @@ -550,201 +471,13 @@ var LoginDialog = new Lang.Class({ | ||||
|         this._disableUserList = undefined; | ||||
|         this._userListLoaded = false; | ||||
|  | ||||
|         this._realmManager = new Realmd.Manager(); | ||||
|         this._realmSignalId = this._realmManager.connect('login-format-changed', | ||||
|                                                          Lang.bind(this, this._showRealmLoginHint)); | ||||
|  | ||||
|         LoginManager.getLoginManager().getCurrentSessionProxy(Lang.bind(this, this._gotGreeterSessionProxy)); | ||||
|  | ||||
|         // If the user list is enabled, it should take key focus; make sure the | ||||
|         // screen shield is initialized first to prevent it from stealing the | ||||
|         // focus later | ||||
|         this._startupCompleteId = Main.layoutManager.connect('startup-complete', | ||||
|                                                              Lang.bind(this, this._updateDisableUserList)); | ||||
|     }, | ||||
|  | ||||
|     _getBannerAllocation: function (dialogBox) { | ||||
|         let actorBox = new Clutter.ActorBox(); | ||||
|  | ||||
|         let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size(); | ||||
|         let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; | ||||
|  | ||||
|         actorBox.x1 = Math.floor(centerX - natWidth / 2); | ||||
|         actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height; | ||||
|         actorBox.x2 = actorBox.x1 + natWidth; | ||||
|         actorBox.y2 = actorBox.y1 + natHeight; | ||||
|  | ||||
|         return actorBox; | ||||
|     }, | ||||
|  | ||||
|     _getLogoBinAllocation: function (dialogBox) { | ||||
|         let actorBox = new Clutter.ActorBox(); | ||||
|  | ||||
|         let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size(); | ||||
|         let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; | ||||
|  | ||||
|         actorBox.x1 = Math.floor(centerX - natWidth / 2); | ||||
|         actorBox.y1 = dialogBox.y2 - natHeight; | ||||
|         actorBox.x2 = actorBox.x1 + natWidth; | ||||
|         actorBox.y2 = actorBox.y1 + natHeight; | ||||
|  | ||||
|         return actorBox; | ||||
|     }, | ||||
|  | ||||
|     _getCenterActorAllocation: function (dialogBox, actor) { | ||||
|         let actorBox = new Clutter.ActorBox(); | ||||
|  | ||||
|         let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size(); | ||||
|         let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; | ||||
|         let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; | ||||
|  | ||||
|         natWidth = Math.min(natWidth, dialogBox.x2 - dialogBox.x1); | ||||
|         natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1); | ||||
|  | ||||
|         actorBox.x1 = Math.floor(centerX - natWidth / 2); | ||||
|         actorBox.y1 = Math.floor(centerY - natHeight / 2); | ||||
|         actorBox.x2 = actorBox.x1 + natWidth; | ||||
|         actorBox.y2 = actorBox.y1 + natHeight; | ||||
|  | ||||
|         return actorBox; | ||||
|     }, | ||||
|  | ||||
|     _onAllocate: function (actor, dialogBox, flags) { | ||||
|         let dialogWidth = dialogBox.x2 - dialogBox.x1; | ||||
|         let dialogHeight = dialogBox.y2 - dialogBox.y1; | ||||
|  | ||||
|         // First find out what space the children require | ||||
|         let bannerAllocation = null; | ||||
|         let bannerHeight = 0; | ||||
|         let bannerWidth = 0; | ||||
|         if (this._bannerView.visible) { | ||||
|             bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView); | ||||
|             bannerHeight = bannerAllocation.y2 - bannerAllocation.y1; | ||||
|             bannerWidth = bannerAllocation.x2 - bannerAllocation.x1; | ||||
|         } | ||||
|  | ||||
|         let authPromptAllocation = null; | ||||
|         let authPromptHeight = 0; | ||||
|         let authPromptWidth = 0; | ||||
|         if (this._authPrompt.actor.visible) { | ||||
|             authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor); | ||||
|             authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1; | ||||
|             authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1; | ||||
|         } | ||||
|  | ||||
|         let userSelectionAllocation = null; | ||||
|         let userSelectionHeight = 0; | ||||
|         if (this._userSelectionBox.visible) { | ||||
|             userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox); | ||||
|             userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1; | ||||
|         } | ||||
|  | ||||
|         let logoAllocation = null; | ||||
|         let logoHeight = 0; | ||||
|         if (this._logoBin.visible) { | ||||
|             logoAllocation = this._getLogoBinAllocation(dialogBox); | ||||
|             logoHeight = logoAllocation.y2 - logoAllocation.y1; | ||||
|         } | ||||
|  | ||||
|         // Then figure out if we're overly constrained and need to | ||||
|         // try a different layout, or if we have what extra space we | ||||
|         // can hand out | ||||
|         if (bannerAllocation) { | ||||
|             let bannerSpace; | ||||
|  | ||||
|             if (authPromptAllocation) | ||||
|                 bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1; | ||||
|             else | ||||
|                 bannerSpace = 0; | ||||
|  | ||||
|             let leftOverYSpace = bannerSpace - bannerHeight; | ||||
|  | ||||
|             if (leftOverYSpace > 0) { | ||||
|                  // First figure out how much left over space is up top | ||||
|                  let leftOverTopSpace = leftOverYSpace / 2; | ||||
|  | ||||
|                  // Then, shift the banner into the middle of that extra space | ||||
|                  let yShift = Math.floor(leftOverTopSpace / 2); | ||||
|  | ||||
|                  bannerAllocation.y1 += yShift; | ||||
|                  bannerAllocation.y2 += yShift; | ||||
|             } else { | ||||
|                  // Then figure out how much space there would be if we switched to a | ||||
|                  // wide layout with banner on one side and authprompt on the other. | ||||
|                  let leftOverXSpace = dialogWidth - authPromptWidth; | ||||
|  | ||||
|                  // In a wide view, half of the available space goes to the banner, | ||||
|                  // and the other half goes to the margins. | ||||
|                  let wideBannerWidth = leftOverXSpace / 2; | ||||
|                  let wideSpacing  = leftOverXSpace - wideBannerWidth; | ||||
|  | ||||
|                  // If we do go with a wide layout, we need there to be at least enough | ||||
|                  // space for the banner and the auth prompt to be the same width, | ||||
|                  // so it doesn't look unbalanced. | ||||
|                  if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) { | ||||
|                      let centerX = dialogBox.x1 + dialogWidth / 2; | ||||
|                      let centerY = dialogBox.y1 + dialogHeight / 2; | ||||
|  | ||||
|                      // A small portion of the spacing goes down the center of the | ||||
|                      // screen to help delimit the two columns of the wide view | ||||
|                      let centerGap = wideSpacing / 8; | ||||
|  | ||||
|                      // place the banner along the left edge of the center margin | ||||
|                      bannerAllocation.x2 = Math.floor(centerX - centerGap / 2); | ||||
|                      bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth); | ||||
|  | ||||
|                      // figure out how tall it would like to be and try to accomodate | ||||
|                      // but don't let it get too close to the logo | ||||
|                      let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth); | ||||
|  | ||||
|                      let maxWideHeight = dialogHeight - 3 * logoHeight; | ||||
|                      wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight); | ||||
|                      bannerAllocation.y1 = Math.floor(centerY - wideBannerHeight / 2); | ||||
|                      bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight; | ||||
|  | ||||
|                      // place the auth prompt along the right edge of the center margin | ||||
|                      authPromptAllocation.x1 = Math.floor(centerX + centerGap / 2); | ||||
|                      authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth; | ||||
|                  } else { | ||||
|                      // If we aren't going to do a wide view, then we need to limit | ||||
|                      // the height of the banner so it will present scrollbars | ||||
|  | ||||
|                      // First figure out how much space there is without the banner | ||||
|                      leftOverYSpace += bannerHeight; | ||||
|  | ||||
|                      // Then figure out how much of that space is up top | ||||
|                      let availableTopSpace = Math.floor(leftOverYSpace / 2); | ||||
|  | ||||
|                      // Then give all of that space to the banner | ||||
|                      bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; | ||||
|                  } | ||||
|             } | ||||
|         } else if (userSelectionAllocation) { | ||||
|             // Grow the user list to fill the space | ||||
|             let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; | ||||
|  | ||||
|             if (leftOverYSpace > 0) { | ||||
|                 let topExpansion = Math.floor(leftOverYSpace / 2); | ||||
|                 let bottomExpansion = topExpansion; | ||||
|  | ||||
|                 userSelectionAllocation.y1 -= topExpansion; | ||||
|                 userSelectionAllocation.y2 += bottomExpansion; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // Finally hand out the allocations | ||||
|         if (bannerAllocation) { | ||||
|             this._bannerView.allocate(bannerAllocation, flags); | ||||
|         } | ||||
|  | ||||
|         if (authPromptAllocation) | ||||
|             this._authPrompt.actor.allocate(authPromptAllocation, flags); | ||||
|  | ||||
|         if (userSelectionAllocation) | ||||
|             this._userSelectionBox.allocate(userSelectionAllocation, flags); | ||||
|  | ||||
|         if (logoAllocation) | ||||
|             this._logoBin.allocate(logoAllocation, flags); | ||||
|         Main.layoutManager.connect('startup-complete', | ||||
|                                    Lang.bind(this, this._updateDisableUserList)); | ||||
|     }, | ||||
|  | ||||
|     _ensureUserListLoaded: function() { | ||||
| @@ -766,10 +499,6 @@ var LoginDialog = new Lang.Class({ | ||||
|     _updateDisableUserList: function() { | ||||
|         let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY); | ||||
|  | ||||
|         // Disable user list when there are no users. | ||||
|         if (this._userListLoaded && this._userList.numItems() == 0) | ||||
|             disableUserList = true; | ||||
|  | ||||
|         if (disableUserList != this._disableUserList) { | ||||
|             this._disableUserList = disableUserList; | ||||
|  | ||||
| @@ -803,77 +532,39 @@ var LoginDialog = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _fadeInBannerView: function() { | ||||
|         this._bannerView.show(); | ||||
|         Tweener.addTween(this._bannerView, | ||||
|                          { opacity: 255, | ||||
|                            time: _FADE_ANIMATION_TIME, | ||||
|                            transition: 'easeOutQuad' }); | ||||
|     }, | ||||
|  | ||||
|     _hideBannerView: function() { | ||||
|         Tweener.removeTweens(this._bannerView); | ||||
|         this._bannerView.opacity = 0; | ||||
|         this._bannerView.hide(); | ||||
|     }, | ||||
|  | ||||
|     _updateLogoTexture: function(cache, file) { | ||||
|         if (this._logoFile && !this._logoFile.equal(file)) | ||||
|     _updateLogoTexture: function(cache, uri) { | ||||
|         if (this._logoFileUri != uri) | ||||
|             return; | ||||
|  | ||||
|         this._logoBin.destroy_all_children(); | ||||
|         if (this._logoFile) { | ||||
|         if (this._logoFileUri) { | ||||
|             let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; | ||||
|             this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile, | ||||
|                                                                        -1, _LOGO_ICON_HEIGHT, | ||||
|                                                                        scaleFactor)); | ||||
|             this._logoBin.add_child(this._textureCache.load_uri_async(this._logoFileUri, | ||||
|                                                                       -1, _LOGO_ICON_HEIGHT, | ||||
|                                                                       scaleFactor)); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _updateLogo: function() { | ||||
|         let path = this._settings.get_string(GdmUtil.LOGO_KEY); | ||||
|  | ||||
|         this._logoFile = path ? Gio.file_new_for_path(path) : null; | ||||
|         this._updateLogoTexture(this._textureCache, this._logoFile); | ||||
|         this._logoFileUri = path ? Gio.file_new_for_path(path).get_uri() : null; | ||||
|         this._updateLogoTexture(this._textureCache, this._logoFileUri); | ||||
|     }, | ||||
|  | ||||
|     _onPrompted: function() { | ||||
|         if (this._shouldShowSessionMenuButton()) { | ||||
|             this._sessionMenuButton.updateSensitivity(true); | ||||
|         this._sessionMenuButton.updateSensitivity(true); | ||||
|  | ||||
|         if (this._shouldShowSessionMenuButton()) | ||||
|             this._authPrompt.setActorInDefaultButtonWell(this._sessionMenuButton.actor); | ||||
|         } else { | ||||
|             this._sessionMenuButton.updateSensitivity(false); | ||||
|         } | ||||
|         this._showPrompt(); | ||||
|     }, | ||||
|  | ||||
|     _resetGreeterProxy: function() { | ||||
|         if (GLib.getenv('GDM_GREETER_TEST') != '1') { | ||||
|             if (this._greeter) { | ||||
|                 this._greeter.run_dispose(); | ||||
|             } | ||||
|             this._greeter = this._gdmClient.get_greeter_sync(null); | ||||
|  | ||||
|             this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed', | ||||
|                                                                   Lang.bind(this, this._onDefaultSessionChanged)); | ||||
|             this._sessionOpenedId = this._greeter.connect('session-opened', | ||||
|                                                           Lang.bind(this, this._onSessionOpened)); | ||||
|             this._timedLoginRequestedId = this._greeter.connect('timed-login-requested', | ||||
|                                                                 Lang.bind(this, this._onTimedLoginRequested)); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _onReset: function(authPrompt, beginRequest) { | ||||
|         this._resetGreeterProxy(); | ||||
|         this._sessionMenuButton.updateSensitivity(true); | ||||
|  | ||||
|         this._user = null; | ||||
|  | ||||
|         if (this._nextSignalId) { | ||||
|             this._authPrompt.disconnect(this._nextSignalId); | ||||
|             this._nextSignalId = 0; | ||||
|         } | ||||
|  | ||||
|         if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) { | ||||
|             if (!this._disableUserList) | ||||
|                 this._showUserList(); | ||||
| @@ -908,7 +599,6 @@ var LoginDialog = new Lang.Class({ | ||||
|                          { opacity: 255, | ||||
|                            time: _FADE_ANIMATION_TIME, | ||||
|                            transition: 'easeOutQuad' }); | ||||
|         this._fadeInBannerView(); | ||||
|     }, | ||||
|  | ||||
|     _showRealmLoginHint: function(realmManager, hint) { | ||||
| @@ -928,31 +618,31 @@ var LoginDialog = new Lang.Class({ | ||||
|         this._authPrompt.setPasswordChar(''); | ||||
|         this._authPrompt.setQuestion(_("Username: ")); | ||||
|  | ||||
|         this._showRealmLoginHint(this._realmManager.loginFormat); | ||||
|         let realmManager = new Realmd.Manager(); | ||||
|         let realmSignalId = realmManager.connect('login-format-changed', | ||||
|                                                  Lang.bind(this, this._showRealmLoginHint)); | ||||
|         this._showRealmLoginHint(realmManager.loginFormat); | ||||
|  | ||||
|         if (this._nextSignalId) | ||||
|             this._authPrompt.disconnect(this._nextSignalId); | ||||
|         this._nextSignalId = this._authPrompt.connect('next', | ||||
|                                                       Lang.bind(this, function() { | ||||
|                                                           this._authPrompt.disconnect(this._nextSignalId); | ||||
|                                                           this._nextSignalId = 0; | ||||
|                                                           this._authPrompt.updateSensitivity(false); | ||||
|                                                           let answer = this._authPrompt.getAnswer(); | ||||
|                                                           this._user = this._userManager.get_user(answer); | ||||
|                                                           this._authPrompt.clear(); | ||||
|                                                           this._authPrompt.startSpinning(); | ||||
|                                                           this._authPrompt.begin({ userName: answer }); | ||||
|                                                           this._updateCancelButton(); | ||||
|                                                       })); | ||||
|         let nextSignalId = this._authPrompt.connect('next', | ||||
|                                                     Lang.bind(this, function() { | ||||
|                                                         this._authPrompt.disconnect(nextSignalId); | ||||
|                                                         this._authPrompt.updateSensitivity(false); | ||||
|                                                         let answer = this._authPrompt.getAnswer(); | ||||
|                                                         this._user = this._userManager.get_user(answer); | ||||
|                                                         this._authPrompt.clear(); | ||||
|                                                         this._authPrompt.startSpinning(); | ||||
|                                                         this._authPrompt.begin({ userName: answer }); | ||||
|                                                         this._updateCancelButton(); | ||||
|  | ||||
|                                                         realmManager.disconnect(realmSignalId) | ||||
|                                                         realmManager.release(); | ||||
|                                                     })); | ||||
|         this._updateCancelButton(); | ||||
|  | ||||
|         this._sessionMenuButton.updateSensitivity(false); | ||||
|         this._authPrompt.updateSensitivity(true); | ||||
|         this._showPrompt(); | ||||
|     }, | ||||
|  | ||||
|     _loginScreenSessionActivated: function() { | ||||
|         if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) | ||||
|         if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED) | ||||
|             return; | ||||
|  | ||||
|         Tweener.addTween(this.actor, | ||||
| @@ -969,19 +659,16 @@ var LoginDialog = new Lang.Class({ | ||||
|                            }, | ||||
|                            onUpdateScope: this, | ||||
|                            onComplete: function() { | ||||
|                                if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING) | ||||
|                                    this._authPrompt.reset(); | ||||
|                                this._authPrompt.reset(); | ||||
|                            }, | ||||
|                            onCompleteScope: this }); | ||||
|     }, | ||||
|  | ||||
|     _gotGreeterSessionProxy: function(proxy) { | ||||
|         this._greeterSessionProxy = proxy; | ||||
|         this._greeterSessionProxyChangedId = | ||||
|             proxy.connect('g-properties-changed', Lang.bind(this, function() { | ||||
|                 if (proxy.Active) | ||||
|                     this._loginScreenSessionActivated(); | ||||
|             })); | ||||
|         proxy.connect('g-properties-changed', Lang.bind(this, function() { | ||||
|             if (proxy.Active) | ||||
|                 this._loginScreenSessionActivated(); | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|     _startSession: function(serviceName) { | ||||
| @@ -999,7 +686,11 @@ var LoginDialog = new Lang.Class({ | ||||
|                            }, | ||||
|                            onUpdateScope: this, | ||||
|                            onComplete: function() { | ||||
|                                this._greeter.call_start_session_when_ready_sync(serviceName, true, null); | ||||
|                                let id = Mainloop.idle_add(Lang.bind(this, function() { | ||||
|                                    this._greeter.call_start_session_when_ready_sync(serviceName, true, null); | ||||
|                                    return GLib.SOURCE_REMOVE; | ||||
|                                })); | ||||
|                                GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync'); | ||||
|                            }, | ||||
|                            onCompleteScope: this }); | ||||
|     }, | ||||
| @@ -1160,7 +851,6 @@ var LoginDialog = new Lang.Class({ | ||||
|     _showUserList: function() { | ||||
|         this._ensureUserListLoaded(); | ||||
|         this._authPrompt.hide(); | ||||
|         this._hideBannerView(); | ||||
|         this._sessionMenuButton.close(); | ||||
|         this._setUserListExpanded(true); | ||||
|         this._notListedButton.show(); | ||||
| @@ -1179,11 +869,18 @@ var LoginDialog = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onUserListActivated: function(activatedItem) { | ||||
|         let tasks = [function() { | ||||
|                          return GdmUtil.cloneAndFadeOutActor(this._userSelectionBox); | ||||
|                      }, | ||||
|                      function() { | ||||
|                          this._setUserListExpanded(false); | ||||
|                      }]; | ||||
|  | ||||
|         this._user = activatedItem.user; | ||||
|  | ||||
|         this._updateCancelButton(); | ||||
|  | ||||
|         let batch = new Batch.ConcurrentBatch(this, [GdmUtil.cloneAndFadeOutActor(this._userSelectionBox), | ||||
|         let batch = new Batch.ConcurrentBatch(this, [new Batch.ConsecutiveBatch(this, tasks), | ||||
|                                                      this._beginVerificationForItem(activatedItem)]); | ||||
|         batch.run(); | ||||
|     }, | ||||
| @@ -1193,40 +890,6 @@ var LoginDialog = new Lang.Class({ | ||||
|             this._userManager.disconnect(this._userManagerLoadedId); | ||||
|             this._userManagerLoadedId = 0; | ||||
|         } | ||||
|         if (this._userAddedId) { | ||||
|             this._userManager.disconnect(this._userAddedId); | ||||
|             this._userAddedId = 0; | ||||
|         } | ||||
|         if (this._userRemovedId) { | ||||
|             this._userManager.disconnect(this._userRemovedId); | ||||
|             this._userRemovedId = 0; | ||||
|         } | ||||
|         if (this._userChangedId) { | ||||
|             this._userManager.disconnect(this._userChangedId); | ||||
|             this._userChangedId = 0; | ||||
|         } | ||||
|         this._textureCache.disconnect(this._updateLogoTextureId); | ||||
|         Main.layoutManager.disconnect(this._startupCompleteId); | ||||
|         if (this._settings) { | ||||
|             this._settings.run_dispose(); | ||||
|             this._settings = null; | ||||
|         } | ||||
|         if (this._greeter) { | ||||
|             this._greeter.disconnect(this._defaultSessionChangedId); | ||||
|             this._greeter.disconnect(this._sessionOpenedId); | ||||
|             this._greeter.disconnect(this._timedLoginRequestedId); | ||||
|             this._greeter = null; | ||||
|         } | ||||
|         if (this._greeterSessionProxy) { | ||||
|             this._greeterSessionProxy.disconnect(this._greeterSessionProxyChangedId); | ||||
|             this._greeterSessionProxy = null; | ||||
|         } | ||||
|         if (this._realmManager) { | ||||
|             this._realmManager.disconnect(this._realmSignalId); | ||||
|             this._realmSignalId = 0; | ||||
|             this._realmManager.release(); | ||||
|             this._realmManager = null; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _loadUserList: function() { | ||||
| @@ -1240,30 +903,16 @@ var LoginDialog = new Lang.Class({ | ||||
|         for (let i = 0; i < users.length; i++) { | ||||
|             this._userList.addUser(users[i]); | ||||
|         } | ||||
|         this._userList.addUser(this._guestUser); | ||||
|  | ||||
|         this._updateDisableUserList(); | ||||
|         this._userManager.connect('user-added', | ||||
|                                   Lang.bind(this, function(userManager, user) { | ||||
|                                       this._userList.addUser(user); | ||||
|                                   })); | ||||
|  | ||||
|         this._userAddedId = this._userManager.connect('user-added', | ||||
|                                                       Lang.bind(this, function(userManager, user) { | ||||
|                                                           this._userList.addUser(user); | ||||
|                                                           this._updateDisableUserList(); | ||||
|                                                       })); | ||||
|  | ||||
|         this._userRemovedId = this._userManager.connect('user-removed', | ||||
|                                                         Lang.bind(this, function(userManager, user) { | ||||
|                                                             this._userList.removeUser(user); | ||||
|                                                             this._updateDisableUserList(); | ||||
|                                                         })); | ||||
|  | ||||
|         this._userChangedId = this._userManager.connect('user-changed', | ||||
|                                                         Lang.bind(this, function(userManager, user) { | ||||
|                                                             if (this._userList.containsUser(user) && user.locked) | ||||
|                                                                 this._userList.removeUser(user); | ||||
|                                                             else if (!this._userList.containsUser(user) && !user.locked) | ||||
|                                                                 this._userList.addUser(user); | ||||
|                                                             this._updateDisableUserList(); | ||||
|                                                         })); | ||||
|         this._userManager.connect('user-removed', | ||||
|                                   Lang.bind(this, function(userManager, user) { | ||||
|                                       this._userList.removeUser(user); | ||||
|                                   })); | ||||
|  | ||||
|         return GLib.SOURCE_REMOVE; | ||||
|     }, | ||||
| @@ -1277,8 +926,6 @@ var LoginDialog = new Lang.Class({ | ||||
|         this.actor.show(); | ||||
|         this.actor.opacity = 0; | ||||
|  | ||||
|         Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOGIN_SCREEN }); | ||||
|  | ||||
|         Tweener.addTween(this.actor, | ||||
|                          { opacity: 255, | ||||
|                            time: 1, | ||||
| @@ -1288,8 +935,7 @@ var LoginDialog = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     close: function() { | ||||
|         Main.popModal(this.actor); | ||||
|         Main.ctrlAltTabManager.removeGroup(this.actor); | ||||
|         Main.ctrlAltTabManager.removeGroup(this.dialogLayout); | ||||
|     }, | ||||
|  | ||||
|     cancel: function() { | ||||
| @@ -1297,7 +943,7 @@ var LoginDialog = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     addCharacter: function(unichar) { | ||||
|         // Don't allow type ahead at the login screen | ||||
|         this._authPrompt.addCharacter(unichar); | ||||
|     }, | ||||
|  | ||||
|     finish: function(onComplete) { | ||||
|   | ||||
| @@ -27,7 +27,7 @@ function OVirtCredentials() { | ||||
|     return self; | ||||
| } | ||||
|  | ||||
| var OVirtCredentialsManager = new Lang.Class({ | ||||
| const OVirtCredentialsManager = new Lang.Class({ | ||||
|     Name: 'OVirtCredentialsManager', | ||||
|     _init: function() { | ||||
|         this._token = null; | ||||
|   | ||||
| @@ -59,7 +59,7 @@ const RealmIface = '<node> \ | ||||
| </node>'; | ||||
| const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface); | ||||
|  | ||||
| var Manager = new Lang.Class({ | ||||
| const Manager = new Lang.Class({ | ||||
|     Name: 'Manager', | ||||
|  | ||||
|     _init: function(parentActor) { | ||||
|   | ||||
							
								
								
									
										116
									
								
								js/gdm/util.js
									
									
									
									
									
								
							
							
						
						| @@ -17,28 +17,28 @@ const ShellEntry = imports.ui.shellEntry; | ||||
| const SmartcardManager = imports.misc.smartcardManager; | ||||
| const Tweener = imports.ui.tweener; | ||||
|  | ||||
| var PASSWORD_SERVICE_NAME = 'gdm-password'; | ||||
| var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint'; | ||||
| var SMARTCARD_SERVICE_NAME = 'gdm-smartcard'; | ||||
| var OVIRT_SERVICE_NAME = 'gdm-ovirtcred'; | ||||
| var FADE_ANIMATION_TIME = 0.16; | ||||
| var CLONE_FADE_ANIMATION_TIME = 0.25; | ||||
| const PASSWORD_SERVICE_NAME = 'gdm-password'; | ||||
| const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint'; | ||||
| const SMARTCARD_SERVICE_NAME = 'gdm-smartcard'; | ||||
| const OVIRT_SERVICE_NAME = 'gdm-ovirtcred'; | ||||
| const FADE_ANIMATION_TIME = 0.16; | ||||
| const CLONE_FADE_ANIMATION_TIME = 0.25; | ||||
|  | ||||
| var LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; | ||||
| var PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication'; | ||||
| var FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication'; | ||||
| var SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication'; | ||||
| var BANNER_MESSAGE_KEY = 'banner-message-enable'; | ||||
| var BANNER_MESSAGE_TEXT_KEY = 'banner-message-text'; | ||||
| var ALLOWED_FAILURES_KEY = 'allowed-failures'; | ||||
| const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; | ||||
| const PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication'; | ||||
| const FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication'; | ||||
| const SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication'; | ||||
| const BANNER_MESSAGE_KEY = 'banner-message-enable'; | ||||
| const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text'; | ||||
| const ALLOWED_FAILURES_KEY = 'allowed-failures'; | ||||
|  | ||||
| var LOGO_KEY = 'logo'; | ||||
| var DISABLE_USER_LIST_KEY = 'disable-user-list'; | ||||
| const LOGO_KEY = 'logo'; | ||||
| const DISABLE_USER_LIST_KEY = 'disable-user-list'; | ||||
|  | ||||
| // Give user 48ms to read each character of a PAM message | ||||
| var USER_READ_TIME = 48 | ||||
| // Give user 16ms to read each character of a PAM message | ||||
| const USER_READ_TIME = 16 | ||||
|  | ||||
| var MessageType = { | ||||
| const MessageType = { | ||||
|     NONE: 0, | ||||
|     ERROR: 1, | ||||
|     INFO: 2, | ||||
| @@ -119,7 +119,7 @@ function cloneAndFadeOutActor(actor) { | ||||
|     return hold; | ||||
| } | ||||
|  | ||||
| var ShellUserVerifier = new Lang.Class({ | ||||
| const ShellUserVerifier = new Lang.Class({ | ||||
|     Name: 'ShellUserVerifier', | ||||
|  | ||||
|     _init: function(client, params) { | ||||
| @@ -128,28 +128,24 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|  | ||||
|         this._client = client; | ||||
|  | ||||
|         this._defaultService = null; | ||||
|         this._preemptingService = null; | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); | ||||
|         this._settings = new Gio.Settings({ schema: LOGIN_SCREEN_SCHEMA }); | ||||
|         this._settings.connect('changed', | ||||
|                                Lang.bind(this, this._updateDefaultService)); | ||||
|         this._updateDefaultService(); | ||||
|  | ||||
|         this._fprintManager = Fprint.FprintManager(); | ||||
|         this._fprintManager = new Fprint.FprintManager(); | ||||
|         this._smartcardManager = SmartcardManager.getSmartcardManager(); | ||||
|  | ||||
|         // We check for smartcards right away, since an inserted smartcard | ||||
|         // at startup should result in immediately initiating authentication. | ||||
|         // This is different than fingerprint readers, where we only check them | ||||
|         // This is different than fingeprint readers, where we only check them | ||||
|         // after a user has been picked. | ||||
|         this.smartcardDetected = false; | ||||
|         this._checkForSmartcard(); | ||||
|  | ||||
|         this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted', | ||||
|                                                                    Lang.bind(this, this._checkForSmartcard)); | ||||
|         this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed', | ||||
|                                                                   Lang.bind(this, this._checkForSmartcard)); | ||||
|         this._smartcardManager.connect('smartcard-inserted', | ||||
|                                        Lang.bind(this, this._checkForSmartcard)); | ||||
|         this._smartcardManager.connect('smartcard-removed', | ||||
|                                        Lang.bind(this, this._checkForSmartcard)); | ||||
|  | ||||
|         this._messageQueue = []; | ||||
|         this._messageQueueTimeoutId = 0; | ||||
| @@ -163,8 +159,8 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|         if (this._oVirtCredentialsManager.hasToken()) | ||||
|             this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken()); | ||||
|  | ||||
|         this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated', | ||||
|                                                                                Lang.bind(this, this._oVirtUserAuthenticated)); | ||||
|         this._oVirtCredentialsManager.connect('user-authenticated', | ||||
|                                               Lang.bind(this, this._oVirtUserAuthenticated)); | ||||
|     }, | ||||
|  | ||||
|     begin: function(userName, hold) { | ||||
| @@ -195,37 +191,20 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _clearUserVerifier: function() { | ||||
|         if (this._userVerifier) { | ||||
|             this._userVerifier.run_dispose(); | ||||
|             this._userVerifier = null; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     clear: function() { | ||||
|         if (this._cancellable) { | ||||
|             this._cancellable.cancel(); | ||||
|             this._cancellable = null; | ||||
|         } | ||||
|  | ||||
|         this._clearUserVerifier(); | ||||
|         if (this._userVerifier) { | ||||
|             this._userVerifier.run_dispose(); | ||||
|             this._userVerifier = null; | ||||
|         } | ||||
|  | ||||
|         this._clearMessageQueue(); | ||||
|     }, | ||||
|  | ||||
|     destroy: function() { | ||||
|         this.clear(); | ||||
|  | ||||
|         this._settings.run_dispose(); | ||||
|         this._settings = null; | ||||
|  | ||||
|         this._smartcardManager.disconnect(this._smartcardInsertedId); | ||||
|         this._smartcardManager.disconnect(this._smartcardRemovedId); | ||||
|         this._smartcardManager = null; | ||||
|  | ||||
|         this._oVirtCredentialsManager.disconnect(this._oVirtUserAuthenticatedId); | ||||
|         this._oVirtCredentialsManager = null; | ||||
|     }, | ||||
|  | ||||
|     answerQuery: function(serviceName, answer) { | ||||
|         if (!this.hasPendingMessages) { | ||||
|             this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null); | ||||
| @@ -297,18 +276,16 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|     _checkForFingerprintReader: function() { | ||||
|         this._haveFingerprintReader = false; | ||||
|  | ||||
|         if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) || | ||||
|             this._fprintManager == null) { | ||||
|         if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { | ||||
|             this._updateDefaultService(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._fprintManager.GetDefaultDeviceRemote(Gio.DBusCallFlags.NONE, this._cancellable, Lang.bind(this, | ||||
|             function(device, error) { | ||||
|                 if (!error && device) { | ||||
|                 if (!error && device) | ||||
|                     this._haveFingerprintReader = true; | ||||
|                     this._updateDefaultService(); | ||||
|                 } | ||||
|             })); | ||||
|     }, | ||||
|  | ||||
| @@ -349,7 +326,6 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|  | ||||
|     _reauthenticationChannelOpened: function(client, result) { | ||||
|         try { | ||||
|             this._clearUserVerifier(); | ||||
|             this._userVerifier = client.open_reauthentication_channel_finish(result); | ||||
|         } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { | ||||
|             return; | ||||
| @@ -373,7 +349,6 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|  | ||||
|     _userVerifierGot: function(client, result) { | ||||
|         try { | ||||
|             this._clearUserVerifier(); | ||||
|             this._userVerifier = client.get_user_verifier_finish(result); | ||||
|         } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { | ||||
|             return; | ||||
| @@ -415,7 +390,7 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|     _updateDefaultService: function() { | ||||
|         if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) | ||||
|             this._defaultService = PASSWORD_SERVICE_NAME; | ||||
|         else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) | ||||
|         else if (this.smartcardDetected) | ||||
|             this._defaultService = SMARTCARD_SERVICE_NAME; | ||||
|         else if (this._haveFingerprintReader) | ||||
|             this._defaultService = FINGERPRINT_SERVICE_NAME; | ||||
| @@ -423,21 +398,7 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|  | ||||
|     _startService: function(serviceName) { | ||||
|         this._hold.acquire(); | ||||
|         if (this._userName == "*guest") { | ||||
|            this._userVerifier.call_begin_verification_for_guest(this._cancellable, | ||||
|                                                                 Lang.bind(this, function(obj, result) { | ||||
|                try { | ||||
|                    obj.call_begin_verification_for_guest_finish(result); | ||||
|                } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { | ||||
|                    return; | ||||
|                } catch(e) { | ||||
|                    this._reportInitError('Failed to start verification for guest', e); | ||||
|                    return; | ||||
|                } | ||||
|  | ||||
|                this._hold.release(); | ||||
|            })); | ||||
|         } else if (this._userName) { | ||||
|         if (this._userName) { | ||||
|            this._userVerifier.call_begin_verification_for_user(serviceName, | ||||
|                                                                this._userName, | ||||
|                                                                this._cancellable, | ||||
| @@ -558,8 +519,7 @@ var ShellUserVerifier = new Lang.Class({ | ||||
|                 let signalId = this.connect('no-more-messages', | ||||
|                                             Lang.bind(this, function() { | ||||
|                                                 this.disconnect(signalId); | ||||
|                                                 if (this._cancellable && !this._cancellable.is_cancelled()) | ||||
|                                                     this._retry(); | ||||
|                                                 this._retry(); | ||||
|                                             })); | ||||
|             } | ||||
|         } else { | ||||
|   | ||||
| @@ -16,42 +16,29 @@ | ||||
|     <file>misc/fileUtils.js</file> | ||||
|     <file>misc/gnomeSession.js</file> | ||||
|     <file>misc/history.js</file> | ||||
|     <file>misc/ibusManager.js</file> | ||||
|     <file>misc/jsParse.js</file> | ||||
|     <file>misc/keyboardManager.js</file> | ||||
|     <file>misc/loginManager.js</file> | ||||
|     <file>misc/modemManager.js</file> | ||||
|     <file>misc/objectManager.js</file> | ||||
|     <file>misc/params.js</file> | ||||
|     <file>misc/permissionStore.js</file> | ||||
|     <file>misc/smartcardManager.js</file> | ||||
|     <file>misc/systemActions.js</file> | ||||
|     <file>misc/util.js</file> | ||||
|     <file>misc/weather.js</file> | ||||
|  | ||||
|     <file>perf/core.js</file> | ||||
|     <file>perf/hwtest.js</file> | ||||
|  | ||||
|     <file>portalHelper/main.js</file> | ||||
|  | ||||
|     <file>ui/accessDialog.js</file> | ||||
|     <file>ui/altTab.js</file> | ||||
|     <file>ui/animation.js</file> | ||||
|     <file>ui/appDisplay.js</file> | ||||
|     <file>ui/appFavorites.js</file> | ||||
|     <file>ui/audioDeviceSelection.js</file> | ||||
|     <file>ui/backgroundMenu.js</file> | ||||
|     <file>ui/background.js</file> | ||||
|     <file>ui/boxpointer.js</file> | ||||
|     <file>ui/calendar.js</file> | ||||
|     <file>ui/checkBox.js</file> | ||||
|     <file>ui/closeDialog.js</file> | ||||
|     <file>ui/ctrlAltTab.js</file> | ||||
|     <file>ui/dash.js</file> | ||||
|     <file>ui/dateMenu.js</file> | ||||
|     <file>ui/dialog.js</file> | ||||
|     <file>ui/dnd.js</file> | ||||
|     <file>ui/edgeDragAction.js</file> | ||||
|     <file>ui/endSessionDialog.js</file> | ||||
|     <file>ui/environment.js</file> | ||||
|     <file>ui/extensionDownloader.js</file> | ||||
| @@ -60,7 +47,6 @@ | ||||
|     <file>ui/grabHelper.js</file> | ||||
|     <file>ui/ibusCandidatePopup.js</file> | ||||
|     <file>ui/iconGrid.js</file> | ||||
|     <file>ui/inhibitShortcutsDialog.js</file> | ||||
|     <file>ui/keyboard.js</file> | ||||
|     <file>ui/layout.js</file> | ||||
|     <file>ui/lightbox.js</file> | ||||
| @@ -69,15 +55,11 @@ | ||||
|     <file>ui/magnifierDBus.js</file> | ||||
|     <file>ui/main.js</file> | ||||
|     <file>ui/messageTray.js</file> | ||||
|     <file>ui/messageList.js</file> | ||||
|     <file>ui/modalDialog.js</file> | ||||
|     <file>ui/mpris.js</file> | ||||
|     <file>ui/notificationDaemon.js</file> | ||||
|     <file>ui/osdWindow.js</file> | ||||
|     <file>ui/osdMonitorLabeler.js</file> | ||||
|     <file>ui/overview.js</file> | ||||
|     <file>ui/overviewControls.js</file> | ||||
|     <file>ui/padOsd.js</file> | ||||
|     <file>ui/panel.js</file> | ||||
|     <file>ui/panelMenu.js</file> | ||||
|     <file>ui/pointerWatcher.js</file> | ||||
| @@ -90,13 +72,13 @@ | ||||
|     <file>ui/screenshot.js</file> | ||||
|     <file>ui/scripting.js</file> | ||||
|     <file>ui/search.js</file> | ||||
|     <file>ui/separator.js</file> | ||||
|     <file>ui/sessionMode.js</file> | ||||
|     <file>ui/shellDBus.js</file> | ||||
|     <file>ui/shellEntry.js</file> | ||||
|     <file>ui/shellMountOperation.js</file> | ||||
|     <file>ui/slider.js</file> | ||||
|     <file>ui/switcherPopup.js</file> | ||||
|     <file>ui/switchMonitor.js</file> | ||||
|     <file>ui/tweener.js</file> | ||||
|     <file>ui/unlockDialog.js</file> | ||||
|     <file>ui/userWidget.js</file> | ||||
| @@ -122,7 +104,6 @@ | ||||
|     <file>ui/status/brightness.js</file> | ||||
|     <file>ui/status/location.js</file> | ||||
|     <file>ui/status/keyboard.js</file> | ||||
|     <file>ui/status/nightLight.js</file> | ||||
|     <file>ui/status/network.js</file> | ||||
|     <file>ui/status/power.js</file> | ||||
|     <file>ui/status/rfkill.js</file> | ||||
|   | ||||
| @@ -1,8 +0,0 @@ | ||||
| subdir('misc') | ||||
|  | ||||
| js_resources = gnome.compile_resources( | ||||
|   'js-resources', 'js-resources.gresource.xml', | ||||
|   source_dir: ['.', meson.current_build_dir()], | ||||
|   c_name: 'shell_js_resources', | ||||
|   dependencies: [config_js] | ||||
| ) | ||||
| @@ -1,19 +1,17 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| /* The name of this package (not localized) */ | ||||
| var PACKAGE_NAME = '@PACKAGE_NAME@'; | ||||
| const PACKAGE_NAME = '@PACKAGE_NAME@'; | ||||
| /* The version of this package */ | ||||
| var PACKAGE_VERSION = '@PACKAGE_VERSION@'; | ||||
| const PACKAGE_VERSION = '@PACKAGE_VERSION@'; | ||||
| /* 1 if gnome-bluetooth is available, 0 otherwise */ | ||||
| var HAVE_BLUETOOTH = @HAVE_BLUETOOTH@; | ||||
| const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@; | ||||
| /* 1 if networkmanager is available, 0 otherwise */ | ||||
| var HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@; | ||||
| const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@; | ||||
| /* gettext package */ | ||||
| var GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@'; | ||||
| const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@'; | ||||
| /* locale dir */ | ||||
| var LOCALEDIR = '@datadir@/locale'; | ||||
| const LOCALEDIR = '@datadir@/locale'; | ||||
| /* other standard directories */ | ||||
| var LIBEXECDIR = '@libexecdir@'; | ||||
| var SYSCONFDIR = '@sysconfdir@'; | ||||
| /* g-i package versions */ | ||||
| var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@' | ||||
| const LIBEXECDIR = '@libexecdir@'; | ||||
| const SYSCONFDIR = '@sysconfdir@'; | ||||
|   | ||||
| @@ -6,38 +6,29 @@ | ||||
| const Lang = imports.lang; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const GLib = imports.gi.GLib; | ||||
| const Gio = imports.gi.Gio; | ||||
| const ShellJS = imports.gi.ShellJS; | ||||
|  | ||||
| const Config = imports.misc.config; | ||||
| const FileUtils = imports.misc.fileUtils; | ||||
|  | ||||
| var ExtensionType = { | ||||
| const ExtensionType = { | ||||
|     SYSTEM: 1, | ||||
|     PER_USER: 2 | ||||
| }; | ||||
|  | ||||
| // Maps uuid -> metadata object | ||||
| var extensions = {}; | ||||
| const extensions = {}; | ||||
|  | ||||
| /** | ||||
|  * getCurrentExtension: | ||||
|  * | ||||
|  * Returns the current extension, or null if not called from an extension. | ||||
|  */ | ||||
| function getCurrentExtension() { | ||||
|     let stack = (new Error()).stack.split('\n'); | ||||
|     let extensionStackLine; | ||||
|     let stack = (new Error()).stack; | ||||
|  | ||||
|     // Search for an occurrence of an extension stack frame | ||||
|     // Start at 1 because 0 is the stack frame of this function | ||||
|     for (let i = 1; i < stack.length; i++) { | ||||
|         if (stack[i].indexOf('/gnome-shell/extensions/') > -1) { | ||||
|             extensionStackLine = stack[i]; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|     // Assuming we're importing this directly from an extension (and we shouldn't | ||||
|     // ever not be), its UUID should be directly in the path here. | ||||
|     let extensionStackLine = stack.split('\n')[1]; | ||||
|     if (!extensionStackLine) | ||||
|         return null; | ||||
|         throw new Error('Could not find current extension'); | ||||
|  | ||||
|     // The stack line is like: | ||||
|     //   init([object Object])@/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8 | ||||
| @@ -47,12 +38,12 @@ function getCurrentExtension() { | ||||
|     //   @/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8 | ||||
|     let match = new RegExp('@(.+):\\d+').exec(extensionStackLine); | ||||
|     if (!match) | ||||
|         return null; | ||||
|         throw new Error('Could not find current extension'); | ||||
|  | ||||
|     let path = match[1]; | ||||
|     let file = Gio.File.new_for_path(path); | ||||
|  | ||||
|     // Walk up the directory tree, looking for an extension with | ||||
|     // Walk up the directory tree, looking for an extesion with | ||||
|     // the same UUID as a directory name. | ||||
|     while (file != null) { | ||||
|         let extension = extensions[file.get_basename()]; | ||||
| @@ -61,7 +52,7 @@ function getCurrentExtension() { | ||||
|         file = file.get_parent(); | ||||
|     } | ||||
|  | ||||
|     return null; | ||||
|     throw new Error('Could not find current extension'); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -149,16 +140,15 @@ function createExtensionObject(uuid, dir, type) { | ||||
|     return extension; | ||||
| } | ||||
|  | ||||
| var _extension = null; | ||||
|  | ||||
| function installImporter(extension) { | ||||
|     let oldSearchPath = imports.searchPath.slice();  // make a copy | ||||
|     imports.searchPath = [extension.dir.get_parent().get_path()]; | ||||
|     // importing a "subdir" creates a new importer object that doesn't affect | ||||
|     // the global one | ||||
|     extension.imports = imports[extension.uuid]; | ||||
|     imports.searchPath = oldSearchPath; | ||||
|     _extension = extension; | ||||
|     ShellJS.add_extension_importer('imports.misc.extensionUtils._extension', 'imports', extension.path); | ||||
|     _extension = null; | ||||
| } | ||||
|  | ||||
| var ExtensionFinder = new Lang.Class({ | ||||
| const ExtensionFinder = new Lang.Class({ | ||||
|     Name: 'ExtensionFinder', | ||||
|  | ||||
|     _loadExtension: function(extensionDir, info, perUserDir) { | ||||
|   | ||||
| @@ -16,7 +16,7 @@ const PresenceIface = '<node> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| var PresenceStatus = { | ||||
| const PresenceStatus = { | ||||
|     AVAILABLE: 0, | ||||
|     INVISIBLE: 1, | ||||
|     BUSY: 2, | ||||
|   | ||||
| @@ -5,9 +5,9 @@ const Signals = imports.signals; | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const Params = imports.misc.params; | ||||
|  | ||||
| var DEFAULT_LIMIT = 512; | ||||
| const DEFAULT_LIMIT = 512; | ||||
|  | ||||
| var HistoryManager = new Lang.Class({ | ||||
| const HistoryManager = new Lang.Class({ | ||||
|     Name: 'HistoryManager', | ||||
|  | ||||
|     _init: function(params) { | ||||
| @@ -69,7 +69,7 @@ var HistoryManager = new Lang.Class({ | ||||
|             this._indexChanged(); | ||||
|         } | ||||
|  | ||||
|         return this._historyIndex ? this._history[this._historyIndex -1] : null; | ||||
|         return this._historyIndex[this._history.length]; | ||||
|     }, | ||||
|  | ||||
|     addItem: function(input) { | ||||
|   | ||||
| @@ -1,235 +0,0 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Gio = imports.gi.Gio; | ||||
| const GLib = imports.gi.GLib; | ||||
| const Lang = imports.lang; | ||||
| const Mainloop = imports.mainloop; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| let IBusCandidatePopup; | ||||
| try { | ||||
|     var IBus = imports.gi.IBus; | ||||
|     _checkIBusVersion(1, 5, 2); | ||||
|     IBusCandidatePopup = imports.ui.ibusCandidatePopup; | ||||
| } catch (e) { | ||||
|     var IBus = null; | ||||
|     log(e); | ||||
| } | ||||
|  | ||||
| let _ibusManager = null; | ||||
|  | ||||
| function _checkIBusVersion(requiredMajor, requiredMinor, requiredMicro) { | ||||
|     if ((IBus.MAJOR_VERSION > requiredMajor) || | ||||
|         (IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION > requiredMinor) || | ||||
|         (IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION == requiredMinor && | ||||
|          IBus.MICRO_VERSION >= requiredMicro)) | ||||
|         return; | ||||
|  | ||||
|     throw "Found IBus version %d.%d.%d but required is %d.%d.%d". | ||||
|         format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MINOR_VERSION, | ||||
|                requiredMajor, requiredMinor, requiredMicro); | ||||
| } | ||||
|  | ||||
| function getIBusManager() { | ||||
|     if (_ibusManager == null) | ||||
|         _ibusManager = new IBusManager(); | ||||
|     return _ibusManager; | ||||
| } | ||||
|  | ||||
| var IBusManager = new Lang.Class({ | ||||
|     Name: 'IBusManager', | ||||
|  | ||||
|     // This is the longest we'll keep the keyboard frozen until an input | ||||
|     // source is active. | ||||
|     _MAX_INPUT_SOURCE_ACTIVATION_TIME: 4000, // ms | ||||
|     _PRELOAD_ENGINES_DELAY_TIME: 30, // sec | ||||
|  | ||||
|     _init: function() { | ||||
|         if (!IBus) | ||||
|             return; | ||||
|  | ||||
|         IBus.init(); | ||||
|  | ||||
|         this._candidatePopup = new IBusCandidatePopup.CandidatePopup(); | ||||
|  | ||||
|         this._panelService = null; | ||||
|         this._engines = {}; | ||||
|         this._ready = false; | ||||
|         this._registerPropertiesId = 0; | ||||
|         this._currentEngineName = null; | ||||
|         this._preloadEnginesId = 0; | ||||
|  | ||||
|         this._ibus = IBus.Bus.new_async(); | ||||
|         this._ibus.connect('connected', Lang.bind(this, this._onConnected)); | ||||
|         this._ibus.connect('disconnected', Lang.bind(this, this._clear)); | ||||
|         // Need to set this to get 'global-engine-changed' emitions | ||||
|         this._ibus.set_watch_ibus_signal(true); | ||||
|         this._ibus.connect('global-engine-changed', Lang.bind(this, this._engineChanged)); | ||||
|  | ||||
|         this._spawn(); | ||||
|     }, | ||||
|  | ||||
|     _spawn: function() { | ||||
|         try { | ||||
|             Gio.Subprocess.new(['ibus-daemon', '--xim', '--panel', 'disable'], | ||||
|                                Gio.SubprocessFlags.NONE); | ||||
|         } catch(e) { | ||||
|             log('Failed to launch ibus-daemon: ' + e.message); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _clear: function() { | ||||
|         if (this._panelService) | ||||
|             this._panelService.destroy(); | ||||
|  | ||||
|         this._panelService = null; | ||||
|         this._candidatePopup.setPanelService(null); | ||||
|         this._engines = {}; | ||||
|         this._ready = false; | ||||
|         this._registerPropertiesId = 0; | ||||
|         this._currentEngineName = null; | ||||
|  | ||||
|         this.emit('ready', false); | ||||
|  | ||||
|         this._spawn(); | ||||
|     }, | ||||
|  | ||||
|     _onConnected: function() { | ||||
|         this._ibus.list_engines_async(-1, null, Lang.bind(this, this._initEngines)); | ||||
|         this._ibus.request_name_async(IBus.SERVICE_PANEL, | ||||
|                                       IBus.BusNameFlag.REPLACE_EXISTING, | ||||
|                                       -1, null, | ||||
|                                       Lang.bind(this, this._initPanelService)); | ||||
|     }, | ||||
|  | ||||
|     _initEngines: function(ibus, result) { | ||||
|         let enginesList = this._ibus.list_engines_async_finish(result); | ||||
|         if (enginesList) { | ||||
|             for (let i = 0; i < enginesList.length; ++i) { | ||||
|                 let name = enginesList[i].get_name(); | ||||
|                 this._engines[name] = enginesList[i]; | ||||
|             } | ||||
|             this._updateReadiness(); | ||||
|         } else { | ||||
|             this._clear(); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _initPanelService: function(ibus, result) { | ||||
|         let success = this._ibus.request_name_async_finish(result); | ||||
|         if (success) { | ||||
|             this._panelService = new IBus.PanelService({ connection: this._ibus.get_connection(), | ||||
|                                                          object_path: IBus.PATH_PANEL }); | ||||
|             this._candidatePopup.setPanelService(this._panelService); | ||||
|             this._panelService.connect('update-property', Lang.bind(this, this._updateProperty)); | ||||
|             try { | ||||
|                 // IBus versions older than 1.5.10 have a bug which | ||||
|                 // causes spurious set-content-type emissions when | ||||
|                 // switching input focus that temporarily lose purpose | ||||
|                 // and hints defeating its intended semantics and | ||||
|                 // confusing users. We thus don't use it in that case. | ||||
|                 _checkIBusVersion(1, 5, 10); | ||||
|                 this._panelService.connect('set-content-type', Lang.bind(this, this._setContentType)); | ||||
|             } catch (e) { | ||||
|             } | ||||
|             // If an engine is already active we need to get its properties | ||||
|             this._ibus.get_global_engine_async(-1, null, Lang.bind(this, function(i, result) { | ||||
|                 let engine; | ||||
|                 try { | ||||
|                     engine = this._ibus.get_global_engine_async_finish(result); | ||||
|                     if (!engine) | ||||
|                         return; | ||||
|                 } catch(e) { | ||||
|                     return; | ||||
|                 } | ||||
|                 this._engineChanged(this._ibus, engine.get_name()); | ||||
|             })); | ||||
|             this._updateReadiness(); | ||||
|         } else { | ||||
|             this._clear(); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _updateReadiness: function() { | ||||
|         this._ready = (Object.keys(this._engines).length > 0 && | ||||
|                        this._panelService != null); | ||||
|         this.emit('ready', this._ready); | ||||
|     }, | ||||
|  | ||||
|     _engineChanged: function(bus, engineName) { | ||||
|         if (!this._ready) | ||||
|             return; | ||||
|  | ||||
|         this._currentEngineName = engineName; | ||||
|  | ||||
|         if (this._registerPropertiesId != 0) | ||||
|             return; | ||||
|  | ||||
|         this._registerPropertiesId = | ||||
|             this._panelService.connect('register-properties', Lang.bind(this, function(p, props) { | ||||
|                 if (!props.get(0)) | ||||
|                     return; | ||||
|  | ||||
|                 this._panelService.disconnect(this._registerPropertiesId); | ||||
|                 this._registerPropertiesId = 0; | ||||
|  | ||||
|                 this.emit('properties-registered', this._currentEngineName, props); | ||||
|             })); | ||||
|     }, | ||||
|  | ||||
|     _updateProperty: function(panel, prop) { | ||||
|         this.emit('property-updated', this._currentEngineName, prop); | ||||
|     }, | ||||
|  | ||||
|     _setContentType: function(panel, purpose, hints) { | ||||
|         this.emit('set-content-type', purpose, hints); | ||||
|     }, | ||||
|  | ||||
|     activateProperty: function(key, state) { | ||||
|         this._panelService.property_activate(key, state); | ||||
|     }, | ||||
|  | ||||
|     getEngineDesc: function(id) { | ||||
|         if (!IBus || !this._ready || !this._engines.hasOwnProperty(id)) | ||||
|             return null; | ||||
|  | ||||
|         return this._engines[id]; | ||||
|     }, | ||||
|  | ||||
|     setEngine: function(id, callback) { | ||||
|         // Send id even if id == this._currentEngineName | ||||
|         // because 'properties-registered' signal can be emitted | ||||
|         // while this._ibusSources == null on a lock screen. | ||||
|         if (!IBus || !this._ready) { | ||||
|             if (callback) | ||||
|                 callback(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME, | ||||
|                                            null, callback); | ||||
|     }, | ||||
|  | ||||
|     preloadEngines: function(ids) { | ||||
|         if (!IBus || !this._ibus || ids.length == 0) | ||||
|             return; | ||||
|  | ||||
|         if (this._preloadEnginesId != 0) { | ||||
|             Mainloop.source_remove(this._preloadEnginesId); | ||||
|             this._preloadEnginesId = 0; | ||||
|         } | ||||
|  | ||||
|         this._preloadEnginesId = | ||||
|             Mainloop.timeout_add_seconds(this._PRELOAD_ENGINES_DELAY_TIME, | ||||
|                                          Lang.bind(this, function() { | ||||
|                                              this._ibus.preload_engines_async( | ||||
|                                                  ids, | ||||
|                                                  -1, | ||||
|                                                  null, | ||||
|                                                  null); | ||||
|                                              this._preloadEnginesId = 0; | ||||
|                                              return GLib.SOURCE_REMOVE; | ||||
|                                          })); | ||||
|     }, | ||||
| }); | ||||
| Signals.addSignalMethods(IBusManager.prototype); | ||||
| @@ -1,154 +0,0 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const GLib = imports.gi.GLib; | ||||
| const GnomeDesktop = imports.gi.GnomeDesktop; | ||||
| const Lang = imports.lang; | ||||
| const Meta = imports.gi.Meta; | ||||
|  | ||||
| const Main = imports.ui.main; | ||||
|  | ||||
| var DEFAULT_LOCALE = 'en_US'; | ||||
| var DEFAULT_LAYOUT = 'us'; | ||||
| var DEFAULT_VARIANT = ''; | ||||
|  | ||||
| let _xkbInfo = null; | ||||
|  | ||||
| function getXkbInfo() { | ||||
|     if (_xkbInfo == null) | ||||
|         _xkbInfo = new GnomeDesktop.XkbInfo(); | ||||
|     return _xkbInfo; | ||||
| } | ||||
|  | ||||
| let _keyboardManager = null; | ||||
|  | ||||
| function getKeyboardManager() { | ||||
|     if (_keyboardManager == null) | ||||
|         _keyboardManager = new KeyboardManager(); | ||||
|     return _keyboardManager; | ||||
| } | ||||
|  | ||||
| function releaseKeyboard() { | ||||
|     if (Main.modalCount > 0) | ||||
|         global.display.unfreeze_keyboard(global.get_current_time()); | ||||
|     else | ||||
|         global.display.ungrab_keyboard(global.get_current_time()); | ||||
| } | ||||
|  | ||||
| function holdKeyboard() { | ||||
|     global.display.freeze_keyboard(global.get_current_time()); | ||||
| } | ||||
|  | ||||
| var KeyboardManager = new Lang.Class({ | ||||
|     Name: 'KeyboardManager', | ||||
|  | ||||
|     // The XKB protocol doesn't allow for more that 4 layouts in a | ||||
|     // keymap. Wayland doesn't impose this limit and libxkbcommon can | ||||
|     // handle up to 32 layouts but since we need to support X clients | ||||
|     // even as a Wayland compositor, we can't bump this. | ||||
|     MAX_LAYOUTS_PER_GROUP: 4, | ||||
|  | ||||
|     _init: function() { | ||||
|         this._xkbInfo = getXkbInfo(); | ||||
|         this._current = null; | ||||
|         this._localeLayoutInfo = this._getLocaleLayout(); | ||||
|         this._layoutInfos = {}; | ||||
|     }, | ||||
|  | ||||
|     _applyLayoutGroup: function(group) { | ||||
|         let options = this._buildOptionsString(); | ||||
|         let [layouts, variants] = this._buildGroupStrings(group); | ||||
|         Meta.get_backend().set_keymap(layouts, variants, options); | ||||
|     }, | ||||
|  | ||||
|     _applyLayoutGroupIndex: function(idx) { | ||||
|         Meta.get_backend().lock_layout_group(idx); | ||||
|     }, | ||||
|  | ||||
|     apply: function(id) { | ||||
|         let info = this._layoutInfos[id]; | ||||
|         if (!info) | ||||
|             return; | ||||
|  | ||||
|         if (this._current && this._current.group == info.group) { | ||||
|             if (this._current.groupIndex != info.groupIndex) | ||||
|                 this._applyLayoutGroupIndex(info.groupIndex); | ||||
|         } else { | ||||
|             this._applyLayoutGroup(info.group); | ||||
|             this._applyLayoutGroupIndex(info.groupIndex); | ||||
|         } | ||||
|  | ||||
|         this._current = info; | ||||
|     }, | ||||
|  | ||||
|     reapply: function() { | ||||
|         if (!this._current) | ||||
|             return; | ||||
|  | ||||
|         this._applyLayoutGroup(this._current.group); | ||||
|         this._applyLayoutGroupIndex(this._current.groupIndex); | ||||
|     }, | ||||
|  | ||||
|     setUserLayouts: function(ids) { | ||||
|         this._current = null; | ||||
|         this._layoutInfos = {}; | ||||
|  | ||||
|         for (let i = 0; i < ids.length; ++i) { | ||||
|             let [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(ids[i]); | ||||
|             if (found) | ||||
|                 this._layoutInfos[ids[i]] = { id: ids[i], layout: _layout, variant: _variant }; | ||||
|         } | ||||
|  | ||||
|         let i = 0; | ||||
|         let group = []; | ||||
|         for (let id in this._layoutInfos) { | ||||
|             // We need to leave one slot on each group free so that we | ||||
|             // can add a layout containing the symbols for the | ||||
|             // language used in UI strings to ensure that toolkits can | ||||
|             // handle mnemonics like Alt+Ф even if the user is | ||||
|             // actually typing in a different layout. | ||||
|             let groupIndex = i % (this.MAX_LAYOUTS_PER_GROUP - 1); | ||||
|             if (groupIndex == 0) | ||||
|                 group = []; | ||||
|  | ||||
|             let info = this._layoutInfos[id]; | ||||
|             group[groupIndex] = info; | ||||
|             info.group = group; | ||||
|             info.groupIndex = groupIndex; | ||||
|  | ||||
|             i += 1; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _getLocaleLayout: function() { | ||||
|         let locale = GLib.get_language_names()[0]; | ||||
|         if (locale.indexOf('_') == -1) | ||||
|             locale = DEFAULT_LOCALE; | ||||
|  | ||||
|         let [found, , id] = GnomeDesktop.get_input_source_from_locale(locale); | ||||
|         if (!found) | ||||
|             [, , id] = GnomeDesktop.get_input_source_from_locale(DEFAULT_LOCALE); | ||||
|  | ||||
|         let _layout, _variant; | ||||
|         [found, , , _layout, _variant] = this._xkbInfo.get_layout_info(id); | ||||
|         if (found) | ||||
|             return { layout: _layout, variant: _variant }; | ||||
|         else | ||||
|             return { layout: DEFAULT_LAYOUT, variant: DEFAULT_VARIANT }; | ||||
|     }, | ||||
|  | ||||
|     _buildGroupStrings: function(_group) { | ||||
|         let group = _group.concat(this._localeLayoutInfo); | ||||
|         let layouts = group.map(function(g) { return g.layout; }).join(','); | ||||
|         let variants = group.map(function(g) { return g.variant; }).join(','); | ||||
|         return [layouts, variants]; | ||||
|     }, | ||||
|  | ||||
|     setKeyboardOptions: function(options) { | ||||
|         this._xkbOptions = options; | ||||
|     }, | ||||
|  | ||||
|     _buildOptionsString: function() { | ||||
|         let options = this._xkbOptions.join(','); | ||||
|         return options; | ||||
|     } | ||||
| }); | ||||
| @@ -40,9 +40,6 @@ const SystemdLoginSessionIface = '<node> \ | ||||
| <signal name="Lock" /> \ | ||||
| <signal name="Unlock" /> \ | ||||
| <property name="Active" type="b" access="read" /> \ | ||||
| <method name="SetLockedHint"> \ | ||||
|     <arg type="b" direction="in"/> \ | ||||
| </method> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| @@ -102,7 +99,7 @@ function getLoginManager() { | ||||
|     return _loginManager; | ||||
| } | ||||
|  | ||||
| var LoginManagerSystemd = new Lang.Class({ | ||||
| const LoginManagerSystemd = new Lang.Class({ | ||||
|     Name: 'LoginManagerSystemd', | ||||
|  | ||||
|     _init: function() { | ||||
| @@ -119,13 +116,7 @@ var LoginManagerSystemd = new Lang.Class({ | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let sessionId = GLib.getenv('XDG_SESSION_ID'); | ||||
|         if (!sessionId) { | ||||
|             log('Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session.'); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._proxy.GetSessionRemote(sessionId, Lang.bind(this, | ||||
|         this._proxy.GetSessionRemote(GLib.getenv('XDG_SESSION_ID'), Lang.bind(this, | ||||
|             function(result, error) { | ||||
|                 if (error) { | ||||
|                     logError(error, 'Could not get a proxy for the current session'); | ||||
| @@ -140,13 +131,10 @@ var LoginManagerSystemd = new Lang.Class({ | ||||
|  | ||||
|     canSuspend: function(asyncCallback) { | ||||
|         this._proxy.CanSuspendRemote(function(result, error) { | ||||
|             if (error) { | ||||
|                 asyncCallback(false, false); | ||||
|             } else { | ||||
|                 let needsAuth = result[0] == 'challenge'; | ||||
|                 let canSuspend = needsAuth || result[0] == 'yes'; | ||||
|                 asyncCallback(canSuspend, needsAuth); | ||||
|             } | ||||
|             if (error) | ||||
|                 asyncCallback(false); | ||||
|             else | ||||
|                 asyncCallback(result[0] != 'no'); | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
| @@ -189,7 +177,7 @@ var LoginManagerSystemd = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(LoginManagerSystemd.prototype); | ||||
|  | ||||
| var LoginManagerDummy = new Lang.Class({ | ||||
| const LoginManagerDummy = new Lang.Class({ | ||||
|     Name: 'LoginManagerDummy', | ||||
|  | ||||
|     getCurrentSessionProxy: function(callback) { | ||||
| @@ -199,7 +187,7 @@ var LoginManagerDummy = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     canSuspend: function(asyncCallback) { | ||||
|         asyncCallback(false, false); | ||||
|         asyncCallback(false); | ||||
|     }, | ||||
|  | ||||
|     listSessions: function(asyncCallback) { | ||||
|   | ||||
| @@ -1,16 +0,0 @@ | ||||
| jsconf = configuration_data() | ||||
| jsconf.set('PACKAGE_NAME', meson.project_name()) | ||||
| jsconf.set('PACKAGE_VERSION', meson.project_version()) | ||||
| jsconf.set('GETTEXT_PACKAGE', meson.project_name()) | ||||
| jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version) | ||||
| jsconf.set10('HAVE_BLUETOOTH', bt_dep.found()) | ||||
| jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) | ||||
| jsconf.set('datadir', datadir) | ||||
| jsconf.set('libexecdir', libexecdir) | ||||
| jsconf.set('sysconfdir', sysconfdir) | ||||
|  | ||||
| config_js = configure_file( | ||||
|   input: 'config.js.in', | ||||
|   output: 'config.js', | ||||
|   configuration: jsconf | ||||
| ) | ||||
| @@ -130,7 +130,7 @@ const ModemCdmaInterface = '<node> \ | ||||
|  | ||||
| const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface); | ||||
|  | ||||
| var ModemGsm = new Lang.Class({ | ||||
| const ModemGsm = new Lang.Class({ | ||||
|     Name: 'ModemGsm', | ||||
|  | ||||
|     _init: function(path) { | ||||
| @@ -172,7 +172,7 @@ var ModemGsm = new Lang.Class({ | ||||
| }); | ||||
| Signals.addSignalMethods(ModemGsm.prototype); | ||||
|  | ||||
| var ModemCdma = new Lang.Class({ | ||||
| const ModemCdma = new Lang.Class({ | ||||
|     Name: 'ModemCdma', | ||||
|  | ||||
|     _init: function(path) { | ||||
| @@ -244,7 +244,7 @@ const BroadbandModemCdmaInterface = '<node> \ | ||||
| </node>'; | ||||
| const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface); | ||||
|  | ||||
| var BroadbandModem = new Lang.Class({ | ||||
| const BroadbandModem = new Lang.Class({ | ||||
|     Name: 'BroadbandModem', | ||||
|  | ||||
|     _init: function(path, capabilities) { | ||||
|   | ||||
| @@ -26,7 +26,7 @@ const ObjectManagerIface = '<node> \ | ||||
|  | ||||
| const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); | ||||
|  | ||||
| var ObjectManager = new Lang.Class({ | ||||
| const ObjectManager = new Lang.Class({ | ||||
|     Name: 'ObjectManager', | ||||
|     _init: function(params) { | ||||
|         params = Params.parse(params, { connection: null, | ||||
| @@ -46,7 +46,7 @@ var ObjectManager = new Lang.Class({ | ||||
|                                                  g_interface_info: ObjectManagerInfo, | ||||
|                                                  g_name: this._serviceName, | ||||
|                                                  g_object_path: this._managerPath, | ||||
|                                                  g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START }); | ||||
|                                                  g_flags: Gio.DBusProxyFlags.NONE }); | ||||
|  | ||||
|         this._interfaceInfos = {}; | ||||
|         this._objects = {}; | ||||
| @@ -65,9 +65,6 @@ var ObjectManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _tryToCompleteLoad: function() { | ||||
|         if (this._numLoadInhibitors == 0) | ||||
|             return; | ||||
|  | ||||
|         this._numLoadInhibitors--; | ||||
|         if (this._numLoadInhibitors == 0) { | ||||
|             if (this._onLoaded) | ||||
| @@ -89,7 +86,7 @@ var ObjectManager = new Lang.Class({ | ||||
|                                        g_object_path: objectPath, | ||||
|                                        g_interface_name: interfaceName, | ||||
|                                        g_interface_info: info, | ||||
|                                        g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START }); | ||||
|                                        g_flags: Gio.DBusProxyFlags.NONE }); | ||||
|  | ||||
|         proxy.init_async(GLib.PRIORITY_DEFAULT, | ||||
|                          this._cancellable, | ||||
| @@ -184,18 +181,6 @@ var ObjectManager = new Lang.Class({ | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         this._managerProxy.connect('notify::g-name-owner', Lang.bind(this, function() { | ||||
|             if (this._managerProxy.g_name_owner) | ||||
|                 this._onNameAppeared(); | ||||
|             else | ||||
|                 this._onNameVanished(); | ||||
|         })); | ||||
|  | ||||
|         if (this._managerProxy.g_name_owner) | ||||
|             this._onNameAppeared(); | ||||
|     }, | ||||
|  | ||||
|     _onNameAppeared: function() { | ||||
|         this._managerProxy.GetManagedObjectsRemote(Lang.bind(this, function(result, error) { | ||||
|             if (!result) { | ||||
|                 if (error) { | ||||
| @@ -208,11 +193,6 @@ var ObjectManager = new Lang.Class({ | ||||
|  | ||||
|             let [objects] = result; | ||||
|  | ||||
|             if (!objects) { | ||||
|                 this._tryToCompleteLoad(); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             let objectPaths = Object.keys(objects); | ||||
|             for (let i = 0; i < objectPaths.length; i++) { | ||||
|                 let objectPath = objectPaths[i]; | ||||
| @@ -233,21 +213,6 @@ var ObjectManager = new Lang.Class({ | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|     _onNameVanished: function() { | ||||
|         let objectPaths = Object.keys(this._objects); | ||||
|         for (let i = 0; i < objectPaths.length; i++) { | ||||
|             let object = this._objects[objectPaths]; | ||||
|  | ||||
|             let interfaceNames = Object.keys(object); | ||||
|             for (let j = 0; i < interfaceNames.length; i++) { | ||||
|                 let interfaceName = interfaceNames[i]; | ||||
|  | ||||
|                 if (object[interfaceName]) | ||||
|                     this._removeInterface(objectPath, interfaceName); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _registerInterfaces: function(interfaces) { | ||||
|         for (let i = 0; i < interfaces.length; i++) { | ||||
|             let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]); | ||||
|   | ||||
| @@ -1,37 +0,0 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Gio = imports.gi.Gio; | ||||
|  | ||||
| const PermissionStoreIface = '<node> \ | ||||
|   <interface name="org.freedesktop.impl.portal.PermissionStore"> \ | ||||
|     <method name="Lookup"> \ | ||||
|       <arg name="table" type="s" direction="in"/> \ | ||||
|       <arg name="id" type="s" direction="in"/> \ | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> \ | ||||
|       <arg name="data" type="v" direction="out"/> \ | ||||
|     </method> \ | ||||
|     <method name="Set"> \ | ||||
|       <arg name="table" type="s" direction="in"/> \ | ||||
|       <arg name="create" type="b" direction="in"/> \ | ||||
|       <arg name="id" type="s" direction="in"/> \ | ||||
|       <arg name="app_permissions" type="a{sas}" direction="in"/> \ | ||||
|       <arg name="data" type="v" direction="in"/> \ | ||||
|     </method> \ | ||||
|     <signal name="Changed"> \ | ||||
|       <arg name="table" type="s" direction="out"/> \ | ||||
|       <arg name="id" type="s" direction="out"/> \ | ||||
|       <arg name="deleted" type="b" direction="out"/> \ | ||||
|       <arg name="data" type="v" direction="out"/> \ | ||||
|       <arg name="permissions" type="a{sas}" direction="out"/> \ | ||||
|     </signal> \ | ||||
|   </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface); | ||||
|  | ||||
| function PermissionStore(initCallback, cancellable) { | ||||
|     return new PermissionStoreProxy(Gio.DBus.session, | ||||
|                                     'org.freedesktop.impl.portal.PermissionStore', | ||||
|                                     '/org/freedesktop/impl/portal/PermissionStore', | ||||
|                                     initCallback, cancellable); | ||||
| }; | ||||
| @@ -25,7 +25,7 @@ function getSmartcardManager() { | ||||
|     return _smartcardManager; | ||||
| } | ||||
|  | ||||
| var SmartcardManager = new Lang.Class({ | ||||
| const SmartcardManager = new Lang.Class({ | ||||
|     Name: 'SmartcardManager', | ||||
|     _init: function() { | ||||
|         this._objectManager = new ObjectManager.ObjectManager({ connection: Gio.DBus.session, | ||||
|   | ||||
| @@ -1,440 +0,0 @@ | ||||
| const AccountsService = imports.gi.AccountsService; | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const Gdm = imports.gi.Gdm; | ||||
| const Gio = imports.gi.Gio; | ||||
| const GLib = imports.gi.GLib; | ||||
| const Lang = imports.lang; | ||||
| const Meta = imports.gi.Meta; | ||||
| const GObject = imports.gi.GObject; | ||||
|  | ||||
| const GnomeSession = imports.misc.gnomeSession; | ||||
| const LoginManager = imports.misc.loginManager; | ||||
| const Main = imports.ui.main; | ||||
|  | ||||
| const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; | ||||
| const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; | ||||
| const DISABLE_USER_SWITCH_KEY = 'disable-user-switching'; | ||||
| const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen'; | ||||
| const DISABLE_LOG_OUT_KEY = 'disable-log-out'; | ||||
| const DISABLE_RESTART_KEY = 'disable-restart-buttons'; | ||||
| const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out'; | ||||
|  | ||||
| const SENSOR_BUS_NAME = 'net.hadess.SensorProxy'; | ||||
| const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy'; | ||||
|  | ||||
| const SensorProxyInterface = '<node> \ | ||||
| <interface name="net.hadess.SensorProxy"> \ | ||||
|   <property name="HasAccelerometer" type="b" access="read"/> \ | ||||
| </interface> \ | ||||
| </node>'; | ||||
|  | ||||
| const POWER_OFF_ACTION_ID        = 'power-off'; | ||||
| const LOCK_SCREEN_ACTION_ID      = 'lock-screen'; | ||||
| const LOGOUT_ACTION_ID           = 'logout'; | ||||
| const SUSPEND_ACTION_ID          = 'suspend'; | ||||
| const SWITCH_USER_ACTION_ID      = 'switch-user'; | ||||
| const LOCK_ORIENTATION_ACTION_ID = 'lock-orientation'; | ||||
|  | ||||
| const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface); | ||||
|  | ||||
| let _singleton = null; | ||||
|  | ||||
| function getDefault() { | ||||
|     if (_singleton == null) | ||||
|         _singleton = new SystemActions(); | ||||
|  | ||||
|     return _singleton; | ||||
| } | ||||
|  | ||||
| const SystemActions = new Lang.Class({ | ||||
|     Name: 'SystemActions', | ||||
|     Extends: GObject.Object, | ||||
|     Properties: { | ||||
|         'can-power-off': GObject.ParamSpec.boolean('can-power-off', | ||||
|                                                    'can-power-off', | ||||
|                                                    'can-power-off', | ||||
|                                                    GObject.ParamFlags.READABLE, | ||||
|                                                    false), | ||||
|         'can-suspend': GObject.ParamSpec.boolean('can-suspend', | ||||
|                                                  'can-suspend', | ||||
|                                                  'can-suspend', | ||||
|                                                  GObject.ParamFlags.READABLE, | ||||
|                                                  false), | ||||
|         'can-lock-screen': GObject.ParamSpec.boolean('can-lock-screen', | ||||
|                                                      'can-lock-screen', | ||||
|                                                      'can-lock-screen', | ||||
|                                                      GObject.ParamFlags.READABLE, | ||||
|                                                      false), | ||||
|         'can-switch-user': GObject.ParamSpec.boolean('can-switch-user', | ||||
|                                                      'can-switch-user', | ||||
|                                                      'can-switch-user', | ||||
|                                                      GObject.ParamFlags.READABLE, | ||||
|                                                      false), | ||||
|         'can-logout': GObject.ParamSpec.boolean('can-logout', | ||||
|                                                 'can-logout', | ||||
|                                                 'can-logout', | ||||
|                                                 GObject.ParamFlags.READABLE, | ||||
|                                                 false), | ||||
|         'can-lock-orientation': GObject.ParamSpec.boolean('can-lock-orientation', | ||||
|                                                           'can-lock-orientation', | ||||
|                                                           'can-lock-orientation', | ||||
|                                                           GObject.ParamFlags.READABLE, | ||||
|                                                           false), | ||||
|         'orientation-lock-icon': GObject.ParamSpec.string('orientation-lock-icon', | ||||
|                                                           'orientation-lock-icon', | ||||
|                                                           'orientation-lock-icon', | ||||
|                                                           GObject.ParamFlags.READWRITE, | ||||
|                                                           null) | ||||
|     }, | ||||
|  | ||||
|     _init: function() { | ||||
|         this.parent(); | ||||
|  | ||||
|         this._canHavePowerOff = true; | ||||
|         this._canHaveSuspend = true; | ||||
|  | ||||
|         this._actions = new Map(); | ||||
|         this._actions.set(POWER_OFF_ACTION_ID, | ||||
|                           { // Translators: The name of the power-off action in search | ||||
|                             name: C_("search-result", "Power off"), | ||||
|                             iconName: 'system-shutdown-symbolic', | ||||
|                             // Translators: A list of keywords that match the power-off action, separated by semicolons | ||||
|                             keywords: _("power off;shutdown").split(';'), | ||||
|                             available: false }); | ||||
|         this._actions.set(LOCK_SCREEN_ACTION_ID, | ||||
|                           { // Translators: The name of the lock screen action in search | ||||
|                             name: C_("search-result", "Lock screen"), | ||||
|                             iconName: 'system-lock-screen-symbolic', | ||||
|                             // Translators: A list of keywords that match the lock screen action, separated by semicolons | ||||
|                             keywords: _("lock screen").split(';'), | ||||
|                             available: false }); | ||||
|         this._actions.set(LOGOUT_ACTION_ID, | ||||
|                           { // Translators: The name of the logout action in search | ||||
|                             name: C_("search-result", "Log out"), | ||||
|                             iconName: 'application-exit-symbolic', | ||||
|                             // Translators: A list of keywords that match the logout action, separated by semicolons | ||||
|                             keywords: _("logout;sign off").split(';'), | ||||
|                             available: false }); | ||||
|         this._actions.set(SUSPEND_ACTION_ID, | ||||
|                           { // Translators: The name of the suspend action in search | ||||
|                             name: C_("search-result", "Suspend"), | ||||
|                             iconName: 'media-playback-pause-symbolic', | ||||
|                             // Translators: A list of keywords that match the suspend action, separated by semicolons | ||||
|                             keywords: _("suspend;sleep").split(';'), | ||||
|                             available: false }); | ||||
|         this._actions.set(SWITCH_USER_ACTION_ID, | ||||
|                           { // Translators: The name of the switch user action in search | ||||
|                             name: C_("search-result", "Switch user"), | ||||
|                             iconName: 'system-switch-user-symbolic', | ||||
|                             // Translators: A list of keywords that match the switch user action, separated by semicolons | ||||
|                             keywords: _("switch user").split(';'), | ||||
|                             available: false }); | ||||
|         this._actions.set(LOCK_ORIENTATION_ACTION_ID, | ||||
|                           { // Translators: The name of the lock orientation action in search | ||||
|                             name: C_("search-result", "Lock orientation"), | ||||
|                             iconName: '', | ||||
|                             // Translators: A list of keywords that match the lock orientation action, separated by semicolons | ||||
|                             keywords: _("lock orientation").split(';'), | ||||
|                             available: false }); | ||||
|  | ||||
|         this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); | ||||
|         this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); | ||||
|         this._orientationSettings = new Gio.Settings({ schema_id: 'org.gnome.settings-daemon.peripherals.touchscreen' }); | ||||
|  | ||||
|         this._session = new GnomeSession.SessionManager(); | ||||
|         this._loginManager = LoginManager.getLoginManager(); | ||||
|         this._monitorManager = Meta.MonitorManager.get(); | ||||
|  | ||||
|         this._userManager = AccountsService.UserManager.get_default(); | ||||
|  | ||||
|         this._userManager.connect('notify::is-loaded', | ||||
|                                   () => { this._updateMultiUser(); }); | ||||
|         this._userManager.connect('notify::has-multiple-users', | ||||
|                                   () => { this._updateMultiUser(); }); | ||||
|         this._userManager.connect('user-added', | ||||
|                                   () => { this._updateMultiUser(); }); | ||||
|         this._userManager.connect('user-removed', | ||||
|                                   () => { this._updateMultiUser(); }); | ||||
|  | ||||
|         this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY, | ||||
|                                        () => { this._updateSwitchUser(); }); | ||||
|         this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY, | ||||
|                                        () => { this._updateLogout(); }); | ||||
|         global.settings.connect('changed::' + ALWAYS_SHOW_LOG_OUT_KEY, | ||||
|                                 () => { this._updateLogout(); }); | ||||
|  | ||||
|         this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY, | ||||
|                                        () => { this._updateLockScreen(); }); | ||||
|  | ||||
|         this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY, | ||||
|                                        () => { this._updateHaveShutdown(); }); | ||||
|  | ||||
|         this.forceUpdate(); | ||||
|  | ||||
|         this._orientationSettings.connect('changed::orientation-lock', | ||||
|                                           () => { this._updateOrientationLock(); | ||||
|                                                   this._updateOrientationLockIcon(); }); | ||||
|         Main.layoutManager.connect('monitors-changed', | ||||
|                                    () => { this._updateOrientationLock(); }); | ||||
|         Gio.DBus.system.watch_name(SENSOR_BUS_NAME, | ||||
|                                    Gio.BusNameWatcherFlags.NONE, | ||||
|                                    () => { this._sensorProxyAppeared(); }, | ||||
|                                    () => { | ||||
|                                        this._sensorProxy = null; | ||||
|                                        this._updateOrientationLock(); | ||||
|                                    }); | ||||
|         this._updateOrientationLock(); | ||||
|         this._updateOrientationLockIcon(); | ||||
|  | ||||
|         Main.sessionMode.connect('updated', () => { this._sessionUpdated(); }); | ||||
|         this._sessionUpdated(); | ||||
|     }, | ||||
|  | ||||
|     get can_power_off() { | ||||
|         return this._actions.get(POWER_OFF_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get can_suspend() { | ||||
|         return this._actions.get(SUSPEND_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get can_lock_screen() { | ||||
|         return this._actions.get(LOCK_SCREEN_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get can_switch_user() { | ||||
|         return this._actions.get(SWITCH_USER_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get can_logout() { | ||||
|         return this._actions.get(LOGOUT_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get can_lock_orientation() { | ||||
|         return this._actions.get(LOCK_ORIENTATION_ACTION_ID).available; | ||||
|     }, | ||||
|  | ||||
|     get orientation_lock_icon() { | ||||
|         return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName; | ||||
|     }, | ||||
|  | ||||
|     _sensorProxyAppeared: function() { | ||||
|         this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH, | ||||
|             (proxy, error)  => { | ||||
|                 if (error) { | ||||
|                     log(error.message); | ||||
|                     return; | ||||
|                 } | ||||
|                 this._sensorProxy.connect('g-properties-changed', | ||||
|                                           () => { this._updateOrientationLock(); }); | ||||
|                 this._updateOrientationLock(); | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
|     _updateOrientationLock: function() { | ||||
|         let available = false; | ||||
|         if (this._sensorProxy) | ||||
|             available = this._sensorProxy.HasAccelerometer && | ||||
|                         this._monitorManager.get_is_builtin_display_on(); | ||||
|  | ||||
|         this._actions.get(LOCK_ORIENTATION_ACTION_ID).available = available; | ||||
|  | ||||
|         this.notify('can-lock-orientation'); | ||||
|     }, | ||||
|  | ||||
|     _updateOrientationLockIcon: function() { | ||||
|         let locked = this._orientationSettings.get_boolean('orientation-lock'); | ||||
|         let iconName = locked ? 'rotation-locked-symbolic' | ||||
|                               : 'rotation-allowed-symbolic'; | ||||
|         this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName = iconName; | ||||
|  | ||||
|         this.notify('orientation-lock-icon'); | ||||
|     }, | ||||
|  | ||||
|     _sessionUpdated: function() { | ||||
|         this._updateLockScreen(); | ||||
|         this._updatePowerOff(); | ||||
|         this._updateSuspend(); | ||||
|         this._updateMultiUser(); | ||||
|     }, | ||||
|  | ||||
|     forceUpdate: function() { | ||||
|         // Whether those actions are available or not depends on both lockdown | ||||
|         // settings and Polkit policy - we don't get change notifications for the | ||||
|         // latter, so their value may be outdated; force an update now | ||||
|         this._updateHaveShutdown(); | ||||
|         this._updateHaveSuspend(); | ||||
|     }, | ||||
|  | ||||
|     getMatchingActions: function(terms) { | ||||
|         // terms is a list of strings | ||||
|         terms = terms.map((term) => { return term.toLowerCase(); }); | ||||
|  | ||||
|         let results = []; | ||||
|  | ||||
|         for (let [key, {available, keywords}] of this._actions) | ||||
|             if (available && terms.every(t => keywords.some(k => (k.indexOf(t) >= 0)))) | ||||
|                 results.push(key); | ||||
|  | ||||
|         return results; | ||||
|     }, | ||||
|  | ||||
|     getName: function(id) { | ||||
|         return this._actions.get(id).name; | ||||
|     }, | ||||
|  | ||||
|     getIconName: function(id) { | ||||
|         return this._actions.get(id).iconName; | ||||
|     }, | ||||
|  | ||||
|     activateAction: function(id) { | ||||
|         switch (id) { | ||||
|             case POWER_OFF_ACTION_ID: | ||||
|                 this.activatePowerOff(); | ||||
|                 break; | ||||
|             case LOCK_SCREEN_ACTION_ID: | ||||
|                 this.activateLockScreen(); | ||||
|                 break; | ||||
|             case LOGOUT_ACTION_ID: | ||||
|                 this.activateLogout(); | ||||
|                 break; | ||||
|             case SUSPEND_ACTION_ID: | ||||
|                 this.activateSuspend(); | ||||
|                 break; | ||||
|             case SWITCH_USER_ACTION_ID: | ||||
|                 this.activateSwitchUser(); | ||||
|                 break; | ||||
|             case LOCK_ORIENTATION_ACTION_ID: | ||||
|                 this.activateLockOrientation(); | ||||
|                 break; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _updateLockScreen() { | ||||
|         let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; | ||||
|         let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY); | ||||
|         this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock(); | ||||
|         this.notify('can-lock-screen'); | ||||
|     }, | ||||
|  | ||||
|     _updateHaveShutdown: function() { | ||||
|         this._session.CanShutdownRemote((result, error) => { | ||||
|             if (error) | ||||
|                 return; | ||||
|  | ||||
|             this._canHavePowerOff = result[0]; | ||||
|             this._updatePowerOff(); | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     _updatePowerOff: function() { | ||||
|         let disabled = Main.sessionMode.isLocked || | ||||
|                        (Main.sessionMode.isGreeter && | ||||
|                         this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY)); | ||||
|         this._actions.get(POWER_OFF_ACTION_ID).available = this._canHavePowerOff && !disabled; | ||||
|         this.notify('can-power-off'); | ||||
|     }, | ||||
|  | ||||
|     _updateHaveSuspend: function() { | ||||
|         this._loginManager.canSuspend( | ||||
|             (canSuspend, needsAuth) => { | ||||
|                 this._canHaveSuspend = canSuspend; | ||||
|                 this._suspendNeedsAuth = needsAuth; | ||||
|                 this._updateSuspend(); | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
|     _updateSuspend: function() { | ||||
|         let disabled = (Main.sessionMode.isLocked && | ||||
|                         this._suspendNeedsAuth) || | ||||
|                        (Main.sessionMode.isGreeter && | ||||
|                         this._loginScreenSettings.get_boolean(DISABLE_RESTART_KEY)); | ||||
|         this._actions.get(SUSPEND_ACTION_ID).available = this._canHaveSuspend && !disabled; | ||||
|         this.notify('can-suspend'); | ||||
|     }, | ||||
|  | ||||
|     _updateMultiUser: function() { | ||||
|         this._updateLogout(); | ||||
|         this._updateSwitchUser(); | ||||
|     }, | ||||
|  | ||||
|     _updateSwitchUser: function() { | ||||
|         let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY); | ||||
|         let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users; | ||||
|         let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; | ||||
|  | ||||
|         let visible = allowSwitch && multiUser && shouldShowInMode; | ||||
|         this._actions.get(SWITCH_USER_ACTION_ID).available = visible; | ||||
|         this.notify('can-switch-user'); | ||||
|  | ||||
|         return visible; | ||||
|     }, | ||||
|  | ||||
|     _updateLogout: function() { | ||||
|         let user = this._userManager.get_user(GLib.get_user_name()); | ||||
|  | ||||
|         let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY); | ||||
|         let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY); | ||||
|         let systemAccount = user.system_account; | ||||
|         let localAccount = user.local_account; | ||||
|         let multiUser = this._userManager.has_multiple_users; | ||||
|         let multiSession = Gdm.get_session_ids().length > 1; | ||||
|         let shouldShowInMode = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; | ||||
|  | ||||
|         let visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount) && shouldShowInMode; | ||||
|         this._actions.get(LOGOUT_ACTION_ID).available = visible; | ||||
|         this.notify('can-logout'); | ||||
|  | ||||
|         return visible; | ||||
|     }, | ||||
|  | ||||
|     activateLockOrientation: function() { | ||||
|         if (!this._actions.get(LOCK_ORIENTATION_ACTION_ID).available) | ||||
|             throw new Error('The lock-orientation action is not available!'); | ||||
|  | ||||
|         let locked = this._orientationSettings.get_boolean('orientation-lock'); | ||||
|         this._orientationSettings.set_boolean('orientation-lock', !locked); | ||||
|     }, | ||||
|  | ||||
|     activateLockScreen: function() { | ||||
|         if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available) | ||||
|             throw new Error('The lock-screen action is not available!'); | ||||
|  | ||||
|         Main.screenShield.lock(true); | ||||
|     }, | ||||
|  | ||||
|     activateSwitchUser: function() { | ||||
|         if (!this._actions.get(SWITCH_USER_ACTION_ID).available) | ||||
|             throw new Error('The switch-user action is not available!'); | ||||
|  | ||||
|         if (Main.screenShield) | ||||
|             Main.screenShield.lock(false); | ||||
|  | ||||
|         Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, function() { | ||||
|             Gdm.goto_login_session_sync(null); | ||||
|             return false; | ||||
|         }); | ||||
|     }, | ||||
|  | ||||
|     activateLogout: function() { | ||||
|         if (!this._actions.get(LOGOUT_ACTION_ID).available) | ||||
|             throw new Error('The logout action is not available!'); | ||||
|  | ||||
|         Main.overview.hide(); | ||||
|         this._session.LogoutRemote(0); | ||||
|     }, | ||||
|  | ||||
|     activatePowerOff: function() { | ||||
|         if (!this._actions.get(POWER_OFF_ACTION_ID).available) | ||||
|             throw new Error('The power-off action is not available!'); | ||||
|  | ||||
|         this._session.ShutdownRemote(0); | ||||
|     }, | ||||
|  | ||||
|     activateSuspend: function() { | ||||
|         if (!this._actions.get(SUSPEND_ACTION_ID).available) | ||||
|             throw new Error('The suspend action is not available!'); | ||||
|  | ||||
|         this._loginManager.suspend(); | ||||
|     } | ||||
| }); | ||||
							
								
								
									
										238
									
								
								js/misc/util.js
									
									
									
									
									
								
							
							
						
						| @@ -1,20 +1,15 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Clutter = imports.gi.Clutter; | ||||
| const Gettext = imports.gettext; | ||||
| const Gio = imports.gi.Gio; | ||||
| const GLib = imports.gi.GLib; | ||||
| const Lang = imports.lang; | ||||
| const Mainloop = imports.mainloop; | ||||
| const Signals = imports.signals; | ||||
| const Shell = imports.gi.Shell; | ||||
| const St = imports.gi.St; | ||||
|  | ||||
| const Main = imports.ui.main; | ||||
| const Tweener = imports.ui.tweener; | ||||
| const Params = imports.misc.params; | ||||
|  | ||||
| var SCROLL_TIME = 0.1; | ||||
| const SCROLL_TIME = 0.1; | ||||
|  | ||||
| // http://daringfireball.net/2010/07/improved_regex_for_matching_urls | ||||
| const _balancedParens = '\\((?:[^\\s()<>]+|(?:\\(?:[^\\s()<>]+\\)))*\\)'; | ||||
| @@ -43,8 +38,6 @@ const _urlRegexp = new RegExp( | ||||
|         ')' + | ||||
|     ')', 'gi'); | ||||
|  | ||||
| let _desktopSettings = null; | ||||
|  | ||||
| // findUrls: | ||||
| // @str: string to find URLs in | ||||
| // | ||||
| @@ -164,142 +157,6 @@ function _handleSpawnError(command, err) { | ||||
|     Main.notifyError(title, err.message); | ||||
| } | ||||
|  | ||||
| function formatTimeSpan(date) { | ||||
|     let now = GLib.DateTime.new_now_local(); | ||||
|  | ||||
|     let timespan = now.difference(date); | ||||
|  | ||||
|     let minutesAgo = timespan / GLib.TIME_SPAN_MINUTE; | ||||
|     let hoursAgo = timespan / GLib.TIME_SPAN_HOUR; | ||||
|     let daysAgo = timespan / GLib.TIME_SPAN_DAY; | ||||
|     let weeksAgo = daysAgo / 7; | ||||
|     let monthsAgo = daysAgo / 30; | ||||
|     let yearsAgo = weeksAgo / 52; | ||||
|  | ||||
|     if (minutesAgo < 5) | ||||
|         return _("Just now"); | ||||
|     if (hoursAgo < 1) | ||||
|         return Gettext.ngettext("%d minute ago", | ||||
|                                 "%d minutes ago", minutesAgo).format(minutesAgo); | ||||
|     if (daysAgo < 1) | ||||
|         return Gettext.ngettext("%d hour ago", | ||||
|                                 "%d hours ago", hoursAgo).format(hoursAgo); | ||||
|     if (daysAgo < 2) | ||||
|         return _("Yesterday"); | ||||
|     if (daysAgo < 15) | ||||
|         return Gettext.ngettext("%d day ago", | ||||
|                                 "%d days ago", daysAgo).format(daysAgo); | ||||
|     if (weeksAgo < 8) | ||||
|         return Gettext.ngettext("%d week ago", | ||||
|                                 "%d weeks ago", weeksAgo).format(weeksAgo); | ||||
|     if (yearsAgo < 1) | ||||
|         return Gettext.ngettext("%d month ago", | ||||
|                                 "%d months ago", monthsAgo).format(monthsAgo); | ||||
|     return Gettext.ngettext("%d year ago", | ||||
|                             "%d years ago", yearsAgo).format(yearsAgo); | ||||
| } | ||||
|  | ||||
| function formatTime(time, params) { | ||||
|     let date; | ||||
|     // HACK: The built-in Date type sucks at timezones, which we need for the | ||||
|     //       world clock; it's often more convenient though, so allow either | ||||
|     //       Date or GLib.DateTime as parameter | ||||
|     if (time instanceof Date) | ||||
|         date = GLib.DateTime.new_from_unix_local(time.getTime() / 1000); | ||||
|     else | ||||
|         date = time; | ||||
|  | ||||
|     let now = GLib.DateTime.new_now_local(); | ||||
|  | ||||
|     let daysAgo = now.difference(date) / (24 * 60 * 60 * 1000 * 1000); | ||||
|  | ||||
|     let format; | ||||
|  | ||||
|     if (_desktopSettings == null) | ||||
|         _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); | ||||
|     let clockFormat = _desktopSettings.get_string('clock-format'); | ||||
|  | ||||
|     params = Params.parse(params, { timeOnly: false }); | ||||
|  | ||||
|     if (clockFormat == '24h') { | ||||
|         // Show only the time if date is on today | ||||
|         if (daysAgo < 1 || params.timeOnly) | ||||
|             /* Translators: Time in 24h format */ | ||||
|             format = N_("%H\u2236%M"); | ||||
|         // Show the word "Yesterday" and time if date is on yesterday | ||||
|         else if (daysAgo <2) | ||||
|             /* Translators: this is the word "Yesterday" followed by a | ||||
|              time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("Yesterday, %H\u2236%M"); | ||||
|         // Show a week day and time if date is in the last week | ||||
|         else if (daysAgo < 7) | ||||
|             /* Translators: this is the week day name followed by a time | ||||
|              string in 24h format. i.e. "Monday, 14:30" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%A, %H\u2236%M"); | ||||
|         else if (date.get_year() == now.get_year()) | ||||
|             /* Translators: this is the month name and day number | ||||
|              followed by a time string in 24h format. | ||||
|              i.e. "May 25, 14:30" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%B %d, %H\u2236%M"); | ||||
|         else | ||||
|             /* Translators: this is the month name, day number, year | ||||
|              number followed by a time string in 24h format. | ||||
|              i.e. "May 25 2012, 14:30" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%B %d %Y, %H\u2236%M"); | ||||
|     } else { | ||||
|         // Show only the time if date is on today | ||||
|         if (daysAgo < 1 || params.timeOnly) | ||||
|             /* Translators: Time in 12h format */ | ||||
|             format = N_("%l\u2236%M %p"); | ||||
|         // Show the word "Yesterday" and time if date is on yesterday | ||||
|         else if (daysAgo <2) | ||||
|             /* Translators: this is the word "Yesterday" followed by a | ||||
|              time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("Yesterday, %l\u2236%M %p"); | ||||
|         // Show a week day and time if date is in the last week | ||||
|         else if (daysAgo < 7) | ||||
|             /* Translators: this is the week day name followed by a time | ||||
|              string in 12h format. i.e. "Monday, 2:30 pm" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%A, %l\u2236%M %p"); | ||||
|         else if (date.get_year() == now.get_year()) | ||||
|             /* Translators: this is the month name and day number | ||||
|              followed by a time string in 12h format. | ||||
|              i.e. "May 25, 2:30 pm" */ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%B %d, %l\u2236%M %p"); | ||||
|         else | ||||
|             /* Translators: this is the month name, day number, year | ||||
|              number followed by a time string in 12h format. | ||||
|              i.e. "May 25 2012, 2:30 pm"*/ | ||||
|             // xgettext:no-c-format | ||||
|             format = N_("%B %d %Y, %l\u2236%M %p"); | ||||
|     } | ||||
|  | ||||
|     let formattedTime = date.format(Shell.util_translate_time_string(format)); | ||||
|     // prepend LTR-mark to colon/ratio to force a text direction on times | ||||
|     return formattedTime.replace(/([:\u2236])/g, '\u200e$1'); | ||||
| } | ||||
|  | ||||
| function createTimeLabel(date, params) { | ||||
|     if (_desktopSettings == null) | ||||
|         _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); | ||||
|  | ||||
|     let label = new St.Label({ text: formatTime(date, params) }); | ||||
|     let id = _desktopSettings.connect('changed::clock-format', function() { | ||||
|         label.text = formatTime(date, params); | ||||
|     }); | ||||
|     label.connect('destroy', function() { | ||||
|         _desktopSettings.disconnect(id); | ||||
|     }); | ||||
|     return label; | ||||
| } | ||||
|  | ||||
| // lowerBound: | ||||
| // @array: an array or array-like object, already sorted | ||||
| //         according to @cmp | ||||
| @@ -350,7 +207,7 @@ function insertSorted(array, val, cmp) { | ||||
|     return pos; | ||||
| } | ||||
|  | ||||
| var CloseButton = new Lang.Class({ | ||||
| const CloseButton = new Lang.Class({ | ||||
|     Name: 'CloseButton', | ||||
|     Extends: St.Button, | ||||
|  | ||||
| @@ -438,94 +295,3 @@ function ensureActorVisibleInScrollView(scrollView, actor) { | ||||
|                        time: SCROLL_TIME, | ||||
|                        transition: 'easeOutQuad' }); | ||||
| } | ||||
|  | ||||
| var AppSettingsMonitor = new Lang.Class({ | ||||
|     Name: 'AppSettingsMonitor', | ||||
|  | ||||
|     _init: function(appId, schemaId) { | ||||
|         this._appId = appId; | ||||
|         this._schemaId = schemaId; | ||||
|  | ||||
|         this._app = null; | ||||
|         this._settings = null; | ||||
|         this._handlers = []; | ||||
|  | ||||
|         this._schemaSource = Gio.SettingsSchemaSource.get_default(); | ||||
|  | ||||
|         this._appSystem = Shell.AppSystem.get_default(); | ||||
|         this._appSystem.connect('installed-changed', | ||||
|                                 Lang.bind(this, this._onInstalledChanged)); | ||||
|         this._onInstalledChanged(); | ||||
|     }, | ||||
|  | ||||
|     get available() { | ||||
|         return this._app != null && this._settings != null; | ||||
|     }, | ||||
|  | ||||
|     activateApp: function() { | ||||
|         if (this._app) | ||||
|             this._app.activate(); | ||||
|     }, | ||||
|  | ||||
|     watchSetting: function(key, callback) { | ||||
|         let handler = { id: 0, key: key, callback: callback }; | ||||
|         this._handlers.push(handler); | ||||
|  | ||||
|         this._connectHandler(handler); | ||||
|     }, | ||||
|  | ||||
|     _connectHandler: function(handler) { | ||||
|         if (!this._settings || handler.id > 0) | ||||
|             return; | ||||
|  | ||||
|         handler.id = this._settings.connect('changed::' + handler.key, | ||||
|                                             handler.callback); | ||||
|         handler.callback(this._settings, handler.key); | ||||
|     }, | ||||
|  | ||||
|     _disconnectHandler: function(handler) { | ||||
|         if (this._settings && handler.id > 0) | ||||
|             this._settings.disconnect(handler.id); | ||||
|         handler.id = 0; | ||||
|     }, | ||||
|  | ||||
|     _onInstalledChanged: function() { | ||||
|         let hadApp = (this._app != null); | ||||
|         this._app = this._appSystem.lookup_app(this._appId); | ||||
|         let haveApp = (this._app != null); | ||||
|  | ||||
|         if (hadApp == haveApp) | ||||
|             return; | ||||
|  | ||||
|         if (haveApp) | ||||
|             this._checkSettings(); | ||||
|         else | ||||
|             this._setSettings(null); | ||||
|     }, | ||||
|  | ||||
|     _setSettings: function(settings) { | ||||
|         this._handlers.forEach((handler) => { this._disconnectHandler(handler); }); | ||||
|  | ||||
|         let hadSettings = (this._settings != null); | ||||
|         this._settings = settings; | ||||
|         let haveSettings = (this._settings != null); | ||||
|  | ||||
|         this._handlers.forEach((handler) => { this._connectHandler(handler); }); | ||||
|  | ||||
|         if (hadSettings != haveSettings) | ||||
|             this.emit('available-changed'); | ||||
|     }, | ||||
|  | ||||
|     _checkSettings: function() { | ||||
|         let schema = this._schemaSource.lookup(this._schemaId, true); | ||||
|         if (schema) { | ||||
|             this._setSettings(new Gio.Settings({ settings_schema: schema })); | ||||
|         } else if (this._app) { | ||||
|             Mainloop.timeout_add_seconds(1, () => { | ||||
|                 this._checkSettings(); | ||||
|                 return GLib.SOURCE_REMOVE; | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(AppSettingsMonitor.prototype); | ||||
|   | ||||
| @@ -1,247 +0,0 @@ | ||||
| // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- | ||||
|  | ||||
| const Geoclue = imports.gi.Geoclue; | ||||
| const Gio = imports.gi.Gio; | ||||
| const GLib = imports.gi.GLib; | ||||
| const GWeather = imports.gi.GWeather; | ||||
| const Lang = imports.lang; | ||||
| const Signals = imports.signals; | ||||
|  | ||||
| const PermissionStore = imports.misc.permissionStore; | ||||
| const Util = imports.misc.util; | ||||
|  | ||||
| // Minimum time between updates to show loading indication | ||||
| var UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE; | ||||
|  | ||||
| var WeatherClient = new Lang.Class({ | ||||
|     Name: 'WeatherClient', | ||||
|  | ||||
|     _init: function() { | ||||
|         this._loading = false; | ||||
|         this._locationValid = false; | ||||
|         this._lastUpdate = GLib.DateTime.new_from_unix_local(0); | ||||
|  | ||||
|         this._autoLocationRequested = false; | ||||
|         this._mostRecentLocation = null; | ||||
|  | ||||
|         this._gclueService = null; | ||||
|         this._gclueStarted = false; | ||||
|         this._gclueStarting = false; | ||||
|         this._gclueLocationChangedId = 0; | ||||
|  | ||||
|         this._weatherAuthorized = false; | ||||
|         this._permStore = new PermissionStore.PermissionStore((proxy, error) => { | ||||
|             if (error) { | ||||
|                 log('Failed to connect to permissionStore: ' + error.message); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             this._permStore.LookupRemote('gnome', 'geolocation', (res, error) => { | ||||
|                 if (error) | ||||
|                     log('Error looking up permission: ' + error.message); | ||||
|  | ||||
|                 let [perms, data] = error ? [{}, null] : res; | ||||
|                 let  params = ['gnome', 'geolocation', false, data, perms]; | ||||
|                 this._onPermStoreChanged(this._permStore, '', params); | ||||
|             }); | ||||
|         }); | ||||
|         this._permStore.connectSignal('Changed', | ||||
|                                       Lang.bind(this, this._onPermStoreChanged)); | ||||
|  | ||||
|         this._locationSettings = new Gio.Settings({ schema_id: 'org.gnome.system.location' }); | ||||
|         this._locationSettings.connect('changed::enabled', | ||||
|                                        Lang.bind(this, this._updateAutoLocation)); | ||||
|  | ||||
|         this._world = GWeather.Location.get_world(); | ||||
|  | ||||
|         this._providers = GWeather.Provider.METAR | | ||||
|                           GWeather.Provider.YR_NO | | ||||
|                           GWeather.Provider.OWM; | ||||
|  | ||||
|         this._weatherInfo = new GWeather.Info({ enabled_providers: 0 }); | ||||
|         this._weatherInfo.connect_after('updated', () => { | ||||
|             this._lastUpdate = GLib.DateTime.new_now_local(); | ||||
|             this.emit('changed'); | ||||
|         }); | ||||
|  | ||||
|         this._weatherAppMon = new Util.AppSettingsMonitor('org.gnome.Weather.Application.desktop', | ||||
|                                                           'org.gnome.Weather.Application'); | ||||
|         this._weatherAppMon.connect('available-changed', () => { this.emit('changed'); }); | ||||
|         this._weatherAppMon.watchSetting('automatic-location', | ||||
|                                          Lang.bind(this, this._onAutomaticLocationChanged)); | ||||
|         this._weatherAppMon.watchSetting('locations', | ||||
|                                          Lang.bind(this, this._onLocationsChanged)); | ||||
|     }, | ||||
|  | ||||
|     get available() { | ||||
|         return this._weatherAppMon.available; | ||||
|     }, | ||||
|  | ||||
|     get loading() { | ||||
|         return this._loading; | ||||
|     }, | ||||
|  | ||||
|     get hasLocation() { | ||||
|         return this._locationValid; | ||||
|     }, | ||||
|  | ||||
|     get info() { | ||||
|         return this._weatherInfo; | ||||
|     }, | ||||
|  | ||||
|     activateApp: function() { | ||||
|         this._weatherAppMon.activateApp(); | ||||
|     }, | ||||
|  | ||||
|     update: function() { | ||||
|         if (!this._locationValid) | ||||
|             return; | ||||
|  | ||||
|         let now = GLib.DateTime.new_now_local(); | ||||
|         // Update without loading indication if the current info is recent enough | ||||
|         if (this._weatherInfo.is_valid() && | ||||
|             now.difference(this._lastUpdate) < UPDATE_THRESHOLD) | ||||
|             this._weatherInfo.update(); | ||||
|         else | ||||
|             this._loadInfo(); | ||||
|     }, | ||||
|  | ||||
|     get _useAutoLocation() { | ||||
|         return this._autoLocationRequested && | ||||
|                this._locationSettings.get_boolean('enabled') && | ||||
|                this._weatherAuthorized; | ||||
|     }, | ||||
|  | ||||
|     _loadInfo: function() { | ||||
|         let id = this._weatherInfo.connect('updated', () => { | ||||
|             this._weatherInfo.disconnect(id); | ||||
|             this._loading = false; | ||||
|         }); | ||||
|  | ||||
|         this._loading = true; | ||||
|         this.emit('changed'); | ||||
|  | ||||
|         this._weatherInfo.update(); | ||||
|     }, | ||||
|  | ||||
|     _locationsEqual: function(loc1, loc2) { | ||||
|         if (loc1 == loc2) | ||||
|             return true; | ||||
|  | ||||
|         if (loc1 == null || loc2 == null) | ||||
|             return false; | ||||
|  | ||||
|         return loc1.equal(loc2); | ||||
|     }, | ||||
|  | ||||
|     _setLocation: function(location) { | ||||
|         if (this._locationsEqual(this._weatherInfo.location, location)) | ||||
|             return; | ||||
|  | ||||
|         this._weatherInfo.abort(); | ||||
|         this._weatherInfo.set_location(location); | ||||
|         this._locationValid = (location != null); | ||||
|  | ||||
|         this._weatherInfo.set_enabled_providers(location ? this._providers : 0); | ||||
|  | ||||
|         if (location) | ||||
|             this._loadInfo(); | ||||
|         else | ||||
|             this.emit('changed'); | ||||
|     }, | ||||
|  | ||||
|     _updateLocationMonitoring: function() { | ||||
|         if (this._useAutoLocation) { | ||||
|             if (this._gclueLocationChangedId != 0 || this._gclueService == null) | ||||
|                 return; | ||||
|  | ||||
|             this._gclueLocationChangedId = | ||||
|                 this._gclueService.connect('notify::location', | ||||
|                                            Lang.bind(this, this._onGClueLocationChanged)); | ||||
|             this._onGClueLocationChanged(); | ||||
|         } else { | ||||
|             if (this._gclueLocationChangedId) | ||||
|                 this._gclueService.disconnect(this._gclueLocationChangedId); | ||||
|             this._gclueLocationChangedId = 0; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _startGClueService: function() { | ||||
|         if (this._gclueStarting) | ||||
|             return; | ||||
|  | ||||
|         this._gclueStarting = true; | ||||
|  | ||||
|         Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null, | ||||
|             (o, res) => { | ||||
|                 try { | ||||
|                     this._gclueService = Geoclue.Simple.new_finish(res); | ||||
|                 } catch(e) { | ||||
|                     log('Failed to connect to Geoclue2 service: ' + e.message); | ||||
|                     this._setLocation(this._mostRecentLocation); | ||||
|                     return; | ||||
|                 } | ||||
|                 this._gclueStarted = true; | ||||
|                 this._gclueService.get_client().distance_threshold = 100; | ||||
|                 this._updateLocationMonitoring(); | ||||
|             }); | ||||
|     }, | ||||
|  | ||||
|     _onGClueLocationChanged: function() { | ||||
|         let geoLocation = this._gclueService.location; | ||||
|         let location = GWeather.Location.new_detached(geoLocation.description, | ||||
|                                                       null, | ||||
|                                                       geoLocation.latitude, | ||||
|                                                       geoLocation.longitude); | ||||
|         this._setLocation(location); | ||||
|     }, | ||||
|  | ||||
|     _onAutomaticLocationChanged: function(settings, key) { | ||||
|         let useAutoLocation = settings.get_boolean(key); | ||||
|         if (this._autoLocationRequested == useAutoLocation) | ||||
|             return; | ||||
|  | ||||
|         this._autoLocationRequested = useAutoLocation; | ||||
|  | ||||
|         this._updateAutoLocation(); | ||||
|     }, | ||||
|  | ||||
|     _updateAutoLocation: function() { | ||||
|         this._updateLocationMonitoring(); | ||||
|  | ||||
|         if (this._useAutoLocation) | ||||
|             this._startGClueService(); | ||||
|         else | ||||
|             this._setLocation(this._mostRecentLocation); | ||||
|     }, | ||||
|  | ||||
|     _onLocationsChanged: function(settings, key) { | ||||
|         let serialized = settings.get_value(key).deep_unpack().shift(); | ||||
|         let mostRecentLocation = null; | ||||
|  | ||||
|         if (serialized) | ||||
|             mostRecentLocation = this._world.deserialize(serialized); | ||||
|  | ||||
|         if (this._locationsEqual(this._mostRecentLocation, mostRecentLocation)) | ||||
|             return; | ||||
|  | ||||
|         this._mostRecentLocation = mostRecentLocation; | ||||
|  | ||||
|         if (!this._useAutoLocation || !this._gclueStarted) | ||||
|             this._setLocation(this._mostRecentLocation); | ||||
|     }, | ||||
|  | ||||
|     _onPermStoreChanged: function(proxy, sender, params) { | ||||
|         let [table, id, deleted, data, perms] = params; | ||||
|  | ||||
|         if (table != 'gnome' || id != 'geolocation') | ||||
|             return; | ||||
|  | ||||
|         let permission = perms['org.gnome.Weather.Application'] || ['NONE']; | ||||
|         let [accuracy] = permission; | ||||
|         this._weatherAuthorized = accuracy != 'NONE'; | ||||
|  | ||||
|         this._updateAutoLocation(); | ||||
|     } | ||||
| }); | ||||
| Signals.addSignalMethods(WeatherClient.prototype); | ||||
| @@ -72,9 +72,6 @@ function run() { | ||||
|     Scripting.defineScriptEvent("applicationsShowStart", "Starting to switch to applications view"); | ||||
|     Scripting.defineScriptEvent("applicationsShowDone", "Done switching to applications view"); | ||||
|  | ||||
|     // Enable recording of timestamps for different points in the frame cycle | ||||
|     global.frame_timestamps = true; | ||||
|  | ||||
|     Main.overview.connect('shown', function() { | ||||
|                               Scripting.scriptEvent('overviewShowDone'); | ||||
|                           }); | ||||
| @@ -90,10 +87,7 @@ function run() { | ||||
|             yield Scripting.destroyTestWindows(); | ||||
|  | ||||
|             for (let k = 0; k < config.count; k++) | ||||
|                 yield Scripting.createTestWindow({ width: config.width, | ||||
|                                                    height: config.height, | ||||
|                                                    alpha: config.alpha, | ||||
|                                                    maximized: config.maximized }); | ||||
|                 yield Scripting.createTestWindow(config.width, config.height, config.alpha, config.maximized); | ||||
|  | ||||
|             yield Scripting.waitTestWindows(); | ||||
|             yield Scripting.sleep(1000); | ||||
|   | ||||