summary refs log tree commit diff stats
path: root/code
diff options
context:
space:
mode:
Diffstat (limited to 'code')
-rw-r--r--code/directory.py33
-rw-r--r--code/environment.py16
-rw-r--r--code/fm.py36
-rw-r--r--code/ui.py39
4 files changed, 112 insertions, 12 deletions
diff --git a/code/directory.py b/code/directory.py
new file mode 100644
index 00000000..4cb9fd72
--- /dev/null
+++ b/code/directory.py
@@ -0,0 +1,33 @@
+
+class Directory():
+	def __init__(self, path):
+		self.path = path
+		self.files_loaded = False
+		self.scheduled = False
+		self.files = None
+		self.mtime = None
+		self.exists = True
+
+	def load_files(self):
+		import os
+		try:
+			self.files = os.listdir(self.path)
+			self.exists = True
+		except OSError:
+			self.files = []
+			self.exists = False
+		self.files_loaded = True
+
+	def __len__(self):
+		return len(self.files)
+	
+	def __getitem__(self, key):
+		return self.files[key]
+
+if __name__ == '__main__':
+	d = Directory('.')
+	d.load_files()
+	print(d.files)
+	print(d[1])
+
+	
diff --git a/code/environment.py b/code/environment.py
new file mode 100644
index 00000000..d0ff5763
--- /dev/null
+++ b/code/environment.py
@@ -0,0 +1,16 @@
+class Vector():
+	def __init__(self, x, y):
+		self.x = x
+		self.y = y
+
+class Environment():
+	# A collection of data which is relevant for more than
+	# one class.
+	def __init__(self):
+		self.path = None
+		self.directories = {}
+		self.pwd = None # current directory
+		self.cf = None # current file
+		self.keybuffer = ''
+		self.copy = None
+		self.termsize = Vector(80, 24)
diff --git a/code/fm.py b/code/fm.py
index 76316a9d..8029d915 100644
--- a/code/fm.py
+++ b/code/fm.py
@@ -1,38 +1,52 @@
-import time
 import sys
-from code import ui, debug
+import ui, debug, directory
 
 class FM():
-	def __init__(self, options):
-		self.singleton = None
+	def __init__(self, options, environment):
 		self.options = options
-		self.ui = ui.UI()
+		self.env = environment
+
+	def setup(self, path, ui):
+		self.ui = ui
+		self.enter_dir(path)
+
+	def enter_dir(self, path):
+		self.env.path = path
+		try:
+			self.pwd = self.env.directories[path]
+		except KeyError:
+			self.env.pwd = directory.Directory(path)
+			self.env.directories[path] = self.env.pwd
+
+		self.env.pwd.load_files()
+		if len(self.env.pwd) > 0: self.env.cf = self.env.pwd[0]
 
 	def run(self):
 		try:
 			while 1:
 				try:
+					self.ui.feed(self.env.directories, self.env.pwd, self.env.cf, self.env.termsize)
 					self.ui.draw()
 				except KeyboardInterrupt:
 					self.interrupt()
 				except:
-					debug.log(sys.exc_info()[1])
+					raise
 
 				try:
-					key = None
-#					key = curses.getch()
-#					curses.flushinp()
+					key = self.ui.get_next_key()
 					self.press(key)
 				except KeyboardInterrupt:
 					self.interrupt()
 		except:
+			self.ui.exit()
 			raise
-			pass
 
 	def press(self, key):
-		pass
+		if (key == ord('q')):
+			raise SystemExit()
 
 	def interrupt(self):
+		import time
 		self.buffer = ""
 		time.sleep(0.2)
 
diff --git a/code/ui.py b/code/ui.py
index 0e48a68a..7d8fd828 100644
--- a/code/ui.py
+++ b/code/ui.py
@@ -1,4 +1,41 @@
+import curses
 class UI():
+	def __init__(self, options):
+		self.scr = curses.initscr()
+		self.scr.leaveok(1)
+		curses.noecho()
+		curses.halfdelay(3)
+
+		self.options = options
+		self.directories = None
+		self.pwd = None
+		self.cf = None
+		self.termsize = None
+		self.rows = 0
+		self.cols = 0
+
+	def feed(self, directories, pwd, cf, termsize):
+		self.directories = directories
+		self.pwd = pwd
+		self.cf = cf
+		self.termsize = termsize
+		self.cols = termsize.x
+		self.rows = termsize.y
+
+	def exit(self):
+		curses.nocbreak()
+		curses.echo()
+		curses.endwin()
+
 	def draw(self):
 		import time
-		time.sleep(0.1)
+		self.scr.erase()
+		for i in range(1, len(self.pwd)):
+			self.scr.addstr(i, 0, self.pwd[i])
+		self.scr.refresh()
+
+	def get_next_key(self):
+		key = self.scr.getch()
+		curses.flushinp()
+		return key
+
<arg@suckless.org> 2007-02-22 22:10:16 +0100 committer Anselm R. Garbe <arg@suckless.org> 2007-02-22 22:10:16 +0100 renamed untiled into floating, keeping tiled instead of tiling (afaik tiled sounds more correct) - English speakers convinced me' href='/acidbong/suckless/dwm/commit/config.arg.h?h=5.8.2&id=338c0838580b32f1258a800392d93cf973baf1e6'>338c083 ^
3794c62 ^
f6e41b0 ^
e461e60 ^
3794c62 ^
f196b71 ^

b38905b ^
a73a882 ^
3059c9c ^
3171371 ^
0ea0343 ^
e701394 ^
3171371 ^
4216bf8 ^
2c477cf ^
2aef8b9 ^
27b0595 ^

f6e41b0 ^

2c477cf ^

338c083 ^
2c477cf ^







































a73a882 ^
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
85
86
87
88
89
90
91
92
93
94
95
96