Unix can't sensibly enumerate printers (since they're defined as
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 5 Apr 2003 16:12:52 +0000 (16:12 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 5 Apr 2003 16:12:52 +0000 (16:12 +0000)
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
unix/ptermm.c
unix/uxcfg.c
unix/uxprint.c
unix/uxputty.c

index 0ce6f06..5488031 100644 (file)
--- 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));
index 6bc0ea2..58b42b6 100644 (file)
@@ -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;
index ff68368..409c06c 100644 (file)
@@ -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!
      */
index 77bcb7f..7d01aeb 100644 (file)
@@ -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) { }
index 1690402..18f1b6b 100644 (file)
@@ -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)