Beispiel #1
0
 def select_file(self, dialog, response):
     if response == Gtk.ResponseType.OK:
         target_path = dialog.get_filename()
         if target_path:
             self.file_chooser_dlg.set_current_folder(target_path)
             self.entry.set_text(reverse_expanduser(target_path))
     dialog.hide()
Beispiel #2
0
 def _select_file(self, dialog, response):
     if response == Gtk.ResponseType.OK:
         target_path = dialog.get_filename()
         if target_path:
             self.file_chooser_dlg.set_current_folder(target_path)
             self.entry.set_text(reverse_expanduser(target_path))
     dialog.hide()
Beispiel #3
0
 def on_select_file(self, dialog, response):
     """FileChooserDialog response callback"""
     if response == Gtk.ResponseType.OK:
         target_path = dialog.get_filename()
         if target_path:
             dialog.set_current_folder(target_path)
             self.entry.set_text(system.reverse_expanduser(target_path))
     dialog.hide()
Beispiel #4
0
 def on_select_file(self, dialog, response):
     """FileChooserDialog response callback"""
     if response == Gtk.ResponseType.OK:
         target_path = dialog.get_filename()
         if target_path:
             dialog.set_current_folder(target_path)
             self.entry.set_text(system.reverse_expanduser(target_path))
     dialog.hide()
Beispiel #5
0
 def folder_size_cb(self, folder_size, error):
     if error:
         logger.error(error)
         return
     self.delete_files = True
     self.delete_button.set_sensitive(True)
     self.folder_label.set_markup(
         "This will delete all contents from <b>%s</b> (%s)" %
         (reverse_expanduser(self.game.directory), human_size(folder_size)))
Beispiel #6
0
 def folder_size_cb(self, folder_size, error):
     if error:
         logger.error(error)
         return
     self.delete_files = True
     self.delete_button.set_sensitive(True)
     self.folder_label.hide()
     self.confirm_delete_button.show()
     self.confirm_delete_button.set_label(
         "Delete %s (%s)" %
         (reverse_expanduser(self.game.directory), human_size(folder_size)))
Beispiel #7
0
    def __init__(self, game_id, parent=None):
        super().__init__(parent=parent)
        self.set_size_request(640, 128)
        self.game = Game(game_id)
        self.delete_files = False
        container = Gtk.VBox(visible=True)
        self.get_content_area().add(container)

        title_label = Gtk.Label(visible=True)
        title_label.set_line_wrap(True)
        title_label.set_alignment(0, 0.5)
        title_label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
        title_label.set_markup(
            "<span font_desc='14'><b>Uninstall %s</b></span>" %
            gtk_safe(self.game.name))

        container.pack_start(title_label, False, False, 4)

        self.folder_label = Gtk.Label(visible=True)
        self.folder_label.set_alignment(0, 0.5)

        self.delete_button = Gtk.Button(_("Uninstall"), visible=True)
        self.delete_button.connect("clicked", self.on_delete_clicked)

        if not self.game.directory:
            self.folder_label.set_markup("No file will be deleted")
        elif len(get_games(searches={"directory": self.game.directory})) > 1:
            self.folder_label.set_markup(
                "The folder %s is used by other games and will be kept." %
                self.game.directory)
        elif is_removeable(self.game.directory):
            self.delete_button.set_sensitive(False)
            self.folder_label.set_markup("<i>Calculating size…</i>")
            AsyncCall(get_disk_size, self.folder_size_cb, self.game.directory)
        else:
            self.folder_label.set_markup(
                "Content of %s are protected and will not be deleted." %
                reverse_expanduser(self.game.directory))
        container.pack_start(self.folder_label, False, False, 4)

        self.confirm_delete_button = Gtk.CheckButton()
        self.confirm_delete_button.set_active(True)
        container.pack_start(self.confirm_delete_button, False, False, 4)

        button_box = Gtk.HBox(visible=True)
        button_box.set_margin_top(30)
        style_context = button_box.get_style_context()
        style_context.add_class("linked")
        cancel_button = Gtk.Button(_("Cancel"), visible=True)
        cancel_button.connect("clicked", self.on_close)
        button_box.add(cancel_button)
        button_box.add(self.delete_button)
        container.pack_end(button_box, False, False, 0)
        self.show()
Beispiel #8
0
 def generate_directory_chooser(self, option_name, label_text, value=None):
     """Generate a file chooser button to select a directory."""
     label = Label(label_text)
     directory_chooser = FileChooserEntry(
         title='Select folder',
         action=Gtk.FileChooserAction.SELECT_FOLDER,
         default_path=reverse_expanduser(value))
     directory_chooser.entry.connect('changed', self.on_chooser_dir_set,
                                     option_name)
     directory_chooser.set_valign(Gtk.Align.CENTER)
     label.set_alignment(0.5, 0.5)
     self.wrapper.pack_start(label, False, False, 0)
     self.wrapper.pack_start(directory_chooser, True, True, 0)
     self.option_widget = directory_chooser
Beispiel #9
0
 def generate_directory_chooser(self, option_name, label_text, value=None):
     """Generate a file chooser button to select a directory."""
     label = Label(label_text)
     directory_chooser = FileChooserEntry(
         action=Gtk.FileChooserAction.SELECT_FOLDER,
         default=reverse_expanduser(value)
     )
     directory_chooser.entry.connect('changed', self.on_chooser_dir_set,
                                     option_name)
     directory_chooser.set_valign(Gtk.Align.CENTER)
     label.set_alignment(0.5, 0.5)
     self.wrapper.pack_start(label, False, False, 0)
     self.wrapper.pack_start(directory_chooser, True, True, 0)
     self.option_widget = directory_chooser
    def initialize(self, game_id=None, callback=None):
        self.game = Game(game_id)
        self.callback = callback
        runner = self.game.runner

        self.substitute_label(self.builder.get_object("description_label"),
                              "game", self.game.name)

        self.substitute_label(
            self.builder.get_object("remove_from_library_button"),
            "game",
            self.game.name,
        )
        remove_contents_button = self.builder.get_object(
            "remove_contents_button")
        if self.game.is_installed:
            path = self.game.directory or ""
            if hasattr(runner, "own_game_remove_method"):
                remove_contents_button.set_label(runner.own_game_remove_method)
                remove_contents_button.set_active(True)
            else:
                try:
                    default_path = runner.default_path
                except AttributeError:
                    default_path = "/"
                if is_removeable(path, excludes=[default_path]):
                    remove_contents_button.set_active(True)
                else:
                    remove_contents_button.set_sensitive(False)
                    path = _("No game folder")

            path = reverse_expanduser(path)
            self.substitute_label(remove_contents_button, "path", path)
            label = remove_contents_button.get_child()
            label.set_use_markup(True)
            label.set_line_wrap(True)
            label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
        else:
            remove_contents_button.hide()

        cancel_button = self.builder.get_object("cancel_button")
        cancel_button.connect("clicked", self.on_close)

        apply_button = self.builder.get_object("apply_button")
        apply_button.connect("clicked", self.on_apply_button_clicked)
Beispiel #11
0
    def initialize(self, game_id=None, callback=None):
        self.game = Game(game_id)
        self.callback = callback
        runner = self.game.runner

        self.substitute_label(self.builder.get_object('description_label'),
                              'game', self.game.name)

        self.substitute_label(
            self.builder.get_object('remove_from_library_button'),
            'game', self.game.name
        )
        remove_contents_button = self.builder.get_object(
            'remove_contents_button'
        )
        if self.game.is_installed:
            path = self.game.directory or ''
            if hasattr(runner, 'own_game_remove_method'):
                remove_contents_button.set_label(runner.own_game_remove_method)
                remove_contents_button.set_active(True)
            else:
                try:
                    default_path = runner.default_path
                except AttributeError:
                    default_path = "/"
                if is_removeable(path, excludes=[default_path]):
                    remove_contents_button.set_active(True)
                else:
                    remove_contents_button.set_sensitive(False)
                    path = 'No game folder'

            path = reverse_expanduser(path)
            self.substitute_label(remove_contents_button, 'path', path)
            label = remove_contents_button.get_child()
            label.set_use_markup(True)
            label.set_line_wrap(True)
            label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
        else:
            remove_contents_button.hide()

        cancel_button = self.builder.get_object('cancel_button')
        cancel_button.connect('clicked', self.on_close)

        apply_button = self.builder.get_object('apply_button')
        apply_button.connect('clicked', self.on_apply_button_clicked)