void FolderWindow::SetStructures(int folderIndex) { StructureManager* structureManager = RNAStructViz::GetInstance()->GetStructureManager(); Folder* folder = structureManager->GetFolderAt(folderIndex); m_folderIndex = folderIndex; int shift = 0; for( int ui = 0; ui < folder->structCount; ui++) { if(folder->folderStructs[(ui+shift)] == -1) { shift++; } int i = folder->folderStructs[(ui+shift)]; RNAStructure *strct = structureManager->GetStructure(i); AddStructure(strct->GetFilename(), i); } label(folder->folderName); char structLabel[MAX_BUFFER_SIZE]; snprintf(structLabel, MAX_BUFFER_SIZE - 1, " \n\n\n\n\n%s", folder->folderName); ConfigParser::nullTerminateString(structLabel); copy_label(structLabel); labelsize(1.25 * LOCAL_TEXT_SIZE); align(FL_ALIGN_TOP); }
void FolderWindow::SetStructures(int folderIndex) { StructureManager* structureManager = RNAStructViz::GetInstance()->GetStructureManager(); Folder* folder = structureManager->GetFolderAt(folderIndex); m_folderIndex = folderIndex; int shift = 0; for( int ui = 0; ui < folder->structCount; ui++) { if(folder->folderStructs[(ui+shift)] == -1) { shift++; } int i = folder->folderStructs[(ui+shift)]; RNAStructure *strct = structureManager->GetStructure(i); AddStructure(strct->GetFilename(), i); } this->label(folder->folderName); /*sprintf(title, "Folder: %-.48s", structureManager->GetFolderAt(folderIndex)->folderName); label(title);*/ }
/*May not be quite right, modified from orignial code*/ void StatsWindow::ClearTruthValues() { StructureManager* structureManager = RNAStructViz::GetInstance()->GetStructureManager(); Folder* folder = structureManager->GetFolderAt(folderIndex); int shift = 0; for(int i = 0; i < folder->structCount; i++) { if(folder->folderStructs[(i + shift)] == -1) shift++; if(folder->folderStructs[(i + shift)] != -1) { RNAStructure *structure = structureManager->GetStructure((i+shift)); if(!structure) continue; int length = structure->GetLength(); for (int j = 0; j < length; ++j) { structure->GetBaseAt(j)->m_truth = RNAStructure::TruePositive; } } } }
/*May not be quite right, modified from orignial code*/ void StatsWindow::UpdateTruthValues() { if (referenceIndex == -1) { ClearTruthValues(); return; } StructureManager* structureManager = RNAStructViz::GetInstance()->GetStructureManager(); Folder* folder = structureManager->GetFolderAt(folderIndex); RNAStructure* refStructure = structureManager->GetStructure(referenceIndex); int length = refStructure->GetLength(); for (int j = 0; j < length; ++j) { refStructure->GetBaseAt(j)->m_truth = RNAStructure::TruePositive; } int shift = 0; for (int i = 0; i < folder->structCount; ++i) { if(folder->folderStructs[(i + shift)] == -1) shift++; if(folder->folderStructs[(i + shift)] != -1) { RNAStructure* otherStructure = structureManager->GetStructure((i+shift)); if (!otherStructure || otherStructure == refStructure) continue; for (int j = 0; j < length; ++j) { RNAStructure::BaseData* refBase = refStructure->GetBaseAt(j); RNAStructure::BaseData* otherBase = otherStructure->GetBaseAt(j); if (refBase->m_pair == RNAStructure::UNPAIRED) { if (otherBase->m_pair == RNAStructure::UNPAIRED) { otherBase->m_truth = RNAStructure::TrueNegative; } else { otherBase->m_truth = RNAStructure::FalsePositive; } } else { if (otherBase->m_pair == RNAStructure::UNPAIRED) { otherBase->m_truth = RNAStructure::FalseNegative; } else if (otherBase->m_pair == refBase->m_pair) { otherBase->m_truth = RNAStructure::TruePositive; } else { otherBase->m_truth = RNAStructure::FalsePositive; } } } } } }
InputWindow::InputWindow(int w, int h, const char *label, const char *defaultName, InputWindowType type, int folderIndex) : Fl_Window(MAX(w, 445), h, label), cbUseDefaultNames(NULL), ctFileChooser(NULL), userWindowStatus(OK), fileSelectionIndex(-1) { string = (char*)malloc(sizeof(char)*90); color(GUI_WINDOW_BGCOLOR); set_modal(); windowType = type; inputText = (char *) malloc(MAX_BUFFER_SIZE * sizeof(char)); if(type == InputWindow::FILE_INPUT) { strncpy(inputText, defaultName, MAX_BUFFER_SIZE - 1); inputText[MAX_BUFFER_SIZE - 1] = '\0'; char *extPtr = strrchr(inputText, '.'); if(extPtr != NULL) { *extPtr = '\0'; } char *filenameStartPtr = strrchr(inputText, '/'); int fnameStartPos; if(filenameStartPtr != NULL) { fnameStartPos = filenameStartPtr - inputText; } else { fnameStartPos = 0; } char saveDirInfo[MAX_BUFFER_SIZE]; snprintf(saveDirInfo, fnameStartPos + 1, "%s", inputText); sprintf(string, "Export to Directory: %s", saveDirInfo); input = new Fl_Input(25, 50, 235, 30); input->when(FL_WHEN_ENTER_KEY); input->value(filenameStartPtr + 1); Fl_Box *box = new Fl_Box(110, 20, 100, 30, (const char*)string); box->box(FL_NO_BOX); box->align(FL_ALIGN_CENTER); Fl_Box *fileExtBox = new Fl_Box(260,50,30,30,".csv"); Fl_Button *button = new Fl_Button(305, 50, 110, 30, "Export to CSV @->"); button->callback(InputCallback, (void*)0); button->set_active(); input->callback(InputCallback, (void*)0); callback(CloseCallback); } else if(type == InputWindow::FOLDER_INPUT) { std::string actualStructName = ExtractStructureNameFromCTName(defaultName); const char *actualStructNameCStr = actualStructName.c_str(); strncpy(inputText, actualStructNameCStr, actualStructName.size() + 1); ConfigParser::nullTerminateString(inputText, actualStructName.size()); sprintf(string, "Creating new folder for the CT structure %s", defaultName); input = new Fl_Input(160, 50, 250, 30, "@fileopen New Folder Name:"); input->when(FL_WHEN_ENTER_KEY); input->maximum_size(60); input->value(inputText); input->color(GUI_BGCOLOR); input->textcolor(GUI_BTEXT_COLOR); Fl_Box *box = new Fl_Box(50, 1, 350, 40, (const char*) string); box->box(FL_OSHADOW_BOX); box->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE | FL_ALIGN_WRAP); box->color(GUI_BGCOLOR); box->labelcolor(GUI_BTEXT_COLOR); Fl_Button *button = new Fl_Button(340, 50, 100, 30, "Add Folder @|>"); button->callback(InputCallback, (void*)0); button->labelcolor(GUI_BTEXT_COLOR); button->set_active(); input->callback(InputCallback, (void*)0); input->labelcolor(GUI_TEXT_COLOR); const char *cbText = " Use only default names for structure folders"; cbUseDefaultNames = new Fl_Check_Button(30, 100, 375, 30, cbText); cbUseDefaultNames->box(FL_ROUND_UP_BOX); cbUseDefaultNames->color(GUI_BGCOLOR); cbUseDefaultNames->labelcolor(GUI_BTEXT_COLOR); cbUseDefaultNames->down_color(GUI_WINDOW_BGCOLOR); cbUseDefaultNames->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE | FL_ALIGN_CENTER); callback(CloseCallback); } else { const char *windowDisplayMsg = "Which CT file structure for the organism\ndo you want to display?"; Fl_Box *box = new Fl_Box(75, 5, 300, 40, windowDisplayMsg); box->box(FL_RSHADOW_BOX); box->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE | FL_ALIGN_WRAP); box->color(GUI_BGCOLOR); box->labelcolor(GUI_BTEXT_COLOR); Fl_Button *displayButton = new Fl_Button(100, 100, 200, 30, "Display Zoomed Region @|>"); displayButton->callback(DisplayCTFileCallback, (void*)0); displayButton->color(GUI_BGCOLOR); displayButton->labelcolor(GUI_BTEXT_COLOR); displayButton->set_active(); //displayButton->shortcut(FL_Enter); Fl_Button *cancelButton = new Fl_Button(310, 100, 75, 30, "Cancel @1+"); cancelButton->callback(CancelCallback); cancelButton->color(GUI_BGCOLOR); cancelButton->labelcolor(GUI_BTEXT_COLOR); ctFileChooser = new Fl_Choice(175, 55, 215, 30, "Choose CT Structure: "); ctFileChooser->color(GUI_BGCOLOR); ctFileChooser->labelcolor(GUI_BTEXT_COLOR); StructureManager *structManager = RNAStructViz::GetInstance()->GetStructureManager(); Folder *curFolder = structManager->GetFolderAt(folderIndex); for(int s = 0; s < curFolder->structCount; s++) { RNAStructure *rnaStruct = structManager->GetStructure(curFolder->folderStructs[s]); const char *ctFileName = rnaStruct->GetFilename(); ctFileChooser->add(ctFileName); } ctFileChooser->value(0); } show(); if(type != InputWindow::FOLDER_INPUT || !GUI_USE_DEFAULT_FOLDER_NAMES) { show(); } else { show(); InputCallback((Fl_Widget *) cbUseDefaultNames, (void *) NULL); } }