}
/*
+ * Return the top-level GtkWindow associated with a particular
+ * front end instance.
+ */
+void *get_window(void *frontend)
+{
+ Terminal *term = (Terminal *)frontend;
+ struct gui_data *inst = (struct gui_data *)term->frontend;
+ return inst->window;
+}
+
+/*
* Minimise or restore the window in response to a server-side
* request.
*/
{
int err = 0;
extern char **pty_argv; /* declared in pty.c */
+ extern int use_pty_argv;
/*
* Macros to make argument handling easier. Note that because
cfg->colours[index][2] = col.blue / 256;
}
- } else if (!strcmp(p, "-e")) {
+ } else if (use_pty_argv && !strcmp(p, "-e")) {
/* This option swallows all further arguments. */
if (!do_everything)
break;
gdk_input_remove(id);
}
-int main(int argc, char **argv)
+int pt_main(int argc, char **argv)
{
- extern void pty_pre_init(void); /* declared in pty.c */
+ extern Backend *select_backend(Config *cfg);
+ extern int cfgbox(Config *cfg);
struct gui_data *inst;
int font_charset;
* it */
block_signal(SIGCHLD, 1);
- pty_pre_init();
-
gtk_init(&argc, &argv);
/*
if (do_cmdline(argc, argv, 1, &inst->cfg))
exit(1); /* post-defaults, do everything */
+ if (!cfgbox(&inst->cfg))
+ exit(0); /* config box hit Cancel */
+
inst->fonts[0] = gdk_font_load(inst->cfg.font.name);
if (!inst->fonts[0]) {
fprintf(stderr, "pterm: unable to load font \"%s\"\n",
inst->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- if (inst->cfg.wintitle[0])
- set_title(inst, inst->cfg.wintitle);
- else
- set_title(inst, "pterm");
-
/*
* Set up the colour map.
*/
uxsel_init();
- inst->back = &pty_backend;
- inst->back->init((void *)inst->term, &inst->backhandle, &inst->cfg,
- NULL, 0, NULL, 0);
+ inst->back = select_backend(&inst->cfg);
+ {
+ char *realhost;
+
+ inst->back->init((void *)inst->term, &inst->backhandle, &inst->cfg,
+ inst->cfg.host, inst->cfg.port, &realhost,
+ inst->cfg.tcp_nodelay);
+
+ if (inst->cfg.wintitle[0])
+ set_title(inst, inst->cfg.wintitle);
+ else {
+ char *title = make_default_wintitle(realhost);
+ set_title(inst, title);
+ sfree(title);
+ }
+ }
inst->back->provide_logctx(inst->backhandle, inst->logctx);
term_provide_resize_fn(inst->term, inst->back->size, inst->backhandle);