                  rc_menu.cm_bind()
              clone.pack(**widget_dict["pack_info"])
              old_children.append(widget_dict["id"])
              new_children.append(clone)
              if widget_dict.get("children", None) is not None:
                  self.pack_widget_clones(widget_dict["children"], old_children, new_children)
 
</s> remove             sub_frame = ttk.Frame(parent)
 </s> add             sub_frame = ttk.Frame(parent, style="CPanel.TFrame") </s> remove         """ Widgets cannot be given a new parent so we need to clone
            them and then pack the new widget """
 </s> add         """ Recursively pass through the list of widgets creating clones and packing all
        children.

        Widgets cannot be given a new parent so we need to clone them and then pack the
        new widgets.

        Parameters
        ----------
        widget_dicts: list
            List of dictionaries, in appearance order, of widget information for cloning widgets
        old_childen: list, optional
            Used for recursion. Leave at ``None``
        new_childen: list, optional
            Used for recursion. Leave at ``None``
        """ </s> remove         lbl = ttk.Label(self.frame, text=self.option.title, width=self.label_width, anchor=tk.W)
 </s> add         lbl = ttk.Label(self.frame,
                        text=self.option.title,
                        width=self.label_width,
                        anchor=tk.W,
                        style="CPanel.TLabel") </s> remove         lbl = ttk.Label(frame, text=self.option.title, width=self.label_width, anchor=tk.W)
 </s> add         lbl = ttk.Label(frame,
                        text=self.option.title,
                        width=self.label_width,
                        anchor=tk.W,
                        style="CPanel.TLabel") </s> remove         """ Return a new group frame """
 </s> add         """ Return a group frame.

        If a group frame has already been created for the given group, then it will be returned,
        otherwise it will be created and returned.

        Parameters
        ----------
        group: str
            The name of the group to obtain the group frame for

        Returns
        -------
        :class:`ttk.Frame` or :class:`ToggledFrame`
            If this is a 'master' group frame then returns a standard frame. If this is any
            other group, then will return the ToggledFrame for that group
        """
            # Handle ToggledFrame sub-frames. If the parent is not set to expanded, then we need to
            # hide the sub-frame
            if clone.winfo_name() == "toggledframe_subframe":
                toggle_frame = clone.nametowidget(clone.winfo_parent())
                if not toggle_frame.is_expanded:
                    logger.debug("Hiding minimized toggle box: %s", clone)
                    clone.pack_forget()

                  rc_menu.cm_bind()
              clone.pack(**widget_dict["pack_info"])
            # Handle ToggledFrame sub-frames. If the parent is not set to expanded, then we need to
            # hide the sub-frame
            if clone.winfo_name() == "toggledframe_subframe":
                toggle_frame = clone.nametowidget(clone.winfo_parent())
                if not toggle_frame.is_expanded:
                    logger.debug("Hiding minimized toggle box: %s", clone)
                    clone.pack_forget()

              old_children.append(widget_dict["id"])
              new_children.append(clone)
              if widget_dict.get("children", None) is not None:
                  self.pack_widget_clones(widget_dict["children"], old_children, new_children)
keep add keep keep keep keep
 GUI - Make groups collapsible 
lib/gui/control_helper.py