From 0f9156194d42033ea53cf6242cf6f33e78159532 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 5 Apr 2003 16:12:52 +0000 Subject: [PATCH] Unix can't sensibly enumerate printers (since they're defined as being lpr commands), so the Unix config box now replaces the printer combo box with an ordinary edit box. git-svn-id: svn://svn.tartarus.org/sgt/putty@3063 cda61777-01e9-0310-a592-d414129be87e --- config.c | 18 ++++++++++++------ unix/ptermm.c | 8 -------- unix/uxcfg.c | 8 ++++++++ unix/uxprint.c | 14 ++++++++++++++ unix/uxputty.c | 8 -------- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/config.c b/config.c index 0ce6f063..54880318 100644 --- a/config.c +++ b/config.c @@ -133,12 +133,18 @@ static void printerbox_handler(union control *ctrl, void *dlg, printer_enum *pe; dlg_update_start(ctrl, dlg); - dlg_listbox_clear(ctrl, dlg); - dlg_listbox_add(ctrl, dlg, PRINTER_DISABLED_STRING); - pe = printer_start_enum(&nprinters); - for (i = 0; i < nprinters; i++) - dlg_listbox_add(ctrl, dlg, printer_get_name(pe, i)); - printer_finish_enum(pe); + /* + * Some backends may wish to disable the drop-down list on + * this edit box. Be prepared for this. + */ + if (ctrl->editbox.has_list) { + dlg_listbox_clear(ctrl, dlg); + dlg_listbox_add(ctrl, dlg, PRINTER_DISABLED_STRING); + pe = printer_start_enum(&nprinters); + for (i = 0; i < nprinters; i++) + dlg_listbox_add(ctrl, dlg, printer_get_name(pe, i)); + printer_finish_enum(pe); + } dlg_editbox_set(ctrl, dlg, (*cfg->printer ? cfg->printer : PRINTER_DISABLED_STRING)); diff --git a/unix/ptermm.c b/unix/ptermm.c index 6bc0ea2c..58b42b61 100644 --- a/unix/ptermm.c +++ b/unix/ptermm.c @@ -30,14 +30,6 @@ int decode_codepage(char *cp_name) return -2; } -printer_enum *printer_start_enum(int *nprinters_ptr) { - *nprinters_ptr = 0; - return NULL; -} -char *printer_get_name(printer_enum *pe, int i) { return NULL; -} -void printer_finish_enum(printer_enum *pe) { } - Backend *select_backend(Config *cfg) { return &pty_backend; diff --git a/unix/uxcfg.c b/unix/uxcfg.c index ff683686..409c06c2 100644 --- a/unix/uxcfg.c +++ b/unix/uxcfg.c @@ -43,6 +43,14 @@ void unix_setup_config_box(struct controlbox *b, int midsession) */ /* + * On Unix, we don't have a drop-down list for the printer + * control. + */ + s = ctrl_getset(b, "Terminal", "printing", "Remote-controlled printing"); + assert(s->ncontrols == 1 && s->ctrls[0]->generic.type == CTRL_EDITBOX); + s->ctrls[0]->editbox.has_list = 0; + + /* * GTK makes it rather easier to put the scrollbar on the left * than Windows does! */ diff --git a/unix/uxprint.c b/unix/uxprint.c index 77bcb7f1..7d01aeb4 100644 --- a/unix/uxprint.c +++ b/unix/uxprint.c @@ -41,3 +41,17 @@ void printer_finish_job(printer_job *pj) pclose(pj->fp); sfree(pj); } + +/* + * There's no sensible way to enumerate printers under Unix, since + * practically any valid Unix command is a valid printer :-) So + * these are useless stub functions, and uxcfg.c will disable the + * drop-down list in the printer configurer. + */ +printer_enum *printer_start_enum(int *nprinters_ptr) { + *nprinters_ptr = 0; + return NULL; +} +char *printer_get_name(printer_enum *pe, int i) { return NULL; +} +void printer_finish_enum(printer_enum *pe) { } diff --git a/unix/uxputty.c b/unix/uxputty.c index 16904028..18f1b6b0 100644 --- a/unix/uxputty.c +++ b/unix/uxputty.c @@ -94,14 +94,6 @@ int decode_codepage(char *cp_name) return -2; } -printer_enum *printer_start_enum(int *nprinters_ptr) { - *nprinters_ptr = 0; - return NULL; -} -char *printer_get_name(printer_enum *pe, int i) { return NULL; -} -void printer_finish_enum(printer_enum *pe) { } - const char *const appname = "PuTTY"; Backend *select_backend(Config *cfg) -- 2.11.0