예제 #1
0
    def populate_page(self):
        self._menu = g15theme.Menu("menu")
        g15plugin.G15RefreshingPlugin.populate_page(self)

        enabled_sensors = []
        for c in self.sensor_sources:
            for s in c.get_sensors():
                sense_key = "%s/sensors/%s" % (
                    self.gconf_key, GConf.escape_key(s.name, len(s.name)))
                if g15gconf.get_bool_or_default(self.gconf_client,
                                                "%s/enabled" % (sense_key),
                                                True):
                    enabled_sensors.append(s)

        # If there are no sensors enabled, display the 'none' variant
        # which shows a message
        if len(enabled_sensors) == 0:
            self.page.theme.set_variant("none")
        else:
            self.page.theme.set_variant(None)

            def menu_selected():
                self.page.theme.set_variant(
                    VARIANT_NAMES[self._menu.selected.sensor.sense_type])

            self._menu.on_selected = menu_selected
            self.page.add_child(self._menu)
            self.page.theme.svg_processor = self._process_svg
            self.page.add_child(
                g15theme.MenuScrollbar("viewScrollbar", self._menu))
            i = 0
            for s in enabled_sensors:
                if s.sense_type in TYPE_NAMES:
                    sense_key = "%s/sensors/%s" % (
                        self.gconf_key, GConf.escape_key(s.name, len(s.name)))
                    sense_label = g15gconf.get_string_or_default(
                        self.gconf_client, "%s/label" % (sense_key), s.name)
                    menu_item = SensorMenuItem("menuitem-%d" % i, s,
                                               sense_label)
                    self.sensor_dict[s.name] = menu_item
                    self._menu.add_child(menu_item)

                    # If this is the first child, change the theme variant
                    if self._menu.get_child_count() == 1:
                        self.page.theme.set_variant(
                            VARIANT_NAMES[menu_item.sensor.sense_type])

                    i += 1
예제 #2
0
 def sensor_toggled(self, widget, row_index):
     row_index = int(row_index)
     now_active = not widget.get_active()
     self.sensor_model.set_value(self.sensor_model.get_iter(row_index), 1,
                                 now_active)
     sensor_name = self.sensor_model[row_index][0]
     self._gconf_client.set_bool(
         "%s/sensors/%s/enabled" %
         (self._gconf_key, GConf.escape_key(sensor_name, len(sensor_name))),
         now_active)
예제 #3
0
 def label_edited(self, widget, row_index, value):
     row_index = int(row_index)
     if value != "":
         if self.sensor_model[row_index][2] != value:
             self.sensor_model.set_value(
                 self.sensor_model.get_iter(row_index), 2, value)
             sensor_name = self.sensor_model[row_index][0]
             self._gconf_client.set_string(
                 "%s/sensors/%s/label" %
                 (self._gconf_key,
                  GConf.escape_key(sensor_name, len(sensor_name))), value)
예제 #4
0
def _create_activity_icon(metadata):
    if metadata.get('icon-color', ''):
        color = XoColor(metadata['icon-color'])
    else:
        client = GConf.client_get_default()
        color = XoColor(client.get_string('/desktop/sugar/user/color'))

    from sugar3.activity.activity import get_bundle_path
    bundle = ActivityBundle(get_bundle_path())
    icon = Icon(file=bundle.get_icon(), xo_color=color)

    return icon
예제 #5
0
    def add_profile_input(self):
        '''Add a 'profile' combobox input to the HostDialog'''

        client = GConf.client_get_default()
        list_key = '/apps/gnome-terminal/global/profile_list'
        name_key = '/apps/gnome-terminal/profiles/%s/visible_name'
        prof_names = [client.get_string(name_key % name) for name in
                      client.get_list(list_key, 'string')]

        self.profile_entry = Gtk.ComboBoxText.new_with_entry()
        self.profile_entry.append_text("< None> ")
        for name in prof_names:
            self.profile_entry.append_text(name)

        index = 0
        if self.host.profile != '' and self.host.profile != "< None> ":
            index = prof_names.index(self.host.profile) + 1

        self.profile_entry.set_active(index)
        self.add_input('Profile', widget=self.profile_entry)
예제 #6
0
    def set_value(self, value):
        if self.type and type(value) != self.type:
            value = self.type(value)

        gconfvalue = GConf.Value()

        if type(value) == bool:
            gconfvalue.type = GConf.ValueType.BOOL
            gconfvalue.set_bool(value)
        elif type(value) == str:
            gconfvalue.type = GConf.ValueType.STRING
            gconfvalue.set_string(value)
        elif type(value) == int:
            gconfvalue.type = GConf.ValueType.INT
            gconfvalue.set_int(int(value))
        elif type(value) == float:
            gconfvalue.type = GConf.ValueType.FLOAT
            gconfvalue.set_float(value)

        self.client.set(self.key, gconfvalue)
예제 #7
0
 def reload_model(self):
     self.sensor_model.clear()
     ss = get_sensor_sources()
     for source in ss:
         sa = source.get_sensors()
         for sensor in sa:
             sense_key = "%s/sensors/%s" % (
                 self._gconf_key,
                 GConf.escape_key(sensor.name, len(sensor.name)))
             if sensor.sense_type in TYPE_NAMES:
                 self.sensor_model.append([
                     sensor.name,
                     g15gconf.get_bool_or_default(
                         self._gconf_client, "%s/enabled" % (sense_key),
                         True),
                     g15gconf.get_string_or_default(
                         self._gconf_client, "%s/label" % (sense_key),
                         sensor.name), TYPE_NAMES[sensor.sense_type]
                 ])
         source.stop()
예제 #8
0
    def __init__(self, start_hidden, tray_icon):
        super(Browser, self).__init__()
        self.glade = Gtk.Builder()
        self.glade.add_from_file(utils.get_data_file_name('labyrinth.ui'))
        #self.glade=Gtk.glade.XML(utils.get_data_file_name('labyrinth.glade'))
        self.view = self.glade.get_object('MainView')
        self.populate_view ()
        self.view.connect ('row-activated', self.open_row_cb)
        self.view.connect ('cursor-changed', self.cursor_change_cb)

        self.view_dependants = []

        self.open_button = self.glade.get_object('OpenButton')
        self.delete_button = self.glade.get_object('DeleteButton')
        self.open_menu = self.glade.get_object('open1')
        self.delete_menu = self.glade.get_object('delete1')

        self.view_dependants.append (self.open_button)
        self.view_dependants.append (self.delete_button)
        self.view_dependants.append (self.open_menu)
        self.view_dependants.append (self.delete_menu)

        self.open_button.connect ('clicked', self.open_clicked)
        self.glade.get_object('NewButton').connect ('clicked', self.new_clicked)
        self.delete_button.connect ('clicked', self.delete_clicked)

        self.open_menu.connect ('activate', self.open_clicked)
        self.glade.get_object('new1').connect ('activate', self.new_clicked)
        self.delete_menu.connect ('activate', self.delete_clicked)
        self.glade.get_object('import1').connect ('activate', self.import_clicked)
        self.glade.get_object('quit1').connect ('activate', self.quit_clicked)
        self.glade.get_object('about1').connect ('activate', self.about_clicked)
        self.glade.get_object('showhelp').connect ('activate', self.show_help_clicked)

        for x in self.view_dependants:
            x.set_sensitive(False)

        self.main_window = self.glade.get_object ('MapBrowser')

        # set remembered size
        if os.name != 'nt':
            self.config_client = GConf.Client.get_default()
            self.config_client.add_dir ("/apps/labyrinth", GConf.ClientPreloadType(0))

            width = self.config_client.get_int ('/apps/labyrinth/width')
            height = self.config_client.get_int ('/apps/labyrinth/height')
            utils.use_bezier_curves = self.config_client.get_bool ('/apps/labyrinth/curves')
            if width == 0 or height == 0:
                width = 400
                height = 300
        else:
            width = 400
            height = 300

        view_sortable = self.view.get_model ()
        view_sortable.connect ('sort-column-changed', self.sort_column_changed_cb)
        if os.name != 'nt':
            sort_order = self.config_client.get_int('/apps/labyrinth/map_sort_order')
            column_id = self.config_client.get_int('/apps/labyrinth/map_sort_order_column')
            view_sortable.set_sort_column_id (column_id, sort_order)

        self.main_window.resize (width, height)

        if os.name != 'nt':
            try:
                self.main_window.set_icon_name ('labyrinth')
            except:
                self.main_window.set_icon_from_file(utils.get_data_file_name('labyrinth.svg'))
        else:
            self.main_window.set_icon_from_file(utils.get_data_file_name('labyrinth-32.png'))
        if tray_icon:
            self.main_window.connect ('delete_event', self.toggle_main_window, None)
            traymenu = Gtk.Menu()
            quit_item = Gtk.MenuItem("Quit")
            quit_item.connect("activate",self.quit_clicked)
            traymenu.add(quit_item)
            traymenu.show_all()
            self.traymenu = traymenu
            self.trayicon = TrayIcon.TrayIcon(
                                            icon_name="labyrinth",
                                            menu=traymenu,
                                            activate=self.toggle_main_window)
        else:
            self.main_window.connect('delete_event', self.quit_clicked, None)
        if start_hidden:
            self.main_window.hide ()
        else:
            self.main_window.show_all ()