~exaile-devel/exaile/3.3.x

« back to all changes in this revision

Viewing changes to xl/main.py

  • Committer: Dustin Spicuzza
  • Date: 2013-10-26 04:44:40 UTC
  • Revision ID: dustin@virtualroadside.com-20131026044440-wm0my2ir2ca9ppqp
* Locale: fixes crash with --help on certain locales
- Adds warning if the locale cannot be set correctly
... bzr does this too, so it can't be that bad of a solution

Show diffs side-by-side

added added

removed removed

Lines of Context:
81
81
        """
82
82
        self.quitting = False
83
83
        self.loading = True
84
 
        (self.options, self.args) = self.get_options().parse_args()
 
84
        
 
85
        try:
 
86
            (self.options, self.args) = self.get_options().parse_args()
 
87
        except UnicodeDecodeError:
 
88
            (self.options, self.args) = self.get_options(unicode_bug_happened=True).parse_args()
85
89
 
86
90
        if self.options.ShowVersion:
87
91
            self.version()
422
426
        logfile.setFormatter(formatter)
423
427
        logging.getLogger("").addHandler(logfile)
424
428
 
425
 
    def get_options(self):
 
429
    def get_options(self, unicode_bug_happened=False):
426
430
        """
427
431
            Get the options for exaile
428
432
        """
429
433
        from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
430
434
 
431
 
        class OverrideHelpFormatter(IndentedHelpFormatter):
432
 
            """
433
 
                Merely for translation purposes
434
 
            """
435
 
            def format_usage(self, usage):
436
 
                return '%s\n' % usage
437
 
 
 
435
        if unicode_bug_happened:
 
436
            
 
437
            #
 
438
            # Bug: https://bugs.launchpad.net/exaile/+bug/1154420
 
439
            #
 
440
            # For some locales, python doesn't merge the options and
 
441
            # the headings and our translated text correctly. Unfortunately,
 
442
            # there doesn't seem to be a good way to deal with the problem
 
443
            # on Python 2.x . If we disable the usage/heading, at least
 
444
            # the options will display, despite filling all the text as ???. 
 
445
            #
 
446
            
 
447
            print >> sys.stderr, "exaile: Warning: Unicode error displaying --help, check locale settings"
 
448
            
 
449
            class OverrideHelpFormatter(IndentedHelpFormatter):
 
450
                def format_usage(self, usage):
 
451
                    return ''
 
452
                def format_heading(self, heading):
 
453
                    return ''
 
454
        else:
 
455
            class OverrideHelpFormatter(IndentedHelpFormatter):
 
456
                """
 
457
                    Merely for translation purposes
 
458
                """
 
459
                def format_usage(self, usage):
 
460
                    return '%s\n' % usage
 
461
        
438
462
        usage = _("Usage: exaile [OPTION]... [URI]")
439
463
        optionlabel = _('Options') # Merely for translation purposes
440
464
        p = OptionParser(usage=usage, add_help_option=False,