mercurial/ui.py
changeset 3348 ab900698b832
parent 3347 25d270e0b27f
child 3384 9e834d039681
equal deleted inserted replaced
3347:25d270e0b27f 3348:ab900698b832
    30         self.prev_header = []
    30         self.prev_header = []
    31         if parentui is None:
    31         if parentui is None:
    32             # this is the parent of all ui children
    32             # this is the parent of all ui children
    33             self.parentui = None
    33             self.parentui = None
    34             self.readhooks = []
    34             self.readhooks = []
       
    35             self.quiet = quiet
       
    36             self.verbose = verbose
       
    37             self.debugflag = debug
       
    38             self.interactive = interactive
       
    39             self.traceback = traceback
    35             self.cdata = ConfigParser.SafeConfigParser()
    40             self.cdata = ConfigParser.SafeConfigParser()
    36             self.readconfig(util.rcpath())
    41             self.readconfig(util.rcpath())
    37 
       
    38             self.quiet = self.configbool("ui", "quiet")
       
    39             self.verbose = self.configbool("ui", "verbose")
       
    40             self.debugflag = self.configbool("ui", "debug")
       
    41             self.interactive = self.configbool("ui", "interactive", True)
       
    42             self.traceback = traceback
       
    43 
       
    44             self.updateopts(verbose, debug, quiet, interactive)
    42             self.updateopts(verbose, debug, quiet, interactive)
    45         else:
    43         else:
    46             # parentui may point to an ui object which is already a child
    44             # parentui may point to an ui object which is already a child
    47             self.parentui = parentui.parentui or parentui
    45             self.parentui = parentui.parentui or parentui
    48             self.readhooks = self.parentui.readhooks[:]
    46             self.readhooks = self.parentui.readhooks[:]
    53     def __getattr__(self, key):
    51     def __getattr__(self, key):
    54         return getattr(self.parentui, key)
    52         return getattr(self.parentui, key)
    55 
    53 
    56     def updateopts(self, verbose=False, debug=False, quiet=False,
    54     def updateopts(self, verbose=False, debug=False, quiet=False,
    57                    interactive=True, traceback=False, config=[]):
    55                    interactive=True, traceback=False, config=[]):
    58         self.quiet = self.quiet or quiet
       
    59         self.verbose = self.verbose or verbose
       
    60         self.debugflag = self.debugflag or debug
       
    61 
       
    62         self.verbosity_constraints(quiet, verbose, debug)
       
    63 
       
    64         self.interactive = (self.interactive and interactive)
       
    65         self.traceback = self.traceback or traceback
       
    66         for section, name, value in config:
    56         for section, name, value in config:
    67             self.setconfig(section, name, value)
    57             self.setconfig(section, name, value)
    68 
    58 
    69     def verbosity_constraints(self, quiet, verbose, debug):
    59         if quiet or verbose or debug:
       
    60             self.setconfig('ui', 'quiet', str(bool(quiet)))
       
    61             self.setconfig('ui', 'verbose', str(bool(verbose)))
       
    62             self.setconfig('ui', 'debug', str(bool(debug)))
       
    63 
       
    64         self.verbosity_constraints()
       
    65 
       
    66         if not interactive:
       
    67             self.setconfig('ui', 'interactive', 'False')
       
    68             self.interactive = False
       
    69 
       
    70         self.traceback = self.traceback or traceback
       
    71 
       
    72     def verbosity_constraints(self):
       
    73         self.quiet = self.configbool('ui', 'quiet')
       
    74         self.verbose = self.configbool('ui', 'verbose')
       
    75         self.debugflag = self.configbool('ui', 'debug')
       
    76 
    70         if self.debugflag:
    77         if self.debugflag:
    71             self.verbose = True
    78             self.verbose = True
    72             self.quiet = False
    79             self.quiet = False
    73         elif self.verbose and self.quiet:
    80         elif self.verbose and self.quiet:
    74             if quiet and not verbose:
    81             self.quiet = self.verbose = False
    75                 self.verbose = False
       
    76             elif not quiet and verbose:
       
    77                 self.quiet = False
       
    78             else:
       
    79                 self.quiet = self.verbose = False
       
    80 
    82 
    81     def readconfig(self, fn, root=None):
    83     def readconfig(self, fn, root=None):
    82         if isinstance(fn, basestring):
    84         if isinstance(fn, basestring):
    83             fn = [fn]
    85             fn = [fn]
    84         for f in fn:
    86         for f in fn:
   111                 else:
   113                 else:
   112                     pathsitems = items
   114                     pathsitems = items
   113                 for n, path in pathsitems:
   115                 for n, path in pathsitems:
   114                     if path and "://" not in path and not os.path.isabs(path):
   116                     if path and "://" not in path and not os.path.isabs(path):
   115                         cdata.set("paths", n, os.path.join(root, path))
   117                         cdata.set("paths", n, os.path.join(root, path))
       
   118 
       
   119         # update quiet/verbose/debug and interactive status
       
   120         if section is None or section == 'ui':
       
   121             if name is None or name in ('quiet', 'verbose', 'debug'):
       
   122                 self.verbosity_constraints()
       
   123 
       
   124             if name is None or name == 'interactive':
       
   125                 self.interactive = self.configbool("ui", "interactive", True)
   116 
   126 
   117     def setconfig(self, section, name, value):
   127     def setconfig(self, section, name, value):
   118         if not self.overlay:
   128         if not self.overlay:
   119             self.overlay = ConfigParser.SafeConfigParser()
   129             self.overlay = ConfigParser.SafeConfigParser()
   120         for cdata in (self.overlay, self.cdata):
   130         for cdata in (self.overlay, self.cdata):