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.build_batch_ops()
self.batch_settings = None self.batch_settings = None
self.settings_page = None
try: try:
self.w = Assistant.Assistant(uistate,self.__class__,self.complete, self.w = Assistant.Assistant(uistate,self.__class__,self.complete,
@ -74,9 +75,7 @@ class MediaMan(Tool.Tool):
self.get_info_text()) self.get_info_text())
self.selection_page = self.w.add_page(_('Selecting operation'), self.selection_page = self.w.add_page(_('Selecting operation'),
self.build_selection_page()) self.build_selection_page())
#self.settings_page = self.w.add_page(_('Selecting settings'), self.confirm_page = self.w.add_text_page('','')
# self.build_settings_page())
self.confirm_page = self.w.add_text_page('Confirm page','confirm text')
self.conclusion_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) 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): def on_before_page_next(self,obj,page,data=None):
if page == self.selection_page: if page == self.selection_page:
self.build_settings_page() self.build_settings_page()
## self.suggest_filename() self.build_confirmation()
## elif page == self.selection_page: elif page == self.settings_page:
## self.build_confirmation() self.build_confirmation()
elif page == self.confirm_page: elif page == self.confirm_page:
success = self.run() success = self.run()
self.build_conclusion(success) self.build_conclusion(success)
@ -152,7 +151,7 @@ class MediaMan(Tool.Tool):
def build_batch_ops(self): def build_batch_ops(self):
self.batch_ops = [] self.batch_ops = []
batches_to_use = [ batches_to_use = [
PathChange PathChange,
] ]
for batch_class in batches_to_use: for batch_class in batches_to_use:
@ -199,6 +198,20 @@ class MediaMan(Tool.Tool):
self.w.remove_page(self.settings_page) self.w.remove_page(self.settings_page)
self.batch_settings = None 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): def run(self):
""" """
Run selected batch op with selected settings. Run selected batch op with selected settings.
@ -237,7 +250,6 @@ class MediaMan(Tool.Tool):
conclusion_text, conclusion_text,
self.conclusion_page) self.conclusion_page)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# These are the actuall sub-tools (batch-ops) for use from Assistant # These are the actuall sub-tools (batch-ops) for use from Assistant
@ -250,10 +262,6 @@ class BatchOp:
title = 'Untitled operation' title = 'Untitled operation'
description = 'This operation needs to be described' description = 'This operation needs to be described'
## def __init__(self,db,callback):
## self.db = db
## self.callback = callback
def build_config(self): def build_config(self):
""" """
This method should return either None (if the batch op requires This method should return either None (if the batch op requires
@ -261,12 +269,38 @@ class BatchOp:
""" """
return None 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): 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." print "Running BatchOp tool... done."
return True return True
def get_self(self): 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): class PathChange(BatchOp):
title = _('Change path') title = _('Change path')
@ -305,24 +339,26 @@ class PathChange(BatchOp):
return (title,box) return (title,box)
def run_tool(self,db,callback): def build_confirm_text(self):
uc = UpdateCallback(callback) from_text = unicode(self.from_entry.get_text())
uc.set_total(db.get_number_of_media_objects()) 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()) from_text = unicode(self.from_entry.get_text())
to_text = unicode(self.to_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(): for handle in db.get_media_object_handles():
obj = db.get_object_from_handle(handle) obj = db.get_object_from_handle(handle)
if obj.get_path().find(from_text) != -1: if obj.get_path().find(from_text) != -1:
new_path = obj.get_path().replace(from_text,to_text) new_path = obj.get_path().replace(from_text,to_text)
obj.set_path(new_path) obj.set_path(new_path)
db.commit_media_object(obj,trans) db.commit_media_object(obj,self.trans)
uc.update() self.update()
db.transaction_commit(trans,self.title)
db.enable_signals()
db.request_rebuild()
return True return True
#------------------------------------------------------------------------ #------------------------------------------------------------------------