Merge branch 'master' of git://git.assembla.com/fpdb-gimick
This commit is contained in:
commit
5460a9d8b2
|
@ -142,12 +142,12 @@ class GuiBulkImport():
|
||||||
"""returns the vbox of this thread"""
|
"""returns the vbox of this thread"""
|
||||||
return self.vbox
|
return self.vbox
|
||||||
|
|
||||||
def __init__(self, settings, config, parent, sql = None):
|
def __init__(self, settings, config, sql = None, parent = None):
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.config = config
|
self.config = config
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
|
|
||||||
self.importer = fpdb_import.Importer(self, self.settings, config,parent, sql)
|
self.importer = fpdb_import.Importer(self, self.settings, config, sql, parent)
|
||||||
|
|
||||||
self.vbox = gtk.VBox(False, 0)
|
self.vbox = gtk.VBox(False, 0)
|
||||||
self.vbox.show()
|
self.vbox.show()
|
||||||
|
|
|
@ -999,7 +999,7 @@ class fpdb:
|
||||||
|
|
||||||
def tab_bulk_import(self, widget, data=None):
|
def tab_bulk_import(self, widget, data=None):
|
||||||
"""opens a tab for bulk importing"""
|
"""opens a tab for bulk importing"""
|
||||||
new_import_thread = GuiBulkImport.GuiBulkImport(self.settings, self.config, self.window, self.sql)
|
new_import_thread = GuiBulkImport.GuiBulkImport(self.settings, self.config, self.sql, self.window)
|
||||||
self.threads.append(new_import_thread)
|
self.threads.append(new_import_thread)
|
||||||
bulk_tab=new_import_thread.get_vbox()
|
bulk_tab=new_import_thread.get_vbox()
|
||||||
self.add_and_display_tab(bulk_tab, _("Bulk Import"))
|
self.add_and_display_tab(bulk_tab, _("Bulk Import"))
|
||||||
|
|
|
@ -70,7 +70,7 @@ else:
|
||||||
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
|
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
|
||||||
|
|
||||||
class Importer:
|
class Importer:
|
||||||
def __init__(self, caller, settings, config, parent, sql = None):
|
def __init__(self, caller, settings, config, sql = None, parent = None):
|
||||||
"""Constructor"""
|
"""Constructor"""
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.caller = caller
|
self.caller = caller
|
||||||
|
@ -302,15 +302,13 @@ class Importer:
|
||||||
totpartial = 0
|
totpartial = 0
|
||||||
toterrors = 0
|
toterrors = 0
|
||||||
tottime = 0
|
tottime = 0
|
||||||
progresscount = 0
|
|
||||||
progressgoal = len(self.filelist)
|
|
||||||
|
|
||||||
ProgressDialog = ProgressBar(self.parent)
|
#prepare progress popup window
|
||||||
|
ProgressDialog = ProgressBar(len(self.filelist), self.parent)
|
||||||
|
|
||||||
for file in self.filelist:
|
for file in self.filelist:
|
||||||
|
|
||||||
progresscount += 1
|
ProgressDialog.progress_update()
|
||||||
ProgressDialog.progress_update(progresscount,progressgoal)
|
|
||||||
|
|
||||||
(stored, duplicates, partial, errors, ttime) = self.import_file_dict(db, file
|
(stored, duplicates, partial, errors, ttime) = self.import_file_dict(db, file
|
||||||
,self.filelist[file][0], self.filelist[file][1], q)
|
,self.filelist[file][0], self.filelist[file][1], q)
|
||||||
|
@ -319,11 +317,12 @@ class Importer:
|
||||||
totpartial += partial
|
totpartial += partial
|
||||||
toterrors += errors
|
toterrors += errors
|
||||||
|
|
||||||
|
del ProgressDialog
|
||||||
|
|
||||||
for i in xrange( self.settings['threads'] ):
|
for i in xrange( self.settings['threads'] ):
|
||||||
print _("sending finish message queue length ="), q.qsize()
|
print _("sending finish message queue length ="), q.qsize()
|
||||||
db.send_finish_msg(q)
|
db.send_finish_msg(q)
|
||||||
|
|
||||||
del ProgressDialog
|
|
||||||
|
|
||||||
return (totstored, totdups, totpartial, toterrors)
|
return (totstored, totdups, totpartial, toterrors)
|
||||||
# end def importFiles
|
# end def importFiles
|
||||||
|
@ -543,24 +542,62 @@ class Importer:
|
||||||
|
|
||||||
class ProgressBar:
|
class ProgressBar:
|
||||||
|
|
||||||
|
"""
|
||||||
|
Popup window to show progress
|
||||||
|
|
||||||
|
Init method sets up total number of expected iterations
|
||||||
|
If no parent is passed to init, command line
|
||||||
|
mode assumed, and does not create a progress bar
|
||||||
|
"""
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
self.progress.destroy()
|
|
||||||
|
|
||||||
def progress_update(self, fraction, sum):
|
if self.parent:
|
||||||
|
self.progress.destroy()
|
||||||
|
|
||||||
progresspercent = float(fraction) / (float(sum) + 1.0)
|
|
||||||
|
|
||||||
self.pbar.set_fraction(progresspercent)
|
def progress_update(self):
|
||||||
self.pbar.set_text(str(fraction) + " / " + str(sum))
|
|
||||||
|
|
||||||
def __init__(self, parent):
|
if not self.parent:
|
||||||
|
#nothing to do
|
||||||
|
return
|
||||||
|
|
||||||
|
self.fraction += 1
|
||||||
|
#update sum if fraction exceeds expected total number of iterations
|
||||||
|
if self.fraction > self.sum:
|
||||||
|
sum = self.fraction
|
||||||
|
|
||||||
|
#progress bar total set to 1 plus the number of items,to prevent it
|
||||||
|
#reaching 100% prior to processing fully completing
|
||||||
|
|
||||||
|
progress_percent = float(self.fraction) / (float(self.sum) + 1.0)
|
||||||
|
progress_text = (self.title + " "
|
||||||
|
+ str(self.fraction) + " / " + str(self.sum))
|
||||||
|
|
||||||
|
self.pbar.set_fraction(progress_percent)
|
||||||
|
self.pbar.set_text(progress_text)
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, sum, parent):
|
||||||
|
|
||||||
|
self.parent = parent
|
||||||
|
if not self.parent:
|
||||||
|
#no parent is passed, assume this is being run from the
|
||||||
|
#command line, so return immediately
|
||||||
|
return
|
||||||
|
|
||||||
|
self.fraction = 0
|
||||||
|
self.sum = sum
|
||||||
|
self.title = _("Importing")
|
||||||
|
|
||||||
self.progress = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
self.progress = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
|
|
||||||
self.progress.set_resizable(False)
|
self.progress.set_resizable(False)
|
||||||
self.progress.set_modal(True)
|
self.progress.set_modal(True)
|
||||||
self.progress.set_transient_for(parent)
|
self.progress.set_transient_for(self.parent)
|
||||||
self.progress.set_decorated(False)
|
self.progress.set_decorated(True)
|
||||||
|
self.progress.set_deletable(False)
|
||||||
|
self.progress.set_title(self.title)
|
||||||
|
|
||||||
vbox = gtk.VBox(False, 5)
|
vbox = gtk.VBox(False, 5)
|
||||||
vbox.set_border_width(10)
|
vbox.set_border_width(10)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user