def initialize(self): """If ui/bookmarks are None, they will be initialized here.""" if self.bookmarks is None: if ranger.arg.clean: bookmarkfile = None else: bookmarkfile = self.confpath('bookmarks') self.bookmarks = Bookmarks( bookmarkfile=bookmarkfile, bookmarktype=Directory, autosave=self.settings.autosave_bookmarks) self.bookmarks.load() else: self.bookmarks = bookmarks if not ranger.arg.clean and self.tags is None: self.tags = Tags(self.confpath('tagged')) if self.ui is None: self.ui = DefaultUI() self.ui.initialize() def mylogfunc(text): self.notify(text, bad=True) self.run = Runner(ui=self.ui, apps=self.apps, logfunc=mylogfunc) self.env.signal_bind('cd', self._update_current_tab)
def initialize(self): """If ui/bookmarks are None, they will be initialized here.""" self.tabs = dict( (n + 1, Tab(path)) for n, path in enumerate(self.start_paths)) tab_list = self.get_tab_list() if tab_list: self.current_tab = tab_list[0] self.thistab = self.tabs[self.current_tab] else: self.current_tab = 1 self.tabs[self.current_tab] = self.thistab = Tab('.') if not ranger.args.clean and os.path.isfile( self.confpath('rifle.conf')): rifleconf = self.confpath('rifle.conf') else: rifleconf = self.relpath('config/rifle.conf') self.rifle = Rifle(rifleconf) self.rifle.reload_config() def set_image_displayer(): self.image_displayer = self._get_image_displayer() set_image_displayer() self.settings.signal_bind('setopt.preview_images_method', set_image_displayer, priority=settings.SIGNAL_PRIORITY_AFTER_SYNC) self.settings.signal_bind( 'setopt.preview_images', lambda signal: signal.fm.previews.clear(), ) if ranger.args.clean: self.tags = TagsDummy("") elif self.tags is None: self.tags = Tags(self.datapath('tagged')) if self.bookmarks is None: if ranger.args.clean: bookmarkfile = None else: bookmarkfile = self.datapath('bookmarks') self.bookmarks = Bookmarks( bookmarkfile=bookmarkfile, bookmarktype=Directory, autosave=self.settings.autosave_bookmarks) self.bookmarks.load() self.bookmarks.enable_saving_backtick_bookmark( self.settings.save_backtick_bookmark) self.ui.setup_curses() self.ui.initialize() self.rifle.hook_before_executing = lambda a, b, flags: \ self.ui.suspend() if 'f' not in flags else None self.rifle.hook_after_executing = lambda a, b, flags: \ self.ui.initialize() if 'f' not in flags else None self.rifle.hook_logger = self.notify old_preprocessing_hook = self.rifle.hook_command_preprocessing # This hook allows image viewers to open all images in the current # directory, keeping the order of files the same as in ranger. # The requirements to use it are: # 1. set open_all_images to true # 2. ensure no files are marked # 3. call rifle with a command that starts with "sxiv " or "feh " def sxiv_workaround_hook(command): import re from ranger.ext.shell_escape import shell_quote if self.settings.open_all_images and \ not self.thisdir.marked_items and \ re.match(r'^(feh|sxiv|imv|pqiv) ', command): images = [ f.relative_path for f in self.thisdir.files if f.image ] escaped_filenames = " ".join( shell_quote(f) for f in images if "\x00" not in f) if images and self.thisfile.relative_path in images and \ "$@" in command: new_command = None if command[0:5] == 'sxiv ': number = images.index(self.thisfile.relative_path) + 1 new_command = command.replace("sxiv ", "sxiv -n %d " % number, 1) if command[0:4] == 'feh ': new_command = command.replace( "feh ", "feh --start-at %s " % shell_quote(self.thisfile.relative_path), 1, ) if command[0:4] == 'imv ': number = images.index(self.thisfile.relative_path) + 1 new_command = command.replace("imv ", "imv -n %d " % number, 1) if command[0:5] == 'pqiv ': number = images.index(self.thisfile.relative_path) new_command = command.replace( "pqiv ", "pqiv --action \"goto_file_byindex(%d)\" " % number, 1) if new_command: command = "set -- %s; %s" % (escaped_filenames, new_command) return old_preprocessing_hook(command) self.rifle.hook_command_preprocessing = sxiv_workaround_hook def mylogfunc(text): self.notify(text, bad=True) self.run = Runner(ui=self.ui, logfunc=mylogfunc, fm=self) self.settings.signal_bind( 'setopt.metadata_deep_search', lambda signal: setattr( signal.fm.metadata, 'deep_search', signal.value)) self.settings.signal_bind( 'setopt.save_backtick_bookmark', lambda signal: signal.fm.bookmarks .enable_saving_backtick_bookmark(signal.value))
def initialize(self): """If ui/bookmarks are None, they will be initialized here.""" self.tabs = dict( (n + 1, Tab(path)) for n, path in enumerate(self.start_paths)) tab_list = self._get_tab_list() if tab_list: self.current_tab = tab_list[0] self.thistab = self.tabs[self.current_tab] else: self.current_tab = 1 self.tabs[self.current_tab] = self.thistab = Tab('.') if not ranger.arg.clean and os.path.isfile( self.confpath('rifle.conf')): rifleconf = self.confpath('rifle.conf') else: rifleconf = self.relpath('config/rifle.conf') self.rifle = Rifle(rifleconf) self.rifle.reload_config() if self.bookmarks is None: if ranger.arg.clean: bookmarkfile = None else: bookmarkfile = self.confpath('bookmarks') self.bookmarks = Bookmarks( bookmarkfile=bookmarkfile, bookmarktype=Directory, autosave=self.settings.autosave_bookmarks) self.bookmarks.load() if not ranger.arg.clean and self.tags is None: self.tags = Tags(self.confpath('tagged')) self.ui.setup_curses() self.ui.initialize() self.rifle.hook_before_executing = lambda a, b, flags: \ self.ui.suspend() if 'f' not in flags else None self.rifle.hook_after_executing = lambda a, b, flags: \ self.ui.initialize() if 'f' not in flags else None self.rifle.hook_logger = self.notify # This hook allows image viewers to open all images in the current # directory, keeping the order of files the same as in ranger. # The requirements to use it are: # 1. set open_all_images to true # 2. ensure no files are marked # 3. call rifle with a command that starts with "sxiv " or "feh " def sxiv_workaround_hook(command): import re from ranger.ext.shell_escape import shell_quote if self.settings.open_all_images and \ len(self.thisdir.marked_items) == 0 and \ re.match(r'^(feh|sxiv) ', command): images = [f.basename for f in self.thisdir.files if f.image] escaped_filenames = " ".join(shell_quote(f) \ for f in images if "\x00" not in f) if images and self.thisfile.basename in images and \ "$@" in command: new_command = None if command[0:5] == 'sxiv ': number = images.index(self.thisfile.basename) + 1 new_command = command.replace("sxiv ", "sxiv -n %d " % number, 1) if command[0:4] == 'feh ': new_command = command.replace("feh ", "feh --start-at %s " % \ shell_quote(self.thisfile.basename), 1) if new_command: command = "set -- %s; %s" % (escaped_filenames, new_command) return command self.rifle.hook_command_preprocessing = sxiv_workaround_hook def mylogfunc(text): self.notify(text, bad=True) self.run = Runner(ui=self.ui, logfunc=mylogfunc, fm=self)