[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#341054: Patch proposal



I've just modified the GTK frontend so that if rescue/enable is true then rescue/info is displayed in the top-left corner of the window, over the "Debian" banner. Please tell me if you like placement / color of the message so that i can commit in the case.

Attilio Fiandrotti

attilio@attilaptop:~/svn/cdebconf$ diff -u src/modules/frontend/gtk/gtk.c ~/cdebconf/cdebconf/src/modules/frontend/gtk/gtk.c
--- src/modules/frontend/gtk/gtk.c      2005-12-27 23:20:11.000000000 +0100
+++ /home/attilio/cdebconf/cdebconf/src/modules/frontend/gtk/gtk.c 2005-12-31 12:29:46.000000000 +0100
@@ -7,7 +7,7 @@
  *
  * Description: gtk UI for cdebconf
  *
- * $Id: gtk.c 33343 2005-12-27 22:11:24Z fiandro-guest $
+ * $Id: gtk.c 33236 2005-12-25 17:19:46Z fiandro-guest $
  *
  * cdebconf is (c) 2000-2001 Randolph Chung and others under the following
  * license.
@@ -270,6 +270,23 @@
     }
 }

+gboolean expose_event_callback(GtkWidget *wid, GdkEventExpose *event, struct frontend_data *data)
+{
+    PangoLayout *layout;
+    gint w, h;
+    char *message;
+
+    message = malloc(strlen(data->rescue_message) + 40 );
+ sprintf(message,"<b><span foreground=\"#ffffff\">%s</span></b>", data->rescue_message);
+    layout = gtk_widget_create_pango_layout(wid, NULL);
+    pango_layout_set_markup(layout,message,-1);
+ pango_layout_set_font_description(layout, pango_font_description_from_string("Sans 10"));
+    pango_layout_get_pixel_size(layout, &w, &h);
+ gdk_draw_layout(wid->window, gdk_gc_new(wid->window), WINDOW_WIDTH - w - 2, 0, layout);
+
+    return FALSE;
+}
+
 void screenshot_button_callback(GtkWidget *button, struct frontend* obj )
 {
     GdkWindow *gdk_window;
@@ -663,7 +680,7 @@
     struct frontend_question_data *data;
     const char *defval = question_getvalue(q, "");

- /* INFO(INFO_DEBUG, "GTK_DI - gtkhandler_boolean_multiple() called"); */
+    /* INFO(INFO_DEBUG, "GTK_DI - gtkhandler_boolean() called"); */

     data = NEW(struct frontend_question_data);
     data->obj = obj;
@@ -1337,10 +1354,19 @@
     GtkWidget *label_title, *h_title_box, *v_title_box, *logo_button;
     GList *focus_chain = NULL;
     int *ret_val;
+    const char *value;
+    struct frontend_data *data;

+    data = obj->data;
     /* A logo is displayed in the upper area of the screen */
logo_button = gtk_image_new_from_file("/usr/share/graphics/logo_debian.png");
-
+    value = get_text(obj, "rescue/enable", "false");
+    if (strcmp(value, "true") == 0) {
+       value = get_text(obj, "rescue/info", "Rescue mode");
+        data->rescue_message = strdup(value);
+ g_signal_connect_after(G_OBJECT(logo_button), "expose_event", G_CALLBACK(expose_event_callback), data);
+       }
+
     /* A label is used to display the fontend's title */
     label_title = gtk_label_new(NULL);
     ((struct frontend_data*) obj->data)->title = label_title;
@@ -1459,6 +1485,7 @@
     fe_data->progress_bar_box = NULL;
     fe_data->setters = NULL;
     fe_data->button_val = DC_NOTOK;
+    fe_data->rescue_message = NULL;

     gtk_init (&args, &name);

PNG image


Reply to: