Portál AbcLinuxu, 9. května 2025 00:15
Snažím se napsat "visťácké" menu pro gnome. Zatím pracuji na tlačítku, ale nedaří se mi ho zobrazit v panelu. Když kód zkompiluju jako normální aplikaci, tak se obrázek tlačítka zobrazí, když ho zkompiluju jako applet, tak se na panel přidá akorát tečka - jediný pixel, představující můj applet. Neví někdo, co je ještě třeba udělat?
#include <string.h> #include <gtk/gtk.h> #include <panel-applet.h> #define START_PREFIX "/home/jarda/.themes/WE Ergo/gtk-2.0/PanelMenu/WE Ergo/" #define START_NORMAL START_PREFIX "start-here.png" #define START_HOVER START_PREFIX "start-here-glow.png" #define START_PRESS START_PREFIX "start-here-depressed.png" class PanelButton { GtkWidget* eventBox; GtkWidget* image; bool hover; bool pressed; public: PanelButton() { eventBox = gtk_event_box_new(); image = gtk_image_new_from_file(START_NORMAL); gtk_container_add(GTK_CONTAINER(eventBox), image); } ~PanelButton() { } GtkWidget* mainWidget() const { return eventBox; } }; static void applet_destroy(GtkWidget *widget, gpointer *ptr) { PanelButton *button = (PanelButton*)ptr; delete button; } // #define __TEST #ifndef __TEST static gboolean init_applet(PanelApplet *applet, const gchar *iid, gpointer data) { if (strcmp(iid, "OAFIID:Example") != 0) { return 0; } PanelButton* button = new PanelButton(); gtk_container_add(GTK_CONTAINER(applet), button->mainWidget()); g_signal_connect(G_OBJECT(applet), "destroy", G_CALLBACK(applet_destroy), button); gtk_widget_show_all(GTK_WIDGET(applet)); return 1; } PANEL_APPLET_BONOBO_FACTORY("OAFIID:WEErgoMenu", PANEL_TYPE_APPLET, "WE Ergo Menu", "0", init_applet, NULL) #else int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); PanelButton* button = new PanelButton(); gtk_container_add(GTK_CONTAINER(window), button->mainWidget()); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(applet_destroy), button); gtk_widget_show_all(GTK_WIDGET(window)); gtk_main(); return 0; } #endif
resize?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.