резервный апплет gnome c ++ - PullRequest
       22

резервный апплет gnome c ++

2 голосов
/ 15 сентября 2011

Я пытаюсь создать апплет панели, но я застрял на первом шаге: Я создал файл .cpp с кодом из официального примера на http://developer.gnome.org/panel-applet/3.0/getting-started.example.html

#include <gtk/gtk.h>
#include <panel-applet.h>

static gboolean
hello_world_applet_start (PanelApplet *applet)
{
    GtkWidget *label;

    label = gtk_label_new ("Hello World");
    gtk_container_add (GTK_CONTAINER (applet), label);
    gtk_widget_show_all (GTK_WIDGET (applet));

    return TRUE;
}

static gboolean
hello_world_factory_callback (PanelApplet  *applet,
                              const gchar  *iid,
                              gpointer      data)
{
    gboolean retval = FALSE;

    if (g_strcmp0 (iid, "HelloWorldApplet") == 0)
        retval = hello_world_applet_start (applet);

    return retval;
}

PANEL_APPLET_OUT_PROCESS_FACTORY ("HelloWorldFactory",
                                  PANEL_TYPE_APPLET,
                                  hello_world_factory_callback,
                                  NULL)

скомпилировано с

g++ -Wall -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE `pkg-config --cflags --libs gtk+-3.0 libpanelapplet-4.0` *.cpp -o helloworld

и скопировано в

/usr/lib/gnome-panel/helloworld

тогда я создал файл

/usr/share/gnome-panel/4.0/applets/helloworld.panel-applet

с таким содержанием:

[Applet Factory]
Id=HelloWorldFactory
InProcess=true
Location=/usr/lib/gnome-panel/helloworld
Name=Hello World Applet Factory
Description=Factory for the window navigation related applets

[HelloWorldApplet]
Name=Hello World
Description=Factory for the Hello World applet example
Icon=hello-world-icon

весь код взят из документации, но при попытке добавить апплет на панель у меня возникла эта ошибка:

** (gnome-panel:24803): WARNING **: Failed to load applet HelloWorldFactory::HelloWorldApplet: /usr/lib/gnome-panel/helloworld: cannot dynamically load executable

что не так ??

1 Ответ

0 голосов
/ 15 октября 2011

Вы используете PANEL_APPLET_OUT_PROCESS_FACTORY в своем коде и описываете его как InProcess=true.

Теперь я понял, что ваш вопрос выглядел мне знакомым, и вы уже решили его .Итак, я привожу здесь решение, чтобы другие тоже могли найти ответ.

...