Validation on number of inputs added

This commit is contained in:
2006-05-03 11:52:54 +00:00
parent a613f0a3fa
commit 56a6028547
6 changed files with 52 additions and 43 deletions

View File

@@ -21,9 +21,10 @@ class NavigatorView (gtk.TreeView):
# Selection Mode
self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
self.get_selection().set_select_function(self.is_selectable)
self.get_selection().connect('changed',self.selection_changed_handler)
# Setting up TextRenderers etc
self.connect('cursor_changed', self.cursor_changed_handler)
# self.connect('cursor_changed', self.cursor_changed_handler)
self.connect('row_activated', self.row_activated_handler)
textrenderer = gtk.CellRendererText()
@@ -68,11 +69,8 @@ class NavigatorView (gtk.TreeView):
return True
# selection changed, setting current_data ojbects
def cursor_changed_handler(self, widget):
selection = widget.get_selection()
def selection_changed_handler(self, selection):
model, paths = selection.get_selected_rows()
objs = [self.data_tree.get_value(self.data_tree.get_iter(path),2) for path in paths]
@@ -80,22 +78,11 @@ class NavigatorView (gtk.TreeView):
if objs and isinstance(objs[0], dataset.Dataset):
logger.log('debug', 'Selecting dataset')
self.project.set_current_data(objs)
else:
logger.log('debug', 'Deselecting dataset')
self.project.set_current_data([])
# current object hasn't been added to selection yet, so we're adding it in
cur_path, column = widget.get_cursor()
obj = model.get_value(model.get_iter(cur_path),2)
objs = [model.get_value(model.get_iter(path), 2) for path in paths]
if (not obj in objs) and isinstance(obj, dataset.Dataset):
objs += obj
if objs:
if isinstance(objs[0], dataset.Dataset):
logger.log('debug', 'Selecting dataset')
self.project.set_current_data(objs)
# TreeView changed. Set correct focus and colours
def row_changed_handler(self, treestore, pos, iter):
obj = treestore.get_value(iter,2)

View File

@@ -13,7 +13,7 @@ class Project:
self.name = name
self.dim_names = []
self._selection_observers = []
self.current_data = None
self.current_data = []
self.datasets = []
self.sel_obj = dataset.Selection()

View File

@@ -114,12 +114,19 @@ class Function:
self.id = id
self.name = name
def valid_input(input):
return True
# ,ust return a Validation object
def validate_input(input):
return Validation(True,"Validation Not Implemented")
def run(self, data):
def run(self):
pass
class Validation:
def __init__(self,result, reason):
self.succeeded = result
self.reason = reason
class WorkflowView (gtk.VBox):
def __init__(self, wf):
@@ -162,10 +169,25 @@ class WorkflowView (gtk.VBox):
project = self.workflow.app.project
parent_data = project.current_data
new_data = function.run(project.current_data)
validation = function.validate_input()
if not validation.succeeded:
logger.log('warning','Invalid Inputdata: ' + str(reason))
return
argcount =function.run.func_code.co_argcount - 1
if argcount != len(parent_data):
logger.log('warning','Method requires ' + str(argcount) + ' Data. ' + str(len(parent_data)) + ' selected')
return
if not project.current_data:
new_data = function.run()
else:
new_data = function.run(*project.current_data)
if new_data != None:
project.add_data(parent_data, new_data, function.name)
logger.log('debug', 'Function ended: %s' % function.name)
def button_click_handler(self, button):