fixed syntax error
[livewp] / applet / src / livewp-home-widget.c
index 14c86a9..3cba177 100644 (file)
@@ -7,8 +7,8 @@
  *       for the code
  * 
  * This software is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2 of
  * the License, or (at your option) any later version.
  * 
  * This software is distributed in the hope that it will be useful, but
@@ -67,23 +67,20 @@ lw_applet_realize (GtkWidget *widget)
            case 3: child_argv[1] = "4";
                break;
     }
-
-    desktop_plugin->priv->pid = fork();
-    if (desktop_plugin->priv->pid == 0){
-       execvp("/usr/bin/livewp", child_argv);
-       fprintf(stderr,"Problem with new process");
+    desktop_plugin->priv->one_in_all_view = get_one_in_all_views_from_config();
+    /* Check one theme in all view mode */
+    if (!desktop_plugin->priv->one_in_all_view || 
+        (desktop_plugin->priv->one_in_all_view && id == 0)){
+           /* Start a new process */
+           desktop_plugin->priv->pid = fork();
+           if (desktop_plugin->priv->pid == 0){
+               execvp("/usr/bin/livewp", child_argv);
+               fprintf(stderr,"Problem with new process");
+           }
     }
 
     desktop_plugin_visible_notify((GObject *)widget, NULL, desktop_plugin);
 
-#if 0
-    /* Load config */
-    read_config(desktop_plugin->priv);
-
-    init_scene_theme(desktop_plugin);
-        
-    desktop_plugin->priv->long_timer = g_timeout_add(LONG_TIMER, (GtkFunction)long_timeout, desktop_plugin);
-#endif
     screen = gtk_widget_get_screen (widget);
     gtk_widget_set_colormap (widget,
                                 gdk_screen_get_rgba_colormap (screen));
@@ -153,8 +150,20 @@ desktop_plugin_visible_notify (GObject    *object,
     gboolean visible;
     Animation_WallpaperPrivate *priv = desktop_plugin->priv;
     g_object_get (object, "is-on-current-desktop", &visible, NULL);
-    /* fprintf (stderr, "is-on-current-desktop changed. visible: %u", visible); */
+    fprintf (stderr, "LWP is-on-current-desktop changed. visible: %u", visible); 
     if (priv){
+             if (priv->one_in_all_view){
+                    if (visible)
+                       send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW1);
+                    else{
+                       /* start any application on current view */
+                       if ((priv->view + 1) == current_active_view())
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW1);
+                    }
+                    return;
+             }
             switch (priv->view + 1){
                case 1: if (visible)
                                send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
@@ -184,9 +193,46 @@ desktop_plugin_visible_notify (GObject    *object,
                                send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
                                          LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW4);
                        break;
+              case 5: if (visible)
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW5);
+                       else
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW5);
+                       break;
+              case 6: if (visible)
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW6);
+                       else
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW6);
+                       break;
+              case 7: if (visible)
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW7);
+                       else
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW7);
+                       break;
+              case 8: if (visible)
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW8);
+                       else
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW8);
+                       break;
+              case 9: if (visible)
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PLAY_LIVEBG_ON_VIEW9);
+                       else
+                               send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_PAUSE_LIVEBG_ON_VIEW9);
+                       break;
+
             }
-     }
 
+     }
+    
 }
 
 gboolean
@@ -205,6 +251,23 @@ send_alive_event(Animation_WallpaperPrivate *priv)
        case 4: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
                                  LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW4);
                break;
+       case 5: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                 LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW5);
+               break;
+       case 6: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                 LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW6);
+               break;
+       case 7: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                 LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW7);
+               break;
+       case 8: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                 LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW8);
+               break;
+       case 9: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                 LIVEWP_SIGNAL_PATH, LIVEWP_ALIVE_LIVEBG_ON_VIEW9);
+               break;
+
+
     }
 
     return TRUE;
@@ -229,6 +292,7 @@ animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin)
     priv->xapplet = 0;
     priv->yapplet = 0;
     priv->scene = NULL;
+    priv->pid = 0;
     priv->theme = g_strdup("Modern");
     //priv->theme = g_strdup("Accel");
     desktop_plugin->priv->main_widget = gtk_fixed_new();
@@ -270,7 +334,6 @@ fprintf(stderr,"lw_applet_finalize\n");
             destroy_scene(desktop_plugin);
      }
 */    
-     
      if (priv){
             switch (priv->view + 1){
                case 1: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
@@ -285,22 +348,41 @@ fprintf(stderr,"lw_applet_finalize\n");
                case 4: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
                                          LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW4);
                        break;
+               case 5: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW5);
+                       break;
+               case 6: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW6);
+                       break;
+               case 7: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW7);
+                       break;
+               case 8: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW8);
+                       break;
+               case 9: send_dbus_signal (priv, LIVEWP_SIGNAL_INTERFACE, 
+                                         LIVEWP_SIGNAL_PATH, LIVEWP_STOP_LIVEBG_ON_VIEW9);
+                       break;
             }
      }
      if(priv->alive_timer > 0) 
          g_source_remove(priv->alive_timer);
 
      livewp_deinitialize_dbus(priv);
-     while (TRUE){
-         wpid = wait(&status);
-        if (wpid == priv->pid)
-            break;
+
+     if (priv->pid >0){
+            while (TRUE){
+                wpid = wait(&status);
+                if (wpid == priv->pid)
+                    break;
+            }
      }
 }
 
 static void
 desktop_widget_finalize (GObject *object)
 {
+fprintf(stderr,"desktop lw_applet_finalize\n");
       /* Call the base class's implementation: */
      G_OBJECT_CLASS (animation_wallpaper_plugin_parent_class)->finalize (object);
 }