Ejemplo n.º 1
0
    def preview_or_run_operations(self, really_delete, operations=None):
        """Preview operations or run operations (delete files)"""

        assert(isinstance(really_delete, bool))
        from bleachbit import Worker
        self.start_time = None
        if None == operations:
            operations = {}
            for operation in self.get_selected_operations():
                operations[operation] = self.get_operation_options(operation)
        assert(isinstance(operations, dict))
        if 0 == len(operations):
            GuiBasic.message_dialog(self.window,
                                    _("You must select an operation"),
                                    gtk.MESSAGE_WARNING, gtk.BUTTONS_OK)
            return
        try:
            self.set_sensitive(False)
            self.textbuffer.set_text("")
            self.progressbar.show()
            self.worker = Worker.Worker(self, really_delete, operations)
        except Exception:
            logger.exception('Error in Worker()')
        else:
            self.start_time = time.time()
            worker = self.worker.run()
            gobject.idle_add(worker.next)
Ejemplo n.º 2
0
    def preview_or_run_operations(self, really_delete, operations=None):
        """Preview operations or run operations (delete files)"""

        assert isinstance(really_delete, bool)
        from bleachbit import Worker
        self.start_time = None
        if not operations:
            operations = {}
            for operation in self.get_selected_operations():
                operations[operation] = self.get_operation_options(operation)
        assert isinstance(operations, dict)
        if not operations:  # empty
            GuiBasic.message_dialog(self,
                                    _("You must select an operation"),
                                    Gtk.MessageType.WARNING, Gtk.ButtonsType.OK)
            return
        try:
            self.set_sensitive(False)
            self.textbuffer.set_text("")
            self.progressbar.show()
            self.worker = Worker.Worker(self, really_delete, operations)
        except Exception:
            logger.exception('Error in Worker()')
        else:
            self.start_time = time.time()
            worker = self.worker.run()
            GLib.idle_add(worker.__next__)
Ejemplo n.º 3
0
    def preview_or_run_operations(self, really_delete, operations=None):
        """Preview operations or run operations (delete files)"""

        assert (isinstance(really_delete, bool))
        from bleachbit import Worker
        self.start_time = None
        if None == operations:
            operations = {}
            for operation in self.get_selected_operations():
                operations[operation] = self.get_operation_options(operation)
        assert (isinstance(operations, dict))
        if 0 == len(operations):
            GuiBasic.message_dialog(self.window,
                                    _("You must select an operation"),
                                    gtk.MESSAGE_WARNING, gtk.BUTTONS_OK)
            return
        try:
            self.set_sensitive(False)
            self.textbuffer.set_text("")
            self.progressbar.show()
            self.worker = Worker.Worker(self, really_delete, operations)
        except Exception:
            logger.exception('Error in Worker()')
        else:
            self.start_time = time.time()
            worker = self.worker.run()
            gobject.idle_add(worker.next)
Ejemplo n.º 4
0
 def is_running(self):
     """Return whether the program is currently running"""
     resp_cli=""
     logger = logging.getLogger(__name__)
     for running in self.running:
         test = running[0]
         pathname = running[1]
         if 'exe' == test and 'posix' == os.name:
             if Unix.is_running(pathname):
                 #print "debug: process '%s' is running" % pathname
                 logger.debug("Debug: process '%s' is running", pathname)
                 if options.get("close_run"):
                     if not subprocess.mswindows:
                         #print "debug: Closing process '%s'" % pathname
                         if "--preset" in sys.argv:
                             resp_cli = raw_input("Do you Want BleachBit to Close " + pathname + " y/n : ")
                         else:
                             resp = GuiBasic.message_dialog(None,"Do you Want BleachBit to Close " + pathname,gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO)
                         if gtk.RESPONSE_YES == resp or resp_cli.lower() == "y":
                         # user cancelled, so don't toggle option
                             logger.debug("Debug: Closing process '%s'",pathname)
                             subprocess.check_output(["killall", "-9", pathname])
                         if not Unix.is_running(pathname):
                             logger.debug("Debug: Closing process '%s' successful",pathname)
                             return False
                 return True
         elif 'exe' == test and 'nt' == os.name:
             if Windows.is_process_running(pathname):
                 #print "debug: process '%s' is running" % pathname
                 logger.debug("Debug: process '%s' is running", pathname)
                 if options.get("close_run"):
                     if subprocess.mswindows:
                         #print "debug: Closing process '%s'" % pathname
                         if "--preset" in sys.argv:
                             resp_cli = raw_input("Do you Want BleachBit to Close " + pathname + " y/n : ")
                         else:
                             resp = GuiBasic.message_dialog(None,"Do you Want BleachBit to Close " + pathname,gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO)
                         if gtk.RESPONSE_YES == resp or resp_cli.lower() == "y":
                             logger.debug("debug: Closing process '%s'",pathname)
                             subprocess.check_output(["taskkill", "/IM", pathname])
                         if not Windows.is_process_running(pathname):
                             logger.debug("debug: Closing process '%s' successful",pathname)
                             return False
                 logger.debug("process '%s' is running", pathname)
                 return True
         elif 'exe' == test and 'nt' == os.name:
             if Windows.is_process_running(pathname):
                 logger.debug("process '%s' is running", pathname)
                 return True
         elif 'pathname' == test:
             expanded = expanduser(expandvars(pathname))
             for globbed in glob.iglob(expanded):
                 if os.path.exists(globbed):
                     logger.debug("file '%s' exists indicating '%s' is running", self.name)
                     return True
         else:
             raise RuntimeError(
                 "Unknown running-detection test '%s'" % test)
     return False
Ejemplo n.º 5
0
 def set_cleaner(self, path, model, parent_window, value):
     """Activate or deactivate option of cleaner."""
     assert isinstance(value, bool)
     assert isinstance(model, Gtk.TreeStore)
     cleaner_id = None
     i = path
     if isinstance(i, str):
         # type is either str or gtk.TreeIter
         i = model.get_iter(path)
     parent = model.iter_parent(i)
     if parent:
         # this is an option (child), not a cleaner (parent)
         cleaner_id = model[parent][2]
         option_id = model[path][2]
     if cleaner_id and value:
         # When enabling an option, present any warnings.
         # (When disabling an option, there is no need to present warnings.)
         warning = backends[cleaner_id].get_warning(option_id)
         # TRANSLATORS: %(cleaner) may be Firefox, System, etc.
         # %(option) may be cache, logs, cookies, etc.
         # %(warning) may be 'This option is really slow'
         msg = _("Warning regarding %(cleaner)s - %(option)s:\n\n%(warning)s") % \
             {'cleaner': model[parent][0],
              'option': model[path][0],
              'warning': warning}
         if warning:
             resp = GuiBasic.message_dialog(parent_window,
                                            msg,
                                            Gtk.MessageType.WARNING, Gtk.ButtonsType.OK_CANCEL)
             if Gtk.ResponseType.OK != resp:
                 # user cancelled, so don't toggle option
                 return
     model[path][1] = value
Ejemplo n.º 6
0
 def set_cleaner(self, path, model, parent_window, value=None):
     """Activate or deactive option of cleaner."""
     if None == value:
         # if not value given, toggle current value
         value = not model[path][1]
     assert (type(value) is types.BooleanType)
     assert (type(model) is gtk.TreeStore)
     cleaner_id = None
     i = path
     if type(i) is str:
         # type is either str or gtk.TreeIter
         i = model.get_iter(path)
     parent = model.iter_parent(i)
     if None != parent:
         # this is an option (child), not a cleaner (parent)
         cleaner_id = model[parent][2]
         option_id = model[path][2]
     if cleaner_id and value:
         # when toggling an option, present any warnings
         warning = backends[cleaner_id].get_warning(option_id)
         # TRANSLATORS: %(cleaner) may be Firefox, System, etc.
         # %(option) may be cache, logs, cookies, etc.
         # %(warning) may be 'This option is really slow'
         msg = _("Warning regarding %(cleaner)s - %(option)s:\n\n%(warning)s") % \
             {'cleaner': model[parent][0],
              'option': model[path][0],
              'warning': warning}
         if warning:
             resp = GuiBasic.message_dialog(parent_window, msg,
                                            gtk.MESSAGE_WARNING,
                                            gtk.BUTTONS_OK_CANCEL)
             if gtk.RESPONSE_OK != resp:
                 # user cancelled, so don't toggle option
                 return
     model[path][1] = value
Ejemplo n.º 7
0
 def set_cleaner(self, path, model, parent_window, value=None):
     """Activate or deactive option of cleaner."""
     if None == value:
         # if not value given, toggle current value
         value = not model[path][1]
     assert(type(value) is types.BooleanType)
     assert(type(model) is gtk.TreeStore)
     cleaner_id = None
     i = path
     if type(i) is str:
         # type is either str or gtk.TreeIter
         i = model.get_iter(path)
     parent = model.iter_parent(i)
     if None != parent:
         # this is an option (child), not a cleaner (parent)
         cleaner_id = model[parent][2]
         option_id = model[path][2]
     if cleaner_id and value:
         # when toggling an option, present any warnings
         warning = backends[cleaner_id].get_warning(option_id)
         # TRANSLATORS: %(cleaner) may be Firefox, System, etc.
         # %(option) may be cache, logs, cookies, etc.
         # %(warning) may be 'This option is really slow'
         msg = _("Warning regarding %(cleaner)s - %(option)s:\n\n%(warning)s") % \
             {'cleaner': model[parent][0],
              'option': model[path][0],
              'warning': warning}
         if warning:
             resp = GuiBasic.message_dialog(parent_window,
                                            msg,
                                            gtk.MESSAGE_WARNING, gtk.BUTTONS_OK_CANCEL)
             if gtk.RESPONSE_OK != resp:
                 # user cancelled, so don't toggle option
                 return
     model[path][1] = value
Ejemplo n.º 8
0
def get_autostart_path():
    """Return the path of the BleachBit shortcut in the user's startup folder"""
    try:
        startupdir = shell.SHGetSpecialFolderPath(None, shellcon.CSIDL_STARTUP)
    except:
        # example of failure
        # https://www.bleachbit.org/forum/error-windows-7-x64-bleachbit-091
        logger.exception('exception in get_autostart_path()')
        msg = 'Error finding user startup folder: %s ' % (
            str(sys.exc_info()[1]))
        from bleachbit import GuiBasic
        GuiBasic.message_dialog(None, msg)
        # as a fallback, guess
        # Windows XP: C:\Documents and Settings\(username)\Start Menu\Programs\Startup
        # Windows 7:
        # C:\Users\(username)\AppData\Roaming\Microsoft\Windows\Start
        # Menu\Programs\Startup
        startupdir = bleachbit.expandvars('$USERPROFILE\\Start Menu\\Programs\\Startup')
        if not os.path.exists(startupdir):
            startupdir = bleachbit.expandvars('$APPDATA\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup')
    return os.path.join(startupdir, 'bleachbit.lnk')
Ejemplo n.º 9
0
def get_autostart_path():
    """Return the path of the BleachBit shortcut in the user's startup folder"""
    try:
        startupdir = shell.SHGetSpecialFolderPath(None, shellcon.CSIDL_STARTUP)
    except:
        # example of failure
        # https://www.bleachbit.org/forum/error-windows-7-x64-bleachbit-091
        logger.exception('exception in get_autostart_path()')
        msg = 'Error finding user startup folder: %s ' % (
            str(sys.exc_info()[1]))
        from bleachbit import GuiBasic
        GuiBasic.message_dialog(None, msg)
        # as a fallback, guess
        # Windows XP: C:\Documents and Settings\(username)\Start Menu\Programs\Startup
        # Windows 7:
        # C:\Users\(username)\AppData\Roaming\Microsoft\Windows\Start
        # Menu\Programs\Startup
        startupdir = bleachbit.expandvars('$USERPROFILE\\Start Menu\\Programs\\Startup')
        if not os.path.exists(startupdir):
            startupdir = bleachbit.expandvars('$APPDATA\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup')
    return os.path.join(startupdir, 'bleachbit.lnk')