function varargout = SubGUItabAus(varargin)
% SUBGUITABAUS M-file for SubGUItabAus.fig
%      SUBGUITABAUS, by itself, creates a new SUBGUITABAUS or raises the existing
%      singleton*.
%
%      H = SUBGUITABAUS returns the handle to a new SUBGUITABAUS or the handle to
%      the existing singleton*.
%
%      SUBGUITABAUS('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in SUBGUITABAUS.M with the given input arguments.
%
%      SUBGUITABAUS('Property','Value',...) creates a new SUBGUITABAUS or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before SubGUItabAus_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to SubGUItabAus_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help SubGUItabAus

% Last Modified by GUIDE v2.5 10-Jul-2009 15:43:42

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @SubGUItabAus_OpeningFcn, ...
                   'gui_OutputFcn',  @SubGUItabAus_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    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 SubGUItabAus is made visible.
function SubGUItabAus_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to SubGUItabAus (see VARARGIN)

% Choose default command line output for SubGUItabAus
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes SubGUItabAus wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% Initialisierungen:
handles.parametername=[];
handles.kurzname=[];
handles.klassifizierung=[];
handles.darstrate=[];
handles.text=[];
handles.einheit=[];
handles.zeitwerte=[];
handles.messwerte=[];

% --- Outputs from this function are returned to the command line.
function varargout = SubGUItabAus_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes during object creation, after setting all properties.
function tabelle_CreateFcn(hObject, eventdata, handles)
% hObject    handle to tabelle (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
set(hObject,'Data',[]); % alte Daten in der Tabelle löschen
% Tabelle mit Daten laden:
set(findobj('Tag','tabelle'),'ColumnFormat',{'long g','long g'},'Data',[handles.zeitwerte' handles.messwerte']);

% --------------------------------------------------------------------
function drucken_tool_ClickedCallback(hObject, eventdata, handles)
% hObject    handle to drucken_tool (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
printdlg

% --------------------------------------------------------------------
function speichern_tool_ClickedCallback(hObject, eventdata, handles)
% hObject    handle to speichern_tool (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
aktuelles_verzeichnis=pwd; %ursprünglicher Verzeichnispfad sichern
verzeichnis = uigetdir('','Zielverzeichnis wählen'); % Dialogfenster zur Wahl
                                                     % des Zielverzeichnisses
                                                     % anzeigen
if verzeichnis==0     % falls der Benutzer kein Verzeichnis auswählt und
                      % im Dialogfenster auf "abbrechen" klickt, dann wird
                      % das aktuelle Verzeichnis ausgewählt
    return;
else
    %in das vom Benutzer gewünschte Zielverzeichnis wechseln:
    cd(verzeichnis);
    % Name für die Export-Datei durch den Benutzer eingeben:
    name = inputdlg('Benennen Sie die Export-Datei:','Dateiname',1, ...
                                    {sprintf('Export_%s',handles.parametername)});
    if isempty(name) % falls der Benutzer auf "abbrechen" geklickt hat
        return;
    end
                                 
                                
    T=fopen(char(name),'w'); % die Datei wird so benannt, wie es in
                             % der Variablen "name" steht
    
    % Header anlegen:
    fprintf(T,'Parametername:\t%s  (%s)\t%s\ngewählte Darstellungsrate:\t%d [1/s]\n%s\n\nZeit [s]\tParameterwert [%s]\n', ...
               handles.parametername,handles.kurzname,handles.text,handles.darstrate,handles.klassifizierung,handles.einheit);
    
    % es folgen die Daten:
    for i=1:1:length(handles.zeitwerte)
        fprintf(T,'%.4f\t',handles.zeitwerte(i)); % Genauigkeit: 4 Nachkommastellen
        fprintf(T,'%.9f\n',handles.messwerte(i)); % Genauigkeit: 9 Nachkommastellen
    end
    fclose(T);
    cd(aktuelles_verzeichnis); % nach dem Export der Daten wieder zurück in
                               % das ursprüngliche Verzeichnis wechseln
end

% --------------------------------------------------------------------
function schliessen_ClickedCallback(hObject, eventdata, handles)
% hObject    handle to schliessen (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
close SubGUItabAus


% --- Executes during object creation, after setting all properties.
function infofeld_CreateFcn(hObject, eventdata, handles)
% hObject    handle to infofeld (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
p=handles.parametername;
k=handles.kurzname;
t=handles.text;
kl=handles.klassifizierung;
d=handles.darstrate;
% Infofeld für den Benutzer anzeigen:
set(findobj('Tag','infofeld'),'String',sprintf('Parameter %s  (%s)\n%s\n%s\nDarstellungsrate: %d [1/s]',...
    p,k,t,kl,d));


% --- Executes during object creation, after setting all properties.
function figure1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
% ---------------------------------
% Die Datei info.mat einlesen (enthält die Zeitwerte, Parameterwerte,
% sonstige Infos bezgl. des gewählten Parameters):
files = dir; % enthält alle files im aktuellen Verzeichnis (struct-array)
for a=1:1:length(files) % jedes einzelne struct-Element muss verglichen werden
   if strcmp(files(a,1).name,'info.mat')    % mit "a" wird das jeweilige struct-Element
                                            % gewählt und mit ".name" dann auf den
                                            % Dateinamen zugegriffen
       load info.mat % wird nur geladen, falls Datei auch 
                     % im Verzeichnis enthalten
       delete info.mat % data.mat direkt wieder aus dem Verzeichnis löschen
                       % nachdem die Variable "status"
                       % eingelesen ist
   end
end

% Eingelesene Daten in handles-Struktur speichern:
handles.parametername=gekuerzter_Param_name;
guidata(hObject, handles);
handles.kurzname=shortname;
guidata(hObject, handles);
handles.klassifizierung=klasse;
guidata(hObject, handles);
handles.darstrate=darst_rate;
guidata(hObject, handles);
handles.text=txt;
guidata(hObject, handles);
handles.einheit=einheit;
guidata(hObject, handles);
handles.zeitwerte=temp_bereich;
guidata(hObject, handles);
handles.messwerte=param_bereich;
guidata(hObject, handles);

set(hObject,'Name','Tabellarische Ausgabe'); % Titel der GUI
