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
[EMAIL PROTECTED]:~/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);
