コード例 #1
0
/*
 * GOBJECT CODE 
 */
static void
awn_applet_proxy_get_property (GObject    *object,
                               guint       prop_id,
                               GValue     *value,
                               GParamSpec *pspec)
{
  AwnAppletProxyPrivate *priv;

  g_return_if_fail (AWN_IS_APPLET_PROXY (object));
  priv = AWN_APPLET_PROXY (object)->priv;

  switch (prop_id)
  {
    case PROP_PATH:
      g_value_set_string (value, priv->path);
      break;
    case PROP_UID:
      g_value_set_string (value, priv->uid);
      break;
    case PROP_POSITION:
      g_value_set_int (value, priv->position);
      break;
    case PROP_OFFSET:
      g_value_set_int (value, priv->offset);
      break;
    case PROP_SIZE:
      g_value_set_int (value, priv->size);
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  }
}
コード例 #2
0
static void
awn_applet_proxy_set_property (GObject      *object,
                               guint         prop_id,
                               const GValue *value,
                               GParamSpec   *pspec)
{
  AwnAppletProxyPrivate *priv;

  g_return_if_fail (AWN_IS_APPLET_PROXY (object));
  priv = AWN_APPLET_PROXY (object)->priv;

  switch (prop_id)
  {
    case PROP_PATH:
      priv->path = g_value_dup_string (value);
      break;
    case PROP_UID:
      priv->uid = g_value_dup_string (value);
      break;
    case PROP_POSITION:
      priv->position = g_value_get_int (value);
      awn_icon_set_pos_type (AWN_ICON (priv->throbber), priv->position);
      break;
    case PROP_OFFSET:
      priv->offset = g_value_get_int (value);
      awn_icon_set_offset (AWN_ICON (priv->throbber), priv->offset);
      break;
    case PROP_SIZE:
      priv->size = g_value_get_int (value);
      awn_throbber_set_size (AWN_THROBBER (priv->throbber), priv->size);
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  }
}
コード例 #3
0
static gboolean
awn_applet_proxy_idle_cb (gpointer data)
{
  g_return_val_if_fail (AWN_IS_APPLET_PROXY (data), FALSE);
  AwnAppletProxyPrivate *priv = AWN_APPLET_PROXY_GET_PRIVATE (data);

  awn_applet_proxy_execute (AWN_APPLET_PROXY (data));

  priv->idle_id = 0;

  return FALSE;
}
コード例 #4
0
static gboolean
throbber_click (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
{
  AwnAppletProxyPrivate *priv = AWN_APPLET_PROXY_GET_PRIVATE(user_data);

  if (!priv->running)
  {
    priv->crashed = FALSE;
    awn_icon_set_tooltip_text (AWN_ICON (priv->throbber),
                               _("Loading applet..."));
    awn_throbber_set_type (AWN_THROBBER (priv->throbber),
                           AWN_THROBBER_TYPE_NORMAL);
    awn_icon_set_hover_effects (AWN_ICON (priv->throbber), FALSE);

    awn_applet_proxy_execute (AWN_APPLET_PROXY (user_data));
  }
  return FALSE;
}
コード例 #5
0
static GtkWidget*
_create_applet (AwnAppletManager *manager, const gchar *path, const gchar *uid)
{
	AwnAppletManagerPrivate *priv;
        GtkWidget *applet = NULL;
        	
	g_return_val_if_fail (AWN_IS_APPLET_MANAGER (manager), NULL);
	priv = AWN_APPLET_MANAGER_GET_PRIVATE (manager);   
	
	if (g_strstr_len (path, strlen (path), "taskman")) {
		applet = _load_taskmanager (manager);
	} else {
		applet = awn_applet_proxy_new (path, uid);
	}
        
        g_object_set (G_OBJECT (applet), 
                      "orient", AWN_ORIENTATION_BOTTOM,
                      "height", priv->settings->bar_height,
                      NULL);
                
        gtk_widget_set_size_request (applet, -1,
                                     priv->settings->bar_height *2);
        gtk_box_pack_start (GTK_BOX (manager), applet, 
                            FALSE, FALSE, 0);
        gtk_widget_show_all (GTK_WIDGET (applet));
                
        g_object_set_qdata (G_OBJECT (applet), 
                            touch_quark, GINT_TO_POINTER (0));
                
        g_hash_table_insert (priv->applets, 
                             g_strdup (uid),
                             applet);
	
	if (AWN_IS_APPLET_PROXY (applet))
		awn_applet_proxy_exec (AWN_APPLET_PROXY (applet));

               
        if (g_strstr_len (path, strlen (path), "separator")) {
	        awn_bar_add_separator (AWN_BAR (priv->settings->bar), applet);
	}
                
        return applet;
}
コード例 #6
0
void
awn_applet_manager_load_applets (AwnAppletManager *manager)
{
	AwnAppletManagerPrivate *priv;
	GError *err = NULL;
	GSList *keys = NULL, *k;
	GConfClient *client = gconf_client_get_default ();
	
	g_return_if_fail (AWN_IS_APPLET_MANAGER (manager));
	priv = AWN_APPLET_MANAGER_GET_PRIVATE (manager);     
	
	priv->applets = g_hash_table_new (g_str_hash, g_str_equal);
	
	keys = gconf_client_get_list (client,
                                      AWN_APPLETS_KEY,
                                      GCONF_VALUE_STRING,
                                      &err); 

        if (keys == NULL || err) {
                keys = g_slist_append (keys, 
                                       LIBDIR"/awn/applets/taskman.desktop::1");
                gconf_client_set_list (client, AWN_APPLETS_KEY,
                                       GCONF_VALUE_STRING, keys, NULL);
                if (err)
                        g_print ("%s\n", err->message);
                return;        
        }
        
        for (k = keys; k != NULL; k = k->next) {
                GtkWidget *applet = NULL;
               
                gchar **tokens = NULL;
                tokens = g_strsplit (k->data, "::", 2);
                
                if (tokens == NULL) {
                        g_warning ("Bad key: %s", (gchar*)k->data);
                        continue;
                }
                
		if (g_strstr_len (tokens[0], strlen (tokens[0]), "taskman")) {
			applet = _load_taskmanager (manager);
		} else {
			applet = awn_applet_proxy_new (tokens[0], tokens[1]);
                	g_object_set (G_OBJECT (applet), 
                              	      "orient", AWN_ORIENTATION_BOTTOM,
                               	      "height", priv->settings->bar_height,
                                      NULL);
		}

                
                gtk_widget_set_size_request (applet, -1, 
                                             (priv->settings->bar_height)*2 +priv->settings->icon_offset);
                
                gtk_box_pack_start (GTK_BOX (manager), applet, 
                                    FALSE, FALSE, 0);
                gtk_widget_show_all (GTK_WIDGET (applet));
                
                g_object_set_qdata (G_OBJECT (applet), 
                                    touch_quark, GINT_TO_POINTER (0));
                
                g_hash_table_insert (priv->applets, 
                                     g_strdup (tokens[1]),
                                     applet);
                
		if (AWN_IS_APPLET_PROXY (applet))
			awn_applet_proxy_exec (AWN_APPLET_PROXY (applet));
                
                if (g_strstr_len (tokens[0], strlen (tokens[0]), "separator")) {
                        awn_bar_add_separator (AWN_BAR (priv->settings->bar), applet);
                }
                g_print ("APPLET : %s\n", tokens[0]);
                g_strfreev (tokens);
        }
}