From 3bc2ae5b9b5b4eff348fdba3a930312866c4b89e Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 23 Jul 2010 08:18:24 +0300 Subject: [PATCH] trying to make real livebg --- applet/src/Makefile.am | 27 +++++++------ applet/src/livewp-common.h | 1 + applet/src/livewp-home-widget.c | 9 +++-- applet/src/livewp-home-widget.h | 2 +- applet/src/livewp-main.c | 84 +++++++++++++++++++++++---------------- applet/src/livewp-scene.c | 4 +- 6 files changed, 73 insertions(+), 54 deletions(-) diff --git a/applet/src/Makefile.am b/applet/src/Makefile.am index 14fa9b1..0da5d3f 100644 --- a/applet/src/Makefile.am +++ b/applet/src/Makefile.am @@ -1,17 +1,20 @@ -#SOURCE_FILES = livewp-main.c \ -# livewp-home-widget.c livewp-home-widget.h \ -# livewp-astro.c livewp-astro.h \ -# livewp-rules.c livewp-rules.h \ -# livewp-settings.c livewp-settings.h livewp-common.h \ -# livewp-config.c livewp-config.h \ -# livewp-dbus.c livewp-dbus.h +SOURCE_FILES = livewp-main.c \ + livewp-home-widget.c livewp-home-widget.h \ + livewp-astro.c livewp-astro.h \ + livewp-rules.c livewp-rules.h \ + livewp-settings.c livewp-settings.h livewp-common.h \ + livewp-config.c livewp-config.h \ + livewp-dbus.c livewp-dbus.h \ + livewp-actor.c livewp-actor.h \ + livewp-scene.c livewp-scene.h + + +bin_PROGRAMS = livewp +livewp_SOURCES = $(SOURCE_FILES) # -#bin_PROGRAMS = livewp -#livewp_SOURCES = $(SOURCE_FILES) +livewp_CFLAGS = -Wall $(EXAMPLE_CFLAGS) $(OSSO_CFLAGS) -DAPPLICATION # -#livewp_CFLAGS = -Wall $(EXAMPLE_CFLAGS) $(OSSO_CFLAGS) -DAPPLICATION -# -#livewp_LDADD = $(EXAMPLE_LIBS) $(OSSO_LIBS) +livewp_LDADD = $(EXAMPLE_LIBS) $(OSSO_LIBS) # We invent desktoplib_LTLIBRARIES instead of the normal lib_LTLIBRARIES, # so we can specify the non-standard installation directory. diff --git a/applet/src/livewp-common.h b/applet/src/livewp-common.h index 0b0acf6..7ae6122 100644 --- a/applet/src/livewp-common.h +++ b/applet/src/livewp-common.h @@ -77,6 +77,7 @@ struct _Animation_WallpaperPrivate gboolean visible; gboolean rich_animation; GtkWidget *main_widget; + GtkWidget *window; GtkWidget *right_corner; AWallpaperPlugin *desktop_plugin; DBusConnection *dbus_conn; diff --git a/applet/src/livewp-home-widget.c b/applet/src/livewp-home-widget.c index 1a95083..23ca412 100644 --- a/applet/src/livewp-home-widget.c +++ b/applet/src/livewp-home-widget.c @@ -209,7 +209,7 @@ create_hildon_actor_text(Actor *actor, AWallpaperPlugin *desktop_plugin) //g_object_set_data(G_OBJECT(ha), "image", image); actor->image = label; - hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin)); + hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin->priv->window)); actor->widget = ha; set_actor_position(actor, actor->x, actor->y, actor->z, desktop_plugin); set_actor_scale(actor, (double)actor->scale/100, (double)actor->scale/100); @@ -233,7 +233,7 @@ create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) actor->width, actor->height, NULL); - /*fprintf(stderr, "create_hildon_actor %s %s\n", actor->name, str);*/ + /* fprintf(stderr, "create_hildon_actor %s %s\n", actor->name, str); */ if (str) g_free(str); if (pixbuf){ @@ -253,7 +253,7 @@ create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) //g_object_set_data(G_OBJECT(ha), "image", image); actor->image = image; - hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin)); + hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin->priv->window)); actor->widget = ha; set_actor_position(actor, actor->x, actor->y, actor->z, desktop_plugin); @@ -390,7 +390,7 @@ run_long_timeout(AWallpaperPlugin *desktop_plugin) } -static gboolean +gboolean long_timeout (AWallpaperPlugin *desktop_plugin) { /* fprintf(stderr, "long_timeout %i\n", desktop_plugin->priv->long_timer); */ @@ -454,6 +454,7 @@ animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin) livewp_initialize_dbus(priv); priv->desktop_plugin = desktop_plugin; + priv->window = desktop_plugin; priv->visible = TRUE; priv->short_timer = 0; priv->xapplet = 0; diff --git a/applet/src/livewp-home-widget.h b/applet/src/livewp-home-widget.h index cbcbc9f..3c0ac88 100644 --- a/applet/src/livewp-home-widget.h +++ b/applet/src/livewp-home-widget.h @@ -76,5 +76,5 @@ void get_sun_screen_pos(double alt, double azm, gint * x, gint * y); void show_settings(GtkWidget *widget, Animation_WallpaperPrivate *priv); void livewp_initialize_dbus(Animation_WallpaperPrivate *priv); void livewp_deinitialize_dbus(Animation_WallpaperPrivate *priv); -static gboolean long_timeout (AWallpaperPlugin *desktop_plugin); +gboolean long_timeout (AWallpaperPlugin *desktop_plugin); #endif diff --git a/applet/src/livewp-main.c b/applet/src/livewp-main.c index 07e4fda..89c7565 100644 --- a/applet/src/livewp-main.c +++ b/applet/src/livewp-main.c @@ -23,8 +23,14 @@ */ /*******************************************************************************/ #include "livewp-common.h" +#include "livewp-scene.h" #include "livewp-settings.h" +#include "livewp-home-widget.h" /*******************************************************************************/ +#include +#include + +#include void btn_setting_clicked(HildonButton *btn, gpointer data) @@ -46,6 +52,20 @@ btn_power_clicked(HildonButton *btn, gpointer data) else hildon_button_set_text(HILDON_BUTTON(btn), _("Stop"), "stop"); } +static void set_live_bg (Display *display, Window xwindow, int mode) +{ + Atom atom; + + atom = XInternAtom (display, "_HILDON_LIVE_DESKTOP_BACKGROUND", False); + fprintf (stderr, "XID: 0x%x\n", (unsigned)xwindow); + + XChangeProperty (display, + xwindow, + atom, + XA_INTEGER, 32, PropModeReplace, + (unsigned char *) &mode, 1); +} + int main(int argc, char *argv[]) { @@ -55,14 +75,11 @@ main(int argc, char *argv[]) gint result; HildonProgram *app; + AWallpaperPlugin *desktop_plugin = g_new0 (AWallpaperPlugin, 1); Animation_WallpaperPrivate *priv = g_new0 (Animation_WallpaperPrivate, 1); + desktop_plugin->priv = priv; + -#ifdef ENABLE_NLS - setlocale(LC_ALL, ""); - bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); - textdomain(GETTEXT_PACKAGE); -#endif /* Ininitializing */ hildon_gtk_init (&argc, &argv); app = HILDON_PROGRAM (hildon_program_get_instance()); @@ -74,42 +91,39 @@ main(int argc, char *argv[]) return 1; } +#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); + textdomain(GETTEXT_PACKAGE); +#endif +/* Create Main GUI */ + main_widget = hildon_window_new (); + gtk_window_set_title(GTK_WINDOW(main_widget), PACKAGE); + + gtk_widget_show_all(GTK_WIDGET(main_widget)); + + priv->hash_scene_func = g_hash_table_new(g_str_hash, g_str_equal); + g_hash_table_insert(priv->hash_scene_func, g_strdup("Berlin"), (gpointer)&init_scene_Berlin); + g_hash_table_insert(priv->hash_scene_func, g_strdup("Modern"), (gpointer)&init_scene_Modern); + g_hash_table_insert(priv->hash_scene_func, g_strdup("Matrix"), (gpointer)&init_scene_Matrix); + + priv->scene = NULL; + priv->window = main_widget; + + priv->view = 2; /* Load config */ read_config(priv); - /* Initialize DBUS */ livewp_initialize_dbus(priv); + set_live_bg(GDK_WINDOW_XDISPLAY (main_widget->window), GDK_WINDOW_XID (main_widget->window), 1); + init_scene_theme(desktop_plugin); + + priv->long_timer = g_timeout_add(LONG_TIMER, (GtkFunction)long_timeout, desktop_plugin); - /* Create Main GUI */ - main_widget = hildon_stackable_window_new (); - gtk_window_set_title(GTK_WINDOW(main_widget), PACKAGE); - - vbox = gtk_vbox_new(FALSE, 5); - btn_setting = hildon_button_new(HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT, - HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); - hildon_button_set_text(HILDON_BUTTON(btn_setting), _("Settings"), ""); - g_signal_connect(btn_setting, "clicked", G_CALLBACK(btn_setting_clicked), priv); - //gtk_container_add(GTK_CONTAINER(main_widget), button); - gtk_box_pack_start(vbox, btn_setting, FALSE, FALSE, 0); - btn_power = hildon_button_new(HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT, - HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); - if (1)/* if applet started*/{ - hildon_button_set_text(HILDON_BUTTON(btn_power), _("Stop"), "stop"); - } - else{ - hildon_button_set_text(HILDON_BUTTON(btn_power), _("Start"), "start"); - } - g_signal_connect(btn_power, "clicked", G_CALLBACK(btn_power_clicked), priv); - //gtk_container_add(GTK_CONTAINER(main_widget), button); - gtk_box_pack_start(vbox, btn_power, FALSE, FALSE, 0); - gtk_container_add(GTK_CONTAINER(main_widget), vbox); - g_signal_connect(main_widget, "destroy", G_CALLBACK(gtk_main_quit), NULL); - hildon_program_add_window(app, HILDON_WINDOW(main_widget)); - - gtk_widget_show_all(GTK_WIDGET(main_widget)); - gtk_main(); + gtk_main(); return 0; } diff --git a/applet/src/livewp-scene.c b/applet/src/livewp-scene.c index 32502ba..7cf01f6 100644 --- a/applet/src/livewp-scene.c +++ b/applet/src/livewp-scene.c @@ -76,7 +76,7 @@ init_scene_Matrix(AWallpaperPlugin *desktop_plugin) y2 = -480; } - //fprintf(stderr, "init scene2 \n"); + /* fprintf(stderr, "init scene2 \n"); */ scene = g_new0(Scene, 1); //scene.daytime = get_daytime(); scene->actors = NULL; @@ -154,7 +154,7 @@ init_scene_Modern(AWallpaperPlugin *desktop_plugin) gint winds[13][2]; GPtrArray *child; - //fprintf(stderr, "init scene \n"); + /* fprintf(stderr, "init scene \n"); */ scene = g_new0(Scene, 1); scene->daytime = get_daytime(); scene->actors = NULL; -- 1.7.9.5