          self.orig_and_operation = (redir.orig, operation)
  
      def __repr__(self):
          return "%s(%r, %r)" % (self.__class__.__name__,
                                 self.redir, self.operation)
  
      def __call__(self, *args):
          return self.tk_call(self.orig_and_operation + args)
  
  
 
</s> remove         self.tk_call = redir.tk_.call
        self.orig_and_operation = (redir.orig, operation)
 </s> add         self.tk_call = redirect.tk_.call
        self.orig_and_operation = (redirect.orig, operation) </s> remove         self.tk_ = redir.tk_  # redundant with self.redir
        self.orig = redir.orig  # redundant with self.redir
 </s> add         self.tk_ = redirect.tk_  # redundant with self.redirect
        self.orig = redirect.orig  # redundant with self.redirect </s> remove     original_insert = redir.register("insert", my_insert)
 </s> add     original_insert = redirect.register("insert", my_insert) </s> remove     redir = WidgetRedirector(text)
 </s> add     redirect = WidgetRedirector(text) </s> remove         self.tk_vars["consoleclear"].set(True)
 </s> add         self.tk_vars["console_clear"].set(True)
                               self.redirect, self.operation)
          self.orig_and_operation = (redir.orig, operation)
  
      def __repr__(self):
          return "%s(%r, %r)" % (self.__class__.__name__,
                               self.redirect, self.operation)
  
      def __call__(self, *args):
          return self.tk_call(self.orig_and_operation + args)
  
  
keep keep keep keep replace keep keep keep keep keep
 GUI fixes
  - Split themes and styles to own module
  - Fix border on console window
  - variable name updates to make pep8 happy 
lib/gui/custom_widgets.py