]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/gtkcfg.c
first pass
[PuTTY.git] / unix / gtkcfg.c
index 00e88b40da62f2af69bcd6d77c438ce439f8c39e..4307176f13698b8fea65cd9819176830004bfe3d 100644 (file)
@@ -42,8 +42,8 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
                    "Control the scrollback in the window");
     ctrl_checkbox(s, "Scrollbar on left", 'l',
                  HELPCTX(no_help),
-                 dlg_stdcheckbox_handler,
-                  I(offsetof(Config,scrollbar_on_left)));
+                 conf_checkbox_handler,
+                  I(CONF_scrollbar_on_left));
     /*
      * Really this wants to go just after `Display scrollbar'. See
      * if we can find that control, and do some shuffling.
@@ -51,7 +51,7 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
     for (i = 0; i < s->ncontrols; i++) {
         c = s->ctrls[i];
         if (c->generic.type == CTRL_CHECKBOX &&
-            c->generic.context.i == offsetof(Config,scrollbar)) {
+            c->generic.context.i == CONF_scrollbar) {
             /*
              * Control i is the scrollbar checkbox.
              * Control s->ncontrols-1 is the scrollbar-on-left one.
@@ -81,6 +81,7 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
             memmove(b->ctrlsets+i, b->ctrlsets+i+1,
                     (b->nctrlsets-i-1) * sizeof(*b->ctrlsets));
             b->nctrlsets--;
+            ctrl_free_set(s2);
             break;
         }
     }
@@ -89,29 +90,29 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
                     "Fonts for displaying non-bold text");
     ctrl_fontsel(s, "Font used for ordinary text", 'f',
                 HELPCTX(no_help),
-                dlg_stdfontsel_handler, I(offsetof(Config,font)));
+                conf_fontsel_handler, I(CONF_font));
     ctrl_fontsel(s, "Font used for wide (CJK) text", 'w',
                 HELPCTX(no_help),
-                dlg_stdfontsel_handler, I(offsetof(Config,widefont)));
+                conf_fontsel_handler, I(CONF_widefont));
     s = ctrl_getset(b, "Window/Fonts", "fontbold",
                     "Fonts for displaying bolded text");
     ctrl_fontsel(s, "Font used for bolded text", 'b',
                 HELPCTX(no_help),
-                dlg_stdfontsel_handler, I(offsetof(Config,boldfont)));
+                conf_fontsel_handler, I(CONF_boldfont));
     ctrl_fontsel(s, "Font used for bold wide text", 'i',
                 HELPCTX(no_help),
-                dlg_stdfontsel_handler, I(offsetof(Config,wideboldfont)));
+                conf_fontsel_handler, I(CONF_wideboldfont));
     ctrl_checkbox(s, "Use shadow bold instead of bold fonts", 'u',
                  HELPCTX(no_help),
-                 dlg_stdcheckbox_handler,
-                 I(offsetof(Config,shadowbold)));
+                 conf_checkbox_handler,
+                 I(CONF_shadowbold));
     ctrl_text(s, "(Note that bold fonts or shadow bolding are only"
              " used if you have not requested bolding to be done by"
              " changing the text colour.)",
               HELPCTX(no_help));
     ctrl_editbox(s, "Horizontal offset for shadow bold:", 'z', 20,
-                HELPCTX(no_help), dlg_stdeditbox_handler,
-                 I(offsetof(Config,shadowboldoffset)), I(-1));
+                HELPCTX(no_help), conf_editbox_handler,
+                 I(CONF_shadowboldoffset), I(-1));
 
     /*
      * Markus Kuhn feels, not totally unreasonably, that it's good
@@ -125,6 +126,35 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win)
                    "Character set translation on received data");
     ctrl_checkbox(s, "Override with UTF-8 if locale says so", 'l',
                  HELPCTX(translation_utf8_override),
-                 dlg_stdcheckbox_handler,
-                 I(offsetof(Config,utf8_override)));
+                 conf_checkbox_handler,
+                 I(CONF_utf8_override));
+
+#ifdef OSX_META_KEY_CONFIG
+    /*
+     * On OS X, there are multiple reasonable opinions about whether
+     * Option or Command (or both, or neither) should act as a Meta
+     * key, or whether they should have their normal OS functions.
+     */
+    s = ctrl_getset(b, "Terminal/Keyboard", "meta",
+                   "Choose the Meta key:");
+    ctrl_checkbox(s, "Option key acts as Meta", 'p',
+                 HELPCTX(no_help),
+                 conf_checkbox_handler, I(CONF_osx_option_meta));
+    ctrl_checkbox(s, "Command key acts as Meta", 'm',
+                 HELPCTX(no_help),
+                 conf_checkbox_handler, I(CONF_osx_command_meta));
+#endif
+
+    if (!midsession) {
+        /*
+         * Allow the user to specify the window class as part of the saved
+         * configuration, so that they can have their window manager treat
+         * different kinds of PuTTY and pterm differently if they want to.
+         */
+        s = ctrl_getset(b, "Window/Behaviour", "x11",
+                        "X Window System settings");
+        ctrl_editbox(s, "Window class name:", 'z', 50,
+                     HELPCTX(no_help), conf_editbox_handler,
+                     I(CONF_winclass), I(1));
+    }
 }