[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® 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