diff options
Diffstat (limited to 'ranger/core/fm.py')
-rw-r--r-- | ranger/core/fm.py | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/ranger/core/fm.py b/ranger/core/fm.py index dfad3425..e468e58c 100644 --- a/ranger/core/fm.py +++ b/ranger/core/fm.py @@ -19,6 +19,7 @@ The File Manager, putting the pieces together from time import time from collections import deque +import mimetypes import os import sys @@ -28,14 +29,12 @@ from ranger.container.tags import Tags from ranger.gui.defaultui import DefaultUI from ranger.container import Bookmarks from ranger.core.runner import Runner -from ranger import relpath_conf from ranger.ext.get_executables import get_executables from ranger.fsobject import Directory from ranger.ext.signal_dispatcher import SignalDispatcher from ranger import __version__ from ranger.core.loader import Loader -CTRL_C = 3 TICKS_BEFORE_COLLECTING_GARBAGE = 100 TIME_BEFORE_FILE_BECOMES_GARBAGE = 1200 @@ -70,7 +69,7 @@ class FM(Actions, SignalDispatcher): if ranger.arg.clean: bookmarkfile = None else: - bookmarkfile = relpath_conf('bookmarks') + bookmarkfile = self.confpath('bookmarks') self.bookmarks = Bookmarks( bookmarkfile=bookmarkfile, bookmarktype=Directory, @@ -81,7 +80,7 @@ class FM(Actions, SignalDispatcher): self.bookmarks = bookmarks if not ranger.arg.clean and self.tags is None: - self.tags = Tags(relpath_conf('tagged')) + self.tags = Tags(self.confpath('tagged')) if self.ui is None: self.ui = DefaultUI() @@ -94,6 +93,10 @@ class FM(Actions, SignalDispatcher): self.env.signal_bind('cd', self._update_current_tab) + mimetypes.knownfiles.append(os.path.expanduser('~/.mime.types')) + mimetypes.knownfiles.append(self.relpath('data/mime.types')) + self.mimetypes = mimetypes.MimeTypes() + def block_input(self, sec=0): self.input_blocked = sec != 0 self.input_blocked_until = time() + sec @@ -103,6 +106,23 @@ class FM(Actions, SignalDispatcher): self.input_blocked = False return self.input_blocked + def copy_config_files(self): + if not (ranger.arg.clean or os.path.exists(self.confpath('scope.sh'))): + import shutil + shutil.copy(self.relpath('data/scope.sh'), + self.confpath('scope.sh')) + + def confpath(self, *paths): + """returns the path relative to rangers configuration directory""" + if ranger.arg.clean: + assert 0, "Should not access relpath_conf in clean mode!" + else: + return os.path.join(ranger.arg.confdir, *paths) + + def relpath(self, *paths): + """returns the path relative to rangers library directory""" + return os.path.join(ranger.RANGERDIR, *paths) + def loop(self): """ The main loop consists of: @@ -120,14 +140,12 @@ class FM(Actions, SignalDispatcher): # for faster lookup: ui = self.ui throbber = ui.throbber - bookmarks = self.bookmarks loader = self.loader env = self.env has_throbber = hasattr(ui, 'throbber') try: while True: - bookmarks.update_if_outdated() loader.work() if has_throbber: if loader.has_work(): @@ -152,5 +170,5 @@ class FM(Actions, SignalDispatcher): raise SystemExit finally: - bookmarks.remember(env.cwd) - bookmarks.save() + self.bookmarks.remember(env.cwd) + self.bookmarks.save() |