commit cb7dfe37e49f3357193b587931c06e6c5063a622
parent 063d95c88e10ef9ead78bbffba25a4ce8b766719
Author: paulnasca <paulnasca>
Date: Thu, 29 Jul 2004 17:02:17 +0000
*** empty log message ***
Diffstat:
6 files changed, 73 insertions(+), 77 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -666,4 +666,6 @@
- Nu se mai arata butonul de apply parameters la PADsynth cand nu este necesar
- Eliminate blocarile de cateva secunde din threadul de sunet in momentul cand se incarca un nou instrument care contine parametrii PADsynth
- Adaugata schimbarea titlului ferestrei principale la load XML
+28 Iul 2004 - Modificat modul cum este stocat lista de banci root dir
+
diff --git a/src/Misc/Bank.C b/src/Misc/Bank.C
@@ -277,8 +277,7 @@ int Bank::newbank(const char *newbankdirname){
int result;
char tmpfilename[MAX_STRING_SIZE];
char bankdir[MAX_STRING_SIZE];
- snprintf(bankdir,MAX_STRING_SIZE,"%s",config.cfg.bankRootDirList);
- for (int i=0;i<strlen(bankdir);i++) if (bankdir[i]<32) bankdir[i]=0;
+ snprintf(bankdir,MAX_STRING_SIZE,"%s",config.cfg.bankRootDirList[0]);
if (((bankdir[strlen(bankdir)-1])!='/')&&((bankdir[strlen(bankdir)-1])!='\\')){
strncat(bankdir,"/",MAX_STRING_SIZE);
@@ -355,30 +354,7 @@ void Bank::rescanforbanks(){
banks[i].name=NULL;
};
-
- char *dirlist=config.cfg.bankRootDirList;
- int dirlistlen=strlen(dirlist);
- char *currentrootdir=new char [dirlistlen];
- while (start<dirlistlen){
- end=start;
- for (int i=start+1;i<dirlistlen;i++){
- end=i;
- if (dirlist[i]<32) break;
- };
- snprintf(currentrootdir,end-start+1,"%s",&dirlist[start]);
-
- //a root director was found
- if (strlen (currentrootdir)>1) scanrootdir(currentrootdir);
-
- start=end+1;
- };
- delete(currentrootdir);
-
-/* for (int i=0;i<MAX_NUM_BANKS;i++){
- if (banks[i].dir==NULL) continue;
- printf("* %s = %s\n",banks[i].name,banks[i].dir);
- };
-*/
+ for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) if (config.cfg.bankRootDirList[i]!=NULL) scanrootdir(config.cfg.bankRootDirList[i]);
};
diff --git a/src/Misc/Config.C b/src/Misc/Config.C
@@ -79,13 +79,7 @@ Config::Config(){
snprintf(winmididevices[i].name,MAX_STRING_SIZE,"%s",midiincaps.szPname);
};
#endif
-
- cfg.bankRootDirList=new char[MAX_STRING_SIZE];
-#if defined(OS_LINUX)
- sprintf(cfg.bankRootDirList,"~/banks\n./\n/usr/share/zynaddsubfx/banks\n/usr/local/share/zynaddsubfx/banks\n../banks\n");
-#else
- sprintf(cfg.bankRootDirList,"./");
-#endif
+ for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) cfg.bankRootDirList[i]=NULL;
cfg.currentBankDir=new char[MAX_STRING_SIZE];
sprintf(cfg.currentBankDir,"./testbnk");
@@ -93,9 +87,30 @@ Config::Config(){
char filename[MAX_STRING_SIZE];
getConfigFileName(filename,MAX_STRING_SIZE);
readConfig(filename);
-
- ui.showinstrumentinfo=0;
+ if (cfg.bankRootDirList[0]==NULL){
+#if defined(OS_LINUX)
+ cfg.bankRootDirList[0]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[0],"~/banks");
+ cfg.bankRootDirList[1]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[1],"./");
+
+ cfg.bankRootDirList[2]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[2],"/usr/share/zynaddsubfx/banks");
+
+ cfg.bankRootDirList[3]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[3],"/usr/local/share/zynaddsubfx/banks");
+
+ cfg.bankRootDirList[4]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[4],"../banks");
+#else
+ cfg.bankRootDirList[0]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[0],"./");
+
+ cfg.bankRootDirList[1]=new char[MAX_STRING_SIZE];
+ sprintf(cfg.bankRootDirList[1],"../banks");
+#endif
+ };
};
Config::~Config(){
@@ -103,7 +118,6 @@ Config::~Config(){
getConfigFileName(filename,MAX_STRING_SIZE);
saveConfig(filename);
-
delete(cfg.LinuxOSSWaveOutDev);
delete(cfg.LinuxOSSSeqInDev);
delete(cfg.DumpFile);
@@ -112,9 +126,17 @@ Config::~Config(){
delete(winmididevices);
};
+void Config::clearbankrootdirlist(){
+ for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) {
+ if (cfg.bankRootDirList[i]=NULL) delete(cfg.bankRootDirList[i]);
+ cfg.bankRootDirList[i]=NULL;
+ };
+};
+
+
void Config::readConfig(char *filename){
XMLwrapper *xmlcfg=new XMLwrapper();
- if (xmlcfg->loadXMLfile(filename)<0)return;
+ if (xmlcfg->loadXMLfile(filename)<0) return;
if (xmlcfg->enterbranch("CONFIGURATION")){
cfg.SampleRate=xmlcfg->getpar("sample_rate",cfg.SampleRate,4000,1024000);
cfg.SoundBufferSize=xmlcfg->getpar("sound_buffer_size",cfg.SoundBufferSize,2,8192);
@@ -129,9 +151,18 @@ void Config::readConfig(char *filename){
cfg.GzipCompression=xmlcfg->getpar("gzip_compression",cfg.GzipCompression,0,9);
xmlcfg->getparstr("bank_current",cfg.currentBankDir,MAX_STRING_SIZE);
- xmlcfg->getparstr("bank_root_list",cfg.bankRootDirList,MAX_STRING_SIZE);
-
cfg.Interpolation=xmlcfg->getpar("interpolation",cfg.Interpolation,0,1);
+
+ //get bankroot dirs
+ for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){
+ if (xmlcfg->enterbranch("BANKROOT",i)){
+ cfg.bankRootDirList[i]=new char[MAX_STRING_SIZE];
+ xmlcfg->getparstr("bank_root",cfg.bankRootDirList[i],MAX_STRING_SIZE);
+ xmlcfg->exitbranch();
+ };
+ //xmlcfg->getparstr("bank_root_list",cfg.bankRootDirList,MAX_STRING_SIZE);
+ };
+
//linux stuff
xmlcfg->getparstr("linux_oss_wave_out_dev",cfg.LinuxOSSWaveOutDev,MAX_STRING_SIZE);
xmlcfg->getparstr("linux_oss_seq_in_dev",cfg.LinuxOSSSeqInDev,MAX_STRING_SIZE);
@@ -140,6 +171,8 @@ void Config::readConfig(char *filename){
cfg.WindowsWaveOutId=xmlcfg->getpar("windows_wave_out_id",cfg.WindowsWaveOutId,0,winwavemax);
cfg.WindowsMidiInId=xmlcfg->getpar("windows_midi_in_id",cfg.WindowsMidiInId,0,winmidimax);
+
+
xmlcfg->exitbranch();
};
delete(xmlcfg);
@@ -166,7 +199,12 @@ void Config::saveConfig(char *filename){
xmlcfg->addpar("gzip_compression",cfg.GzipCompression);
xmlcfg->addparstr("bank_current",cfg.currentBankDir);
- xmlcfg->addparstr("bank_root_list",cfg.bankRootDirList);
+
+ for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) if (cfg.bankRootDirList[i]!=NULL) {
+ xmlcfg->beginbranch("BANKROOT",i);
+ xmlcfg->addparstr("bank_root",cfg.bankRootDirList[i]);
+ xmlcfg->endbranch();
+ };
xmlcfg->addpar("interpolation",cfg.Interpolation);
diff --git a/src/Misc/Config.h b/src/Misc/Config.h
@@ -24,7 +24,7 @@
#define CONFIG_H
#include "../globals.h"
#define MAX_STRING_SIZE 4000
-
+#define MAX_BANK_ROOT_DIRS 100
class Config{
public:
@@ -39,7 +39,7 @@ class Config{
int GzipCompression;
int Interpolation;
char *DumpFile;
- char *bankRootDirList,*currentBankDir;
+ char *bankRootDirList[MAX_BANK_ROOT_DIRS],*currentBankDir;
} cfg;
int winwavemax,winmidimax;//number of wave/midi devices on Windows
int maxstringsize;
@@ -49,9 +49,7 @@ class Config{
};
winmidionedevice *winmididevices;
- struct {
- int showinstrumentinfo;
- } ui;
+ void clearbankrootdirlist();
private:
void readConfig(char *filename);
diff --git a/src/UI/ConfigUI.fl b/src/UI/ConfigUI.fl
@@ -30,8 +30,7 @@ decl {\#include "../Misc/Dump.h"} {public
decl {extern Dump dump;} {public
}
-class ConfigUI {open
-} {
+class ConfigUI {} {
Function {make_window()} {} {
Fl_Window configwindow {
label {ZynAddSubFX Settings}
@@ -313,34 +312,18 @@ readbankcfg();} {}
Function {readbankcfg()} {} {
code {rootsbrowse->clear();
-int start=0,end=0;
-char *dirlist=config.cfg.bankRootDirList;
-int dirlistlen=strlen(dirlist);
-char *currentrootdir=new char [dirlistlen];
-while (start<dirlistlen){
- end=start;
- for (int i=start+1;i<dirlistlen;i++){
- end=i;
- if (dirlist[i]<32) break;
- };
- snprintf(currentrootdir,end-start+1,"%s",&dirlist[start]);
-
- //a root director was found
- if (strlen(currentrootdir)>2) rootsbrowse->add(currentrootdir);
-
- start=end+1;
-};
-delete(currentrootdir);} {selected
- }
+for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){
+ if (config.cfg.bankRootDirList[i]!=NULL) rootsbrowse->add(config.cfg.bankRootDirList[i]);
+};} {}
}
Function {writebankcfg()} {} {
- code {char *str=config.cfg.bankRootDirList;
-str[0]='\\0';
+ code {config.clearbankrootdirlist();
-for (int n=1;n<rootsbrowse->size()+1;n++){
- strncat(str,rootsbrowse->text(n),MAX_STRING_SIZE);
- strncat(str,"\\n",MAX_STRING_SIZE);
-};} {}
+for (int n=0;n<rootsbrowse->size();n++){
+ config.cfg.bankRootDirList[n]=new char [MAX_STRING_SIZE];
+ strncpy(config.cfg.bankRootDirList[n],rootsbrowse->text(n+1),MAX_STRING_SIZE);
+};} {selected
+ }
}
Function {getsamplerateorder()} {return_type int
} {
diff --git a/src/UI/PartUI.fl b/src/UI/PartUI.fl
@@ -276,7 +276,7 @@ delete(partkititem);} {}
class PartUI {: {public Fl_Group,PartUI_}
} {
- Function {make_window()} {open selected private
+ Function {make_window()} {private
} {
Fl_Window partgroup {
private xywh {107 533 385 180} type Double hide
@@ -1116,9 +1116,7 @@ if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show();
if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {}
}
Function {~PartUI()} {} {
- code {config.ui.showinstrumentinfo=instrumenteditwindow->visible();
-
-if (adnoteui!=NULL) delete (adnoteui);
+ code {if (adnoteui!=NULL) delete (adnoteui);
if (subnoteui!=NULL) delete (subnoteui);
if (padnoteui!=NULL) delete (padnoteui);
@@ -1135,7 +1133,8 @@ instrumentkitlist->hide();
delete(instrumentkitlist);
instrumenteditwindow->hide();
-delete(instrumenteditwindow);} {}
+delete(instrumenteditwindow);} {selected
+ }
}
decl {Part *part;} {}
decl {Master *master;} {}