aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk-info-popup.gob
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-12-04 17:29:01 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-12-04 22:07:08 +0100
commitd8a316514c03d85b771a9dce4a8a51b875d955b3 (patch)
tree8966c29db767a155848f6d90f76771ce5b9de32e /gtk-info-popup.gob
parentb120616b6da52e951097f69ad267de06081d218a (diff)
autoconf preparation: move everything into src/ subdir
Diffstat (limited to 'gtk-info-popup.gob')
-rw-r--r--gtk-info-popup.gob165
1 files changed, 0 insertions, 165 deletions
diff --git a/gtk-info-popup.gob b/gtk-info-popup.gob
deleted file mode 100644
index 914647a..0000000
--- a/gtk-info-popup.gob
+++ /dev/null
@@ -1,165 +0,0 @@
-requires 2.0.16
-
-%privateheader{
-#include <gdk/gdk.h>
-%}
-
-%h{
-#include <gtk/gtk.h>
-%}
-
-enum GTK_INFO_POPUP {
- PLAIN,
- FILE,
- DIRECTORY
-} Gtk:Info:Popup:Entry:Type;
-
-class Gtk:Info:Popup from Gtk:Window {
- private GtkWidget *parent;
-
- init(self)
- {
- GtkWidget *vbox;
-
- //gtk_window_set_gravity(GTK_WINDOW(self), GDK_GRAVITY_SOUTH_WEST);
- gtk_container_set_border_width(GTK_CONTAINER(self), 10);
-
- vbox = gtk_vbox_new(FALSE, 5);
- gtk_container_set_resize_mode(GTK_CONTAINER(vbox), GTK_RESIZE_PARENT);
- gtk_container_add(GTK_CONTAINER(self), vbox);
- gtk_widget_show(vbox);
- }
-
- public GtkWidget *
- new(Gtk:Widget *parent)
- {
- Self *widget;
- GtkWidget *toplevel;
-
- widget = GET_NEW_VARG("type", GTK_WINDOW_POPUP, NULL);
- widget->_priv->parent = parent;
-
- g_signal_connect(parent, "size-allocate",
- G_CALLBACK(self_size_allocate_cb), widget);
- toplevel = gtk_widget_get_toplevel(parent);
- g_signal_connect(toplevel, "configure-event",
- G_CALLBACK(self_configure_cb), widget);
-
- return GTK_WIDGET(widget);
- }
-
- private void
- position(self)
- {
- GdkWindow *window = gtk_widget_get_window(self->_priv->parent);
- gint x, y;
- gint w, h;
-
- if (!window)
- return;
-
- gdk_window_get_origin(window, &x, &y);
- gtk_window_get_size(GTK_WINDOW(self), &w, &h);
-
- gtk_window_move(GTK_WINDOW(self), x, y - h);
- }
-
- private void
- size_allocate_cb(Gtk:Widget *parent,
- Gtk:Allocation *alloc, gpointer user_data)
- {
- self_position(SELF(user_data));
- }
-
- private gboolean
- configure_cb(Gtk:Widget *toplevel,
- Gdk:Event:Configure *event, gpointer user_data)
- {
- self_position(SELF(user_data));
- return FALSE;
- }
-
- override (Gtk:Widget) void
- show(Gtk:Widget *self)
- {
- GtkRequisition req;
-
- gtk_widget_size_request(self, &req);
- gtk_window_resize(GTK_WINDOW(self), req.width, req.height);
- self_position(SELF(self));
-
- PARENT_HANDLER(self);
- }
-
- public void
- add(self, Gtk:Info:Popup:Entry:Type type,
- const gchar *name, gboolean highlight)
- {
- static const gchar *type2stock[] = {
- [GTK_INFO_POPUP_PLAIN] = NULL,
- [GTK_INFO_POPUP_FILE] = GTK_STOCK_FILE,
- [GTK_INFO_POPUP_DIRECTORY] = GTK_STOCK_DIRECTORY
- };
-
- GtkWidget *vbox = gtk_bin_get_child(GTK_BIN(self));
- GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(self));
- GtkRequisition req;
-
- GtkWidget *hbox;
- GtkWidget *label;
- gchar *markup;
-
- gtk_widget_size_request(GTK_WIDGET(self), &req);
- if (req.height > gdk_screen_get_height(screen))
- return;
-
- hbox = gtk_hbox_new(FALSE, 5);
-
- if (type2stock[type]) {
- GtkWidget *image;
-
- image = gtk_image_new_from_stock(type2stock[type],
- GTK_ICON_SIZE_MENU);
- gtk_box_pack_start(GTK_BOX(hbox), image,
- FALSE, FALSE, 0);
- }
-
- /*
- * FIXME: setting Pango attributes directly would be
- * much more efficient
- */
- label = gtk_label_new(NULL);
- markup = g_markup_printf_escaped("<span weight=\"%s\">%s</span>",
- highlight ? "bold" : "normal",
- name);
- gtk_label_set_markup(GTK_LABEL(label), markup);
- g_free(markup);
- gtk_misc_set_alignment(GTK_MISC(label), 0., 0.5);
- gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show_all(hbox);
-
- gtk_widget_size_request(GTK_WIDGET(self), &req);
- if (req.height > gdk_screen_get_height(screen)) {
- label = gtk_label_new("...");
- gtk_box_pack_start(GTK_BOX(vbox), label,
- FALSE, FALSE, 0);
- gtk_widget_show(label);
- }
- }
-
- public void
- clear(self)
- {
- GtkWidget *vbox = gtk_bin_get_child(GTK_BIN(self));
- GList *children;
-
- children = gtk_container_get_children(GTK_CONTAINER(vbox));
- for (GList *cur = g_list_first(children);
- cur != NULL;
- cur = g_list_next(cur))
- gtk_widget_destroy(GTK_WIDGET(cur->data));
- g_list_free(children);
- }
-}