gnome-shell r6 - in trunk: js/ui src



Author: otaylor
Date: Fri Oct 31 15:20:54 2008
New Revision: 6
URL: http://svn.gnome.org/viewvc/gnome-shell?rev=6&view=rev

Log:
Extend ShellGlobal object with more properties

* Add screen-width, screen-height, overlay-group properties
* Add set_stage_input_area() function
* Fix main.js to rotate DRAFT properly


Modified:
   trunk/js/ui/main.js
   trunk/src/gnome-shell-plugin.c
   trunk/src/metacity-symbols.c
   trunk/src/shell-global.c
   trunk/src/shell-global.h

Modified: trunk/js/ui/main.js
==============================================================================
--- trunk/js/ui/main.js	(original)
+++ trunk/js/ui/main.js	Fri Oct 31 15:20:54 2008
@@ -6,8 +6,8 @@
 
     let message = new Clutter.Label({font_name: "Sans Bold 64px", text: "DRAFT"});
     message.set_opacity(75);
-    // Not working for unclear reasons
-    // message.set_rotation(Clutter.RotateAxis.Z_AXIS, - 45, 0, 0, 0);
-    message.set_position(100, 100);
-    global.get_overlay_group().add_actor(message);
+    message.set_anchor_point_from_gravity (Clutter.Gravity.CENTER);
+    message.set_rotation(Clutter.RotateAxis.Z_AXIS, - 45, 0, 0, 0);
+    message.set_position(global.screen_width / 2, global.screen_height / 2);
+    global.overlay_group.add_actor(message);
 }

Modified: trunk/src/gnome-shell-plugin.c
==============================================================================
--- trunk/src/gnome-shell-plugin.c	(original)
+++ trunk/src/gnome-shell-plugin.c	Fri Oct 31 15:20:54 2008
@@ -83,7 +83,6 @@
 do_init (const char *params)
 {
   MutterPlugin *plugin = mutter_get_plugin();
-  ClutterActor *overlay_group;
   GError *error = NULL;
   int status;
   const char *shell_js;
@@ -101,9 +100,6 @@
         }
     }
 
-  overlay_group = mutter_plugin_get_overlay_group (plugin);
-  shell_global_set_overlay_group (shell_global_get(), overlay_group);
-
   shell_js = g_getenv("GNOME_SHELL_JS");
   if (!shell_js)
     shell_js = JSDIR;
@@ -112,6 +108,8 @@
   plugin_state->gjs_context = gjs_context_new_with_search_path(search_path);
   g_strfreev(search_path);
 
+  _shell_global_set_plugin (shell_global_get(), plugin);
+
   if (!gjs_context_eval (plugin_state->gjs_context,
                          "const Main = imports.ui.main; Main.start();",
                          -1,

Modified: trunk/src/metacity-symbols.c
==============================================================================
--- trunk/src/metacity-symbols.c	(original)
+++ trunk/src/metacity-symbols.c	Fri Oct 31 15:20:54 2008
@@ -2,13 +2,6 @@
 
 #include <mutter-plugin.h>
 
-void
-mutter_plugin_query_screen_size (MutterPlugin *plugin,
-                                 int          *width,
-                                 int          *height)
-{
-}
-
 ClutterActor *
 mutter_plugin_get_overlay_group (MutterPlugin *plugin)
 {
@@ -20,3 +13,16 @@
 {
   return NULL;
 }
+
+void
+mutter_plugin_query_screen_size (MutterPlugin *plugin,
+                                 int          *width,
+                                 int          *height)
+{
+}
+
+void
+mutter_plugin_set_stage_input_area (MutterPlugin *plugin,
+                                    gint x, gint y, gint width, gint height)
+{
+}

Modified: trunk/src/shell-global.c
==============================================================================
--- trunk/src/shell-global.c	(original)
+++ trunk/src/shell-global.c	Fri Oct 31 15:20:54 2008
@@ -1,25 +1,111 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
 #include "shell-global.h"
 
 struct _ShellGlobal {
   GObject parent;
 
-  ClutterActor *overlay_group;
+  MutterPlugin *plugin;
 };
 
 struct _ShellGlobalClass {
   GObjectClass parent_class;
 };
 
+enum {
+  PROP_0,
+
+  PROP_OVERLAY_GROUP,
+  PROP_SCREEN_WIDTH,
+  PROP_SCREEN_HEIGHT
+};
+
 G_DEFINE_TYPE(ShellGlobal, shell_global, G_TYPE_OBJECT);
 
 static void
+shell_global_set_property(GObject         *object,
+                          guint            prop_id,
+                          const GValue    *value,
+                          GParamSpec      *pspec)
+{
+  switch (prop_id)
+    {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+shell_global_get_property(GObject         *object,
+                          guint            prop_id,
+                          GValue          *value,
+                          GParamSpec      *pspec)
+{
+  ShellGlobal *global = SHELL_GLOBAL (object);
+
+  switch (prop_id)
+    {
+    case PROP_OVERLAY_GROUP:
+      g_value_set_object (value, mutter_plugin_get_overlay_group (global->plugin));
+      break;
+    case PROP_SCREEN_WIDTH:
+      {
+        int width, height;
+
+        mutter_plugin_query_screen_size (global->plugin, &width, &height);
+        g_value_set_int (value, width);
+      }
+      break;
+    case PROP_SCREEN_HEIGHT:
+      {
+        int width, height;
+
+        mutter_plugin_query_screen_size (global->plugin, &width, &height);
+        g_value_set_int (value, height);
+      }
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
 shell_global_init(ShellGlobal *global)
 {
 }
 
 static void
-shell_global_class_init(ShellGlobalClass *klass)
+shell_global_class_init (ShellGlobalClass *klass)
 {
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->get_property = shell_global_get_property;
+  gobject_class->set_property = shell_global_set_property;
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_OVERLAY_GROUP,
+                                   g_param_spec_object ("overlay-group",
+                                                        "Overlay Group",
+                                                        "Actor holding objects that appear above the desktop contents",
+                                                        CLUTTER_TYPE_ACTOR,
+                                                        G_PARAM_READABLE));
+  g_object_class_install_property (gobject_class,
+                                   PROP_SCREEN_WIDTH,
+                                   g_param_spec_int ("screen-width",
+                                                     "Screen Width",
+                                                     "Screen width, in pixels",
+                                                     0, G_MAXINT, 1,
+                                                     G_PARAM_READABLE));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_SCREEN_HEIGHT,
+                                   g_param_spec_int ("screen-height",
+                                                     "Screen Height",
+                                                     "Screen height, in pixels",
+                                                     0, G_MAXINT, 1,
+                                                     G_PARAM_READABLE));
 }
 
 ShellGlobal *
@@ -34,25 +120,22 @@
 }
 
 void
-shell_global_set_overlay_group (ShellGlobal  *global,
-				ClutterActor *overlay_group)
+shell_global_set_stage_input_area (ShellGlobal *global,
+                                   int          x,
+                                   int          y,
+                                   int          width,
+                                   int          height)
 {
-  g_object_ref (overlay_group);
-
-  if (global->overlay_group)
-    g_object_unref(global->overlay_group);
+  g_return_if_fail (SHELL_IS_GLOBAL (global));
 
-  global->overlay_group = overlay_group;
-}
-
-ClutterActor *
-shell_global_get_overlay_group (ShellGlobal  *global)
-{
-  return global->overlay_group;
+  mutter_plugin_set_stage_input_area (global->plugin, x, y, width, height);
 }
 
 void
-shell_global_print_hello (ShellGlobal *global)
+_shell_global_set_plugin (ShellGlobal  *global,
+                          MutterPlugin *plugin)
 {
-  g_print("Hello World!\n");
+  g_return_if_fail (SHELL_IS_GLOBAL (global));
+
+  global->plugin = plugin;
 }

Modified: trunk/src/shell-global.h
==============================================================================
--- trunk/src/shell-global.h	(original)
+++ trunk/src/shell-global.h	Fri Oct 31 15:20:54 2008
@@ -1,6 +1,7 @@
 #ifndef __SHELL_GLOBAL_H__
 #define __SHELL_GLOBAL_H__
 
+#include "mutter-plugin.h"
 #include <clutter/clutter.h>
 #include <glib-object.h>
 
@@ -20,12 +21,8 @@
 
 ShellGlobal *shell_global_get (void);
 
-void shell_global_set_overlay_group (ShellGlobal  *global,
-				     ClutterActor *overlay_group);
-
-ClutterActor *shell_global_get_overlay_group (ShellGlobal  *global);
-
-void shell_global_print_hello (ShellGlobal *global);
+void _shell_global_set_plugin (ShellGlobal  *global,
+			       MutterPlugin *plugin);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]