Newer
Older
%% Einlesen der gewnschten Spalten
% Zeilenvektor -> wie Spaltenvektor behandeln
if Zeilen == 1
[Spalten Zeilen] = size(VarValue); % Vertauschen
end
% Wenn vorhanden, dann soll die alte Auswahl angezeigt werden
oldcolumns = klick_list(2:end,end);
oldcolumns = oldcolumns(oldcolumns(:) ~= 0); % Nur gewhltes zeigen
oldcolumns = cellstr(num2str(oldcolumns')); % Umwandeln zu Textausgabe
if isempty(oldcolumns)
oldcolumns = cellstr(' ');
end
% Eingabe der Spalten
set(0,'DefaultUIControlBackgroundColor',props.msgbox.BackgroundColor);
answer = inputdlg('Use '','' or '':'' or '' '' for selecting the columns.','Multi-column vector',1,oldcolumns);
set(0,props.root);
% Wenn etwas eingegeben wurde
if ~isempty(answer)
if strcmp(answer,':') | strcmp(answer,' '), answer='0'; end
answer3 = str2double(char(answer)); % Umwandel in Zahlen
answer3(answer3 > Spalten) = []; % Gewhltes <= Max. Spalten
% Fehler sammeln -> Verarbeitung abbrechen
if isempty(answer3)
h=errordlg('Wrong input. Please use Matlab notation.','Multi-column vector');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
return;
end
if size(answer3,1) ~= 1
h=errordlg('The dimension of the input was multi-dimensional.','Multi-column vector');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
klick_list(2:Zeilen,end) = 0; % Clean
klick_list(2:(size(answer3,1)+1),end) = answer3;
end
%% Anzeigen der Parameter
for i = 1:size(klick_list,2)
klick_string = strcat(klick_string,var_list(klick_list(1,i)).name);
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
if size(selected,1) > 1
klick_string = strcat(klick_string, '(');
for j = 2:size(selected,1)
klick_string = strcat(klick_string,num2str(selected(j)));
klick_string = strcat(klick_string, ',');
end
klick_string(end) = [];
klick_string = strcat(klick_string, ')');
end
klick_string = strcat(klick_string, ',');
end
klick_string(end) = [];
% Speichern der Ausgabe
set(hparm,'String',klick_string);
set(hparm,'ToolTip',klick_string);
% Speichern der Mhe
set(hbcp,'UserData',klick_list);
funktion(select).klicklist{nparm}=klick_list;
funktion(select).klickstring{nparm}=klick_string;
set(hfs,'UserData',funktion)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case ('load')
%%% Ldt, so weit es geht, den Inhalt einer frei whlbaren Datei
%%% unter einem frei whlbaren Namen im "base"
%% Einlesen der gewnschten Datei
% ffnen der Datei
setptr(gcf,'watch')
if isunix
[Filename, Pathname]=uigetfile('*');
else
[Filename, Pathname]=uigetfile('*.*');
end
if Pathname == 0 & Filename == 0, setptr(gcf,'arrow'), return; end; % Wenn 'Cancel'
fid = fopen([Pathname Filename],'r');
if (fid ~= -1) % fopen liefert im Fehlerfall "-1"
Matrix = []; % Variableninhalt
%i = 0;
Line = fgetl(fid);
while (Line ~=-1) %EOF
if ~isempty(Line) & Line(1)~='%' %einlesen erster Parameter
%i = i + 1;
LineX = [];
while ~isempty(Line)
[VarX,Line] = strtok(Line);
if isempty(VarX) %unbekanntest wird als NaN gefiltert
VarX = NaN;
end;
LineX = [LineX, VarX];
end
% Im Bedarfsfall die Matrix vergrssern
if (size(LineX,2) > size(Matrix,2)) & (size(Matrix,1) ~=0)
end
% Im Bedarfsfall die Eingelesene Zeile vergrssern
if size(LineX,2) < size(Matrix,2)
end
% Zeile Anhngen
Matrix = [Matrix; LineX];
end
Line = fgetl(fid); % Zeilenweises lesen
end
%% freien Variablennamen finden
VarName_free = 0; % 0 = false // 1 = true
while VarName_free == 0
VarName_free = 1;
% Variablennamen bestimmen
set(0,'DefaultUIControlBackgroundColor',props.msgbox.BackgroundColor);
VarName = inputdlg(['File ',Filename,' successfully read! Rows: ' num2str(size(Matrix,1)) ' Columns: ' num2str(size(Matrix,2)),char(10),'Choose a variable name:'],'New data');
set(0,props.root);
% einlesen aller vorhandenen VariablenNamen und ihre Feldgrsse
lokal_ws = evalin('base','whos');
if length(lokal_ws) > 0
for i=1:length(lokal_ws) % Alle Variablen Durchtesten
if strcmp(lokal_ws(i).name,char(VarName))
VarName_free = 0; % Variablenname existiert schon
h = errordlg('Variable name already exists.','New data');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
waitfor(h); % wichtig! -> sonst kommt es zum Konflikt mit dem inputdialog
end
end
end
end % while VarName_free
if isempty(VarName), return; end; % Erster Sprung erfolgt nur aus der Whileschleife
%% Speichern der Eingelesenen Werte
assignin('base',char(VarName),Matrix);
lokal_ws_all = evalin('base','whos');
if length(lokal_ws_all) > 0
j = 1;
for i=1:length(lokal_ws_all)
if strcmp(lokal_ws_all(i).class,'double') | strcmp(lokal_ws_all(i).class,'single') | strcmp(lokal_ws_all(i).class,'int8') | strcmp(lokal_ws_all(i).class,'uint8') | strcmp(lokal_ws_all(i).class,'int16') | strcmp(lokal_ws_all(i).class,'uint16') | strcmp(lokal_ws_all(i).class,'int32') | strcmp(lokal_ws_all(i).class,'uint32')
Ausgabe(j,1) = cellstr([lokal_ws_all(i).name, ' [', num2str(lokal_ws_all(i).size(1)),'x',num2str(lokal_ws_all(i).size(2)), ']' ]);
lokal_ws(j) = lokal_ws_all(i);
j = j+1;
end
end
% Der Workspace ist leer
else
h=errordlg('No numeric variables in the workspace.','Scan workspace');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
Ausgabe(1,1) = cellstr('Empty');
lokal_ws(1).name = [];
end
for i=1:4;
hlbox=findobj('Tag',['listbox_parm',num2str(i)]);
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
set(hlbox,'UserData',lokal_ws);
end
% Datei konnte nicht geffnet werden.
else
h=errordlg('File not found.','IO process');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
end
fclose(fid); % schliesen der Datei
set(findobj('Tag','apply'),'Enable','On');
setptr(gcf,'arrow')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case ('save')
%%% Speichert die gewhlten Variablen und Spalten in einer frei whlbaren Datei
%%% Der zu speichernde Inhalt liegt "nur" im ersten Parameter
%% Bestimmen des Speicherortes
setptr(gcf,'watch')
[Filename, Pathname]=uiputfile('*.*');
if Pathname == 0 & Filename == 0, setptr(gcf,'arrow'), return; end; % Wenn 'Cancel'
%% Init
temp=funktion(select).klicklist;
if ~isempty(temp),
klick_list=temp{1};
else
klick_list=[];
end
if isempty(klick_list), klick_list=get(findobj('Tag','button_close_parm1'),'UserData'); end
var_list = get(findobj('Tag','listbox_parm1'),'UserData');
if isempty(var_list(1).name), return; end; % Wenn keine Variable vorhanden
%% Zu speichernde Variable zusammenstellen
for i = 1:size(klick_list,2);
% Einlesen des Variablennamens und zuweisen seines Inhaltes
VarName = var_list(klick_list(1,i)).name;
try
VarValue = evalin('base',VarName);
catch
h=warndlg(['Variable ' VarName ' could not be found and will be ignored henceforth.'],'Scan workspace');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
continue;
end
% Zeilenvektor in Spaltenvektor transformieren
if (size(VarValue,1)) == 1
VarValue = VarValue';
end
% Feststellen der gewnschten Reihen
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
SelectRows(1,:) = []; % Lsche Kopf (Enthlt Verweis auf den Variablennamen)
% Wenn Spalten gewhlt wurden, dann den Varibleninhalt darauf begrenzen
if ~isempty(SelectRows)
VarValue = VarValue(:,SelectRows);
end
% Unterschiedliche Lnge -> Auffllen mit "NaN"
if (size(Matrix,1) ~= size(VarValue,1)) & (size(Matrix,1) ~= 0)
% Matrix zu lang
if (size(Matrix,1) > size(VarValue,1))
VarValue((size(VarValue,1)+1):size(Matrix,1),:) = NaN;
% Spaltenvektor zu lang
else
Matrix((size(Matrix,1)+1):size(VarValue,1),:) = NaN;
end
end
Matrix = [Matrix VarValue];
end
%% Speichern
save([Pathname Filename], 'SaveMatrix', '-ascii');
setptr(gcf,'arrow')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case('add_programme')
setptr(gcf,'watch')
prompt={'Name of the programme to be added:','Minimal number of parameters (e.g. 1):','Maximal number of parameters (max. 4):'};
def={'','',''};
set(0,'DefaultUIControlBackgroundColor',props.msgbox.BackgroundColor);
answer = inputdlg(prompt,'Add a Matlab programme',1,def);
set(0,props.root);
if ~isempty(answer)
if isempty(which(answer{1})) & ~isempty(answer{1})
h=errordlg(['Programme not found.',char(10),'Please ensure, that the programme is inside the Matlab search path.'],'Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
setptr(gcf,'arrow')
elseif isempty(answer{1})
setptr(gcf,'arrow')
return
else
if answer{2}=='', answer{2}='0'; end
if answer{3}=='', answer{3}='0'; end
h=warndlg(['In this version, the number of parameters is',char(10),...
'limited to 4. Your input was set to this value.'],'Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
waitfor(h)
h=warndlg(['In this version, the number of parameters is',char(10),...
'limited to 4. Your input was set to this value.'],'Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
waitfor(h)
end
if str2double(answer{2})>str2double(answer{3}), answer{2}=answer{3};
h=warndlg(['The maximal number of parameters can not be smaller',char(10),...
'than the minimal number of parameters. The minimal',char(10),...
'number of parameters was set to ',char(answer{3}),'.'],'Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
waitfor(h)
end
flag=0;
for i=1:length(funktion),
if strcmpi(funktion(i).name,answer{1})
h=errordlg('Programme already installed.','Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
flag=1;
break
end
end
if flag==0
mguircfile=which('mgui.rc');
if fid>1;
fprintf(fid,'%s\n',[answer{1},' ',answer{2},' ',answer{3}]);
else
h=errordlg('Could not open the mgui.rc file.','Add a Matlab programme');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
waitfor(h)
funktion(end).min = str2double(answer{2});
funktion(end).max = str2double(answer{3});
funktion(end).akt = str2double(answer{2});
funktion(end).klicklist{4}=[];
funktion(end).klickstring{4}=[];
set(hfs,'UserData',funktion,'String', [funktion.name]);
% set(hfs,'Value',length(funktion));
% mgui mod2;
set(0,'DefaultUIControlBackgroundColor',props.msgbox.BackgroundColor);
answer2=questdlg([upper(char(answer{1})),' was successfully installed and',char(10),...
'is now added to the function listbox.'],'Add a Matlab programme',...
'OK','Show mgui.rc','OK');
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
if isunix
editor='vi';
else
editor='notepad';
end
builtinEd=0;
if isempty(javachk('mwt', 'The MATLAB Editor'));
if com.mathworks.ide.editor.EditorOptions.getBuiltinEditor == 0,
editor = char(com.mathworks.ide.editor.EditorOptions.getOtherEditor);
else
com.mathworks.ide.editor.EditorApplication.openDocument(mguircfile);
builtinEd=1;
end;
end
if isunix & builtinEd==0
if strcmp(editor,'vi') == 1
editor = 'xterm -e vi';
end
eval(['!' editor ' "' mguircfile '" &'])
elseif ~isunix & builtinEd==0
eval(['!"' editor '" "' mguircfile '" &'])
end
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
end
end
setptr(gcf,'arrow')
end
set(0,props.root);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function lokal_ws=check_workspace
%% Aktualisieren der Variablen
% Einlesen aller vorhandenen VariablenNamen und ihre Feldgrsse
lokal_ws_all = evalin('base','whos');
hMF = findobj('Tag','MainFrame');
hfs = findobj('Tag','function_select');
if ~(isempty(hMF)), props = get(hMF,'UserData'); else error('Properties not found.'), end
select = get(hfs,'Value');
funktion = get(hfs,'UserData');
FN_Name = funktion(select).name;
if length(lokal_ws_all) > 0
j = 1;
for i=1:length(lokal_ws_all)
if strcmp(lokal_ws_all(i).class,'double') | strcmp(lokal_ws_all(i).class,'single') | strcmp(lokal_ws_all(i).class,'int8') | strcmp(lokal_ws_all(i).class,'uint8') | strcmp(lokal_ws_all(i).class,'int16') | strcmp(lokal_ws_all(i).class,'uint16') | strcmp(lokal_ws_all(i).class,'int32') | strcmp(lokal_ws_all(i).class,'uint32')
Ausgabe(j,1) = cellstr([lokal_ws_all(i).name, ' [', num2str(lokal_ws_all(i).size(1)),'x',num2str(lokal_ws_all(i).size(2)), ']' ]);
lokal_ws(j) = lokal_ws_all(i);
j = j+1;
end
end
% Der Workspace ist leer
end
if ~strcmp(FN_Name,'load')
h=errordlg('No numeric variables in the workspace.','Scan workspace');
set(h,props.msgboxwin),h2=guihandles(h);set(h2.OKButton,props.msgbox)
set(h,'Tag','helpdlgbox','HandleVisibility','On');
end
Ausgabe(1,1) = cellstr('Empty');
lokal_ws(1).name = [];
end
neu_var={lokal_ws.name};
for i=1:4;
hparm = findobj('Tag',['button_parm' num2str(i)]);
hlbox = findobj('Tag',['listbox_parm' num2str(i)]);
for l=5:length(funktion),
temp=funktion(l).klicklist;
if ~isempty(temp), klick_list=temp{i}; else klick_list = []; end
temp=get(hlbox,'UserData');
if ~isempty(temp) & ~isempty(klick_list)
old_var={temp.name};
old_klicklist=klick_list(1,:);
for k=1:length(old_klicklist)
if length(old_klicklist)<k, klick_list(1,k)=NaN; break, end
if length(old_var)<old_klicklist(k), klick_list(1,k)=NaN; break, end
klick_list(:,isnan(klick_list(1,:)))=[];
klick_string=make_klick_string(klick_list,lokal_ws);
funktion(l).klicklist{i}=klick_list;
funktion(l).klickstring{i}=klick_string;
set(hlbox,'Value',klick_list(1,:));
set(hparm,'String',klick_string);
set(hparm,'ToolTip',klick_string);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
klick_string='';
if ~isempty(klick_list)
for i = 1:size(klick_list,2)
klick_string = strcat(klick_string,var_list(klick_list(1,i)).name);
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
if size(selected,1) > 1 % Wenn Einzelwerte gefunden wurden
klick_string = strcat(klick_string, '(');
for j = 2:size(selected,1)
klick_string = strcat(klick_string,num2str(selected(j)));
klick_string = strcat(klick_string, ',');
end
klick_string(end) = [];
klick_string = strcat(klick_string, ')');
end
klick_string = strcat(klick_string, ',');
end
klick_string(end) = [];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function check_apply
hfs = findobj('Tag','function_select');
select = get(hfs,'Value');
funktion = get(hfs,'UserData');
%% Alle "Klick_listen" durchsuchen, ob "Apply" ausgefhrt werden darf
FN_Akt = funktion(select).akt;
trigger = 0;
% Alle "Klick_list"en durchsuchen
for i = 1 : FN_Akt
hbcp = findobj('Tag',['button_close_parm' num2str(i)]);
temp=funktion(select).klicklist;
if isempty(klick_list), klick_list=get(hbcp,'UserData'); end
if isempty(klick_list)
trigger = 1;
end
end
% Wenn mindestens eine leere dabei, dann die Ausfhrung verhindern
if trigger
set(findobj('Tag','apply'),'Enable','off');
else
set(findobj('Tag','apply'),'Enable','on');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENDE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%