Mercurial > hg > config
annotate python/clearsilver.py @ 929:7c4be71a560b default tip
remove old aliases
| author | Jeff Hammel <k0scist@gmail.com> | 
|---|---|
| date | Mon, 20 Oct 2025 15:22:19 -0700 | 
| parents | f3ab51c79813 | 
| children | 
| rev | line source | 
|---|---|
| 
0
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
1 #!/usr/bin/python | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
2 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
3 import sys, os | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
4 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
5 KEY_RETURN=""" | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
6 """ | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
7 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
8 class ClearSilver(object): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
9 """ | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
10 a blatant rip-off of quicksilver/katapult | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
11 """ | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
12 def __init__(self, startswith=''): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
13 self.matches = {} | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
14 self.sortable = True | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
15 if startswith: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
16 self.build_matches(startswith) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
17 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
18 def returnmatch(self): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
19 keys = self.matches.keys() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
20 if len(keys) == 1: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
21 return keys[0], self.matches[keys[0]] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
22 if self.sortable: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
23 keys.sort() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
24 return keys | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
25 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
26 def find_matches(self, startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
27 nixlist = [] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
28 for i in self.matches: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
29 if not i.startswith(startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
30 nixlist.append(i) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
31 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
32 for i in nixlist: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
33 self.matches.pop(i) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
34 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
35 return self.returnmatch() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
36 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
37 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
38 class PATHsilver(ClearSilver): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
39 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
40 def build_matches(self, startswith=''): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
41 path = os.environ['PATH'].split(':') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
42 path.reverse() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
43 for directory in path: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
44 try: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
45 for binary in os.listdir(directory): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
46 if binary.startswith(startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
47 self.matches[binary] = '/'.join((directory,binary)) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
48 except OSError: # directory not found | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
49 continue | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
50 return self.returnmatch() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
51 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
52 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
53 def exec_match(self, key): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
54 item = self.matches[key] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
55 os.execl(item, item) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
56 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
57 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
58 class Wordsilver(ClearSilver): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
59 dictfile = '/usr/share/dict/cracklib-small' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
60 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
61 def build_matches(self, startswith=''): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
62 f = file(self.dictfile, 'r') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
63 for i in f.readlines(): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
64 if i.startswith(startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
65 i = i.rstrip('\r\n') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
66 self.matches[i] = i | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
67 return self.returnmatch() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
68 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
69 def exec_match(self, key): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
70 item = self.matches[key] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
71 print key | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
72 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
73 class BookmarkSilver(ClearSilver): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
74 def __init__(self, startswith=''): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
75 ClearSilver.__init__(self) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
76 self.sortable = False | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
77 if startswith: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
78 self.build_matches(startswith) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
79 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
80 def add_url(self, i, startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
81 delimiter = '//' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
82 j = i[i.index(delimiter) + len(delimiter):] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
83 j = j.rstrip('/') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
84 if j.startswith(startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
85 self.matches[j] = i | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
86 j = j.strip('w.') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
87 if j.startswith(startswith): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
88 self.matches[j] = i | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
89 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
90 def build_matches(self, startswith=''): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
91 # find the firefox files | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
92 firefoxdir = '/'.join((os.environ['HOME'], '.mozilla', 'firefox')) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
93 profile = file('/'.join((firefoxdir, 'profiles.ini')), 'r').readlines() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
94 profile = [i.rstrip('\n\r \t') for i in profile] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
95 index = profile.index('Name=default') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
96 delimiter = 'Path=' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
97 while 1: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
98 index += 1 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
99 if profile[index].startswith(delimiter): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
100 profile = '/'.join((firefoxdir, profile[index][len(delimiter):])) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
101 break | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
102 bookmarks = '/'.join((profile, 'bookmarks.html')) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
103 history = '/'.join((profile, 'history.dat')) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
104 import re | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
105 history = file(history, 'r').read() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
106 history = re.findall('http.*//.*\)', history) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
107 history.reverse() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
108 for i in history: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
109 i = i[:i.index(')')] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
110 self.add_url(i, startswith) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
111 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
112 bookmarks = file(bookmarks, 'r').read() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
113 bookmarks = re.findall('"http.*//.*"', bookmarks) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
114 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
115 for i in bookmarks: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
116 i = i.strip('"') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
117 i = i[:i.index('"')] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
118 self.add_url(i, startswith) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
119 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
120 return self.returnmatch() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
121 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
122 def exec_match(self, key): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
123 item = self.matches[key] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
124 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
125 os.system("firefox " + item) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
126 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
127 if __name__ == '__main__': | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
128 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
129 matcher_type = 'PATHsilver' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
130 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
131 # parse options | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
132 options = { 'D' : 'Wordsilver', 'H' : 'BookmarkSilver' } | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
133 for i in sys.argv[1:]: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
134 i = i.strip('-') | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
135 if options.has_key(i): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
136 matcher_type = options[i] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
137 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
138 # init the 'GUI' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
139 import curses | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
140 stdscr = curses.initscr() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
141 curses.noecho() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
142 curses.cbreak() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
143 stdscr.keypad(1) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
144 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
145 try: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
146 # XXX should include colors at some point -- not right now, though | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
147 # curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
148 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
149 c = '' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
150 matcher = None | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
151 matches = None | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
152 entered='' | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
153 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
154 while 1: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
155 y, x = stdscr.getmaxyx() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
156 stdscr.refresh() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
157 c = stdscr.getch() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
158 stdscr.erase() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
159 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
160 # handle backspaces | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
161 if c == curses.KEY_BACKSPACE or c == 127: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
162 entered = entered[:-1] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
163 matcher = None | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
164 matches = None | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
165 else: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
166 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
167 try: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
168 c = chr(c) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
169 except ValueError: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
170 continue | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
171 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
172 if c == KEY_RETURN: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
173 break | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
174 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
175 entered += c | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
176 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
177 if not matcher: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
178 matcher = eval(matcher_type + "()") | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
179 matches = matcher.build_matches(entered) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
180 else: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
181 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
182 if c.isdigit() and int(c) < min(10, len(matches)): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
183 for i in matches: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
184 if i.startswith(entered): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
185 break | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
186 else: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
187 matches = matches[int(c):int(c)+1] | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
188 break | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
189 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
190 matches = matcher.find_matches(entered) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
191 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
192 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
193 if isinstance(matches, list): | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
194 i=1 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
195 for match in matches: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
196 if i >= y: continue | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
197 if i <= 10: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
198 numstr = " :" + str(i-1) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
199 else: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
200 numstr = "" | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
201 stdscr.addstr(i,0, match + numstr) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
202 i += 1 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
203 stdscr.addstr(0,0, entered) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
204 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
205 if matches: stdscr.addstr(1,0, matches[0] + " :0") | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
206 else: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
207 stdscr.addstr(0,0,entered + " -> " + matches[1]) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
208 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
209 finally: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
210 # 'GUI' cleanup | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
211 curses.nocbreak() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
212 stdscr.keypad(0) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
213 curses.echo() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
214 curses.endwin() | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
215 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
216 # execute the program (if found) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
217 if not matches: | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
218 sys.exit(1) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
219 matcher.exec_match(matches[0]) | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
220 | 
| 
 
f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
 
k0s <k0scist@gmail.com> 
parents:  
diff
changeset
 | 
221 | 
