+ myWidget = gtk_hbox_new(false, 2);
+
+ if (myWidget != NULL) {
+ updateWidget();
+ }
+
+ return myWidget != NULL;
+}
+
+void SimpleLauncherApplet::updateWidget() {
+ gtk_container_foreach(GTK_CONTAINER(myWidget), (GtkCallback)gtk_widget_destroy, NULL);
+
+ GtkSizeGroup *group = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
+
+ int button_no = 0;
+
+ for (size_t i = 0 ; i < myItems.size() ; ++i) {
+ LauncherItem *item = myItems[i];
+
+ if (item != NULL && item->isEnabled()) {
+ GtkWidget *button = gtk_event_box_new();
+
+ gtk_widget_set_events(button, GDK_BUTTON_PRESS_MASK);
+ g_signal_connect(button, "button-press-event", G_CALLBACK(_button_pressed), this);
+
+ gtk_event_box_set_visible_window(GTK_EVENT_BOX(button), !myTransparent.value());
+
+ {
+ GdkPixbuf *pixbuf = item->getIcon(myIconSize.value());
+ gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_pixbuf(pixbuf));
+ g_object_unref(G_OBJECT(pixbuf));
+ }
+
+ gtk_object_set_user_data(GTK_OBJECT(button), item);
+
+ gtk_size_group_add_widget(group, button);
+
+ gtk_box_pack_start(GTK_BOX(myWidget), GTK_WIDGET(button), false, false, 0);
+
+ ++button_no;
+ }
+ }
+
+ g_object_unref(G_OBJECT(group));
+
+ int totalSize = myIconSize.value();
+
+ if (button_no == 0) {
+ gtk_widget_set_size_request(myWidget, totalSize, totalSize);
+ } else {
+ gtk_widget_set_size_request(myWidget, button_no*totalSize, totalSize);
+ }
+
+ gtk_widget_show_all(myWidget);
+}
+
+void SimpleLauncherApplet::_button_pressed(GtkWidget *button, GdkEventButton *event, void *self) {
+ ((SimpleLauncherApplet *)self)->buttonPressed(button, event);
+}
+
+void SimpleLauncherApplet::buttonPressed(GtkWidget *button, GdkEventButton *event) {
+ if (button != NULL && event->button == 1) {
+ LaunchableItem *item = (LaunchableItem *)gtk_object_get_user_data(GTK_OBJECT(button));
+
+ if (item != NULL) {
+ item->activate(myContext);
+ }
+ }