commit 8e460d4b56293d194fa05d1b0f15d8b968885e82
parent 7a35ef743b02e26af53d8f74eba6cd909614a5ed
Author: paulnasca <paulnasca>
Date: Sat, 14 Feb 2004 08:31:12 +0000
*** empty log message ***
Diffstat:
8 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -533,3 +533,5 @@
11 Feb 2004 - Se pot incarca cativa parametrii de la master
12 Feb 2004 - Continuat incarcarea parametrilor XML si la part (neterminat)
13 Feb 2004 - Terminat de adaugat parametrii la incarcarea XML
+14 Feb 2004 - Se poate incarca si instrumente
+
diff --git a/src/Misc/Master.C b/src/Misc/Master.C
@@ -804,14 +804,15 @@ int Master::loadXML(char *filename){
return(-1);
};
- getfromXML(xml);
+ if (xml->enterbranch("MASTER")==0) return(-10);
+ getfromXML(xml);
+ xml->exitbranch();
delete(xml);
return(0);
};
void Master::getfromXML(XMLwrapper *xml){
- if (xml->enterbranch("MASTER")==0) return;
setPvolume(xml->getpar127("volume",Pvolume));
setPkeyshift(xml->getpar127("key_shift",Pkeyshift));
@@ -829,8 +830,6 @@ void Master::getfromXML(XMLwrapper *xml){
xml->exitbranch();
};
-
-
if (xml->enterbranch("SYSTEM_EFFECTS")){
for (int nefx=0;nefx<NUM_SYS_EFX;nefx++){
if (xml->enterbranch("SYSTEM_EFFECT",nefx)==0) continue;
diff --git a/src/Misc/Master.h b/src/Misc/Master.h
@@ -54,7 +54,7 @@ class Master{
void defaults();
- //saves all settings to a XML file
+ //loads all settings from a XML file
//returns 0 for ok or -1 if there is an error
int loadXML(char *filename);
diff --git a/src/Misc/Part.C b/src/Misc/Part.C
@@ -1048,6 +1048,23 @@ int Part::saveXML(char *filename){
return(0);
};
+int Part::loadXMLinstrument(const char *filename){
+ XMLwrapper *xml=new XMLwrapper();
+ if (xml->loadXMLfile(filename)<0) {
+ delete(xml);
+ return(-1);
+ };
+
+ if (xml->enterbranch("INSTRUMENT")==0) return(-10);
+ getfromXMLinstrument(xml);
+ xml->exitbranch();
+
+ delete(xml);
+ return(0);
+};
+
+
+
void Part::getfromXMLinstrument(XMLwrapper *xml){
if (xml->enterbranch("INFO")){
diff --git a/src/Misc/Part.h b/src/Misc/Part.h
@@ -60,6 +60,7 @@ class Part{
//saves the instrument settings to a XML file
//returns 0 for ok, 1 if there is a existing file or -1 if there is an error
int saveXML(char *filename);
+ int loadXMLinstrument(const char *filename);
void add2XML(XMLwrapper *xml);
void add2XMLinstrument(XMLwrapper *xml);
diff --git a/src/Misc/XMLwrapper.C b/src/Misc/XMLwrapper.C
@@ -132,7 +132,7 @@ void XMLwrapper::endbranch(){
/* LOAD XML members */
-int XMLwrapper::loadXMLfile(char *filename){
+int XMLwrapper::loadXMLfile(const char *filename){
if (tree!=NULL) mxmlDelete(tree);
tree=NULL;
diff --git a/src/Misc/XMLwrapper.h b/src/Misc/XMLwrapper.h
@@ -68,7 +68,7 @@ class XMLwrapper{
/********************************/
//returns 0 if ok or -1 if the file cannot be loaded
- int loadXMLfile(char *filename);
+ int loadXMLfile(const char *filename);
//enter into the branch
//returns 1 if is ok, or 0 otherwise
diff --git a/src/UI/MasterUI.fl b/src/UI/MasterUI.fl
@@ -379,7 +379,7 @@ if (fl_ask("Exit and leave the unsaved data?")) *exitprogram=1;
xywh {0 0 690 25}
} {
submenu {} {
- label {&File} open
+ label {&File}
xywh {0 0 100 20}
} {
menuitem {} {
@@ -593,7 +593,30 @@ master->part[npart]->saveXML(filename);
pthread_mutex_unlock(&master->mutex);
updatepanel();}
- xywh {20 20 100 20} divider
+ xywh {20 20 100 20}
+ }
+ menuitem {} {
+ label {&Load XML Instrument...}
+ callback {const char *filename;
+filename=fl_file_chooser("Load:","(*.xml)",NULL,0);
+if (filename==NULL) return;
+
+
+
+pthread_mutex_lock(&master->mutex);
+ int npart=(int)npartcounter->value();
+
+ //clear all instrument parameters, first
+ master->part[npart]->defaultsinstrument();
+
+ //load the instr. parameters
+ master->part[npart]->loadXMLinstrument(filename);
+
+pthread_mutex_unlock(&master->mutex);
+
+npartcounter->do_callback();
+updatepanel();} selected
+ xywh {30 30 100 20} divider
}
menuitem {} {
label {&New Instrument...}