From: Daniel Dunbar Date: Mon, 22 Sep 2008 02:27:45 +0000 (+0000) Subject: scan-view: Store bug reporter defaults in ~/.scanview.cfg X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dcd940c0f00530e0e8ca55be1193382e80227ca;p=clang scan-view: Store bug reporter defaults in ~/.scanview.cfg git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56424 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/scan-view/ScanView.py b/tools/scan-view/ScanView.py index 6b70b283ba..f1e488dceb 100644 --- a/tools/scan-view/ScanView.py +++ b/tools/scan-view/ScanView.py @@ -12,6 +12,7 @@ import time import socket import Reporter +import ConfigParser # Keys replaced by server. @@ -27,6 +28,7 @@ kReportReplacements = [(kReportColRE, kReportColRepl), # Other simple parameters kResources = posixpath.join(posixpath.dirname(__file__), 'Resources') +kConfigPath = os.path.expanduser('~/.scanview.cfg') ### @@ -71,7 +73,38 @@ class ScanViewServer(BaseHTTPServer.HTTPServer): self.reporters = reporters self.options = options self.halted = False + self.config = None + self.load_config() + def load_config(self): + self.config = ConfigParser.RawConfigParser() + + # Add defaults + self.config.add_section('ScanView') + for r in Reporter.getReporters(): + self.config.add_section(r.getName()) + for p in r.getParameterNames(): + self.config.set(r.getName(), p, '') + + # Ignore parse errors + try: + self.config.read([kConfigPath]) + except: + pass + + # Save on exit + import atexit + atexit.register(lambda: self.save_config()) + + def save_config(self): + # Ignore errors (only called on exit). + try: + f = open(kConfigPath,'w') + self.config.write(f) + f.close() + except: + pass + def halt(self): self.halted = True if self.options.debug: @@ -180,7 +213,7 @@ class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): title = self.fields.get('title') description = self.fields.get('description') report = self.fields.get('report') - reporter = self.fields.get('reporter') + reporterIndex = self.fields.get('reporter') # Type check form parameters. reportPath = posixpath.join(self.server.root, @@ -192,12 +225,12 @@ class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): if not description: return (False, "Missing description.") try: - reporter = int(reporter) + reporterIndex = int(reporterIndex) except: return (False, "Invalid report method.") # Get the reporter and parameters. - reporter = self.server.reporters[reporter] + reporter = self.server.reporters[reporterIndex] parameters = {} for o in reporter.getParameterNames(): name = '%s_%s'%(reporter.getName(),o) @@ -207,6 +240,11 @@ class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): reporter.getName())) parameters[o] = self.fields[name] + # Update config defaults. + self.server.config.set('ScanView', 'reporter', reporterIndex) + for o in reporter.getParameterNames(): + self.server.config.set(reporter.getName(), o, parameters[o]) + # Create the report. bug = Reporter.BugReport(title, description, [reportPath]) @@ -291,17 +329,23 @@ Line: %s reporterSelections = [] reporterOptions = [] + try: + active = self.server.config.getint('ScanView','reporter') + except: + active = 0 for i,r in enumerate(self.server.reporters): - reporterSelections.append(''%(i,r.getName())) + selected = (i == active) + if selected: + selectedStr = ' selected' + else: + selectedStr = '' + reporterSelections.append(''%(i,selectedStr,r.getName())) options = '\n'.join(["""\ %s: - -"""%(o,r.getName(),o) for o in r.getParameterNames()]) - if i==0: - display = '' - else: - display = 'none' + +"""%(o,r.getName(),o,self.server.config.get(r.getName(), o)) for o in r.getParameterNames()]) + display = ('none','')[selected] reporterOptions.append("""\ %s Options @@ -377,10 +421,9 @@ function updateReporterOptions() { - -