[prev in list] [next in list] [prev in thread] [next in thread] 

List:       enlightenment-devel
Subject:    [E-devel] [PATCH] Extend E dbus interface
From:       Joel Klinghed <the_jk () spawned ! biz>
Date:       2010-02-28 16:22:13
Message-ID: 20100228172213.08fd017f () willow ! l ! spawned ! biz
[Download RAW message or body]

Hi.

The attached patch adds back some options I missed in the new
enlightenment_remote, namely:
-desks-get, -desktop-bg-add, -desktop-bg-del and -desktop-bg-list.

For this I added:
org.enlightenment.wm.Desktop.GetVirtualCount
org.enlightenment.wm.Desktop.Background.Add
org.enlightenment.wm.Desktop.Background.Del
org.enlightenment.wm.Desktop.Background.List

/Joel Klinghed
[Attachment #3 (text/x-patch)]

Index: e/src/bin/e_msgbus.c
===================================================================
--- e/src/bin/e_msgbus.c	(revision 46645)
+++ e/src/bin/e_msgbus.c	(working copy)
@@ -18,6 +18,11 @@
 static DBusMessage* _e_msgbus_profile_add_cb(E_DBus_Object *obj, DBusMessage *msg);
 static DBusMessage* _e_msgbus_profile_delete_cb(E_DBus_Object *obj, DBusMessage \
*msg);  
+static DBusMessage* _e_msgbus_desktop_virtual_get_cb(E_DBus_Object *obj, DBusMessage \
*msg); +static DBusMessage* _e_msgbus_desktop_background_add_cb(E_DBus_Object *obj, \
DBusMessage *msg); +static DBusMessage* \
_e_msgbus_desktop_background_del_cb(E_DBus_Object *obj, DBusMessage *msg); +static \
DBusMessage* _e_msgbus_desktop_background_list_cb(E_DBus_Object *obj, DBusMessage \
*msg); +
 /* local subsystem globals */
 static E_Msgbus_Data *_e_msgbus_data = NULL;
 
@@ -82,6 +87,30 @@
    e_dbus_interface_method_add(iface, "List", "", "as", _e_msgbus_profile_list_cb);
    e_dbus_interface_method_add(iface, "Add", "s", "", _e_msgbus_profile_add_cb);
    e_dbus_interface_method_add(iface, "Delete", "s", "", \
_e_msgbus_profile_delete_cb); +
+   iface = e_dbus_interface_new("org.enlightenment.wm.Desktop");
+   if (!iface)
+     {
+	printf("WARNING: Cannot add org.enlightenment.wm.Desktop interface\n");
+	return 0;
+     }
+   e_dbus_object_interface_attach(_e_msgbus_data->obj, iface);
+
+   /* Desktop methods */
+   e_dbus_interface_method_add(iface, "GetVirtualCount", "", "ii", \
_e_msgbus_desktop_virtual_get_cb); +
+   iface = e_dbus_interface_new("org.enlightenment.wm.Desktop.Background");
+   if (!iface)
+     {
+	printf("WARNING: Cannot add org.enlightenment.wm.Desktop.Background interface\n");
+	return 0;
+     }
+   e_dbus_object_interface_attach(_e_msgbus_data->obj, iface);
+
+   /* Desktop.Background methods */
+   e_dbus_interface_method_add(iface, "Add", "iiiis", "", \
_e_msgbus_desktop_background_add_cb); +   e_dbus_interface_method_add(iface, "Del", \
"iiii", "", _e_msgbus_desktop_background_del_cb); +   \
e_dbus_interface_method_add(iface, "List", "", "a(iiiis)", \
_e_msgbus_desktop_background_list_cb);  
    return 1;
 }
@@ -338,3 +367,101 @@
 
    return dbus_message_new_method_return(msg);
 }
+
+static DBusMessage*
+_e_msgbus_desktop_virtual_get_cb(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessage* reply;
+   DBusMessageIter iter;
+
+   reply = dbus_message_new_method_return(msg);
+   dbus_message_iter_init_append(reply, &iter);
+   dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+				  &(e_config->zone_desks_x_count));
+   dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+				  &(e_config->zone_desks_y_count));
+
+   return reply;
+}
+
+static DBusMessage*
+_e_msgbus_desktop_background_add_cb(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessageIter iter;
+   int container, zone, desk_x, desk_y;
+   char* path;
+
+   dbus_message_iter_init(msg, &iter);
+   dbus_message_iter_get_basic(&iter, &container);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &zone);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_x);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_y);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &path);
+
+   e_bg_add(container, zone, desk_x, desk_y, path);
+   e_bg_update();
+   e_config_save_queue();
+
+   return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+_e_msgbus_desktop_background_del_cb(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessageIter iter;
+   int container, zone, desk_x, desk_y;
+
+   dbus_message_iter_init(msg, &iter);
+   dbus_message_iter_get_basic(&iter, &container);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &zone);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_x);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_y);
+
+   e_bg_del(container, zone, desk_x, desk_y);
+   e_bg_update();
+   e_config_save_queue();
+
+   return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+_e_msgbus_desktop_background_list_cb(E_DBus_Object *obj, DBusMessage *msg)
+{
+   Eina_List *l;
+   E_Config_Desktop_Background *bg;
+   DBusMessage *reply;
+   DBusMessageIter iter;
+   DBusMessageIter arr;
+
+   reply = dbus_message_new_method_return(msg);
+   dbus_message_iter_init_append(reply, &iter);
+   dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(iiiis)", &arr);
+
+   EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, bg)
+     {
+	DBusMessageIter sub;
+
+	if (bg == NULL || bg->file == NULL)
+	{
+	   continue;
+	}
+
+	dbus_message_iter_open_container(&arr, DBUS_TYPE_STRUCT, NULL, &sub);
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->container));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->zone));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_x));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_y));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(bg->file));
+	dbus_message_iter_close_container(&arr, &sub);
+     }
+   dbus_message_iter_close_container(&iter, &arr);
+
+   return reply;
+}
Index: e/data/tools/enlightenment_remote
===================================================================
--- e/data/tools/enlightenment_remote	(revision 46645)
+++ e/data/tools/enlightenment_remote	(working copy)
@@ -30,6 +30,10 @@
   -default-profile-get Get the default configuration profile
   -default-profile-set OPT1 Set the default configuration profile to OPT1
 
+  -desks-get Get the number of virtual desktops
+  -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = \
container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg file path +  \
-desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = container \
no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. +  -desktop-bg-list List all \
current desktop bg definitions  
 Note: This is a new implementation of enlightenment_remote,
       for more information about it see the '--help-new' option.
@@ -113,8 +117,68 @@
    unset result value
 }
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERGMI
+#   DESCRIPTION:  Get a (multiple) values (integer)
+#    PARAMETERS:  interface/method call
+#       RETURNS:  values (integer)
+#===============================================================================
+ERGMI(){
+   result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service \
/org/enlightenment/wm/RemoteObject "$1" )" +   result="$( echo "$result" | sed \
's/int32//g' )" +   for value in $result
+   do
+      echo -n "$value "
+   done
+   echo ""
+   unset result value
+}
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERGMST
+#   DESCRIPTION:  Get a (multiple) struct value
+#    PARAMETERS:  interface/method call
+#       RETURNS:  struct values
+#===============================================================================
+ERGMST(){
+   result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service \
/org/enlightenment/wm/RemoteObject "$1" )" +   result="${result##*array \[}"
+   result="${result%%]*}"
+   result="$( echo "$result" | sed -e 's/int32//g' -e 's/struct {//g' )"
+   for value in $result
+   do
+      if test "$value" = "}"; then
+         echo
+      else
+         echo -n "$value "
+      fi
+   done
+   echo ""
+   unset result value
+}
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERCIIIIS
+#   DESCRIPTION:  eremote call with int, int, int, int, string parameter
+#    PARAMETERS:  interface/method call, int, int, int, int, string
+#       RETURNS:  
+#===============================================================================
+ERCIIIIS(){
+   dbus-send --print-reply=literal --dest=org.enlightenment.wm.service \
/org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5" \
string:"$6" +}
+
+#===  FUNCTION  ================================================================
+#          NAME:  ERCIIIIS
+#   DESCRIPTION:  eremote call with int, int, int, int parameter
+#    PARAMETERS:  interface/method call, int, int, int, int
+#       RETURNS:  
+#===============================================================================
+ERCIIII(){
+   dbus-send --print-reply=literal --dest=org.enlightenment.wm.service \
/org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5" \
+} +
+
+
 #-------------------------------------------------------------------------------
 #   E Restart
 #-------------------------------------------------------------------------------
@@ -195,10 +259,40 @@
 }
 
 
+#-------------------------------------------------------------------------------
+#   E Virtual desktop get
+#-------------------------------------------------------------------------------
+er_desktop_get(){
+   ERGMI org.enlightenment.wm.Desktop.GetVirtualCount
+}
 
 
+#-------------------------------------------------------------------------------
+#   E Desktop background add
+#-------------------------------------------------------------------------------
+er_desktop_bg_add(){
+   ERCIIIIS org.enlightenment.wm.Desktop.Background.Add "$2" "$3" "$4" "$5" "$6"
+}
 
+#-------------------------------------------------------------------------------
+#   E Desktop background del
+#-------------------------------------------------------------------------------
+er_desktop_bg_del(){
+   ERCIIII org.enlightenment.wm.Desktop.Background.Del "$2" "$3" "$4" "$5"
+}
 
+#-------------------------------------------------------------------------------
+#   E Desktop background list
+#-------------------------------------------------------------------------------
+er_desktop_bg_list(){
+   ERGMST org.enlightenment.wm.Desktop.Background.List
+}
+
+
+
+
+
+
 #===  FUNCTION  ================================================================
 #          NAME:  Main
 #   DESCRIPTION:  We start there and go to the desired option
@@ -248,6 +342,18 @@
    -default-profile-set)
       er_default_profile_set "$@"
    ;;
+   -desks-get)
+      er_desktop_get
+   ;;
+   -desktop-bg-add)
+      er_desktop_bg_add "$@"
+   ;;
+   -desktop-bg-del)
+      er_desktop_bg_del "$@"
+   ;;
+   -desktop-bg-list)
+      er_desktop_bg_list
+   ;;
 
 
    # This entry needs to be allways the last option of the list (*)
@@ -314,7 +420,6 @@
   -border-shade-speed-set OPT1 Set the shading speed (pixels/sec)
   -border-shade-speed-get Get the shading speed (pixels/sec)
   -desks-set OPT1 OPT2 Set the number of virtual desktops (X x Y desks OPT1 = X, \
                OPT2 = Y)
-  -desks-get Get the number of virtual desktops
   -maximize-policy-set OPT1 Set the maximize policy. OPT1 = FULLSCREEN, SMART, \
                EXPAND or FILL
   -maximize-policy-get Get maximize policy
   -maximize-manipulation-set OPT1 Allow manipulation, 1 for enabled 0 for disabled
@@ -345,9 +450,6 @@
   -window-resist-get Get window resist threshold
   -gadget-resist-set OPT1 Set gadget resist threshold (0-100)
   -gadget-resist-get Get gadget resist threshold
-  -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = \
                container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg \
                file path
-  -desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = \
                container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
-  -desktop-bg-list List all current desktop bg definitions
   -winlist-warp-while-selecting-set OPT1 Set winlist (alt+tab) warp while selecting \
                policy
   -winlist-warp-while-selecting-get Get winlist (alt+tab) warp while selecting \
                policy
   -winlist-warp-at-end-set OPT1 Set winlist (alt+tab) warp at end policy



------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev

_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic