Update
svn: r7198
This commit is contained in:
parent
d760adaa58
commit
ca0ba19e82
@ -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
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user