diff options
Diffstat (limited to 'src/jarabe/controlpanel')
-rw-r--r-- | src/jarabe/controlpanel/__init__.py | 1 | ||||
-rw-r--r-- | src/jarabe/controlpanel/cmd.py | 39 | ||||
-rw-r--r-- | src/jarabe/controlpanel/gui.py | 69 | ||||
-rw-r--r-- | src/jarabe/controlpanel/inlinealert.py | 10 | ||||
-rw-r--r-- | src/jarabe/controlpanel/sectionview.py | 13 | ||||
-rw-r--r-- | src/jarabe/controlpanel/toolbar.py | 9 |
6 files changed, 78 insertions, 63 deletions
diff --git a/src/jarabe/controlpanel/__init__.py b/src/jarabe/controlpanel/__init__.py index a9dd95a..85f6a24 100644 --- a/src/jarabe/controlpanel/__init__.py +++ b/src/jarabe/controlpanel/__init__.py @@ -13,4 +13,3 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - diff --git a/src/jarabe/controlpanel/cmd.py b/src/jarabe/controlpanel/cmd.py index 7144b33..fe8f1a4 100644 --- a/src/jarabe/controlpanel/cmd.py +++ b/src/jarabe/controlpanel/cmd.py @@ -18,20 +18,21 @@ import sys import getopt import os from gettext import gettext as _ -import traceback import logging from jarabe import config + _RESTART = 1 -_same_option_warning = _("sugar-control-panel: WARNING, found more than" - " one option with the same name: %s module: %r") -_no_option_error = _("sugar-control-panel: key=%s not an available option") -_general_error = _("sugar-control-panel: %s") +_same_option_warning = _('sugar-control-panel: WARNING, found more than one' + ' option with the same name: %s module: %r') +_no_option_error = _('sugar-control-panel: key=%s not an available option') +_general_error = _('sugar-control-panel: %s') + def cmd_help(): - '''Print the help to the screen''' + """Print the help to the screen""" # TRANS: Translators, there's a empty line at the end of this string, # which must appear in the translated string (msgstr) as well. print _('Usage: sugar-control-panel [ option ] key [ args ... ] \n\ @@ -45,14 +46,16 @@ def cmd_help(): -c key clear the current value for the key \n\ ') + def note_restart(): - '''Instructions how to restart sugar''' + """Instructions how to restart sugar""" print _('To apply your changes you have to restart sugar.\n' + 'Hit ctrl+alt+erase on the keyboard to trigger a restart.') + def load_modules(): - '''Build a list of pointers to available modules and import them. - ''' + """Build a list of pointers to available modules and import them. + """ modules = [] path = os.path.join(config.ext_path, 'cpsection') @@ -65,16 +68,16 @@ def load_modules(): module = __import__('.'.join(('cpsection', item, 'model')), globals(), locals(), ['model']) except Exception: - logging.error('Exception while loading extension:\n' + \ - ''.join(traceback.format_exception(*sys.exc_info()))) + logging.exception('Exception while loading extension:') else: modules.append(module) return modules + def main(): try: - options, args = getopt.getopt(sys.argv[1:], "h:s:g:c:l", []) + options, args = getopt.getopt(sys.argv[1:], 'h:s:g:c:l', []) except getopt.GetoptError: cmd_help() sys.exit(2) @@ -87,7 +90,7 @@ def main(): for option, key in options: found = 0 - if option in ("-h"): + if option in ('-h'): for module in modules: method = getattr(module, 'set_' + key, None) if method: @@ -98,7 +101,7 @@ def main(): print _(_same_option_warning % (key, module)) if found == 0: print _(_no_option_error % key) - if option in ("-l"): + if option in ('-l'): for module in modules: methods = dir(module) print '%s:' % module.__name__.split('.')[1] @@ -106,9 +109,9 @@ def main(): if method.startswith('get_'): print ' %s' % method[4:] elif method.startswith('clear_'): - print " %s (use the -c argument with this option)" \ + print ' %s (use the -c argument with this option)' \ % method[6:] - if option in ("-g"): + if option in ('-g'): for module in modules: method = getattr(module, 'print_' + key, None) if method: @@ -122,7 +125,7 @@ def main(): print _(_same_option_warning % (key, module)) if found == 0: print _(_no_option_error % key) - if option in ("-s"): + if option in ('-s'): for module in modules: method = getattr(module, 'set_' + key, None) if method: @@ -139,7 +142,7 @@ def main(): print _(_same_option_warning % (key, module)) if found == 0: print _(_no_option_error % key) - if option in ("-c"): + if option in ('-c'): for module in modules: method = getattr(module, 'clear_' + key, None) if method: diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py index 51d9820..2f55951 100644 --- a/src/jarabe/controlpanel/gui.py +++ b/src/jarabe/controlpanel/gui.py @@ -17,8 +17,6 @@ import os import logging from gettext import gettext as _ -import sys -import traceback import gobject import gtk @@ -32,8 +30,9 @@ from jarabe.controlpanel.toolbar import MainToolbar from jarabe.controlpanel.toolbar import SectionToolbar from jarabe import config + _logger = logging.getLogger('ControlPanel') -_MAX_COLUMNS = 5 + class ControlPanel(gtk.Window): __gtype_name__ = 'SugarControlPanel' @@ -41,6 +40,9 @@ class ControlPanel(gtk.Window): def __init__(self): gtk.Window.__init__(self) + self._max_columns = int(0.285 * (float(gtk.gdk.screen_width()) / + style.GRID_CELL_SIZE - 3)) + self.set_border_width(style.LINE_WIDTH) offset = style.GRID_CELL_SIZE width = gtk.gdk.screen_width() - offset * 2 @@ -74,7 +76,7 @@ class ControlPanel(gtk.Window): self.add(self._vbox) self._vbox.show() - self.connect("realize", self.__realize_cb) + self.connect('realize', self.__realize_cb) self._options = self._get_options() self._current_option = None @@ -110,6 +112,7 @@ class ControlPanel(gtk.Window): self._table = gtk.Table() self._table.set_col_spacings(style.GRID_CELL_SIZE) + self._table.set_row_spacings(style.GRID_CELL_SIZE) self._table.set_border_width(style.GRID_CELL_SIZE) self._scrolledwindow = gtk.ScrolledWindow() @@ -134,8 +137,17 @@ class ControlPanel(gtk.Window): except ImportError: del self._options['keyboard'] - row = 0 - column = 2 + # If the screen width only supports two columns, start + # placing from the second row. + if self._max_columns == 2: + row = 1 + column = 0 + else: + # About Me and About my computer are hardcoded below to use the + # first two slots so we need to leave them free. + row = 0 + column = 2 + options = self._options.keys() options.sort() @@ -157,7 +169,7 @@ class ControlPanel(gtk.Window): column, column + 1, row, row + 1) column += 1 - if column == _MAX_COLUMNS: + if column == self._max_columns: column = 0 row += 1 @@ -214,11 +226,16 @@ class ControlPanel(gtk.Window): globals(), locals(), ['model']) model = ModelWrapper(mod) - self._section_view = view_class(model, - self._options[option]['alerts']) + try: + self.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) + self._section_view = view_class(model, + self._options[option]['alerts']) + + self._set_canvas(self._section_view) + self._section_view.show() + finally: + self.get_window().set_cursor(None) - self._set_canvas(self._section_view) - self._section_view.show() self._section_view.connect('notify::is-valid', self.__valid_section_cb) self._section_view.connect('request-close', @@ -227,13 +244,13 @@ class ControlPanel(gtk.Window): style.COLOR_WHITE.get_gdk_color()) def set_section_view_auto_close(self): - '''Automatically close the control panel if there is "nothing to do" - ''' + """Automatically close the control panel if there is "nothing to do" + """ self._section_view.auto_close = True def _get_options(self): - '''Get the available option information from the extensions - ''' + """Get the available option information from the extensions + """ options = {} path = os.path.join(config.ext_path, 'cpsection') @@ -259,11 +276,9 @@ class ControlPanel(gtk.Window): keywords.append(item) options[item]['keywords'] = keywords else: - _logger.error('There is no CLASS constant specifieds ' \ - 'in the view file \'%s\'.' % item) + _logger.error('no CLASS attribute in %r', item) except Exception: - logging.error('Exception while loading extension:\n' + \ - ''.join(traceback.format_exception(*sys.exc_info()))) + logging.exception('Exception while loading extension:') return options @@ -333,6 +348,7 @@ class ControlPanel(gtk.Window): section_is_valid = section_view.props.is_valid self._section_toolbar.accept_button.set_sensitive(section_is_valid) + class ModelWrapper(object): def __init__(self, module): self._module = module @@ -360,18 +376,15 @@ class ModelWrapper(object): except Exception, detail: _logger.debug('Error undo option: %s', detail) + class _SectionIcon(gtk.EventBox): - __gtype_name__ = "SugarSectionIcon" + __gtype_name__ = 'SugarSectionIcon' __gproperties__ = { - 'icon-name' : (str, None, None, None, - gobject.PARAM_READWRITE), - 'pixel-size' : (object, None, None, - gobject.PARAM_READWRITE), - 'xo-color' : (object, None, None, - gobject.PARAM_READWRITE), - 'title' : (str, None, None, None, - gobject.PARAM_READWRITE) + 'icon-name': (str, None, None, None, gobject.PARAM_READWRITE), + 'pixel-size': (object, None, None, gobject.PARAM_READWRITE), + 'xo-color': (object, None, None, gobject.PARAM_READWRITE), + 'title': (str, None, None, None, gobject.PARAM_READWRITE), } def __init__(self, **kwargs): diff --git a/src/jarabe/controlpanel/inlinealert.py b/src/jarabe/controlpanel/inlinealert.py index b1880da..f970af4 100644 --- a/src/jarabe/controlpanel/inlinealert.py +++ b/src/jarabe/controlpanel/inlinealert.py @@ -21,6 +21,7 @@ import pango from sugar.graphics import style from sugar.graphics.icon import Icon + class InlineAlert(gtk.HBox): """UI interface for Inline alerts @@ -36,11 +37,9 @@ class InlineAlert(gtk.HBox): __gtype_name__ = 'SugarInlineAlert' __gproperties__ = { - 'msg' : (str, None, None, None, - gobject.PARAM_READWRITE), - 'icon' : (object, None, None, - gobject.PARAM_WRITABLE) - } + 'msg': (str, None, None, None, gobject.PARAM_READWRITE), + 'icon': (object, None, None, gobject.PARAM_WRITABLE), + } def __init__(self, **kwargs): @@ -80,4 +79,3 @@ class InlineAlert(gtk.HBox): def do_get_property(self, pspec): if pspec.name == 'msg': return self._msg - diff --git a/src/jarabe/controlpanel/sectionview.py b/src/jarabe/controlpanel/sectionview.py index 4de27a2..4b5751f 100644 --- a/src/jarabe/controlpanel/sectionview.py +++ b/src/jarabe/controlpanel/sectionview.py @@ -18,18 +18,17 @@ import gobject import gtk from gettext import gettext as _ + class SectionView(gtk.VBox): __gtype_name__ = 'SugarSectionView' __gsignals__ = { - 'request-close': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([])) - } + 'request-close': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), + } __gproperties__ = { - 'is_valid' : (bool, None, None, True, - gobject.PARAM_READWRITE) - } + 'is_valid': (bool, None, None, True, gobject.PARAM_READWRITE), + } _APPLY_TIMEOUT = 1000 @@ -51,5 +50,5 @@ class SectionView(gtk.VBox): return self._is_valid def undo(self): - '''Undo here the changes that have been made in this section.''' + """Undo here the changes that have been made in this section.""" pass diff --git a/src/jarabe/controlpanel/toolbar.py b/src/jarabe/controlpanel/toolbar.py index 320a8eb..fca34a0 100644 --- a/src/jarabe/controlpanel/toolbar.py +++ b/src/jarabe/controlpanel/toolbar.py @@ -25,6 +25,7 @@ from sugar.graphics.toolbutton import ToolButton from sugar.graphics import iconentry from sugar.graphics import style + class MainToolbar(gtk.Toolbar): """ Main toolbar of the control panel """ @@ -36,8 +37,9 @@ class MainToolbar(gtk.Toolbar): ([])), 'search-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([str])) + ([str])), } + def __init__(self): gtk.Toolbar.__init__(self) @@ -83,6 +85,7 @@ class MainToolbar(gtk.Toolbar): def __stop_clicked_cb(self, button): self.emit('stop-clicked') + class SectionToolbar(gtk.Toolbar): """ Toolbar of the sections of the control panel """ @@ -94,8 +97,9 @@ class SectionToolbar(gtk.Toolbar): ([])), 'accept-clicked': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([])) + ([])), } + def __init__(self): gtk.Toolbar.__init__(self) @@ -154,4 +158,3 @@ class SectionToolbar(gtk.Toolbar): def __accept_button_clicked_cb(self, widget, data=None): self.emit('accept-clicked') - |