Finer granularity of config box handling. SSH packet logging should
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 26 Apr 2003 14:35:34 +0000 (14:35 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 26 Apr 2003 14:35:34 +0000 (14:35 +0000)
now not show up when it's meaningless (in PuTTYtel, in pterm, and
in the middle of any non-SSH session), and the Connection panel is
inhibited completely in pterm.

git-svn-id: svn://svn.tartarus.org/sgt/putty@3146 cda61777-01e9-0310-a592-d414129be87e

config.c
unix/gtkdlg.c
unix/ptermm.c

index 987b962..fd5cb95 100644 (file)
--- a/config.c
+++ b/config.c
@@ -849,14 +849,27 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
     ctrl_settitle(b, "Session/Logging", "Options controlling session logging");
 
     s = ctrl_getset(b, "Session/Logging", "main", NULL);
-    ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1,
-                     HELPCTX(logging_main),
-                     dlg_stdradiobutton_handler, I(offsetof(Config, logtype)),
-                     "Logging turned off completely", 't', I(LGTYP_NONE),
-                     "Log printable output only", 'p', I(LGTYP_ASCII),
-                     "Log all session output", 'l', I(LGTYP_DEBUG),
-                     "Log SSH packet data", 's', I(LGTYP_PACKETS),
-                     NULL);
+    /*
+     * The logging buttons change depending on whether SSH packet
+     * logging can sensibly be available.
+     */
+    {
+       char *sshlogname;
+       if ((midsession && protocol == PROT_SSH) ||
+           (!midsession && backends[3].name != NULL))
+           sshlogname = "Log SSH packet data";
+       else
+           sshlogname = NULL;         /* this will disable the button */
+       ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1,
+                         HELPCTX(logging_main),
+                         dlg_stdradiobutton_handler,
+                         I(offsetof(Config, logtype)),
+                         "Logging turned off completely", 't', I(LGTYP_NONE),
+                         "Log printable output only", 'p', I(LGTYP_ASCII),
+                         "Log all session output", 'l', I(LGTYP_DEBUG),
+                         sshlogname, 's', I(LGTYP_PACKETS),
+                         NULL);
+    }
     ctrl_filesel(s, "Log file name:", 'f',
                 NULL, TRUE, "Select session log file name",
                 HELPCTX(logging_filename),
@@ -1237,36 +1250,42 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
     ctrl_columns(s, 1, 100);
 
     /*
-     * The Connection panel.
+     * The Connection panel. This doesn't show up if we're in a
+     * non-network utility such as pterm. We tell this by being
+     * passed a protocol < 0.
      */
-    ctrl_settitle(b, "Connection", "Options controlling the connection");
+    if (protocol >= 0) {
+       ctrl_settitle(b, "Connection", "Options controlling the connection");
 
-    if (!midsession) {
-       s = ctrl_getset(b, "Connection", "data", "Data to send to the server");
-       ctrl_editbox(s, "Terminal-type string", 't', 50,
-                    HELPCTX(connection_termtype),
-                    dlg_stdeditbox_handler, I(offsetof(Config,termtype)),
-                    I(sizeof(((Config *)0)->termtype)));
-       ctrl_editbox(s, "Auto-login username", 'u', 50,
-                    HELPCTX(connection_username),
-                    dlg_stdeditbox_handler, I(offsetof(Config,username)),
-                    I(sizeof(((Config *)0)->username)));
-    }
+       if (!midsession) {
+           s = ctrl_getset(b, "Connection", "data",
+                           "Data to send to the server");
+           ctrl_editbox(s, "Terminal-type string", 't', 50,
+                        HELPCTX(connection_termtype),
+                        dlg_stdeditbox_handler, I(offsetof(Config,termtype)),
+                        I(sizeof(((Config *)0)->termtype)));
+           ctrl_editbox(s, "Auto-login username", 'u', 50,
+                        HELPCTX(connection_username),
+                        dlg_stdeditbox_handler, I(offsetof(Config,username)),
+                        I(sizeof(((Config *)0)->username)));
+       }
 
-    s = ctrl_getset(b, "Connection", "keepalive",
-                   "Sending of null packets to keep session active");
-    ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20,
-                HELPCTX(connection_keepalive),
-                dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)),
-                I(-1));
+       s = ctrl_getset(b, "Connection", "keepalive",
+                       "Sending of null packets to keep session active");
+       ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20,
+                    HELPCTX(connection_keepalive),
+                    dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)),
+                    I(-1));
+
+       if (!midsession) {
+           s = ctrl_getset(b, "Connection", "tcp",
+                           "Low-level TCP connection options");
+           ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)",
+                         'n', HELPCTX(connection_nodelay),
+                         dlg_stdcheckbox_handler,
+                         I(offsetof(Config,tcp_nodelay)));
+       }
 
-    if (!midsession) {
-       s = ctrl_getset(b, "Connection", "tcp",
-                       "Low-level TCP connection options");
-       ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)", 'n',
-                     HELPCTX(connection_nodelay),
-                     dlg_stdcheckbox_handler,
-                     I(offsetof(Config,tcp_nodelay)));
     }
 
     if (!midsession) {
index 05b7893..1b58d14 100644 (file)
@@ -1969,7 +1969,7 @@ int do_config_box(const char *title, Config *cfg, int midsession)
     window = gtk_dialog_new();
 
     ctrlbox = ctrl_new_box();
-    setup_config_box(ctrlbox, &sl, midsession, 0);
+    setup_config_box(ctrlbox, &sl, midsession, cfg->protocol);
     unix_setup_config_box(ctrlbox, midsession, window);
 
     gtk_window_set_title(GTK_WINDOW(window), title);
index 84510e7..f2956d9 100644 (file)
@@ -18,7 +18,13 @@ Backend *select_backend(Config *cfg)
 
 int cfgbox(Config *cfg)
 {
-    return 1;                         /* no-op in pterm */
+    /*
+     * This is a no-op in pterm, except that we'll ensure the
+     * protocol is set to -1 to inhibit the useless Connection
+     * panel in the config box.
+     */
+    cfg->protocol = -1;
+    return 1;
 }
 
 void cleanup_exit(int code)
@@ -42,6 +48,7 @@ int main(int argc, char **argv)
     extern void pty_pre_init(void);    /* declared in pty.c */
 
     cmdline_tooltype = TOOLTYPE_NONNETWORK;
+    default_protocol = -1;
 
     pty_pre_init();