pyneighborhood team mailing list archive
-
pyneighborhood team
-
Mailing list archive
-
Message #00187
[Branch ~pyneighborhood/pyneighborhood/devel] Rev 553: Browsing is now triggered through events. This avoids some nasty import workarounds.
------------------------------------------------------------
revno: 553
committer: Stefan J. Betz <info@xxxxxxxxxxxxxxx>
branch nick: pyneighborhood
timestamp: Mon 2011-01-03 22:20:19 +0100
message:
Browsing is now triggered through events. This avoids some nasty import workarounds.
modified:
pyNeighborhood
pyneighborhood/browsing.py
pyneighborhood/mainwindow.py
--
lp:pyneighborhood
https://code.launchpad.net/~pyneighborhood/pyneighborhood/devel
Your team pyNeighborhood is subscribed to branch lp:pyneighborhood.
To unsubscribe from this branch go to https://code.launchpad.net/~pyneighborhood/pyneighborhood/devel/+edit-subscription
=== modified file 'pyNeighborhood'
--- pyNeighborhood 2010-10-22 12:25:27 +0000
+++ pyNeighborhood 2011-01-03 21:20:19 +0000
@@ -20,11 +20,13 @@
import gobject
import gettext
from pyneighborhood.mainwindow import MainWindow
+from pyneighborhood.browsing import BrowsingThread
gettext.bindtextdomain('pyNeighborhood')
gettext.textdomain('pyNeighborhood')
# Start pyNeighborhood:
-MainWindow()
+mainwindow = MainWindow()
gobject.threads_init()
+BrowsingThread(mainwindow).start()
gtk.main()
=== modified file 'pyneighborhood/browsing.py'
--- pyneighborhood/browsing.py 2010-09-18 18:20:10 +0000
+++ pyneighborhood/browsing.py 2011-01-03 21:20:19 +0000
@@ -24,6 +24,7 @@
from pyneighborhood.misc import push_notification
from pyneighborhood.nmblookup import query_masters, query_workgroup, query_workgroup_hosts, query_host
from pyneighborhood.smbclient import scan_shares
+from pyneighborhood.events import browsingevent
_ = gettext.gettext
@@ -38,41 +39,44 @@
"""
Thread.__init__(self)
self.mainwindow = mainwindow
+ self.daemon = True
def run(self):
"""
Browse me...
"""
- push_notification(_("Starting browsing...\n"))
- dblock.acquire()
- cursor = db.cursor()
- cursor.execute("""UPDATE workgroups SET validated = 0 WHERE manual = 0""")
- cursor.execute("""UPDATE hosts SET validated = 0 WHERE manual = 0""")
- cursor.execute("""UPDATE shares SET validated = 0 WHERE manual = 0""")
- dblock.release()
- for master in query_masters():
- push_notification(_("Found Master Browser: %s\n") % master)
- workgroup, workgroupid = query_workgroup(master)
- push_notification(_("Master Browser %(master)s is member of workgroup %(workgroup)s\n") % { "master": master, "workgroup": workgroup })
- for host in query_workgroup_hosts(workgroup):
- query_host(host)
- cur = db.cursor()
- workgroups_result = cur.execute("""SELECT name FROM workgroups WHERE manual = 0""").fetchall()
- for result in workgroups_result:
- push_notification(_("Found workgroup: %s\n") % result[0])
- hosts_result = cur.execute("""SELECT id,name,ip FROM hosts WHERE manual = 0""").fetchall()
- for result in hosts_result:
- push_notification(_("Scanning host %s for shares...\n") % result[1] )
- scan_shares(result[2])
- shares_result = cur.execute("""SELECT * FROM shares WHERE host = ? AND manual = 0""", (result[0],)).fetchall()
- for share in shares_result:
- push_notification(_("Found share: %s\n") % str(share[1]))
- if self.mainwindow != None:
- threads_enter()
- self.mainwindow.sync_treeview()
- threads_leave()
+ while browsingevent.wait():
+ push_notification(_("Starting browsing...\n"))
dblock.acquire()
- cur.execute("""DELETE FROM shares WHERE validated = 0 AND manual = 0""")
- cur.execute("""DELETE FROM hosts WHERE validated = 0 AND manual = 0""")
- cur.execute("""DELETE FROM workgroups WHERE validated = 0 AND manual = 0""")
+ cursor = db.cursor()
+ cursor.execute("""UPDATE workgroups SET validated = 0 WHERE manual = 0""")
+ cursor.execute("""UPDATE hosts SET validated = 0 WHERE manual = 0""")
+ cursor.execute("""UPDATE shares SET validated = 0 WHERE manual = 0""")
dblock.release()
+ for master in query_masters():
+ push_notification(_("Found Master Browser: %s\n") % master)
+ workgroup, workgroupid = query_workgroup(master)
+ push_notification(_("Master Browser %(master)s is member of workgroup %(workgroup)s\n") % { "master": master, "workgroup": workgroup })
+ for host in query_workgroup_hosts(workgroup):
+ query_host(host)
+ cur = db.cursor()
+ workgroups_result = cur.execute("""SELECT name FROM workgroups WHERE manual = 0""").fetchall()
+ for result in workgroups_result:
+ push_notification(_("Found workgroup: %s\n") % result[0])
+ hosts_result = cur.execute("""SELECT id,name,ip FROM hosts WHERE manual = 0""").fetchall()
+ for result in hosts_result:
+ push_notification(_("Scanning host %s for shares...\n") % result[1] )
+ scan_shares(result[2])
+ shares_result = cur.execute("""SELECT * FROM shares WHERE host = ? AND manual = 0""", (result[0],)).fetchall()
+ for share in shares_result:
+ push_notification(_("Found share: %s\n") % str(share[1]))
+ if self.mainwindow != None:
+ threads_enter()
+ self.mainwindow.sync_treeview()
+ threads_leave()
+ dblock.acquire()
+ cur.execute("""DELETE FROM shares WHERE validated = 0 AND manual = 0""")
+ cur.execute("""DELETE FROM hosts WHERE validated = 0 AND manual = 0""")
+ cur.execute("""DELETE FROM workgroups WHERE validated = 0 AND manual = 0""")
+ dblock.release()
+ browsingevent.clear()
=== modified file 'pyneighborhood/mainwindow.py'
--- pyneighborhood/mainwindow.py 2010-10-22 12:11:16 +0000
+++ pyneighborhood/mainwindow.py 2011-01-03 21:20:19 +0000
@@ -30,7 +30,7 @@
# pyNeighborhood Imports
from pyneighborhood import config, db
from pyneighborhood.misc import sharepath, events, push_notification, INFO
-from pyneighborhood.browsing import BrowsingThread
+from pyneighborhood.events import browsingevent
_ = gettext.gettext
@@ -63,10 +63,7 @@
Reloades the Browser TreeView
"""
self.reload_browser_button.set_sensitive(False)
- if self.browsing_thread.isAlive() == False:
- self.browsing_thread = BrowsingThread(self)
- self.browsing_thread.start()
- self.reload_browser_button.set_sensitive(True)
+ browsingevent.set()
def reload_mounts(self, event=None, widget=None):
"""
@@ -226,6 +223,7 @@
for workgroup in workgroups:
workgroup_iter = self.treestore.get_iter_from_string(workgroup[0])
self.treestore.remove(workgroup_iter)
+ self.reload_browser_button.set_sensitive(True)
def process_events(self):
"""
@@ -336,8 +334,7 @@
self.host_objects = {}
# Autoreload Mount's View
self.reload_mounts()
- # Autostart first Scanning
- self.browsing_thread = BrowsingThread(self)
- self.browsing_thread.start()
# Start Events Processing
timeout_add(50,self.process_events)
+ # Start frist Browsing
+ browsingevent.set()