Diff

Differences From Artifact [5899897fed]:

To Artifact [383901712a]:


68
69
70
71
72
73
74

75
76
77
78
79
80
81
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82







+







    Backend *back;
    void *backhandle;
    Terminal *term;
    void *logctx;
    int exited;
    struct unicode_data ucsdata;
    Config cfg;
    void *eventlogstuff;
};

struct draw_ctx {
    GdkGC *gc;
    struct gui_data *inst;
};

159
160
161
162
163
164
165
166
167
168
169
170






171
172
173
174
175
176
177
160
161
162
163
164
165
166





167
168
169
170
171
172
173
174
175
176
177
178
179







-
-
-
-
-
+
+
+
+
+
+







     * log files. I can always make it properly configurable later.
     */
    return 2;
}

void logevent(void *frontend, char *string)
{
    /*
     * This is not a very helpful function: events are logged
     * pretty much exclusively by the back end, and our pty back
     * end is self-contained. So we need do nothing.
     */
    Terminal *term = (Terminal *)frontend;
    struct gui_data *inst = (struct gui_data *)term->frontend;

    log_eventlog(inst->logctx, string);

    logevent_dlg(inst->eventlogstuff, string);
}

int font_dimension(void *frontend, int which)/* 0 for width, 1 for height */
{
    struct gui_data *inst = (struct gui_data *)frontend;

    if (which)
2311
2312
2313
2314
2315
2316
2317






2318
2319
2320
2321
2322
2323
2324
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332







+
+
+
+
+
+







}

void about_menuitem(GtkMenuItem *item, gpointer data)
{
    /* struct gui_data *inst = (struct gui_data *)data; */
    about_box();
}

void event_log_menuitem(GtkMenuItem *item, gpointer data)
{
    struct gui_data *inst = (struct gui_data *)data;
    showeventlog(inst->eventlogstuff, inst->window);
}

void update_specials_menu(void *frontend)
{
    Terminal *term = (Terminal *)frontend;
    struct gui_data *inst = (struct gui_data *)term->frontend;

    const struct telnet_special *specials;
2526
2527
2528
2529
2530
2531
2532

2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544


2545
2546
2547
2548
2549
2550
2551
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562







+












+
+








    /*
     * Set up the Ctrl+rightclick context menu.
     */
    {
	GtkWidget *menuitem;
	char *s;
	extern const int use_event_log;

	inst->menu = gtk_menu_new();

#define MKMENUITEM(title, func) do { \
    menuitem = title ? gtk_menu_item_new_with_label(title) : \
    gtk_menu_item_new(); \
    gtk_container_add(GTK_CONTAINER(inst->menu), menuitem); \
    gtk_widget_show(menuitem); \
    if (func != NULL) \
	gtk_signal_connect(GTK_OBJECT(menuitem), "activate", \
			       GTK_SIGNAL_FUNC(func), inst); \
} while (0)
	if (use_event_log)
	    MKMENUITEM("Event Log", event_log_menuitem);
	MKMENUITEM("Special Commands", NULL);
	inst->specialsmenu = gtk_menu_new();
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), inst->specialsmenu);
	inst->specialsitem1 = menuitem;
	MKMENUITEM(NULL, NULL);
	inst->specialsitem2 = menuitem;
	MKMENUITEM("Clear Scrollback", clear_scrollback_menuitem);
2559
2560
2561
2562
2563
2564
2565


2566
2567
2568
2569
2570
2571
2572
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585







+
+








    inst->textcursor = make_mouse_ptr(inst, GDK_XTERM);
    inst->rawcursor = make_mouse_ptr(inst, GDK_LEFT_PTR);
    inst->blankcursor = make_mouse_ptr(inst, -1);
    make_mouse_ptr(inst, -2);	       /* clean up cursor font */
    inst->currcursor = inst->textcursor;
    show_mouseptr(inst, 1);

    inst->eventlogstuff = eventlogstuff_new();

    inst->term = term_init(&inst->cfg, &inst->ucsdata, inst);
    inst->logctx = log_init(inst, &inst->cfg);
    term_provide_logctx(inst->term, inst->logctx);

    uxsel_init();