commit 51af878912521020c7d9175132228f8257271b53
parent 2c48a3fd0f8463b7ebc5d57a0608cbc2e185bacb
Author: paulnasca <paulnasca>
Date: Sun, 13 Jun 2004 13:40:08 +0000
*** empty log message ***
Diffstat:
5 files changed, 47 insertions(+), 24 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -569,6 +569,7 @@
06 Iun 2004 - Adaugata functia sigmoid la distorsionare
12 Iun 2004 - Modificat modul cum este realizat bank-urile, adica directoarele de bank-uri exista in anumite directoare si aceste directoare sunt cautate automat de bankuri; adaugat optiunea de a se folosi mai multe bank-uri
13 Iun 2004 - Adaugat filtrul "sinus" la OscilGen
-
+ - Managementul bancilor de instrumente este (aproape) complet
+ - Se cauta bancile si in '/usr/share/zynaddsubfx/banks' si '/usr/local/share/zynaddsubfx/banks'
diff --git a/src/Misc/Bank.C b/src/Misc/Bank.C
@@ -37,6 +37,9 @@
#define INSTRUMENT_EXTENSION ".xml"
//.xzz
+//if this file exists into a directory, this make the directory to be considered as a bank, even if it not contains a instrument file
+#define FORCE_BANK_DIR_FILE ".bankdir"
+
Bank::Bank(){
memset(defaultinsname,0,PART_MAX_NAME_LEN);
snprintf(defaultinsname,PART_MAX_NAME_LEN,"%s"," ");
@@ -325,10 +328,25 @@ int Bank::loadbank(const char *bankdirname){
* Makes a new bank, put it on a file and makes it current bank
*/
int Bank::newbank(const char *newbankdirname){
- int result=mkdir(newbankdirname,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
+ 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;
+
+ if (((bankdir[strlen(bankdir)-1])!='/')&&((bankdir[strlen(bankdir)-1])!='\\')){
+ strncat(bankdir,"/",MAX_STRING_SIZE);
+ };
+ strncat(bankdir,newbankdirname,MAX_STRING_SIZE);
+ result=mkdir(bankdir,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
if (result<0) return(-1);
+
+ snprintf(tmpfilename,MAX_STRING_SIZE,"%s/%s",bankdir,FORCE_BANK_DIR_FILE);
+ printf("%s\n",tmpfilename);
+ FILE *tmpfile=fopen(tmpfilename,"w+");
+ fclose(tmpfile);
- return(loadbank(newbankdirname));
+ return(loadbank(bankdir));
};
/*
@@ -416,7 +434,8 @@ void Bank::scanrootdir(char *rootdir){
while((fname=readdir(d))){
if (fname->d_type!=DT_REG) continue;//this is not a regular file
- if (strstr(fname->d_name,INSTRUMENT_EXTENSION)!=NULL) {
+ if ((strstr(fname->d_name,INSTRUMENT_EXTENSION)!=NULL)||
+ (strstr(fname->d_name,FORCE_BANK_DIR_FILE)!=NULL)){
isbank=true;
break;//aici as putea pune in loc de break un update la un counter care imi arata nr. de instrumente din bank
};
diff --git a/src/Misc/Config.C b/src/Misc/Config.C
@@ -78,7 +78,11 @@ Config::Config(){
#endif
cfg.bankRootDirList=new char[MAX_STRING_SIZE];
- sprintf(cfg.bankRootDirList,"./\n/tmp\n~/paul");
+#if defined(OS_LINUX)
+ sprintf(cfg.bankRootDirList,"./\n/usr/share/zynaddsubfx/banks\n/usr/local/share/zynaddsubfx/banks");
+#else
+ sprintf(cfg.bankRootDirList,"./");
+#endif
cfg.currentBankDir=new char[MAX_STRING_SIZE];
sprintf(cfg.currentBankDir,"./testbnk");
diff --git a/src/UI/BankUI.fl b/src/UI/BankUI.fl
@@ -156,9 +156,14 @@ refreshmainwindow();}
}
Fl_Button {} {
label {New Bank...}
- callback {char *dirname;
+ callback {const char *dirname;
+/*
dirname=fl_dir_chooser("New empty Bank:",NULL,0);
if (dirname==NULL) return;
+*/
+dirname=fl_input("New empty Bank:");
+if (dirname==NULL) return;
+
int result=bank->newbank(dirname);
@@ -182,7 +187,7 @@ if (filename==NULL) return;
master->exportbankasxmldirectory(filename);
for (int i=0;i<128;i++) bs[i]->refresh();
-refreshmainwindow();}
+refreshmainwindow();} selected
xywh {439 438 105 40} box PLASTIC_UP_BOX color 175 labelfont 1 labelsize 15 labelcolor 0 align 128
}
Fl_Choice banklist {
@@ -194,7 +199,7 @@ if (dirname==NULL) return;
if (bank->loadbank(dirname)==2)
fl_alert("Error: Could not load the bank from the directory\\n%s.",dirname);
for (int i=0;i<128;i++) bs[i]->refresh();
-refreshmainwindow();} open selected
+refreshmainwindow();} open
xywh {5 20 205 20} down_box BORDER_BOX labelfont 1 align 5 textfont 1 textsize 12
} {}
Fl_Button {} {
diff --git a/src/UI/ConfigUI.fl b/src/UI/ConfigUI.fl
@@ -30,22 +30,20 @@ decl {\#include "../Misc/Dump.h"} {public
decl {extern Dump dump;} {public
}
-class ConfigUI {open
-} {
- Function {make_window()} {open
- } {
+class ConfigUI {} {
+ Function {make_window()} {} {
Fl_Window configwindow {
label {ZynAddSubFX Settings}
callback {writebankcfg();
o->hide();}
- xywh {88 313 510 340} type Double visible
+ xywh {88 313 510 340} type Double hide
} {
Fl_Tabs {} {
xywh {5 5 500 305}
} {
Fl_Group {} {
- label {Main settings}
- xywh {5 25 500 285} hide
+ label {Main settings} selected
+ xywh {5 25 500 285}
} {
Fl_Group {} {
label {Sample Rate}
@@ -236,7 +234,7 @@ midiinputnamebox->label(config.winmididevices[config.cfg.WindowsMidiInId].name);
}
Fl_Group {} {
label {Bank root dirs} open
- xywh {5 25 500 285}
+ xywh {5 25 500 285} hide
} {
Fl_Browser rootsbrowse {
callback {activatebutton_rootdir(o->value()!=0);}
@@ -283,13 +281,11 @@ writebankcfg();}
}
}
}
- Function {ConfigUI()} {open
- } {
+ Function {ConfigUI()} {} {
code {make_window();
readbankcfg();} {}
}
- Function {activatebutton_rootdir(bool active)} {open
- } {
+ Function {activatebutton_rootdir(bool active)} {} {
code {if (active) {
removerootdirbutton->activate();
makedefaultrootdirbutton->activate();
@@ -319,16 +315,14 @@ while (start<dirlistlen){
};
delete(currentrootdir);} {}
}
- Function {writebankcfg()} {open
- } {
+ Function {writebankcfg()} {} {
code {char *str=config.cfg.bankRootDirList;
str[0]='\\0';
for (int n=1;n<rootsbrowse->size()+1;n++){
strncat(str,rootsbrowse->text(n),MAX_STRING_SIZE);
strncat(str,"\\n",MAX_STRING_SIZE);
-};} {selected
- }
+};} {}
}
Function {getsamplerateorder()} {return_type int
} {