about summary refs log tree commit diff stats
path: root/linux/306files.subx
Commit message (Expand)AuthorAgeFilesLines
* 7842 - new directory organizationKartik K. Agaram2021-03-031-0/+169
ecs/ranger/blame/ranger/fm.py?h=v1.9.0b3&id=871c502d58055c7611f0763eaa71a7fafad7efdc'>^
f2d8598d ^
3de15ddd ^

d88232a3 ^
a1d7ed6e ^
871c502d ^
0c0b9489 ^
16246965 ^

0c0b9489 ^
a1d7ed6e ^
0c0b9489 ^
9506fb8e ^
a1d7ed6e ^
0c0b9489 ^

a1d7ed6e ^




f2d8598d ^
a1d7ed6e ^

f2d8598d ^



0c0b9489 ^



9506fb8e ^
0c0b9489 ^




16246965 ^



a1d7ed6e ^




f2d8598d ^

a1d7ed6e ^
f8e96a97 ^

871c502d ^

f2d8598d ^



d621586e ^
f2d8598d ^

d88232a3 ^
f2d8598d ^
16246965 ^





871c502d ^
f2d8598d ^



871c502d ^
f2d8598d ^




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

                     

                                      
                                           

                              
          
                                     
 
                  

                               
                                                        
                                    
                                      
                            
                                          

                                                                   




                                                                              
                                                               

                                          



                                                                               



                                                  
 




                                                                  



                                                       




                                             

                                                     
 

                                                 

                           



                                                                           
                                                      

                                                          
 
                                                                    





                                                                                          
 



                                                                                     
 




                                                                  
from time import time

from ranger.actions import Actions
from ranger.container import Bookmarks
from ranger.ext.relpath import relpath_conf
from ranger import __version__

CTRL_C = 3
TICKS_BEFORE_COLLECTING_GARBAGE = 100

class FM(Actions):
	input_blocked = False
	input_blocked_until = 0
	def __init__(self, ui = None, bookmarks = None):
		"""Initialize FM."""
		Actions.__init__(self)
		self.ui = ui
		self.bookmarks = bookmarks
		self.apps = self.settings.apps.CustomApplications()

		from ranger.shared import FileManagerAware
		FileManagerAware.fm = self

	def initialize(self):
		"""If ui/bookmarks are None, they will be initialized here."""
		from ranger.fsobject.directory import Directory

		if self.bookmarks is None:
			self.bookmarks = Bookmarks(
					bookmarkfile=relpath_conf('bookmarks'),
					bookmarktype=Directory,
					autosave=False)
			self.bookmarks.load()

		else:
			self.bookmarks = bookmarks

		if self.ui is None:
			from ranger.gui.defaultui import DefaultUI
			self.ui = DefaultUI()
			self.ui.initialize()

	def block_input(self, sec=0):
		self.input_blocked = sec != 0
		self.input_blocked_until = time() + sec

	def loop(self):
		"""The main loop consists of:
1. reloading bookmarks if outdated
2. drawing and finalizing ui
3. reading and handling user input
4. after X loops: collecting unused directory objects
"""

		self.env.enter_dir(self.env.path)

		gc_tick = 0

		try:
			while True:
				try:
					self.bookmarks.update_if_outdated()
					self.ui.poke()
					self.ui.draw()
					self.ui.finalize()

					key = self.ui.get_next_key()

					if self.input_blocked and \
							time() > self.input_blocked_until:
						self.input_blocked = False
					if not self.input_blocked:
						self.ui.handle_key(key)

					gc_tick += 1
					if gc_tick > TICKS_BEFORE_COLLECTING_GARBAGE:
						gc_tick = 0
						self.env.garbage_collect()

				except KeyboardInterrupt:
					self.ui.handle_key(CTRL_C)
		finally:
			self.bookmarks.remember(self.env.pwd)
			self.bookmarks.save()