示例#1
0
 def value_for_display(self) -> str:
     if self.value == self._network_setting.NETCONF_DIRECT:
         return _("Direct (default)")
     if self.value == self._network_setting.NETCONF_OBSTACLE:
         return _("Bridge & Proxy")
     if self.value == self._network_setting.NETCONF_DISABLED:
         return _("Offline")
示例#2
0
def get_on_off_string(value, default=None) -> str:
    """Return "On", "Off", "On (default)", or "Off (default)"""
    if value and default:
        return _("On (default)")
    if value and not default:
        return _("On")
    if not value and default:
        return _("Off")
    if not value and not default:
        return _("Off (default)")
示例#3
0
 def cb_unlock_failed(self):
     logging.debug("Storage unlock failed")
     self.entry_storage_passphrase.set_sensitive(True)
     self.button_storage_unlock.set_sensitive(True)
     self.button_storage_unlock.set_label(_("Unlock"))
     self.checkbutton_storage_show_passphrase.set_visible(True)
     self.image_storage_state.set_visible(True)
     self.spinner_storage_unlock.set_visible(False)
     self.label_infobar_persistence.set_label(
         _("Cannot unlock encrypted storage with this passphrase."))
     self.infobar_persistence.set_visible(True)
     self.entry_storage_passphrase.select_region(0, -1)
     self.entry_storage_passphrase.set_icon_from_icon_name(
         Gtk.EntryIconPosition.SECONDARY, 'dialog-warning-symbolic')
     self.entry_storage_passphrase.grab_focus()
示例#4
0
    def unlock(self, unlocked_cb=None, failed_cb=None):
        if not unlocked_cb:
            unlocked_cb = self.cb_unlocked
        if not failed_cb:
            failed_cb = self.cb_unlock_failed

        self.entry_storage_passphrase.set_sensitive(False)
        self.button_storage_unlock.set_sensitive(False)
        self.button_storage_unlock.set_label(_("Unlocking…"))
        self.checkbutton_storage_show_passphrase.set_visible(False)
        self.image_storage_state.set_visible(False)
        self.spinner_storage_unlock.set_visible(True)

        passphrase = self.entry_storage_passphrase.get_text()

        # Let's execute the unlocking in a thread
        def do_unlock_storage(unlock_method, passphrase, unlocked_cb,
                              failed_cb):
            if unlock_method(passphrase):
                GLib.idle_add(unlocked_cb)
            else:
                GLib.idle_add(failed_cb)

        unlocking_thread = threading.Thread(
            target=do_unlock_storage,
            args=(self.persistence_setting.unlock, passphrase, unlocked_cb,
                  failed_cb))
        unlocking_thread.start()
示例#5
0
 def __init__(self, app):
     super().__init__(app)
     Gtk.Window.__init__(self,
                         title=_(tailsgreeter.APPLICATION_TITLE),
                         application=app)
     self.override_background_color(Gtk.StateFlags.NORMAL,
                                    Gdk.RGBA(0, 0, 0, 1))
示例#6
0
    def _build_headerbar(self) -> Gtk.HeaderBar:
        headerbar = Gtk.HeaderBar()
        headerbar_sizegroup = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)

        self.button_shutdown = Gtk.Button.new_with_label(_("Shutdown"))
        self.button_shutdown.connect('clicked', self.cb_button_shutdown_clicked)
        headerbar_sizegroup.add_widget(self.button_shutdown)
        headerbar.pack_start(self.button_shutdown)

        self.button_start = Gtk.Button.new_with_mnemonic(_("_Start Tails"))
        Gtk.StyleContext.add_class(self.button_start.get_style_context(),
                                   'suggested-action')
        self.button_start.connect('clicked', self.cb_button_start_clicked)
        headerbar_sizegroup.add_widget(self.button_start)
        headerbar.pack_end(self.button_start)

        headerbar.show_all()

        return headerbar
示例#7
0
    def __init__(self, uri):
        Gtk.Window.__init__(self, title=_(tailsgreeter.APPLICATION_TITLE))
        TranslatableWindow.__init__(self, self)

        self._build_ui()
        self.store_translations(self)

        self.load_uri(uri)
        # Replace the busy cursor set by the tails-greeter startup script with
        # the default cursor.
        self.get_window().set_cursor(None)
示例#8
0
 def title(self) -> str:
     return _("_Administration Password")
示例#9
0
 def value_for_display(self) -> str:
     if self.unsafe_browser_enabled:
         return _("Enabled")
     else:
         return _("Disabled (default)")
示例#10
0
 def title(self) -> str:
     return _("_Unsafe Browser")
示例#11
0
 def title(self) -> str:
     return _("_Formats")
示例#12
0
 def value_for_display(self) -> str:
     if self.network_enabled:
         return _("Enable networking (default)")
     else:
         return _("Disable all networking")
示例#13
0
 def title(self) -> str:
     return _("_Offline Mode")
示例#14
0
 def title(self) -> str:
     return _("_MAC Address Anonymization")
示例#15
0
 def title(self) -> str:
     return _("_MAC Address Spoofing")
示例#16
0
    def __init__(self, greeter, persistence_setting: "PersistenceSettings", settings: "GreeterSettingsCollection"):
        Gtk.Window.__init__(self, title=_(tailsgreeter.APPLICATION_TITLE))
        TranslatableWindow.__init__(self, self)
        self.greeter = greeter
        self.persistence_setting = persistence_setting
        self.settings = settings
        self.current_language = "en"

        # Set the main_window attribute for the settings. This is required
        # in order to allow the settings to trigger changes in the main
        # window, for example showing an info bar.
        for setting in self.settings:
            setting.main_window = self

        self.connect('delete-event', self.cb_window_delete_event, None)
        self.set_position(Gtk.WindowPosition.CENTER)

        # Load custom CSS
        css_provider = Gtk.CssProvider()
        css_provider.load_from_path(tailsgreeter.config.data_path + CSS_FILE)
        Gtk.StyleContext.add_provider_for_screen(
            Gdk.Screen.get_default(),
            css_provider,
            Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

        # Load UI interface definition
        builder = Gtk.Builder()
        builder.set_translation_domain(TRANSLATION_DOMAIN)
        builder.add_from_file(tailsgreeter.config.data_path + MAIN_UI_FILE)
        builder.connect_signals(self)

        for widget in builder.get_objects():
            # Store translations for the builder objects
            self.store_translations(widget)
            # Workaround Gtk bug #710888 - GtkInfoBar not shown after calling
            # gtk_widget_show:
            # https://bugzilla.gnome.org/show_bug.cgi?id=710888
            if isinstance(widget, Gtk.InfoBar):
                revealer = widget.get_template_child(Gtk.InfoBar, 'revealer')
                revealer.set_transition_type(Gtk.RevealerTransitionType.NONE)

        self.box_language = builder.get_object('box_language')
        self.box_language_header = builder.get_object('box_language_header')
        self.box_main = builder.get_object('box_main')
        self.box_settings = builder.get_object('box_settings')
        self.box_settings_header = builder.get_object('box_settings_header')
        self.box_settings_values = builder.get_object('box_settings_values')
        self.box_storage = builder.get_object('box_storage')
        self.box_storage_unlock = builder.get_object('box_storage_unlock')
        self.box_storage_unlocked = builder.get_object('box_storage_unlocked')
        self.entry_storage_passphrase = builder.get_object('entry_storage_passphrase')
        self.frame_language = builder.get_object('frame_language')
        self.infobar_network = builder.get_object('infobar_network')
        self.label_settings_default = builder.get_object('label_settings_default')
        self.listbox_add_setting = builder.get_object('listbox_add_setting')
        self.listbox_settings = builder.get_object('listbox_settings')
        self.toolbutton_settings_add = builder.get_object('toolbutton_settings_add')
        self.listbox_settings = builder.get_object("listbox_settings")
        self.listbox_region = builder.get_object("listbox_region")

        # Set preferred width
        self.set_default_size(min(Gdk.Screen.get_default().get_width(),
                                  PREFERRED_WIDTH),
                              min(Gdk.Screen.get_default().get_height(),
                                  PREFERRED_HEIGHT))

        # Add our icon dir to icon theme
        icon_theme = Gtk.IconTheme.get_default()
        icon_theme.prepend_search_path(
            tailsgreeter.config.data_path + ICON_DIR)

        # Add placeholder to settings ListBox
        self.listbox_settings.set_placeholder(self.label_settings_default)

        # Persistent storage
        self.persistent_storage = PersistentStorage(self.persistence_setting, builder)

        # Add children to ApplicationWindow
        self.add(self.box_main)
        self.set_titlebar(self._build_headerbar())

        # Set keyboard focus chain
        self._set_focus_chain()

        # Add settings to region listbox
        for setting in self.settings.region_settings:
            logging.debug("Adding '%s' to region listbox", setting.id)
            self.listbox_region.add(setting.listboxrow)

        # Add settings dialog
        self.dialog_add_setting = AddSettingsDialog(builder, self.settings)
        self.dialog_add_setting.set_transient_for(self)

        # Setup keyboard accelerators
        self._build_accelerators()

        self.store_translations(self)
示例#17
0
 def title(self) -> str:
     return _("_Language")
示例#18
0
 def title(self) -> str:
     return _("_Network Connection")
示例#19
0
 def title(self) -> str:
     return _("_Keyboard Layout")
示例#20
0
 def value_for_display(self) -> str:
     return _("Obsolete")