      def build_page(self, container, category):
          """ Build a plugin config page """
          logger.debug("Building plugin config page: '%s'", category)
          plugins = sorted(list(key for key in self.config_dict_gui[category].keys()))
          panel_kwargs = dict(columns=2, radio_columns=2, blank_nones=False)
          if any(plugin != category for plugin in plugins):
              page = ttk.Notebook(container)
              page.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
              for plugin in plugins:
                  frame = ControlPanel(page,
 
</s> remove     def build_edit_menu(self):
        """ Add the edit menu to the menu bar """
        logger.debug("Building Edit menu")
        configs = self.scan_for_configs()
        for name in sorted(list(configs.keys())):
            label = "Configure {} Plugins...".format(name.title())
            config = configs[name]
            self.edit_menu.add_command(
                label=label,
                underline=10,
                command=lambda conf=(name, config), root=self.root: popup_config(conf, root))
        self.add_cascade(label="Edit", menu=self.edit_menu, underline=0)
        logger.debug("Built Edit menu")
 </s> add  </s> remove     @property
    def last_subframe(self):
        """ Returns the last column """
        return self.subframes[self.columns - 1]

 </s> add  </s> remove         return topcontainer, bottomcontainer
 </s> add     @staticmethod
    def set_initial_focus():
        """ Set the tab focus from settings """
        config = get_config()
        tab = config.user_config_dict["tab"]
        logger.debug("Setting focus for tab: %s", tab)
        tabs = config.command_tabs
        if tab in tabs:
            config.command_notebook.select(tabs[tab])
        else:
            tool_tabs = config.tools_command_tabs
            if tab in tool_tabs:
                config.command_notebook.select(tabs["tools"])
                config.command_notebook.tools_notebook.select(tool_tabs[tab])
        logger.debug("Focus set to: %s", tab)

    def set_layout(self):
        """ Set initial layout """
        self.update_idletasks()
        root = get_config().root
        config = get_config().user_config_dict
        r_width = root.winfo_width()
        r_height = root.winfo_height()
        w_ratio = config["options_panel_width"] / 100.0
        h_ratio = 1 - (config["console_panel_height"] / 100.0)
        width = round(r_width * w_ratio)
        height = round(r_height * h_ratio)
        logger.debug("Setting Initial Layout: (root_width: %s, root_height: %s, width_ratio: %s, "
                     "height_ratio: %s, width: %s, height: %s", r_width, r_height, w_ratio,
                     h_ratio, width, height)
        self.objects["containers"]["top"].sash_place(0, width, 1)
        self.objects["containers"]["main"].sash_place(0, 1, height)
        self.update_idletasks() </s> remove         """ Set a subrame for each requested column """
 </s> add         """ Set a subrame for each possible column """ </s> remove         for idx in range(self.columns):
            if self.columns != 1:
                name = "{}_{}".format(self.parent.winfo_name(), idx)
                subframe = ttk.Frame(self.parent, name=name)
 </s> add         for idx in range(self.max_columns):
            name = "af_subframe_{}".format(idx)
            subframe = ttk.Frame(self.parent, name=name)
            if idx < self.columns:
                # Only pack visible columns
        panel_kwargs = dict(columns=2, option_columns=2, blank_nones=False)
      def build_page(self, container, category):
          """ Build a plugin config page """
          logger.debug("Building plugin config page: '%s'", category)
          plugins = sorted(list(key for key in self.config_dict_gui[category].keys()))
        panel_kwargs = dict(columns=2, option_columns=2, blank_nones=False)
          if any(plugin != category for plugin in plugins):
              page = ttk.Notebook(container)
              page.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
              for plugin in plugins:
                  frame = ControlPanel(page,
keep keep keep keep replace keep keep keep keep keep
 Gui Updates (#847)

* GUI Improvements

 - Add basic GUI Config options (available in settings menu)
 - Dynamically add/remove columns on settings panel resize
 - Wrap text properly on info headers
 - Fix helptext formatting for configs
 - Standardize Tooltip widths
 - [code] Apply some widget naming
 - [code] Rename radio_columns to option_columns
 - [code] fix column count checking
 - Add Starting Tab config item
 - Add info boxes to main pages
 - Global font settings
 - Add resources to help menu 
lib/gui/popup_configure.py