diff --git a/UserEventData.m b/UserEventData.m new file mode 100644 index 0000000..3423d1d --- /dev/null +++ b/UserEventData.m @@ -0,0 +1,11 @@ +classdef (ConstructOnLoad) UserEventData < event.EventData + properties + userdata + end + + methods + function data = UserEventData(userdata) + data.userdata = userdata; + end + end +end \ No newline at end of file diff --git a/WidgetFolderBrowser.m b/WidgetFolderBrowser.m index 0e34431..78a9b21 100644 --- a/WidgetFolderBrowser.m +++ b/WidgetFolderBrowser.m @@ -9,12 +9,6 @@ % Max-Planck Institute For Brain Research % - properties (SetObservable = true) - - file - - end - properties (Access = private) ui @@ -22,6 +16,10 @@ end + events + event_newFile + end + methods @@ -51,6 +49,8 @@ addlistener(obj.ui, 'event_filePrevious', @obj.fcnCallback_filePrevious); addlistener(obj.ui, 'event_folderLoad', @obj.fcnCallback_folderLoad); + addlistener(obj.model, 'event_newFile', @obj.fcnCallback_requestNewFile); + end end @@ -60,7 +60,6 @@ function obj = fcnCallback_fileLoad(obj, ~, ~) obj.model.fileLoad(); - obj.requestNewFile(); end @@ -68,7 +67,6 @@ function obj = fcnCallback_fileNext(obj, ~, ~) obj.model.fileUpdate(1); - obj.requestNewFile(); end @@ -76,7 +74,6 @@ function obj = fcnCallback_filePrevious(obj, ~, ~) obj.model.fileUpdate(-1); - obj.requestNewFile(); end @@ -84,19 +81,19 @@ function obj = fcnCallback_folderLoad(obj, ~, ~) obj.model.folderLoad(); - obj.requestNewFile(); end %% @ request newfile - function obj = requestNewFile(obj) - + function obj = fcnCallback_requestNewFile(obj, ~, event) + obj.ui.updateFileName(obj.model.fileTag); obj.ui.updateFileCounter(obj.model.index, obj.model.listSize); - obj.file = obj.model.file(); + userEventData = UserEventData(event.userdata); + notify(obj, 'event_newFile', userEventData); end end -end +end \ No newline at end of file diff --git a/WidgetFolderBrowserModel.m b/WidgetFolderBrowserModel.m index 10385f1..eaf2a48 100644 --- a/WidgetFolderBrowserModel.m +++ b/WidgetFolderBrowserModel.m @@ -18,12 +18,15 @@ end properties (Dependent) - - listSize - fileTag file - + listSize + fileTag + end + + events + event_newFile end + methods @@ -33,15 +36,25 @@ end - function obj = fileLoad(obj) + function obj = fileLoad(varargin) + + if nargin==1 + obj = varargin{1}; + [fileName, pathName] = uigetfile(regexp(obj.extension, ',', 'split')', 'Pick a file ...'); + obj.path = pathName(1:end-1); % uigetfile returns pathName with filesep + elseif nargin==2 && exist(varargin{2}, 'file') %valid file as second argument + [pathstr, name, ext] = fileparts(varargin{2}); + fileName = [name, ext]; + obj.path = pathstr; + else + error('Wrong number of input arguments'); + end - [fileName, pathName] = uigetfile(regexp(obj.extension, ',', 'split')', 'Pick a file ...'); if ischar(fileName) - - obj.path = pathName(1:end-1); % uigetfile retunrns pathName with filesep obj.list = {[pathName, fileName]}; obj.index = 1; - + userEventData = UserEventData([pathName, fileName]); + notify(obj, 'event_newFile', userEventData); end end