Skip to content

Commit

Permalink
Final changes before refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
sauraen committed Aug 4, 2020
1 parent c899e60 commit 0bd6997
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 22 deletions.
15 changes: 15 additions & 0 deletions src/BankFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1188,6 +1188,21 @@ String BankFile::getNodeDesc(ValueTree node){
return node.getProperty("name", "Error!").toString();
}
if(type == "field" || type == "element"){
if(node.getProperty("datatype", "").toString() == "ABSound"){
ValueTree ptr = node.getChild(0).getChildWithProperty("meaning", "Ptr Sample");
if(ptr.isValid()){
if((int)ptr.getProperty("value", 0) == 0){
return "ABSound //nullptr";
}else{
ValueTree s = d.getChildWithName("samples").getChild((int)ptr.getProperty("index", -1));
if(!s.isValid()){
return "ABSound //INVALID PTR";
}else{
return "ABSound //" + s.getProperty("name", "").toString();
}
}
}
}
return getFieldDesc(node, false);
}else{
return type;
Expand Down
76 changes: 54 additions & 22 deletions src/FilesPane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,11 @@ FilesPane::FilesPane (SEQ64& seq64_)
txtKFileLength->addListener(this);
txtIEntryName->addListener(this);
txtEntryPointer->addListener(this);


btnSBMAdd->setEnabled(false);
btnSBMDelete->setEnabled(false);
cbxSeqBank->setEnabled(false);

//[/UserPreSize]

setSize (1078, 713);
Expand Down Expand Up @@ -1200,6 +1204,7 @@ void FilesPane::buttonClicked (Button* buttonThatWasClicked)
else if (buttonThatWasClicked == btnSBMAdd.get())
{
//[UserButtonCode_btnSBMAdd] -- add your button handler code here..
if(selifile->getIName() != "Audioseq Index") return;
if(!sbm.canAddBank(ientryidx)){
NativeMessageBox::showMessageBoxAsync(AlertWindow::WarningIcon, "seq64",
"Can't add new bank to Sequence Banks Index for sequence " + String(ientryidx)
Expand All @@ -1218,6 +1223,7 @@ void FilesPane::buttonClicked (Button* buttonThatWasClicked)
else if (buttonThatWasClicked == btnSBMDelete.get())
{
//[UserButtonCode_btnSBMDelete] -- add your button handler code here..
if(selifile->getIName() != "Audioseq Index") return;
int row = lstSeqBanks->getLastRowSelected();
if(!sbm.canRemoveBank(ientryidx, row)){
NativeMessageBox::showMessageBoxAsync(AlertWindow::WarningIcon, "seq64",
Expand Down Expand Up @@ -1270,6 +1276,7 @@ void FilesPane::rowSelected(TextListModel* parent, int row){
ientryidx = row;
fillIEntryParams();
}else if(parent == &*lsmSeqBanks){
if(selifile->getIName() != "Audioseq Index") return;
cbxSeqBank->setSelectedItemIndex(sbm.getSeqBank(ientryidx, row), dontSendNotification);
}
}
Expand Down Expand Up @@ -1466,6 +1473,7 @@ void FilesPane::fillIndex(){
grpUtilitiesContents->setText("Object (Contents)");
grpUtilitiesEntry->setText("Index Entry");
lblIndexProps->setText("File selected is not an index", dontSendNotification);
fillSeqBankList();
//Check params
if(seq64.rom.getSize() == 0){
lblIndexProps->setText("No ROM loaded", dontSendNotification);
Expand Down Expand Up @@ -1500,7 +1508,6 @@ void FilesPane::fillIndex(){
}
grpIndex->setText(selifile->getIName());
//Refresh things that may have changed with changes to index
fillSeqBankList();
if(selifile->getIName() == "Audiobank Index"){
seq64.maincomponent->onGotABI();
}
Expand Down Expand Up @@ -1573,18 +1580,36 @@ void FilesPane::fillIEntryParams(){
txtEntryPointer->setText("00", dontSendNotification);
}
//Select banks
if(selifile->getIName() != "Audioseq Index") return;
int nbanks = sbm.getSeqNumBanks(ientryidx);
int sel_seqbank = lstSeqBanks->getLastRowSelected();
if(sel_seqbank < 0 || sel_seqbank >= nbanks) sel_seqbank = nbanks - 1;
lsmSeqBanks->clear();
lstSeqBanks->updateContent();
for(int i=0; i<nbanks; ++i){
uint8 b = sbm.getSeqBank(ientryidx, i);
lsmSeqBanks->add(ROM::hex(b) + ": " + audiobank.getObjectName(b));
}
lstSeqBanks->updateContent();
lstSeqBanks->selectRow(sel_seqbank);
if(selifile->getIName() == "Audioseq Index"){
int nbanks = sbm.getSeqNumBanks(ientryidx);
int sel_seqbank = lstSeqBanks->getLastRowSelected();
if(sel_seqbank < 0 || sel_seqbank >= nbanks) sel_seqbank = nbanks - 1;
lsmSeqBanks->clear();
lstSeqBanks->updateContent();
for(int i=0; i<nbanks; ++i){
uint8 b = sbm.getSeqBank(ientryidx, i);
lsmSeqBanks->add(ROM::hex(b) + ": " + audiobank.getObjectName(b));
}
lstSeqBanks->updateContent();
lstSeqBanks->selectRow(sel_seqbank);
}else if(selifile->getIName() == "Audiobank Index"){
lsmSeqBanks->clear();
lstSeqBanks->updateContent();
for(uint8 s=0; s<audioseq.getICount(); ++s){
bool flag = false;
int nbanks = sbm.getSeqNumBanks(s);
for(int b=0; b<nbanks; ++b){
if(sbm.getSeqBank(s, b) == ientryidx){
flag = true;
break;
}
}
if(flag){
lsmSeqBanks->add(ROM::hex(s) + ": " + audioseq.getObjectName(s));
}
}
lstSeqBanks->updateContent();
}
}

void FilesPane::ieNameChanged(bool updateNameBox){
Expand All @@ -1597,16 +1622,24 @@ void FilesPane::ieNameChanged(bool updateNameBox){

void FilesPane::fillSeqBankList(){
cbxSeqBank->clear();
btnSBMAdd->setEnabled(false);
btnSBMDelete->setEnabled(false);
cbxSeqBank->setEnabled(false);
if(seq64.rom.getSize() == 0) return;
if(selifile == nullptr) return;
if(selifile->getIName() != "Audioseq Index"){
grpSeqBanks->setText("Sequence banks (Audioseq Index only):");
return;
if(selifile->getIName() == "Audioseq Index"){
grpSeqBanks->setText("Sequence banks:");
for(int i=0; i<audiobank.getICount(); ++i){
cbxSeqBank->addItem(ROM::hex((uint8)i) + ": " + audiobank.getObjectName(i), cbxSeqBank->getNumItems()+1);
}
btnSBMAdd->setEnabled(true);
btnSBMDelete->setEnabled(true);
cbxSeqBank->setEnabled(true);
}else if(selifile->getIName() == "Audiobank Index"){
grpSeqBanks->setText("Sequences that use this bank:");
}else{
grpSeqBanks->setText("No");
}
grpSeqBanks->setText("Sequence banks:");
for(int i=0; i<audiobank.getICount(); ++i){
cbxSeqBank->addItem(ROM::hex((uint8)i) + ": " + audiobank.getObjectName(i), cbxSeqBank->getNumItems()+1);
}
}

void FilesPane::fixSBMForBankChange(bool add, int idx){
Expand Down Expand Up @@ -1831,4 +1864,3 @@ END_JUCER_METADATA

//[EndFile] You can add extra defines here...
//[/EndFile]

7 changes: 7 additions & 0 deletions src/IndexedFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,9 @@ bool IndexedFile::getObjectRealSize(int o, uint32 &realsize){
}

void IndexedFile::moveRestOfFile(uint32 dstart, int32 delta){
if((delta & 0xF) != 0){
SEQ64::say("WARNING: Moving part of file by non-16-bytes delta " + String(delta) + "!");
}
uint32 flen = fdataend - faddr;
uint8* fileptr = &((uint8*)rom.getData())[faddr];
memmove(&fileptr[dstart+delta], &fileptr[dstart], flen - dstart);
Expand Down Expand Up @@ -379,6 +382,9 @@ bool IndexedFile::compact(){
if(oaddr+olen+faddr < realend){
//We've actually grown the object instead--make sure we didn't
//round up over someone else's data
//TODO this might lead to rounding up over someone else's zeros,
//but this shouldn't happen as long as files always start at
//multiples of 16
for(int b=oaddr+olen+faddr; b<realend; ++b){
if(rom.readByte(b) != 0){
realend = b;
Expand Down Expand Up @@ -442,6 +448,7 @@ bool IndexedFile::compact(){

bool IndexedFile::makeRoom(int o, uint32 newtotallen){
if(iaddr == 0 || o >= icount || o < 0) return false;
newtotallen = ((newtotallen + 15) >> 4) << 4; //Round up to 16 bytes
//Get object params
uint32 oaddr, olen;
getObjectAddrLen(o, oaddr, olen);
Expand Down

0 comments on commit 0bd6997

Please sign in to comment.