+ struct eventlog_stuff *es = (struct eventlog_stuff *)estuff;
+ GtkWidget *window, *w0, *w1;
+ GtkWidget *parent = GTK_WIDGET(parentwin);
+ struct controlset *s0, *s1;
+ union control *c;
+ int index;
+ char *title;
+
+ if (es->window) {
+ gtk_widget_grab_focus(es->window);
+ return;
+ }
+
+ dlg_init(&es->dp);
+
+ for (index = 0; index < lenof(es->scs.sc); index++) {
+ es->scs.sc[index].action = SHORTCUT_EMPTY;
+ }
+
+ es->eventbox = ctrl_new_box();
+
+ s0 = ctrl_getset(es->eventbox, "", "", "");
+ ctrl_columns(s0, 3, 33, 34, 33);
+ c = ctrl_pushbutton(s0, "Close", 'c', HELPCTX(no_help),
+ eventlog_ok_handler, P(NULL));
+ c->button.column = 1;
+ c->button.isdefault = TRUE;
+
+ s1 = ctrl_getset(es->eventbox, "x", "", "");
+ es->listctrl = c = ctrl_listbox(s1, NULL, NO_SHORTCUT, HELPCTX(no_help),
+ eventlog_list_handler, P(es));
+ c->listbox.height = 10;
+ c->listbox.multisel = 2;
+ c->listbox.ncols = 3;
+ c->listbox.percentages = snewn(3, int);
+ c->listbox.percentages[0] = 25;
+ c->listbox.percentages[1] = 10;
+ c->listbox.percentages[2] = 65;
+
+ es->window = window = our_dialog_new();
+ title = dupcat(appname, " Event Log", NULL);
+ gtk_window_set_title(GTK_WINDOW(window), title);
+ sfree(title);
+ w0 = layout_ctrls(&es->dp, &es->scs, s0, GTK_WINDOW(window));
+ our_dialog_set_action_area(GTK_WINDOW(window), w0);
+ gtk_widget_show(w0);
+ w1 = layout_ctrls(&es->dp, &es->scs, s1, GTK_WINDOW(window));
+ gtk_container_set_border_width(GTK_CONTAINER(w1), 10);
+ gtk_widget_set_size_request(w1, 20 + string_width
+ ("LINE OF TEXT GIVING WIDTH OF EVENT LOG IS "
+ "QUITE LONG 'COS SSH LOG ENTRIES ARE WIDE"),
+ -1);
+ our_dialog_add_to_content_area(GTK_WINDOW(window), w1, TRUE, TRUE, 0);
+ gtk_widget_show(w1);
+
+ es->dp.data = es;
+ es->dp.shortcuts = &es->scs;
+ es->dp.lastfocus = NULL;
+ es->dp.retval = 0;
+ es->dp.window = window;
+
+ dlg_refresh(NULL, &es->dp);
+
+ if (parent) {
+ set_transient_window_pos(parent, window);
+ gtk_window_set_transient_for(GTK_WINDOW(window),
+ GTK_WINDOW(parent));
+ } else
+ gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+ gtk_widget_show(window);
+
+ g_signal_connect(G_OBJECT(window), "destroy",
+ G_CALLBACK(eventlog_destroy), es);
+ g_signal_connect(G_OBJECT(window), "key_press_event",
+ G_CALLBACK(win_key_press), &es->dp);
+ g_signal_connect(G_OBJECT(window), "selection_get",
+ G_CALLBACK(eventlog_selection_get), es);
+ g_signal_connect(G_OBJECT(window), "selection_clear_event",
+ G_CALLBACK(eventlog_selection_clear), es);