svn: r7198
This commit is contained in:
Alex Roitman 2006-08-18 01:16:55 +00:00
parent da339a9004
commit ac405dee06

View File

@ -63,6 +63,7 @@ class MediaMan(Tool.Tool):
self.build_batch_ops()
self.batch_settings = None
self.settings_page = None
try:
self.w = Assistant.Assistant(uistate,self.__class__,self.complete,
@ -74,9 +75,7 @@ class MediaMan(Tool.Tool):
self.get_info_text())
self.selection_page = self.w.add_page(_('Selecting operation'),
self.build_selection_page())
#self.settings_page = self.w.add_page(_('Selecting settings'),
# self.build_settings_page())
self.confirm_page = self.w.add_text_page('Confirm page','confirm text')
self.confirm_page = self.w.add_text_page('','')
self.conclusion_page = self.w.add_text_page('','')
self.w.connect('before-page-next',self.on_before_page_next)
@ -89,9 +88,9 @@ class MediaMan(Tool.Tool):
def on_before_page_next(self,obj,page,data=None):
if page == self.selection_page:
self.build_settings_page()
## self.suggest_filename()
## elif page == self.selection_page:
## self.build_confirmation()
self.build_confirmation()
elif page == self.settings_page:
self.build_confirmation()
elif page == self.confirm_page:
success = self.run()
self.build_conclusion(success)
@ -152,7 +151,7 @@ class MediaMan(Tool.Tool):
def build_batch_ops(self):
self.batch_ops = []
batches_to_use = [
PathChange
PathChange,
]
for batch_class in batches_to_use:
@ -199,6 +198,20 @@ class MediaMan(Tool.Tool):
self.w.remove_page(self.settings_page)
self.batch_settings = None
def build_confirmation(self):
"""
Build the text of the confirmation label. This should query
the selected options (format, filename) and present the summary
of the proposed action.
"""
ix = self.get_selected_op_index()
confirm_text_builder = self.batch_ops[ix][4]
confirm_text = confirm_text_builder()
self.w.remove_page(self.confirm_page)
self.confirm_page = self.w.insert_text_page(_('Final confirmation'),
confirm_text,
self.confirm_page)
def run(self):
"""
Run selected batch op with selected settings.
@ -237,7 +250,6 @@ class MediaMan(Tool.Tool):
conclusion_text,
self.conclusion_page)
#------------------------------------------------------------------------
#
# These are the actuall sub-tools (batch-ops) for use from Assistant
@ -250,10 +262,6 @@ class BatchOp:
title = 'Untitled operation'
description = 'This operation needs to be described'
## def __init__(self,db,callback):
## self.db = db
## self.callback = callback
def build_config(self):
"""
This method should return either None (if the batch op requires
@ -261,12 +269,38 @@ class BatchOp:
"""
return None
def build_confirm_text(self):
"""
This method should return either None (if the batch op requires
no confirmation) or a string with the confirmation text.
"""
return "This confirmation text needs to be written"
def run_tool(self,db,callback):
self._prepare(db,callback)
success = self._run(db)
self._cleanup(db)
return success
def _prepare(self,db,callback):
uc = UpdateCallback(callback)
uc.set_total(db.get_number_of_media_objects())
self.update = uc.update
self.trans = db.transaction_begin("",batch=True)
db.disable_signals()
def _cleanup(self,db):
db.transaction_commit(self.trans,self.title)
db.enable_signals()
db.request_rebuild()
def _run(self,db,callback):
print "Running BatchOp tool... done."
return True
def get_self(self):
return (self.run_tool,self.title,self.description,self.build_config())
return (self.run_tool,self.title,self.description,
self.build_config(),self.build_confirm_text)
class PathChange(BatchOp):
title = _('Change path')
@ -305,24 +339,26 @@ class PathChange(BatchOp):
return (title,box)
def run_tool(self,db,callback):
uc = UpdateCallback(callback)
uc.set_total(db.get_number_of_media_objects())
def build_confirm_text(self):
from_text = unicode(self.from_entry.get_text())
to_text = unicode(self.to_entry.get_text())
text = _(
'The following action is to be performed:\n\n'
'Operation:\t%s\nReplace:\t\t%s\nWith:\t\t%s\n\n'
'Press OK to proceed, Cancel to abort, or Back to '
'revisit your options.') % (self.title, from_text, to_text)
return text
def _run(self,db):
from_text = unicode(self.from_entry.get_text())
to_text = unicode(self.to_entry.get_text())
trans = db.transaction_begin("",batch=True)
db.disable_signals()
for handle in db.get_media_object_handles():
obj = db.get_object_from_handle(handle)
if obj.get_path().find(from_text) != -1:
new_path = obj.get_path().replace(from_text,to_text)
obj.set_path(new_path)
db.commit_media_object(obj,trans)
uc.update()
db.transaction_commit(trans,self.title)
db.enable_signals()
db.request_rebuild()
db.commit_media_object(obj,self.trans)
self.update()
return True
#------------------------------------------------------------------------