          lbl_status.pack(side=tk.BOTTOM, anchor=tk.N)
  
      def execute_script(self, command):
          
          optlist = ['faceswap.py', command]
          for item in self.opts[command]:
              opt_value = str(item.get('value','').get())
              opt = item['opts'][0]
              if opt_value == 'False' or opt_value == '':
                  continue
              elif opt_value == 'True':
                  optlist.append(opt)
              else:
                  optlist.extend((opt, opt_value))
          sys.argv = optlist
          process = Thread(target=self.launch_thread, args=(command,))
          process.start()
  
      def launch_thread(self, command):
          ''' Launch the script inside a subprocess to keep the GUI active '''
          title = command.capitalize()
          self.statustext.set('Running - {}'.format(title))
          self.parser.set_defaults(func=self.bad_args)
          arguments = self.parser.parse_args()
          arguments.func(arguments)
          self.statustext.set('Idle')
          
  # Right Frame setup    
      def add_right_frame(self, page):
          ''' Add the options panel to the right frame of each page '''
          frame = tk.Frame(page)
 
</s> remove         lbl_title = tk.Label(statusframe, text='Status', width=15, anchor=tk.SW)
        lbl_title.pack(side=tk.TOP)
        self.statustext.set('Idle')
        lbl_status = tk.Label(statusframe, height=1, width=15, textvariable=self.statustext,  wraplength=120, justify=tk.LEFT, anchor=tk.NW, bg="gray90")
        lbl_status.pack(side=tk.BOTTOM, anchor=tk.N)

    def execute_script(self, command):
 </s> add         lbltitle = tk.Label(statusframe, text='Status', width=15, anchor=tk.SW)
        lbltitle.pack(side=tk.TOP)
        self.gui.statustext.set('Idle')
        lblstatus = tk.Label(   statusframe,
                                height=1,
                                width=15,
                                textvariable=self.gui.statustext,
                                wraplength=120,
                                justify=tk.LEFT,
                                anchor=tk.NW,
                                bg="gray90")
        lblstatus.pack(side=tk.BOTTOM, anchor=tk.N)

class CommandTab(object):
    ''' Tabs to hold the command options '''
    def __init__(self, gui, notebook, command):
        self.gui = gui
        self.notebook = notebook
        self.page = ttk.Frame(self.notebook)
        self.command = command
        self.title = command.title()

    def build_tab(self):
        ''' Build the tab '''
        actionframe = ActionFrame(self.gui, self.page, self.command)
        actionframe.build_frame()
        self.add_frame_seperator()
        opt_frame = self.add_right_frame() </s> remove # Right Frame setup    
    def add_right_frame(self, page):
 </s> add         self.notebook.add(self.page, text=self.title)

    def add_frame_seperator(self):
        ''' Add a seperator between left and right frames '''
        sep = tk.Frame(self.page, width=2, bd=1, relief=tk.SUNKEN)
        sep.pack(fill=tk.Y, padx=5, side=tk.LEFT)

    def add_right_frame(self): </s> remove         frame = tk.Frame(page)
 </s> add         frame = tk.Frame(self.page) </s> remove     @staticmethod
    def add_frame_seperator(page):
        ''' Add a seperator between left and right frames '''
        separator = tk.Frame(page, width=2, bd=1, relief=tk.SUNKEN)
        separator.pack(fill=tk.Y, padx=5, side=tk.LEFT)

# Left Frame stuff
    def add_left_frame(self, page, title):
        ''' Add help display and execute button to the left frame of each page '''
        frame = tk.Frame(page)
 </s> add     def bind_help(self, control, helptext):
        ''' Controls the help text displayed on mouse hover '''
        for action in ('<Enter>', '<FocusIn>', '<Leave>', '<FocusOut>'):
            helptext = helptext if action in ('<Enter>', '<FocusIn>') else ''
            control.bind(action, lambda event, txt=helptext: self.helptext.set(txt))

    def execute_task(self, command):
        ''' Execute the task in Faceswap.py '''
        self.task.execute_script(self.opts, command, self.parser, self.statustext)

class ActionFrame(object):
    '''Action Frame - Displays information and action controls '''
    def __init__(self, gui, page, command):
        self.gui = gui
        self.page = page
        self.command = command
        self.title = command.title()

    def build_frame(self):
        ''' Add help display and Action buttons to the left frame of each page '''
        frame = tk.Frame(self.page) </s> remove         ctl_type = option['control_type']
        ctl_title = option['control_title']
        ctl_help = ' '.join(option.get('help', '').split())
        ctl_help = '. '.join(i.capitalize() for i in ctl_help.split('. '))
        ctl_help = ctl_title + ' - ' + ctl_help
        ctl_frame = self.build_control_frame(page)
        self.build_control_label(ctl_frame, ctl_title)
        if ctl_type == 'combobox':
            option['value'] = self.build_combobox(ctl_frame, ctl_help, option.get('default',''), option['choices'])
        if ctl_type == 'checkbox':
            option['value'] = self.build_checkbox(ctl_frame, ctl_help, option.get('default', False), ctl_title)
        if ctl_type == 'entrybox':
            option['value'] = self.build_entrybox(ctl_frame, ctl_help, option.get('default',''), None)
        if ctl_type in ('filechooser', 'folderchooser'):
            option['value'] = self.build_entrybox(ctl_frame, ctl_help, option.get('default',''), ctl_type)
 </s> add         ctl = option['control']
        ctltitle = option['control_title']
        sysbrowser = option['filesystem_browser']
        ctlhelp = ' '.join(option.get('help', '').split())
        ctlhelp = '. '.join(i.capitalize() for i in ctlhelp.split('. '))
        ctlhelp = ctltitle + ' - ' + ctlhelp
        ctlframe = self.build_control_frame(option_frame)
        
        dflt = option.get('default', False) if ctl == tk.Checkbutton else option.get('default', '')
        choices = option['choices'] if ctl == ttk.Combobox else None
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
          lbl_status.pack(side=tk.BOTTOM, anchor=tk.N)
  
      def execute_script(self, command):
          
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
        for option in self.gui.opts[self.command]:
            self.build_tabs(option, opt_frame)
          
  # Right Frame setup    
      def add_right_frame(self, page):
          ''' Add the options panel to the right frame of each page '''
          frame = tk.Frame(page)
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 GUI v0.1.0a (#336)

* Code clean up

* Code refactor

* bugfix: Find paths to icons when launched from outside faceswap dir

* Bugfix: Disable GUI if TkInter app not available

* BugFix: Disable GUI if $DISPLAY not detected

* Minor code ammends

* Code Refactor

* DISPLAY check fix 
scripts/gui.py