10
from os import system, getenv
19
class Monitor_Thread(threading.Thread):
20
def __init__(self, treestore):
21
self.treestore = treestore
22
super(Monitor_Thread, self).__init__()
26
def monitor_handler(self):
29
hosts, shares , mount_points = checkmount.checkmount()
30
if self.hosts_old != hosts and self.shares_old != shares:
31
self.treestore.clear()
33
resource.append(string.join(["/", host, shares[i]], '/'))
34
iter = self.treestore.append(None, None)
35
self.treestore.set(iter, 0, resource[i])
36
self.treestore.set(iter, 1, mount_points[i])
38
self.hosts_old = hosts
39
self.shares_old = shares
46
gobject.idle_add(self.monitor_handler)
50
class Append_Thread(threading.Thread):
51
def __init__(self, treeview, path, column, treestore):
52
self.treeview = treeview
55
self.treestore = treestore
57
self.id = threading._get_ident()
58
self.model = treeview.get_model()
59
self.iter = self.model.get_iter(path)
60
self.current_host = self.model.get_value(self.iter, 0)
61
#cur_host_prev = current_host
63
super(Append_Thread, self).__init__()
64
#self._finished = threading.Event()
66
def appendshar(self, treeview, path, column, treestore):
67
#get some necessary info
70
current_host = self.current_host
71
cur_host_prev = current_host
72
#get a list of shares with comments
73
(hosts, shares, mount_points) = checkmount.checkmount()
74
(hostsharlist, commentlist) = (self.hostsharlist, self.commentlist)
81
#check whether we are trying to scan a last share
82
if model.iter_next(iter) == None:
87
treestore.remove(iter)
88
newiter = treestore.insert_before(None, useiter, [current_host, "host", "", ""])
89
for child in hostsharlist:
90
temiter = treestore.append(newiter, [hostsharlist[i], "share", commentlist[i], ""])
92
if num == cur_host_prev:
95
if shares[k] == hostsharlist[i] and hosts[k] == cur_host_prev:
96
treestore.set_value(temiter, 3, mount_points[k])
100
treeview.expand_row(path, True)
101
#thread.exit_thread()
105
(self.hostsharlist, self.commentlist) = getsmbshare.getsmbshare(self.current_host, self.id)
106
gobject.idle_add(self.appendshar, self.treeview, self.path, self.column, self.treestore)
109
class Mount_Thread(threading.Thread):
110
def __init__(self, treeview, path, column, treestore, notebook):
111
self.treestore = treestore
112
self.treeview = treeview
115
self.notebook = notebook
117
super(Mount_Thread, self).__init__()
121
def mountshar(self, treestore):
122
f_thread = Fmanager_Thread(self.notebook, self.treeview)
124
treestore.set(self.iter, 3, self.mount_point)
132
#get a share properties
133
model = self.treeview.get_model()
134
self.iter = model.get_iter(self.path)
135
self.current_host = model.get_value(self.iter, 0)
136
par_iter = model.iter_parent(self.iter)
137
self.h_name = model.get_value(par_iter, 0)
140
self.mount_dir = pyNeighborhood.parser.optdict["mount_directory"]
142
self.mount_point = string.join([self.mount_dir, "/" ,self.h_name , "/" , self.current_host], '')
144
(hosts, shares, mount_points) = checkmount.checkmount()
147
if num == self.h_name: hostflag1 = 1
149
if num == self.current_host: hostflag2 = 1
150
for num in mount_points:
151
if num == self.mount_point: hostflag3 = 1
153
print "Mount point already in use!!!"
154
gobject.idle_add(dialog.dialog,"Mount point already in use.", None)
158
if hostflag1==1 and hostflag2==1 and flag == 0:
159
print "According to mtab already mounted!!!"
160
gobject.idle_add(dialog.dialog,"According to mtab already mounted.", None)
163
if self.flag_exit != 0:
164
sharmount.sharmount(self.h_name, self.current_host)
165
gobject.idle_add(self.mountshar, self.treestore)
168
class Umount_Thread(threading.Thread):
169
def __init__(self, notebook, treeview, treestore, treeview_mon, treestore_mon):
170
self.notebook = notebook
171
self.treestore = treestore
172
self.treestore_mon = treestore_mon
173
self.treeview = treeview
174
self.treeview_mon = treeview_mon
176
super(Umount_Thread, self).__init__()
180
notebook = self.notebook
181
treestore = self.treestore
182
treestore_mon = self.treestore_mon
183
treeview =self.treeview
184
treeview_mon = self.treeview_mon
185
page = notebook.get_current_page()
187
treeselection = treeview.get_selection()
188
(model, iter) = treeselection.get_selected()
189
par_iter = model.iter_parent(iter)
190
if not par_iter == None:
191
h_name = model.get_value(iter, 3)
192
flag = sharmount.sharumount(h_name)
193
if flag == True: gobject.idle_add(treestore.set, iter, 3, '')
195
print "Could not unmount current share"
196
gobject.idle_add(dialog.dialog,"Could not unmount current share.", None)
198
else: print "Probably not smb-filesystem "
201
treeselection = treeview_mon.get_selection()
202
(model, iter) = treeselection.get_selected()
204
host_share = model.get_value(iter, 0)
207
mountpoint = model.get_value(iter, 1)
208
line = host_share.split('/')
209
flag = sharmount.sharumount(mountpoint)
211
gobject.idle_add(treestore_mon.remove, iter)
214
hostlist = readconfig.readconfig()
217
for host in hostlist:
218
iter = treestore.get_iter((n, ))
219
value = treestore.get_value(iter, 0)
225
iter_sh = treestore.get_iter((n-1, k))
226
value_sh = treestore.get_value(iter_sh, 0)
228
if value_sh == line[3]:
230
gobject.idle_add(treestore.set,iter_sh, 3, '')
234
print "Could not unmount current share"
235
gobject.idle_add(dialog.dialog,"Could not unmount current share.", None)
239
class Fmanager_Thread(threading.Thread):
240
def __init__(self, notebook, treeview):
241
self.notebook = notebook
242
self.treeview = treeview
244
super(Fmanager_Thread, self).__init__()
247
def filemanager(self, notebook, treeview):
248
page = notebook.get_current_page()
249
treeselection = treeview.get_selection()
250
(model, iter) = treeselection.get_selected()
252
par_iter = model.iter_parent(iter)
253
if not par_iter == None:
254
h_name = model.get_value(iter, 3)
255
sharmount.file_mng(h_name)
259
mountpoint = model.get_value(iter, 1)
262
sharmount.file_mng(mountpoint)
266
self.filemanager(self.notebook, self.treeview)