Index: unk/src/datatree_browser.m
===================================================================
--- /trunk/src/datatree_browser.m	(revision 567)
+++ 	(revision )
@@ -1,807 +1,0 @@
-%'datatree_browser': function for scanning directories in a campaign 
-%------------------------------------------------------------------------
-% function varargout = series(varargin)
-% associated with the GUI datatree_browser.fig
-
-%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
-%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-%     This file is part of the toolbox UVMAT.
-% 
-%     UVMAT is free software; you can redistribute it and/or modify
-%     it under the terms of the GNU General Public License as published by
-%     the Free Software Foundation; either version 2 of the License, or
-%     (at your option) any later version.
-% 
-%     UVMAT is distributed in the hope that it will be useful,
-%     but WITHOUT ANY WARRANTY; without even the implied warranty of
-%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-%     GNU General Public License (file UVMAT/COPYING.txt) for more details.
-%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-
-function varargout = datatree_browser(varargin)
-
-% Last Modified by GUIDE v2.5 29-Jul-2012 08:49:20
-
-% Begin initialization code - DO NOT EDIT
-gui_Singleton = 1;
-gui_State = struct('gui_Name',       mfilename, ...
-                   'gui_Singleton',  gui_Singleton, ...
-                   'gui_OpeningFcn', @datatree_browser_OpeningFcn, ...
-                   'gui_OutputFcn',  @datatree_browser_OutputFcn, ...
-                   'gui_LayoutFcn',  [] , ...
-                   'gui_Callback',   []);
-if nargin && ischar(varargin{1}) && ~isempty(regexp(varargin{1},'_Callback','once'))              
-    gui_State.gui_Callback = str2func(varargin{1});
-end
-
-if nargout
-    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
-else
-    gui_mainfcn(gui_State, varargin{:});
-end
-% End initialization code - DO NOT EDIT
-
-%------------------------------------------------------------------------
-% --- Executes just before datatree_browser is made visible.
-function datatree_browser_OpeningFcn(hObject, eventdata, handles, InputName)
-%------------------------------------------------------------------------
-% Choose default command line output for datatree_browser
-handles.output = 'Cancel';
-
-% Update handles structure
-guidata(hObject, handles);
-testCancel=1;
-testinputstring=0;
-icontype='quest';%default question icon (text input asked)
-
-% Determine the position of the dialog - centered on the screen
-FigPos=get(0,'DefaultFigurePosition');
-OldUnits = get(hObject, 'Units');
-set(hObject, 'Units', 'pixels');
-OldPos = get(hObject,'Position');
-FigWidth = OldPos(3);
-FigHeight = OldPos(4);
-ScreenUnits=get(0,'Units');
-set(0,'Units','pixels');
-ScreenSize=get(0,'ScreenSize');
-set(0,'Units',ScreenUnits);
-
-FigPos(1)=1/2*(ScreenSize(3)-FigWidth);
-FigPos(2)=2/3*(ScreenSize(4)-FigHeight);
-FigPos(3:4)=[FigWidth FigHeight];
-set(hObject, 'Position', FigPos);
-set(hObject, 'Units', OldUnits);
-
-if exist('InputName','var')
-    if isdir(InputName)% opening by uvmat/MenuSetProject
-        set(handles.SourceDir,'String',InputName)% the input directory is considered as a project
-        set(handles.LinkDir,'Visible','off')
-        set(handles.UpdateLink,'String','create_link')
-        set(handles.MarkupDir,'Visible','on')
-        
-    else% opening by uvmat/Open
-        InputDir=regexprep(InputName,'.xml$','');
-        if exist(InputDir,'dir')
-            s=xml2struct(InputName);
-            if isfield(s,'SourceDir')
-                set(handles.SourceDir,'String',s.SourceDir)
-                set(handles.LinkDir,'String',InputDir)
-                set(handles.LinkDir,'Visible','on')
-            else
-                set(handles.SourceDir,'String',InputDir)
-                set(handles.LinkDir,'Visible','off')
-                set(handles.MarkupDir,'String','CreateLink')
-            end
-        end      
-    end
-    FillExperiments(handles)
-    set(handles.OK,'Visible','on')
-    drawnow
-end
-
-
-%------------------------------------------------------------------------
-% --- Outputs from this function are returned to the command line.
-function varargout = datatree_browser_OutputFcn(hObject, eventdata, handles)
-%------------------------------------------------------------------------
-% Get default command line output from handles structure
-varargout{1} = handles.output;
-%delete(handles.datatree_browser)
-
-%------------------------------------------------------------------------
-% --- Executes on button press in MarkupDir: create a xml file to mark SourceDir as project source
-function MarkupDir_Callback(hObject, eventdata, handles)
-%------------------------------------------------------------------------
-SourceDir=get(handles.SourceDir,'String');
-t=xmltree;
-t=set(t,1,'name','Project');
-try
-save(t,[SourceDir '.xml'])
-catch ME
-    msgbox_uvmat('ERROR',ME.message)
-end
-
-%------------------------------------------------------------------------
-% --- Executes on button press in UpdateLink: create a link dir or update it if it exists
-function UpdateLink_Callback(hObject, eventdata, handles)
-%------------------------------------------------------------------------
-[SourcePath,ProjectName]=fileparts(get(handles.SourceDir,'String'));
-LinkDir=get(handles.LinkDir,'String');
-if isempty(LinkDir)||strcmp(get(handles.LinkDir,'Visible'),'off')
-    LinkRoot=uigetdir(LinkDir,'pick up the path to the link directory'); %file browser
-    if isempty(LinkRoot),return,end
-    LinkDir=fullfile(LinkRoot,[ProjectName '.link']);
-    set(handles.LinkDir,'Visible','on')
-    set(handles.LinkDir,'String',LinkDir)
-end
-
-if ~exist(LinkDir,'dir')
-    try
-        mkdir(LinkDir)
-    catch ME
-        msgbox_uvmat('ERROR',ME.message)
-    end
-end
-LinkDirXml=fullfile(fileparts(LinkDir),[ProjectName '.link.xml']);
-if ~exist(LinkDirXml,'file')
-    LinkDoc.SourceDir=get(handles.SourceDir,'String');
-    t=struct2xml(LinkDoc);
-    t=set(t,1,'name','Project');
-    save(t,LinkDirXml)
-    set(handles.UpdateLink,'String','update_link')
-end
-
-FillExperiments(handles)
-
-%------------------------------------------------------------------------
-% --- Fill the column 'Experiments' with the list of detected directries
-function FillExperiments(handles)
-%------------------------------------------------------------------------    
-SourceDir=get(handles.SourceDir,'String');
-LinkDir='';
-if strcmp(get(handles.LinkDir,'Visible'),'on')
-    LinkDir=get(handles.LinkDir,'String');
-end
-
-hdir=dir(SourceDir); %list files and dirs
-idir=0;
-ExpName=cell(length(hdir),1);
-for ilist=1:length(hdir)
-    if hdir(ilist).isdir
-        dirname=hdir(ilist).name;
-        if ~isequal(dirname(1),'.')&&~isequal(dirname(1),'0')% do not list directories beginning by '0'
-            idir=idir+1;
-            ExpName{idir}=hdir(ilist).name;
-            if ~isempty(LinkDir)
-                link=fullfile(LinkDir,ExpName{idir});
-                if ~exist(link,'dir')
-                    mkdir(link)% create the directory containing links
-                end
-            end
-        end
-    end
-end
-set(handles.ListExperiments,'String',[{'*'};ExpName(1:idir)])
-set(handles.ListExperiments,'Value',1)
-ListExperiments_Callback([],[], handles)
-
-
-%------------------------------------------------------------------------
-% --- Executes on selection change in ListExperiments.
- function ListExperiments_Callback(hObject,eventdata,handles)
-%------------------------------------------------------------------------
-SourcePath=get(handles.SourceDir,'String');
-MirrorPath='';
-if strcmp(get(handles.LinkDir,'Visible'),'on')
-    MirrorPath=get(handles.LinkDir,'String');
-end
-ListExperiments=get(handles.ListExperiments,'String');
-if isequal(get(handles.ListExperiments,'Value'),1)
-    ListExperiments=ListExperiments(2:end); %choose all experiments if the first line '*' has been selected
-else
-    ListExperiments=ListExperiments(get(handles.ListExperiments,'Value'));
-end
-ListDevices={};
-
-%% loop on the list of selected experiments
-for iexp=1:numel(ListExperiments)
-    
-    % update the directory of the sources and update the links in the case of a link dir
-    hdir=dir(fullfile(SourcePath,ListExperiments{iexp})); %list files and folders in the source
-    for ilist=1:length(hdir)
-        Device=hdir(ilist).name;
-        if ~isequal(Device(1),'.')
-            if ~isempty(MirrorPath)% we list the links to the data directories of files
-                link=fullfile(MirrorPath,ListExperiments{iexp},Device);
-                if ~exist(link)% create a link if it does not exist
-                    source=fullfile(SourcePath,ListExperiments{iexp},Device);
-                    system(['ln -s ' source ' ' link])%TODO translate for DOS
-                end
-                Device=['@' Device];
-            end
-            if hdir(ilist).isdir
-                Device=[Device '/'];
-            end
-            check_list=strcmp(Device,ListDevices);
-            if isempty(find(check_list))
-                ListDevices=[ListDevices;Device];
-            end
-        end
-    end
-    
-    % check for dir and files in the link dir which do not exist in the source dir
-    if ~isempty(MirrorPath)
-        hdir=dir(fullfile(MirrorPath,ListExperiments{iexp})); %list files and folders in the link dir
-        for ilist=1:length(hdir)
-            Device=hdir(ilist).name;
-            if ~isequal(Device(1),'.')
-                if hdir(ilist).isdir
-                    Device=[Device '/'];
-                end
-                check_list=strcmp(Device,ListDevices) | strcmp(['@' Device],ListDevices);
-                if isempty(find(check_list))
-                    ListDevices=[ListDevices;Device];
-                end
-            end
-        end
-    end
-end
-
-%% display the updated list, keeping track of the previously selected item
-PreviousList=get(handles.ListDevices,'String');
-NewValue=[];
-if ~isempty(PreviousList)&&iscell(PreviousList)
-    PreviousDevice=PreviousList{get(handles.ListDevices,'Value')};
-    NewValue=find(strcmp(PreviousDevice,ListDevices));
-end
-if isempty(NewValue)
-    NewValue=1;
-end
-set(handles.ListDevices,'Value',NewValue)
-set(handles.ListDevices,'String',ListDevices)
-
-
-%------------------------------------------------------------------------
-% --- Executes on selection in column ListDevices
-function ListDevices_Callback(hObject, eventdata, handles)
-%------------------------------------------------------------------------    
-list_val=get(handles.ListExperiments,'Value');
-if isequal(list_val,1) || numel(list_val)~=1
-    msgbox_uvmat('ERROR','select a single experiment in the column ''Experiments''')
-    return
-end
-ListExperiments=get(handles.ListExperiments,'String');
-Experiment=ListExperiments{list_val};
-RootPath='';
-if strcmp(get(handles.LinkDir,'Visible'),'on')
-    RootPath=get(handles.LinkDir,'String');
-end
-if isempty(RootPath)
-RootPath=get(handles.SourceDir,'String');
-end
-ListDevices=get(handles.ListDevices,'String');
-Device=ListDevices{get(handles.ListDevices,'Value')};
-Device=regexprep(Device,'^@','');
-
-%% open the selected file
-% case of a directory, open a file inside
-if strcmp(Device(end),'/')
-    DataDir=fullfile(RootPath,Experiment,Device(1:end-1));
-    DirList=dir(DataDir);
-    for ilist=1:numel(DirList)
-        if ~DirList(ilist).isdir
-            [tild,tild,FileExt]=fileparts(DirList(ilist).name);
-            FileExt=regexprep(FileExt,'^.','');
-            if ~isempty(FileExt) && (~isempty(imformats(FileExt))||strcmp(lower(FileExt),'avi')||strcmp(lower(FileExt),'nc'))
-                uvmat(fullfile(DataDir,DirList(ilist).name))
-                return
-            end
-        end
-    end
-    % open browser if no valid input file has been detected
-    [FileName, PathName] = uigetfile( ...
-            { '*.*', 'All Files (*.*)'}, ...
-            'Pick a mask file *.png',DataDir);
-    if ~isempty(FileName)
-        uvmat(fullfile(PathName,FileName));
-        return
-    end
-else %case of a file
-    uvmat(fullfile(RootPath,Experiment,Device))
-    return
-end
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-% %------------------------------------------------------------------------
-% % --- Executes on selection change in ListRecords.
-% function ListRecords_Callback(hObject, eventdata, handles)
-% Value=get(handles.ListRecords,'Value');
-% if isequal(Value(1),1)
-%     set(handles.ListRecords,'Value',1);
-% end
-
-% %------------------------------------------------------------------------
-% % --- Executes on button press in CampaignDoc.
-% function CampaignDoc_Callback(hObject, eventdata, handles)
-% %------------------------------------------------------------------------   
-% answer=msgbox_uvmat('INPUT_Y-N','This function will update the global xml rpresentation of the data set and the Heading of each xml file')
-% if ~isequal(answer{1},'OK')
-%     return
-% end
-% set(handles.ListExperiments,'Value',1)
-% ListExperiments_Callback(handles)%update the overview of the experiment directories
-% DataviewData=get(handles.datatree_browser,'UserData');
-% List=DataviewData.List;
-% Currentpath=get(handles.SourceDir,'String');
-% [Currentpath,Campaign,DirExt]=fileparts(Currentpath);
-% Campaign=[Campaign DirExt];
-% t=xmltree;
-% t=set(t,1,'name','CampaignDoc');
-% t = attributes(t,'add',1,'source','directory');
-% SubCampaignTest=get(handles.SubCampaignTest,'Value');
-% root_uid=1;
-% if SubCampaignTest
-%     %TO DO open an exoiting xml doc
-%     [t,root_uid]=add(t,1,'element','SubCampaign');
-%     t =attributes(t,'add',root_uid,'DirName',Campaign);
-% end
-% for iexp=1:length(List.Experiment)
-%     set(handles.ListExperiments,'Value',iexp+1)
-%     drawnow
-%     test_mod=0;
-%     [t,uid_exp]=add(t,root_uid,'element','Experiment');
-%     t = attributes(t,'add',uid_exp,'i',num2str(iexp));
-%     ExpName=List.Experiment{iexp}.name;
-%     t = attributes(t,'add',uid_exp,'DirName',List.Experiment{iexp}.name);
-%    
-%     if isfield(List.Experiment{iexp},'Device')
-%         for idevice=1:length(List.Experiment{iexp}.Device)
-%             [t,uid_device]=add(t,uid_exp,'element','Device');
-%             DeviceName=List.Experiment{iexp}.Device{idevice}.name;
-%             t = attributes(t,'add',uid_device,'DirName',List.Experiment{iexp}.Device{idevice}.name);       
-%             if isfield(List.Experiment{iexp}.Device{idevice},'xmlfile')
-%                 for ixml=1:length(List.Experiment{iexp}.Device{idevice}.xmlfile)
-%                     FileName=List.Experiment{iexp}.Device{idevice}.xmlfile{ixml};
-%                     [Title,test]=check_heading(Currentpath,Campaign,ExpName,DeviceName,[],FileName,SubCampaignTest);
-%                     if test
-%                         [List.Experiment{iexp}.Device{idevice}.xmlfile{ixml} ' , Heading updated']
-%                     end
-%                     if isequal(Title,'ImaDoc')
-%                         [t,uid_xml]=add(t,uid_device,'element','ImaDoc');
-%                         t = attributes(t,'add',uid_xml,'source','file');
-%                         [t]=add(t,uid_xml,'chardata',List.Experiment{iexp}.Device{idevice}.xmlfile{ixml});                    
-%                     end
-%                 end
-%              elseif isfield(List.Experiment{iexp}.Device{idevice},'Record')
-%                 for irecord=1:length(List.Experiment{iexp}.Device{idevice}.Record)
-%                     RecordName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.name;
-%                     [t,uid_record]=add(t,uid_device,'element','Record');
-%                     t = attributes(t,'add',uid_record,'DirName',RecordName);
-%                     if isfield(List.Experiment{iexp}.Device{idevice}.Record{irecord},'xmlfile')
-%                         for ixml=1:length(List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile)
-%                             FileName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile{ixml};
-%                             [Title,test]=check_heading(Currentpath,Campaign,ExpName,DeviceName,RecordName,FileName,SubCampaignTest);
-%                             if test
-%                                 [FileName ' , Heading updated']
-%                             end
-%                             [t,uid_xml]=add(t,uid_record,'element','ImaDoc');
-%                             t = attributes(t,'add',uid_xml,'source','file');
-%                             [t]=add(t,uid_xml,'chardata',FileName);
-%                         end
-%                     end
-%                 end
-%             end
-%         end
-%     end
-% end
-% set(handles.ListExperiments,'Value',1)
-% outputdir=get(handles.SourceDir,'String');
-% [path,dirname]=fileparts(outputdir);
-% outputfile=fullfile(outputdir,[dirname '.xml']);
-% %campaigndoc(t);
-% save(t,outputfile)
-% 
-% %------------------------------------------------------------------------
-% % --- Executes on button press in CampaignDoc.
-% function edit_xml_Callback(hObject, eventdata, handles)
-% %------------------------------------------------------------------------
-% CurrentPath=get(handles.SourceDir,'String');
-% %[CurrentPath,Name,Ext]=fileparts(CurrentDir);
-% ListExperiments=get(handles.ListExperiments,'String');
-% Value=get(handles.ListExperiments,'Value');
-% if ~isequal(Value,1)
-%     ListExperiments=ListExperiments(Value);
-% end
-% ListDevices=get(handles.ListDevices,'String');
-% Value=get(handles.ListDevices,'Value');
-% if ~isequal(Value,1)
-%     ListDevices=ListDevices(Value);
-% end
-% ListRecords=get(handles.ListRecords,'String');
-% Value=get(handles.ListRecords,'Value');
-% if ~isequal(Value,1)
-%     ListRecords=ListRecords(Value);
-% end
-% [ListDevices,ListRecords,ListXml,List]=ListDir(CurrentPath,ListExperiments,ListDevices,ListRecords);
-% ListXml=get(handles.ListXml,'String');
-% Value=get(handles.ListXml,'Value');
-% set(handles.ListXml,'Value',Value(1));
-% if isequal(Value(1),1)
-%     msgbox_uvmat('ERROR','an xml file needs to be selected')
-%    return
-% else
-%     XmlName=ListXml{Value(1)};
-% end
-% for iexp=1:length(List.Experiment)
-%     ExpName=List.Experiment{iexp}.name;
-%     if isfield(List.Experiment{iexp},'Device')
-%         for idevice=1:length(List.Experiment{iexp}.Device)
-%             DeviceName=List.Experiment{iexp}.Device{idevice}.name;
-%             if isfield(List.Experiment{iexp}.Device{idevice},'xmlfile')
-%                 for ixml=1:length(List.Experiment{iexp}.Device{idevice}.xmlfile)
-%                     FileName=List.Experiment{iexp}.Device{idevice}.xmlfile{ixml}
-%                     if isequal(FileName,XmlName)
-%                         editxml(fullfile(CurrentPath,ExpName,DeviceName,FileName));
-%                         return
-%                     end
-%                 end
-%              elseif isfield(List.Experiment{iexp}.Device{idevice},'Record')
-%                 for irecord=1:length(List.Experiment{iexp}.Device{idevice}.Record)
-%                     RecordName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.name;
-%                     if isfield(List.Experiment{iexp}.Device{idevice}.Record{irecord},'xmlfile')
-%                         for ixml=1:length(List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile)
-%                             FileName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile{ixml};
-%                             if isequal(FileName,XmlName)
-%                                 editxml(fullfile(CurrentPath,ExpName,DeviceName,RecordName,FileName));
-%                                 return
-%                             end                          
-%                         end
-%                     end
-%                 end
-%             end
-%         end
-%     end
-% end
-
-
-% 
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% % CurrentPath/Campaign: root directory 
-% function  [Title,test_mod]=check_heading(Currentpath,Campaign,Experiment,Device,Record,xmlname,testSubCampaign)
-% 
-%  %Shema for Heading:
-% %  Campaign             
-% %  (SubCampaign)
-% % Experiment
-% %  Device
-% %  (Record)
-% %  ImageName
-% %  DateExp
-% %                 old: %Project: suppressed ( changed to Campaign)
-%                        %Exp: suppressed (changed to experiment)
-%                        %ImaNames: changed to ImageName
-% if exist('Record','var') && ~isempty(Record)
-%     xmlfullname=fullfile(Currentpath,Campaign,Experiment,Device,Record,xmlname);  
-%     testrecord=1;
-% else
-%     xmlfullname=fullfile(Currentpath,Campaign,Experiment,Device,xmlname); 
-%     testrecord=0;
-% end
-% if ~exist('testSubCampaign','var')
-%     testSubCampaign=0;
-% end
-% if testSubCampaign
-%    SubCampaign=Campaign;
-%    [Currentpath,Campaign,DirExt]=fileparts(Currentpath);
-%    Campaign=[Campaign DirExt];
-% end
-% test_mod=0; %test for the modification of the xml file
-% t_device=xmltree(xmlfullname);
-% Title=get(t_device,1,'name');
-% uid_child=children(t_device,1);
-% Heading_old=[];
-% uidheading=0;
-% for ilist=1:length(uid_child)
-%     name=get(t_device,uid_child(ilist),'name');
-%     if isequal(name,'Heading')
-%         uidheading=uid_child(ilist);
-%     end
-% end
-% if uidheading
-%     subt=branch(t_device,uidheading);
-%     Heading_old=convert(subt);
-% else
-%    return % do not edit xml files without element 'Heading'
-% end
-% if ~(isfield(Heading_old,'Campaign')&& isequal(Heading_old.Campaign,Campaign))
-%     test_mod=1;
-% end
-% Heading.Campaign=Campaign;
-% if testSubCampaign
-%     if ~(isfield(Heading_old,'SubCampaign')&& isequal(Heading_old.SubCampaign,SubCampaign))
-%         test_mod=1;
-%     end
-%     Heading.SubCampaign=SubCampaign;
-% end
-% if ~(isfield(Heading_old,'Experiment')&& isequal(Heading_old.Experiment,Experiment))
-%     test_mod=1;
-% end
-% Heading.Experiment=Experiment;
-% if ~(isfield(Heading_old,'Device')&& isequal(Heading_old.Device,Device))
-%     test_mod=1;
-% end
-% Heading.Device=Device;
-% if testrecord
-%     if ~(isfield(Heading_old,'Record')&& isequal(Heading_old.Record,Record))
-%         test_mod=1;
-%     end
-%     Heading.Record=Record;
-% end
-% if isfield(Heading_old,'ImaNames')
-%     test_mod=1;
-%     if  ~isempty(Heading_old.ImaNames)
-%         Heading.ImageName=Heading_old.ImaNames;
-%     end
-% end
-% if isfield(Heading_old,'ImageName')&& ~isempty(Heading_old.ImageName)
-%     Heading.ImageName=Heading_old.ImageName;
-% end
-% if isfield(Heading_old,'DateExp')&& ~isempty(Heading_old.DateExp)
-%     Heading.DateExp=Heading_old.DateExp;
-% end
-% if test_mod && uidheading
-%      uid_child=children(t_device,uidheading);
-%      t_device=delete(t_device,uid_child);
-%     t_device=struct2xml(Heading,t_device,uidheading);
-%     backupfile=xmlfullname;
-%     testexist=2;
-%     while testexist==2
-%        backupfile=[backupfile '~'];
-%        testexist=exist(backupfile,'file');
-%     end
-%     [success,message]=copyfile(xmlfullname,backupfile);%make backup
-%     if isequal(success,1)
-%         delete(xmlfullname)
-%     else
-%         return
-%     end
-%     save(t_device,xmlfullname)
-% end
-
-%------------------------------------------------------------------------
-% --- Executes on button press in HELP.
-function HELP_Callback(hObject, eventdata, handles)
-path_to_uvmat=which ('uvmat')% check the path of uvmat
-pathelp=fileparts(path_to_uvmat);
-helpfile=fullfile(pathelp,'UVMAT_DOC','uvmat_doc.html');
-if isempty(dir(helpfile)), msgbox_uvmat('ERROR','Please put the help file uvmat_doc.html in the directory UVMAT/UVMAT_DOC')
-else
-web([helpfile '#dataview'])    
-end
-
-% 
-% 
-% % --- Executes on selection change in ListXml.
-% function ListXml_Callback(hObject, eventdata, handles)
-% Value=get(handles.ListXml,'Value');
-% if isequal(Value(1),1)
-%     set(handles.ListXml,'Value',1);
-% end
-
-
-% --- Executes on button press in clean_civ_cmx.
-function clean_civ_cmx_Callback(hObject, eventdata, handles)
-message='this function will delete all files with extensions .log, .bat, .cmx,.cmx2,.errors in the input directory(ies)';
-answer=msgbox_uvmat('INPUT_Y-N',message);
-if ~isequal(answer,'Yes')
-    return
-end
-set(handles.ListExperiments,'Value',1)
-ListDataDir(hObject, eventdata, handles)%update the overview of the experiment directories
-DataviewData=get(handles.datatree_browser,'UserData')
-List=DataviewData.List;
-Currentpath=get(handles.SourceDir,'String');
-[Currentpath,Campaign,DirExt]=fileparts(Currentpath);
-Campaign=[Campaign DirExt];
-SubCampaignTest=get(handles.SubCampaignTest,'Value');
-nbdelete_tot=0;
-for iexp=1:length(List.Experiment)
-    set(handles.ListExperiments,'Value',iexp+1)
-    drawnow
-    test_mod=0;
-    ExpName=List.Experiment{iexp}.name;  
-    nbdelete=0;
-    if isfield(List.Experiment{iexp},'Device')
-        for idevice=1:length(List.Experiment{iexp}.Device)
-            DeviceName=List.Experiment{iexp}.Device{idevice}.name;     
-            if isfield(List.Experiment{iexp}.Device{idevice},'xmlfile')
-                currentdir=fullfile(Currentpath,Campaign,ExpName,DeviceName);
-                hdir=dir(currentdir); %list files and dirs
-                idir=0;
-                for ilist=1:length(hdir)
-                    if hdir(ilist).isdir
-                        dirname=hdir(ilist).name;
-                        if ~isequal(dirname(1),'.')&&~isequal(dirname(1),'0')
-                            CivDir=fullfile(currentdir,dirname)
-                            hCivDir=dir(CivDir);
-                            for ilist=1:length(hCivDir)
-                                FileName=hCivDir(ilist).name;
-                                [dd,ff,Ext]=fileparts(FileName);
-                                if isequal(Ext,'.log')||isequal(Ext,'.bat')||isequal(Ext,'.cmx')||isequal(Ext,'.cmx2')|| isequal(Ext,'.errors')
-                                    delete(fullfile(CivDir,FileName))
-                                    nbdelete=nbdelete+1;
-                                end
-                            end
-                        end
-                    end
-                end
-             elseif isfield(List.Experiment{iexp}.Device{idevice},'Record')
-                for irecord=1:length(List.Experiment{iexp}.Device{idevice}.Record)
-                    RecordName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.name;
-                    if isfield(List.Experiment{iexp}.Device{idevice}.Record{irecord},'xmlfile')
-                        'look at subdirectories'
-                    end
-                end
-            end
-        end
-    end
-    display([num2str(nbdelete) ' files deleted'])
-    nbdelete_tot=nbdelete_tot+nbdelete;
-end
-msgbox_uvmat('CONFIRMATION',['END: ' num2str(nbdelete_tot) ' files deleted by clean_civ_cmx'])
-set(handles.ListExperiments,'Value',1)
-
-% 
-% % --- Executes on button press in OK.
-% function OK_Callback(hObject, eventdata, handles)
-% %------------------------------------------------------------------------
-% CurrentPath=get(handles.SourceDir,'String');
-% ListExperiments=get(handles.ListExperiments,'String');
-% IndicesExp=get(handles.ListExperiments,'Value');
-% if ~isequal(IndicesExp,1)
-%     ListExperiments=ListExperiments(IndicesExp);
-% end
-% ListDevices=get(handles.ListDevices,'String');
-% Value=get(handles.ListDevices,'Value');
-% if isequal(Value,1)
-%     msgbox_uvmat('ERROR','manually select in the GUI dataview the device being calibrated')
-%     return
-% else 
-%     ListDevices=ListDevices(Value);
-% end
-% ListRecords=get(handles.ListRecords,'String');
-% Value=get(handles.ListRecords,'Value');
-% if ~isequal(Value,1)
-%     ListRecords=ListRecords(Value);
-% end
-% [ListDevices,ListRecords,ListXml,List]=ListDir(CurrentPath,ListExperiments,ListDevices,ListRecords);
-% ListXml=get(handles.ListXml,'String');
-% Value=get(handles.ListXml,'Value');
-% if isequal(Value,1)
-%     msgbox_uvmat('ERROR','you need to select in the GUI dataview the xml files to edit')
-%     return
-% else
-%     ListXml=ListXml(Value);
-% end
-% 
-% %update all the selected xml files
-% DataviewData=get(handles.datatree_browser,'UserData');
-% % answer=msgbox_uvmat('INPUT_Y-N',[num2str(length(Value)) ' xml files for device ' ListDevices{1} ' will be refreshed with ' ...
-% %     DataviewData.GeometryCalib.CalibrationType ' calibration data'])
-% % if ~isequal(answer,'Yes')
-% %     return
-% % end
-% %List.Experiment{1}.Device{1}
-% %List.Experiment{2}.Device{1}
-% for iexp=1:length(List.Experiment)
-%     ExpName=List.Experiment{iexp}.name;
-%     set(handles.ListExperiments,'Value',IndicesExp(iexp));
-%     if isfield(List.Experiment{iexp},'Device')
-%         for idevice=1:length(List.Experiment{iexp}.Device)
-%             DeviceName=List.Experiment{iexp}.Device{idevice}.name;      
-%             if isfield(List.Experiment{iexp}.Device{idevice},'xmlfile')
-%                 for ixml=1:length(List.Experiment{iexp}.Device{idevice}.xmlfile)
-%                     FileName=List.Experiment{iexp}.Device{idevice}.xmlfile{ixml};
-%                     for ilistxml=1:length(ListXml)
-%                         if isequal(FileName,ListXml{ilistxml})
-%                             set(handles.ListXml,'Value',Value(ilistxml))
-%                             drawnow
-%                             xmlfullname=fullfile(CurrentPath,ExpName,DeviceName,FileName);
-%                             update_imadoc(DataviewData.GeometryCalib,xmlfullname)
-%                             display([xmlfullname ' updated'])
-%                             break
-%                         end
-%                     end
-%                 end
-%              elseif isfield(List.Experiment{iexp}.Device{idevice},'Record')
-%                 for irecord=1:length(List.Experiment{iexp}.Device{idevice}.Record)
-%                     RecordName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.name;
-%                     if isfield(List.Experiment{iexp}.Device{idevice}.Record{irecord},'xmlfile')
-%                         for ixml=1:length(List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile)
-%                             FileName=List.Experiment{iexp}.Device{idevice}.Record{irecord}.xmlfile{ixml};
-%                             for ilistxml=1:length(ListXml)
-%                                 if isequal(FileName,ListXml{ilistxml})
-%                                     set(handles.ListXml,'Value',Value(ilistxml))
-%                                     drawnow
-%                                     xmlfullname=fullfile(CurrentPath,ExpName,DeviceName,RecordName,FileName);
-%                                     update_imadoc(DataviewData.GeometryCalib,xmlfullname)
-%                                     display([xmlfullname ' updated'])
-%                                     break
-%                                 end
-%                             end
-%                         end
-%                     end
-%                 end
-%             end
-%         end
-%     end
-% end
-% set(handles.ListXml,'Value',Value)   
-%     
-%     
-%     
-%     
-%     
-%     
-%     
-% CurrentPath=get(handles.SourceDir,'String');%= get(hObject,'String');
-% ListExperiments=get(handles.ListExperiments,'String');
-% Value=get(handles.ListExperiments,'Value');
-% if ~isequal(Value,1)
-%     ListExperiments=ListExperiments(Value);
-% end
-% ListDevices=get(handles.ListDevices,'String');
-% Value=get(handles.ListDevices,'Value');
-% if isequal(Value,1)
-%     msgbox_uvmat('ERROR','manually select in the GUI datatree_browser the device being calibrated')
-%     return
-% else 
-%     ListDevices=ListDevices(Value);
-% end
-% ListRecords=get(handles.ListRecords,'String');
-% Value=get(handles.ListRecords,'Value');
-% if ~isequal(Value,1)
-%     ListRecords=ListRecords(Value);
-% end
-% [ListDevices,ListRecords,ListXml,List]=ListDir(CurrentPath,ListExperiments,ListDevices,ListRecords);
-% ListXml=get(handles.ListXml,'String');
-% Value=get(handles.ListXml,'Value');
-% if isequal(Value,1)
-%     msgbox_uvmat('ERROR','you need to select in the GUI datatree_browser the xml files to edit')
-%     return
-% else
-%     ListXml=ListXml(Value);
-% end
-% handles.output.CurrentPath=CurrentPath;
-% handles.output.ListExperiments=ListExperiments;
-% handles.output.ListDevices=ListDevices;
-% handles.output.ListRecords=ListRecords;
-% handles.output.ListXml=ListXml;
-% handles.output.List=List;
-handles.output ='OK, Calibration replicated';
-guidata(hObject, handles);% Update handles structure
-uiresume(handles.datatree_browser);
-% 
-% % --- Executes on button press in Cancel.
-% function Cancel_Callback(hObject, eventdata, handles)
-% handles.output = get(hObject,'String');
-% guidata(hObject, handles); % Update handles structure
-% % Use UIRESUME instead of delete because the OutputFcn needs
-% uiresume(handles.datatree_browser);
-
-% --- Executes when user attempts to close datatree_browser.
-function datatree_browser_CloseRequestFcn(hObject, eventdata, handles)
-% if isequal(get(handles.datatree_browser, 'waitstatus'), 'waiting')
-%     % The GUI is still in UIWAIT, us UIRESUME
-%     uiresume(handles.datatree_browser);
-% else
-%     % The GUI is no longer waiting, just close it
-%     delete(handles.datatree_browser);
-% end
-delete(hObject)
