void Wave::updateName(const char *n) { std::string ext = gGetExt(pathfile.c_str()); name = gStripExt(gBasename(n).c_str()); pathfile = gDirname(pathfile.c_str()) + gGetSlash() + name + "." + ext; isLogical = true; /* a wave with updated name must become logical, since the underlying * file does not exist yet. */ }
void Wave::updateName(const char *n) { std::string ext = gGetExt(pathfile.c_str()); name = gStripExt(gBasename(n).c_str()); pathfile = gDirname(pathfile.c_str()) + gGetSlash() + name + "." + ext; isLogical = true; }
int Wave::open(const char *f) { pathfile = f; name = gStripExt(gBasename(f).c_str()); fileIn = sf_open(f, SFM_READ, &inHeader); if (fileIn == NULL) { gLog("[wave] unable to read %s. %s\n", f, sf_strerror(fileIn)); pathfile = ""; name = ""; return 0; } isLogical = false; isEdited = false; return 1; }
std::string gGetProjectName(const char *path) { std::string out; out = gStripExt(path); int i = out.size(); while (i>=0) { /// TODO - use gGetSlash() #if defined(__linux__) || defined(__APPLE__) if (out[i] == '/') #elif defined(_WIN32) if (out[i] == '\\') #endif break; i--; } out.erase(0, i+1); // includes the '/' (or '\' on windows) return out; }
void gdBrowser::__cb_save_sample() { if (strcmp(name->value(), "") == 0) { /// FIXME glue business gdAlert("Please choose a file name."); return; } /* bruteforce check extension. */ std::string filename = gStripExt(name->value()); char fullpath[PATH_MAX]; sprintf(fullpath, "%s/%s.wav", where->value(), filename.c_str()); if (gFileExists(fullpath)) if (!gdConfirmWin("Warning", "File exists: overwrite?")) return; if (((SampleChannel*)ch)->save(fullpath)) do_callback(); else gdAlert("Unable to save this sample!"); }
gdBrowser::gdBrowser(const char *title, const char *initPath, Channel *ch, int type, int stackType) : gWindow (396, 302, title), ch (ch), type (type), stackType(stackType) { set_non_modal(); browser = new gBrowser(8, 36, 380, 230); Fl_Group *group_btn = new Fl_Group(8, 274, 380, 20); gBox *b = new gBox(8, 274, 204, 20); // spacer window border <-> buttons ok = new gClick(308, 274, 80, 20); cancel = new gClick(220, 274, 80, 20, "Cancel"); status = new gProgress(8, 274, 204, 20); status->minimum(0); status->maximum(1); status->hide(); // show the bar only if necessary group_btn->resizable(b); group_btn->end(); Fl_Group *group_upd = new Fl_Group(8, 8, 380, 25); if (type == BROWSER_SAVE_PATCH || type == BROWSER_SAVE_SAMPLE || type == BROWSER_SAVE_PROJECT) /// bitmask please! name = new gInput(208, 8, 152, 20); if (type == BROWSER_SAVE_PATCH || type == BROWSER_SAVE_SAMPLE || type == BROWSER_SAVE_PROJECT) /// bitmask please! where = new gInput(8, 8, 192, 20); else where = new gInput(8, 8, 352, 20); updir = new gClick(368, 8, 20, 20, "", updirOff_xpm, updirOn_xpm); group_upd->resizable(where); group_upd->end(); end(); resizable(browser); size_range(w(), h(), 0, 0); where->readonly(true); where->cursor_color(COLOR_BG_DARK); if (type == BROWSER_SAVE_PATCH || type == BROWSER_SAVE_SAMPLE || type == BROWSER_SAVE_PROJECT) /// bitmask please! ok->label("Save"); else ok->label("Load"); if (type == BROWSER_LOAD_PATCH) ok->callback(cb_load_patch, (void*)this); else if (type == BROWSER_LOAD_SAMPLE) ok->callback(cb_load_sample, (void*)this); else if (type == BROWSER_SAVE_PATCH) { ok->callback(cb_save_patch, (void*)this); name->value(G_Patch.name[0] == '\0' ? "my_patch.gptc" : G_Patch.name); name->maximum_size(MAX_PATCHNAME_LEN+5); // +5 for ".gptc" } else if (type == BROWSER_SAVE_SAMPLE) { ok->callback(cb_save_sample, (void*)this); name->value(((SampleChannel*)ch)->wave->name.c_str()); } else if (type == BROWSER_SAVE_PROJECT) { ok->callback(cb_save_project, (void*)this); name->value(gStripExt(G_Patch.name).c_str()); } #ifdef WITH_VST else if (type == BROWSER_LOAD_PLUGIN) { ok->callback(cb_loadPlugin, (void*)this); } #endif ok->shortcut(FL_Enter); updir->callback(cb_up, (void*)this); cancel->callback(cb_close, (void*)this); browser->callback(cb_down, this); browser->path_obj = where; browser->init(initPath); if (G_Conf.browserW) resize(G_Conf.browserX, G_Conf.browserY, G_Conf.browserW, G_Conf.browserH); gu_setFavicon(this); show(); }
std::string Wave::basename() const { return gStripExt(gBasename(pathfile.c_str()).c_str()); }