📄 fm_dirset.m
字号:
function varargout = fm_dirset(type)
% FM_DIRSET define settings and actions for the data format
% conversion GUI
%
% FM_DIRSET(TYPE)
% TYPE action indentifier
%
%see also FM_DIR
%
%Author: Federico Milano
%Date: 11-Nov-2002
%Update: 05-Jul-2003
%Update: 31-Jul-2003
%Update: 07-Oct-2003
%Version: 1.1.0
%
%E-mail: fmilano@thunderbox.uwaterloo.ca
%Web-site: http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano
global Path Fig Settings Theme
hdl = findobj(Fig.dir,'Tag','PopupMenu1');
formato = get(hdl,'Value');
hdl_dir = findobj(Fig.dir,'Tag','EditText1');
folder1 = get(hdl_dir,'String');
if ischar(folder1), cd(folder1), end
% codes:
IEEE = 1;
PSAT = 2;
PSATPERT = 3;
PSATMDL = 4;
CYME = 5;
MATPOWER = 6;
PST = 7;
EPRI = 8;
PSSE = 9;
PSAP = 10;
EUROSTAG = 11;
TH = 12;
CESI = 13;
VST = 14;
SIMPOW = 15;
NEPLAN = 16;
DIGSILENT = 17;
POWERWORLD = 18;
PET = 19;
FLOWDEMO = 20;
GEEPC = 21;
CHAPMAN = 22;
UCTE = 23;
PCFLO = 24;
WEBFLOW = 25;
VITRUVIO = 26; % all files
switch type
case 'formatlist'
formati = cell(VITRUVIO,1);
formati{IEEE} = 'IEEE CDF (.dat, .txt, .cf)';
formati{CYME} = 'CYME (.nnd, .sf)';
formati{MATPOWER} = 'MatPower (.m)';
formati{PSAT} = 'PSAT data (.m)';
formati{PSATPERT} = 'PSAT pert. (.m)';
formati{PSATMDL} = 'PSAT Simulink (.mdl)';
formati{PST} = 'PST (.m)';
formati{EPRI} = 'EPRI (.wsc, .txt, .dat)';
formati{PSSE} = 'PSS/E (.raw)';
formati{PSAP} = 'PSAP (.dat)';
formati{EUROSTAG} = 'Eurostag (.dat)';
formati{TH} = 'TH (.dat)';
formati{CESI} = 'CESI - INPTC1 (.dat)';
formati{VST} = 'VST (.dat)';
formati{SIMPOW} = 'SIMPOW (.optpow, .dynpow)';
formati{NEPLAN} = 'NEPLAN (.ndt)';
formati{DIGSILENT} = 'DigSilent (.dgs)';
formati{POWERWORLD} = 'PowerWorld (.aux)';
formati{PET} = 'PET (.pet)';
formati{FLOWDEMO} = 'Flowdemo.net (.fdn)';
formati{GEEPC} = 'GE format (.epc)';
formati{CHAPMAN} = 'Chapman format';
formati{UCTE} = 'UCTE format';
formati{PCFLO} = 'PCFLO format';
formati{WEBFLOW} = 'WebFlow format';
formati{VITRUVIO} = 'All Files (*.*)';
varargout(1) = {formati};
%==================================================================
case 'changedir'
hdl = findobj(Fig.dir,'Tag','Listbox1');
cdir = get(hdl,'String');
ndir = get(hdl,'Value');
namedir = cdir{ndir(1),1};
switch namedir
case '..'
eval('cd ..');
case '.'
if ~isempty(dir(namedir))
cd(namedir);
end
case '[ * DATA * ]'
if isempty(Path.data), return, end
cd(Path.data)
case '[ * PERT * ]'
if isempty(Path.pert), return, end
cd(Path.pert)
case '[ * LOCAL * ]'
if isempty(Path.local), return, end
cd(Path.local)
case '[ * PSAT * ]'
if isempty(Path.psat), return, end
cd(Path.psat)
otherwise
cd(namedir)
end
a = dir;
numdir = find([a.isdir] == 1);
cdir = {a(numdir).name}';
cdir(strmatch('.',cdir)) = [];
cdir(strmatch('@',cdir)) = [];
set(hdl,'String',[{'.'; '..'};cdir;get(hdl,'UserData')],'Value',1);
hdl = findobj(Fig.dir,'Tag','EditText1');
set(hdl,'String',pwd);
set(Fig.dir,'UserData',pwd);
hdl = findobj(Fig.dir,'Tag','Listbox2');
hdlf = findobj(Fig.dir,'Tag','PopupMenu1');
cfile = uform(get(hdlf,'Value'));
if isempty(cfile)
cfile = 'empty';
else
cfile = sort(cfile);
end
set(hdl,'String',cfile,'Value',1);
%==================================================================
case 'chformat'
hdlf = findobj(Fig.dir,'Tag','PopupMenu1');
formato = get(hdlf,'Value');
hdl = findobj(Fig.dir,'Tag','Listbox2');
hdlc = findobj(Fig.dir,'Tag','Pushbutton1');
hdl1 = findobj(Fig.dir,'Tag','CheckboxSilent');
hdl2 = findobj(Fig.dir,'Tag','Checkbox2');
hdl4 = findobj(Fig.dir,'Tag','StaticText2');
cfile = uform(formato);
switch formato
case IEEE, file = 'ieee';
case CYME, file = 'cyme';
case MATPOWER, file = 'pserc';
case PSAT, file = 'psatdata';
case PSATPERT, file = 'psatpert';
case PSATMDL, file = 'simulink';
case PST, file = 'cherry';
case EPRI, file = 'epri';
case PSSE, file = 'pti';
case PSAP, file = 'pjm';
case EUROSTAG, file = 'eurostag';
case TH, file = 'th';
case CESI, file = 'cesi';
case VST, file = 'cepe';
case SIMPOW, file = 'simpow';
case NEPLAN, file = 'neplan';
case DIGSILENT, file = 'digsilent';
case POWERWORLD, file = 'powerworld';
case PET, file = 'pet';
case FLOWDEMO, file = 'eeh';
case GEEPC, file = 'ge';
case CHAPMAN, file = 'chapman';
case UCTE, file = 'ucte';
case PCFLO, file = 'pcflo';
case WEBFLOW, file = 'webflow';
case VITRUVIO, file = 'vitruvio';
end
switch formato
case VITRUVIO,
if ~get(hdlf,'UserData'), set(hdlc,'Enable','off'), end
set(hdl1,'Enable','off')
set(hdl2,'Enable','off')
set(hdl4,'Enable','off')
case PSAT,
set(hdlc,'Enable','on')
set(hdl1,'Enable','off')
if ~get(hdlf,'UserData'), set(hdl2,'Enable','on'), end
if ~get(hdlf,'UserData'), set(hdl4,'Enable','on'), end
case PSATPERT,
if ~get(hdlf,'UserData'), set(hdlc,'Enable','off'), end
set(hdl1,'Enable','off')
set(hdl2,'Enable','off')
set(hdl4,'Enable','off')
case {NEPLAN,CESI}
set(hdlc,'Enable','on')
set(hdl1,'Enable','on')
set(hdl2,'Enable','off')
set(hdl4,'Enable','off')
otherwise % all other formats
set(hdlc,'Enable','on')
set(hdl1,'Enable','off')
set(hdl2,'Enable','off')
set(hdl4,'Enable','off')
end
a = imread([Path.images,'logo_',file,'.jpg'],'jpg');
[yl,xl,zl] = size(a);
set(Fig.dir,'Units','pixels')
figdim = get(Fig.dir,'Position');
set(Fig.dir,'Units','normalized')
dimx = figdim(3)*0.2616;
dimy = figdim(4)*0.3468;
rl = xl/yl;
if dimx > xl & dimy > yl
xd = xl/figdim(3);
yd = yl/figdim(4);
set(gca,'Position',[0.8358-xd/2, 0.5722-yd/2, xd, yd]);
elseif xl > yl,
xd = 0.2616;
yd = 0.3468/rl;
set(gca,'Position',[0.7050, 0.5722-0.1734/rl, xd, yd]);
else,
xd = 0.2616*rl;
yd = 0.3468;
set(gca,'Position',[0.8358-0.1308*rl, 0.3988, xd, yd]);
end
xd = round(xd*figdim(3));
yd = round(yd*figdim(4));
%disp([xl yl xd yd])
if xd ~= xl & yd ~= yl
try
a = imresize(a,[yd xd],'bilinear',11);
catch
% imresize is not available!!!
end
end
set(gca,'XLim',[0.5 xd+0.5],'YLim',[0.5 yd+0.5]);
set(get(gca,'Children'),'CData',a,'XData',[1 xd],'YData',[1 yd]);
set(gca,'XTick',[],'XTickLabel','','XColor',Theme.color01);
set(gca,'YTick',[],'YTickLabel','','YColor',Theme.color01);
if ispc, set(gca,'XColor',[126 157 185]/255,'YColor',[126 157 185]/255), end
if isempty(cfile), cfile = 'empty'; else, cfile = sort(cfile); end
set(hdl,'String',cfile,'Value',1);
%==================================================================
case 'editinit'
if ~isempty(Path.temp)
try
cd(Path.temp);
catch
% nothing to do
end
elseif ~isempty(Path.data)
try
cd(Path.data);
catch
% nothing to do
end
end
set(gcbo,'String',pwd)
set(gcf,'UserData',pwd);
%==================================================================
case 'dirinit'
devices = getdevices;
devices{end+1,1} = '[ * DATA * ]';
devices{end+1,1} = '[ * PERT * ]';
devices{end+1,1} = '[ * LOCAL * ]';
devices{end+1,1} = '[ * PSAT * ]';
set(gcbo,'UserData',devices)
cd(get(gcf,'UserData'))
a = dir;
numdir = find([a.isdir] == 1);
if isempty(numdir)
cdir = {' '};
else
cdir = {a(numdir).name}';
cdir(strmatch('.',cdir)) = [];
cdir(strmatch('@',cdir)) = [];
end
set(findobj(Fig.dir,'Tag','Listbox1'), ...
'String',[{'.';'..'};cdir; devices]);
%==================================================================
case 'dirsel'
values = get(gcbo,'Value');
set(gcbo,'Value',values(end));
if strcmp(get(Fig.dir,'SelectionType'),'open')
cd(Path.local)
fm_dirset('changedir');
end
%==================================================================
case 'diredit'
hdl = findobj(Fig.dir,'Tag','EditText1');
cartella = get(hdl,'String');
try
cd(cartella);
hdl = findobj(Fig.dir,'Tag','Listbox1');
a = dir;
cdir = {'.';'..'};
numdir = find([a.isdir] == 1);
j = 2;
for i = 1:length(numdir)
if ~strcmp(a(numdir(i)).name(1),'.') & isunix
j = j + 1;
cdir{j,1} = a(numdir(i)).name;
end
end
if isempty(cdir),
cdir = ' ';
else,
cdir = sort(cdir);
end
set(hdl,'String',[cdir;get(hdl,'UserData')],'Value',1);
hdl = findobj(Fig.dir,'Tag','Listbox2');
cfile = uform(formato);
if isempty(cfile),
cfile = 'empty';
else,
cfile = sort(cfile);
end
set(hdl,'String',cfile,'Value',1);
set(Fig.dir,'UserData',cartella);
catch
fm_disp(lasterr,2)
set(hdl_dir,'String',get(Fig.dir,'UserData'));
end
%==================================================================
case 'getfolder'
pathname = get(Fig.dir,'UserData');
cartella = uigetdir(pathname);
if cartella
hdl = findobj(Fig.dir,'Tag','EditText1');
set(hdl,'String',cartella);
cd(Path.local)
fm_dirset('diredit');
end
%==================================================================
case 'convert'
hdl = findobj(Fig.dir,'Tag','Listbox2');
numfile = get(hdl,'Value');
nomefile = get(hdl,'String');
if ~iscell(nomefile),
nomefile = cellstr(nomefile);
end
hdl = findobj(Fig.dir,'Tag','PopupMenu1');
if numfile == 1 & strcmp(nomefile{1},'empty')
fm_disp('Current folder does not contain files in the selected format.',2)
cd(Path.local)
return
end
% if coverting a PSAT file, get destination format
hdlpsat = findobj(Fig.dir,'Tag','Checkbox2');
convpsat = get(hdlpsat,'Value');
for i = 1:length(numfile)
lasterr('');
filename = nomefile{numfile(i),1};
check = 0;
switch get(hdl,'Value')
case IEEE
check = fm_perl('IEEE CDF','ieee2psat',filename);
case CYME
check = fm_perl('CYME','cyme2psat',filename);
case MATPOWER
check = matpower2psat(filename,pwd);
case PSAT
switch convpsat
case 1, check = psat2ieee(filename,pwd);
case 2, check = psat2epri(filename,pwd);
end
case PSATMDL
check = sim2psat(filename,pwd);
case PSATPERT
fm_disp('No filter is associated with pertubation files.')
case PST
check = pst2psat(filename,pwd);
case EPRI
check = fm_perl('WSCC','epri2psat',filename);
case PSSE
check = fm_perl('PSS/E','psse2psat',filename);
case PSAP
check = fm_perl('PSAP','psap2psat',filename);
case EUROSTAG
check = fm_perl('EUROSTAG','eurostag2psat',filename);
case TH,
check = fm_perl('TH','th2psat',filename);
case CESI,
check = fm_perl('CESI','inptc12psat',filename);
case VST
check = fm_perl('VST','vst2psat',filename);
case SIMPOW
check = fm_perl('SIMPOW','simpow2psat',filename);
case NEPLAN
check = fm_perl('NEPLAN','neplan2psat',filename);
case DIGSILENT
check = fm_perl('DIGSILENT','digsilent2psat',filename);
case POWERWORLD
check = fm_perl('PowerWorld','pwrworld2psat',filename);
case PET
fm_choice('Filter for PET data format has not been implemeted yet',2)
break
case FLOWDEMO
check = fm_perl('FlowDemo.net','flowdemo2psat',filename);
case GEEPC
check = fm_perl('GE','ge2psat',filename);
case CHAPMAN
check = fm_perl('Chapman','chapman2psat',filename);
case UCTE
check = fm_perl('UCTE','ucte2psat',filename);
case PCFLO
check = fm_perl('PCFLO','pcflo2psat',filename);
case WEBFLOW
check = fm_perl('WebFlow','webflow2psat',filename);
case VITRUVIO % All files
fm_disp('Select a Data Format for running the conversion.')
end
if ~check & ~isempty(lasterr), fm_disp(lasterr), end
end
if nargout, varargout{1} = check; end
%==================================================================
case 'openfile'
global File
Path.temp = 0;
File.temp = '';
hdl = findobj(Fig.dir,'Tag','Listbox2');
numfile = get(hdl,'Value');
nomefile = get(hdl,'String');
if ~iscell(nomefile),
nomefile = cellstr(nomefile);
end
if numfile == 1 & strcmp(nomefile{1},'empty')
fm_disp('Current folder does not contain files in the selected data format.',2)
cd(Path.local)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -