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")
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)")
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()
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()
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))
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
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)
def title(self) -> str: return _("_Administration Password")
def value_for_display(self) -> str: if self.unsafe_browser_enabled: return _("Enabled") else: return _("Disabled (default)")
def title(self) -> str: return _("_Unsafe Browser")
def title(self) -> str: return _("_Formats")
def value_for_display(self) -> str: if self.network_enabled: return _("Enable networking (default)") else: return _("Disable all networking")
def title(self) -> str: return _("_Offline Mode")
def title(self) -> str: return _("_MAC Address Anonymization")
def title(self) -> str: return _("_MAC Address Spoofing")
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)
def title(self) -> str: return _("_Language")
def title(self) -> str: return _("_Network Connection")
def title(self) -> str: return _("_Keyboard Layout")
def value_for_display(self) -> str: return _("Obsolete")