void MarkerList::ExportToFile(const char* format) { // Note - UTF8 untested char cFilename[512]; if (BrowseForSaveFile(__LOCALIZE("Choose text file to save markers to","sws_DLG_102"), NULL, NULL, "TXT files\0*.txt\0", cFilename, 512)) { char* str = GetFormattedList(format); FILE* f = fopen(cFilename, "w"); if (f) { fputs(str, f); fclose(f); } delete [] str; } }
static void SaveGrooveToFile(int flags, void *data) { GrooveTemplateHandler *me = GrooveTemplateHandler::Instance(); if(me->isGrooveEmpty()) { MessageBox(GetMainHwnd(), __LOCALIZE("No groove loaded!","sws_mbox"), __LOCALIZE("FNG - Error","sws_mbox"), 0); return; } char cFilename[256]; if (BrowseForSaveFile(__LOCALIZE("Select groove template","sws_mbox"), me->GetGrooveDir().c_str(), NULL, "Reaper Groove Templates (*.rgt)\0*.rgt\0All Files (*.*)\0*.*\0", cFilename, 256)) { std::string errMessage; std::string fName = cFilename; if(!me->SaveGroove(fName, errMessage)) MessageBox(GetMainHwnd(), errMessage.c_str(), __LOCALIZE("FNG - Error","sws_mbox"), 0); else me->GetGrooveDialog()->Refresh(); } }
// **************************************************************************** // **** Project list ********************************************************* // **************************************************************************** void SaveProjectList(COMMAND_T*) { int i = 0; bool bValid = false; char filename[256] = { 0, }; while (EnumProjects(i++, filename, 256)) if (filename[0]) bValid = true; if (!bValid) { MessageBox(g_hwndParent, __LOCALIZE("No saved projects are open. Please save your projects first.","sws_mbox"), __LOCALIZE("SWS Project List Save","sws_mbox"), MB_OK); return; } char cPath[256]; GetProjectPath(cPath, 256); if (BrowseForSaveFile(__LOCALIZE("Select project list","sws_mbox"), cPath, NULL, "Reaper Project List (*.RPL)\0*.RPL\0All Files\0*.*\0", filename, 256)) { FILE* f = fopenUTF8(filename, "w"); if (f) { i = 0; while (EnumProjects(i++, filename, 256)) { if (filename[0]) { strncat(filename, "\r\n", 256); fwrite(filename, strlen(filename), 1, f); } } fclose(f); } else MessageBox(g_hwndParent, __LOCALIZE("Unable to write to file.","sws_mbox"), __LOCALIZE("SWS Project List Save","sws_mbox"), MB_OK); } }
bool WDL_ChooseFileForSave(HWND parent, const char *text, const char *initialdir, const char *initialfile, const char *extlist, const char *defext, bool preservecwd, char *fn, int fnsize, const char *dlgid, void *dlgProc, #ifdef _WIN32 HINSTANCE hInstance #else struct SWELL_DialogResourceIndex *reshead #endif ) { char cwd[2048]; GetCurrentDirectory(sizeof(cwd),cwd); #ifdef _WIN32 char temp[4096]; memset(temp,0,sizeof(temp)); if (initialfile) lstrcpyn(temp,initialfile,sizeof(temp)); WDL_fixfnforopenfn(temp); #ifdef WDL_FILEBROWSE_WIN7VISTAMODE { Win7FileDialog fd(text, 1); if(fd.inited()) { //vista+ file open dialog char olddir[2048]; GetCurrentDirectory(sizeof(olddir),olddir); fd.setFilterList(extlist); if (defext) { fd.setDefaultExtension(defext); int i = 0; const char *p = extlist; while(*p) { if(*p) p+=strlen(p)+1; if(!*p) break; if(stristr(p, defext)) { fd.setFileTypeIndex(i+1); break; } i++; p+=strlen(p)+1; } } fd.setFolder(initialdir?initialdir:olddir, 0); if(initialfile) { //check for folder name char *p = temp+strlen(temp); while(p>temp && *p!='/' && *p!='\\') p--; if(*p=='/'||*p=='\\') { //folder found *p=0; fd.setFolder(temp, 0); fd.setFilename(p+1); } else fd.setFilename(temp); } fd.setTemplate(hInstance, dlgid, (LPOFNHOOKPROC)dlgProc); if(fd.show(parent)) { //ifilesavedialog saves the last folder automatically fd.getResult(fn, fnsize); if (preservecwd) SetCurrentDirectory(olddir); return true; } if (preservecwd) SetCurrentDirectory(olddir); return NULL; } } #endif OPENFILENAME l={sizeof(l),parent, hInstance, extlist, NULL,0, 0, temp, sizeof(temp)-1, NULL, 0, initialdir&&initialdir[0] ? initialdir : cwd, text, OFN_HIDEREADONLY|OFN_EXPLORER|OFN_OVERWRITEPROMPT,0,0,defext, 0, (LPOFNHOOKPROC)dlgProc, dlgid}; if (hInstance&&dlgProc&&dlgid) l.Flags |= OFN_ENABLEHOOK|OFN_ENABLETEMPLATE|OFN_ENABLESIZING; if (preservecwd) l.Flags |= OFN_NOCHANGEDIR; if (!GetSaveFileName(&l)||!temp[0]) { if (preservecwd) SetCurrentDirectory(cwd); return false; } if (preservecwd) SetCurrentDirectory(cwd); lstrcpyn(fn,temp,fnsize); return true; #else BrowseFile_SetTemplate(dlgid,(DLGPROC)dlgProc,reshead); char if_temp[4096]; if (initialfile) { lstrcpyn(if_temp,initialfile,sizeof(if_temp)); WDL_fixfnforopenfn(if_temp); initialfile = if_temp; } bool r = BrowseForSaveFile(text,initialdir,initialfile,extlist,fn,fnsize); if (preservecwd) SetCurrentDirectory(cwd); return r; #endif }
INT_PTR WINAPI doColorDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { #ifndef _WIN32 static int iSettingColor = -1; #endif if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch (uMsg) { case WM_INITDIALOG: UpdateCustomColors(); RestoreWindowPos(hwndDlg, COLORDLG_WINDOWPOS_KEY, false); return 0; case WM_DRAWITEM: { LPDRAWITEMSTRUCT pDI = (LPDRAWITEMSTRUCT)lParam; HBRUSH hb = NULL; switch (pDI->CtlID) { case IDC_COLOR1: hb = CreateSolidBrush(g_crGradStart); break; case IDC_COLOR2: hb = CreateSolidBrush(g_crGradEnd); break; } FillRect(pDI->hDC, &pDI->rcItem, hb); DeleteObject(hb); return 1; } #ifndef _WIN32 case WM_TIMER: { COLORREF cr; if (iSettingColor != -1 && GetChosenColor(&cr)) { switch (iSettingColor) { case 0: g_crGradStart = cr; break; case 1: g_crGradEnd = cr; break; case 2: UpdateCustomColors(); break; } PersistColors(); InvalidateRect(hwndDlg, NULL, 0); KillTimer(hwndDlg, 1); iSettingColor = -1; } break; } #endif case WM_COMMAND: { wParam = LOWORD(wParam); switch(wParam) { case IDC_COLOR1: case IDC_COLOR2: case IDC_SETCUST: { #ifdef _WIN32 CHOOSECOLOR cc; memset(&cc, 0, sizeof(CHOOSECOLOR)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwndDlg; cc.lpCustColors = g_custColors; cc.Flags = CC_FULLOPEN | CC_RGBINIT; if (wParam == IDC_COLOR1) { cc.rgbResult = g_crGradStart; if (ChooseColor(&cc)) { g_crGradStart = cc.rgbResult; PersistColors(); RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } else if (wParam == IDC_COLOR2) { cc.rgbResult = g_crGradEnd; if (ChooseColor(&cc)) { g_crGradEnd = cc.rgbResult; PersistColors(); RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } else if (wParam == IDC_SETCUST && ChooseColor(&cc)) PersistColors(); #else switch(wParam) { case IDC_COLOR1: iSettingColor = 0; ShowColorChooser(g_crGradStart); break; case IDC_COLOR2: iSettingColor = 1; ShowColorChooser(g_crGradEnd); break; case IDC_SETCUST: iSettingColor = 2; ShowColorChooser(g_custColors[0]); break; } SetTimer(hwndDlg, 1, 50, NULL); #endif break; } case IDC_SAVECOL: case IDC_LOADCOL: case IDC_LOADFROMTHEME: { char cPath[512] = { 0 }; const char* cExt = "SWS Color Files (*.SWSColor)\0*.SWSColor\0Color Theme Files (*.ReaperTheme)\0*.ReaperTheme\0All Files\0*.*\0"; GetPrivateProfileString("REAPER", "lastthemefn", "", cPath, 512, get_ini_file()); char* pC = strrchr(cPath, PATH_SLASH_CHAR); if (pC) *pC = 0; if (wParam == IDC_SAVECOL) { char cFilename[512]; UpdateCustomColors(); if (BrowseForSaveFile(__LOCALIZE("Save color theme","sws_color"), cPath, NULL, cExt, cFilename, 512)) { char key[32]; char val[32]; for (int i = 0; i < 16; i++) { sprintf(key, "custcolor%d", i+1); sprintf(val, "%d", g_custColors[i]); WritePrivateProfileString("SWS Color", key, val, cFilename); } sprintf(val, "%d", g_crGradStart); WritePrivateProfileString("SWS Color", "gradientStart", val, cFilename); sprintf(val, "%d", g_crGradEnd); WritePrivateProfileString("SWS Color", "gradientEnd", val, cFilename); } } else if (wParam == IDC_LOADCOL || wParam == IDC_LOADFROMTHEME) { #ifndef _WIN32 if (MessageBox(hwndDlg, __LOCALIZE("WARNING: Loading colors from file will overwrite your global personalized color choices.\nIf these are important to you, press press cancel to abort the loading of new colors!","sws_color"), __LOCALIZE("OSX Color Load WARNING","sws_color"), MB_OKCANCEL) == IDCANCEL) break; #endif if (wParam == IDC_LOADCOL) { char* cFile = BrowseForFiles(__LOCALIZE("Choose color theme file","sws_color"), cPath, NULL, false, cExt); if (cFile) { lstrcpyn(cPath, cFile, 512); free(cFile); } else cPath[0] = 0; } else GetPrivateProfileString("REAPER", "lastthemefn", "", cPath, 512, get_ini_file()); if (cPath[0]) { char key[32]; bool bFound = false; for (int i = 0; i < 16; i++) { sprintf(key, "custcolor%d", i+1); int iColor = GetPrivateProfileInt("SWS Color", key, -1, cPath); if (iColor != -1) { g_custColors[i] = iColor; bFound = true; } } if (!bFound) { char cMsg[512]; _snprintf(cMsg, 512, __LOCALIZE_VERFMT("No SWS custom colors found in %s.","sws_color"), cPath); MessageBox(hwndDlg, cMsg, __LOCALIZE("SWS Color Load","sws_color"), MB_OK); } g_crGradStart = GetPrivateProfileInt("SWS Color", "gradientStart", g_crGradStart, cPath); g_crGradEnd = GetPrivateProfileInt("SWS Color", "gradientEnd", g_crGradEnd, cPath); PersistColors(); #ifdef _WIN32 RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); #else InvalidateRect(hwndDlg, NULL, 0); #endif } } } break; case IDOK: // Do something ? // fall through! case IDCANCEL: #ifndef _WIN32 if (iSettingColor != -1) { HideColorChooser(); KillTimer(hwndDlg, 1); } #endif SaveWindowPos(hwndDlg, COLORDLG_WINDOWPOS_KEY); EndDialog(hwndDlg,0); break; } return 0; } } return 0; }