Logo Search packages:      
Sourcecode: eog version File versions

eog-hig-dialog.c

#include <string.h>
#include <gtk/gtk.h>
#include <libgnome/gnome-macros.h>
#include "eog-hig-dialog.h"


GNOME_CLASS_BOILERPLATE (EogHigDialog, 
                   eog_hig_dialog,
                   GtkDialog,
                   GTK_TYPE_DIALOG);

void
eog_hig_dialog_class_init (EogHigDialogClass *klass)
{
}

void 
eog_hig_dialog_instance_init (EogHigDialog *dlg)
{
}


GtkWidget*  
eog_hig_dialog_new (GtkWindow *window, const char *stock_id, const char *header, const char *body, gboolean modal)
{
      GtkWidget *dlg;
      GtkWidget *hbox;
      GtkWidget *image;
      GtkWidget *label;
      int header_len;
      int body_len;
      int message_len;
      char *message;
      
      g_return_val_if_fail (stock_id != NULL, NULL);
      g_return_val_if_fail (header != NULL, NULL);
      
      dlg = gtk_widget_new (EOG_TYPE_HIG_DIALOG, 
                        "border-width", 6, 
                        "resizable", FALSE,
                        "has-separator", FALSE,
                        "modal", modal,
                        "title", "",
                        NULL);
                        
      hbox = gtk_widget_new (GTK_TYPE_HBOX, 
                         "homogeneous", FALSE,
                         "spacing", 12,
                         "border-width", 6,
                         NULL);

      image = gtk_widget_new (GTK_TYPE_IMAGE,
                        "stock", stock_id,
                        "icon-size", GTK_ICON_SIZE_DIALOG,
                        "yalign", 0.0,
                        NULL);
      gtk_container_add (GTK_CONTAINER (hbox), image);


      header_len = strlen (header);
      body_len = body ? strlen (body) : 0;
      message_len = header_len + body_len + 64;

      message = g_new0 (char, message_len);

      if (body != NULL) {
            g_snprintf (message, message_len,
                      "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", header, body);
      }
      else {
            g_snprintf (message, message_len,
                      "<span weight=\"bold\" size=\"larger\">%s</span>", header);
      }
      
      label = gtk_label_new (message);
      g_object_set (G_OBJECT (label),
                  "use-markup", TRUE, 
                  "wrap", TRUE,
                  "yalign", 0.0,
                  NULL); 
                         
      gtk_container_add (GTK_CONTAINER (hbox), label);
      gtk_widget_show_all (hbox);

      gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), hbox);
      g_object_set (G_OBJECT (GTK_DIALOG (dlg)->vbox), "spacing", 12, NULL);

      if (window != NULL) {
            gtk_window_set_transient_for (GTK_WINDOW (dlg), window);
            gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER_ON_PARENT);
      }
      
      return dlg;
}

Generated by  Doxygen 1.6.0   Back to index