void ApplinkDialog::Timer(const BaseContainer &msg) { Bool b; GetBool(IDC_CHK_PROMPT, b); if(b) { Filename fn; fn.SetDirectory(gPreferences.GetString(IDC_EXCH_FOLDER)); fn.SetFile("export.txt"); if(GeFExist(fn)) { GePrint("File exists!"); SetTimer(0); if(GeOutString("To import a new object?", GEMB_OKCANCEL) == GEMB_R_OK) { GePrint("Start import!"); BaseDocument* doc = GetActiveDocument(); ApplinkImporter* importer = NewObjClear(ApplinkImporter); importer->Execute(doc, &gPreferences); SetTimer(1000); } else { SetBool(IDC_CHK_PROMPT, false); } } } }
/*********************************************************************\ Function name : CLanguageList::Init Description : Created at : 26.09.01, @ 16:11:23 Created by : Thomas Kunert Modified by : \*********************************************************************/ void CLanguageList::Init() { Filename resourcepath = GeGetStartupPath() + Filename("resource"); if (GetC4DVersion() >= 16000) { // R16 has a new resource directory structure. The c4d_language.str // files we are searching for are in resource/modules/c4dplugin/strings_xx. // Fix for https://github.com/nr-plugins/resedit/issues/4 resourcepath = resourcepath + "modules" + "c4dplugin"; } AutoAlloc <BrowseFiles> pBrowse; pBrowse->Init(resourcepath, false); while (pBrowse->GetNext()) { if (pBrowse->IsDir()) { Filename fn = pBrowse->GetFilename(); if (fn.GetString().SubStr(0, 8).ToLower() == "strings_") { String idx = fn.GetString(); idx.Delete(0, 8); Filename stringname = resourcepath + fn+Filename("c4d_language.str"); AutoAlloc <BaseFile> pFile; if (!pFile) return; if (!GeFExist(stringname)) { GeOutString("Missing c4d_language.str to identify the string directory!!!", GEMB_ICONEXCLAMATION); } else if (pFile->Open(stringname)) { Int32 len = pFile->GetLength(); Char *buffer = NewMemClear(Char,len + 2); if (buffer) { pFile->ReadBytes(buffer,len); buffer[len]=0; Int32 i; for (i = 0; i < len && buffer[i] >= ' '; i++) { } buffer[i] = 0; for (i--; i > 0 && buffer[i]== ' '; i--) { } buffer[i + 1] = 0; AddLanguage(buffer, idx); DeleteMem(buffer); } } } } } CriticalAssert(GetNumLanguages() > 0); }
Bool PickObjectTool::MouseInput(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, EditorWindow* win, const BaseContainer& msg) { Int32 mode = data.GetInt32(MDATA_PICKOBJECT_MODE); Int32 x, y, l, xr = 0, yr = 0, wr = 0, hr = 0; Matrix4d m; ViewportPixel** pix = nullptr; String str; char ch[200]; Bool ret = false; AutoAlloc<C4DObjectList> list; if (!list) return false; VIEWPORT_PICK_FLAGS flags = VIEWPORT_PICK_FLAGS_ALLOW_OGL | VIEWPORT_PICK_FLAGS_USE_SEL_FILTER; if (data.GetBool(MDATA_PICKOBJECT_ONLY_VISIBLE)) flags |= VIEWPORT_PICK_FLAGS_OGL_ONLY_VISIBLE; x = msg.GetInt32(BFM_INPUT_X); y = msg.GetInt32(BFM_INPUT_Y); Float64 timer = 0.0; if (mode == MDATA_PICKOBJECT_MODE_CIRCLE) { Int32 rad = data.GetInt32(MDATA_PICKOBJECT_CIRCLE_RAD); timer = GeGetMilliSeconds(); ret = ViewportSelect::PickObject(bd, doc, x, y, rad, xr, yr, wr, hr, pix, flags, nullptr, list, &m); timer = GeGetMilliSeconds() - timer; } else if (mode == MDATA_PICKOBJECT_MODE_RECTANGLE) { Int32 width = data.GetInt32(MDATA_PICKOBJECT_RECT_W); Int32 height = data.GetInt32(MDATA_PICKOBJECT_RECT_H); x -= width / 2; y -= height / 2; timer = GeGetMilliSeconds(); ret = ViewportSelect::PickObject(bd, doc, x, y, x + width, y + height, xr, yr, wr, hr, pix, flags, nullptr, list, &m); timer = GeGetMilliSeconds() - timer; } if (ret) { sprintf(ch, "Picking region from (%d, %d), size (%d, %d)|", xr, yr, wr, hr); str += ch; for (l = 0; l < list->GetCount(); l++) { sprintf(ch, ", z = %.4f|", list->GetZ(l)); str += "Found Object " + list->GetObject(l)->GetName() + ch; } } else { str = "PickObject failed"; } sprintf(ch, "|Time: %.2f us", float(timer) * 1000.0f); str += ch; DeleteMem(pix); GeOutString(str, GEMB_OK); return true; }
Bool ForceOpenFileWrite(BaseFile* pFile, const Filename &fn) { if (pFile->Open(fn, FILEOPEN_WRITE)) return true; String str = GeLoadString(IDS_WRITE_PROTECTION, fn.GetFileString()); if (GeOutString(str, GEMB_ICONQUESTION | GEMB_YESNO) != GEMB_R_YES) return false; GeFKill(fn, GE_FKILL_FORCE); return pFile->Open(fn, FILEOPEN_WRITE); }
/*********************************************************************\ Function name : CLanguageList::Init Description : Created at : 26.09.01, @ 16:11:23 Created by : Thomas Kunert Modified by : \*********************************************************************/ void CLanguageList::Init() { Filename resourcepath = GeGetStartupPath() + Filename("resource"); AutoAlloc <BrowseFiles> pBrowse; pBrowse->Init(resourcepath, false); while (pBrowse->GetNext()) { if (pBrowse->IsDir()) { Filename fn = pBrowse->GetFilename(); if (fn.GetString().SubStr(0, 8).ToLower() == "strings_") { String idx = fn.GetString(); idx.Delete(0, 8); Filename stringname = resourcepath + fn+Filename("c4d_language.str"); AutoAlloc <BaseFile> pFile; if (!pFile) return; if (!GeFExist(stringname)) { GeOutString("Missing c4d_language.str to identify the string directory!!!", GEMB_ICONEXCLAMATION); } else if (pFile->Open(stringname)) { Int32 len = pFile->GetLength(); Char *buffer = NewMemClear(Char,len + 2); if (buffer) { pFile->ReadBytes(buffer,len); buffer[len]=0; Int32 i; for (i = 0; i < len && buffer[i] >= ' '; i++) { } buffer[i] = 0; for (i--; i > 0 && buffer[i]== ' '; i--) { } buffer[i + 1] = 0; AddLanguage(buffer, idx); DeleteMem(buffer); } } } } } }
void MemStatDialog::CheckMaxMemory(Int32 mbblocks) { maxon::BaseArray<void*> blocks; Int32 i; for (i = 0; true; i++) { void* block = nullptr; if (mbblocks > 0) block = NewMem(UChar, mbblocks * 1024 * 1024); if (!block) break; InitValues(); if (!blocks.Append(block)) { DeleteMem(block); break; } InitValues(); } BaseContainer stat; GeGetMemoryStat(stat); for (i = 0; i < blocks.GetCount(); i++) { void* block = blocks[i]; if (block) DeleteMem(block); } InitValues(); String memstr = String::MemoryToString(stat.GetInt64(C4D_MEMORY_STAT_MEMORY_INUSE)); switch (mbblocks) { case 1: SetString(IDC_MEMORY_TEST_1MB_RES, memstr); break; case 10: SetString(IDC_MEMORY_TEST_10MB_RES, memstr); break; case 100: SetString(IDC_MEMORY_TEST_100MB_RES, memstr); break; } GeOutString("Max memory allocation: " + memstr, GEMB_OK); }
Bool DiffDistriDialog::Command(Int32 id, const BaseContainer &msg) { switch (id) { case IDC_DIFF_DISTRI_NEW_BTN: { Filename fn; if (fn.FileSelect(FILESELECTTYPE_ANYTHING, FILESELECT_LOAD, GeLoadString(IDS_DIFF_DISTRI_CHOOSE))) { if (!fn.CheckSuffix("zip")) { GeOutString(GeLoadString(IDS_DIFF_DISTRI_INVALID_SUFFIX), GEMB_OK | GEMB_ICONSTOP); } else { g_pResEditPrefs->arOldFiles.AddFilename(fn); m_pTreeView->Refresh(); } } } break; case IDC_DIFF_DISTRI_REMOVE_BTN: if (m_fnSelection.Content()) { g_pResEditPrefs->arOldFiles.RemoveFilename(m_fnSelection); m_fnSelection = Filename(); m_pTreeView->Refresh(); } break; case IDC_DIFF_DISTRI_NEWZIP_EDIT: g_pResEditPrefs->fnNewZip = m_pNewZipEdit->GetData().GetValue().GetFilename(); break; case IDC_DIFF_DISTRI_DESTPATH_EDIT: { Filename fnDestZip = m_pDestPathEdit->GetData().GetValue().GetFilename(); g_pResEditPrefs->fnDestZip = fnDestZip; g_pResEditPrefs->fnDestZip.SetSuffix("zip"); if (fnDestZip.Content() && g_pResEditPrefs->fnDestZip != fnDestZip) m_pDestPathEdit->SetData(TriState<GeData>(g_pResEditPrefs->fnDestZip)); } break; case IDC_OK: { GeData d; String strPassword; Int32 lLen = 0; char* pchPassword = nullptr; Filename fnDestZip = m_pDestPathEdit->GetData().GetValue().GetFilename(); g_pResEditPrefs->fnNewZip = m_pNewZipEdit->GetData().GetValue().GetFilename(); g_pResEditPrefs->fnDestZip = fnDestZip; g_pResEditPrefs->fnDestZip.SetSuffix("zip"); if (fnDestZip.Content() && g_pResEditPrefs->fnDestZip != fnDestZip) m_pDestPathEdit->SetData(TriState<GeData>(g_pResEditPrefs->fnDestZip)); GetString(IDC_DIFF_DISTRI_PASSWORD_EDIT, strPassword); lLen = strPassword.GetCStringLen(STRINGENCODING_8BIT); if (lLen) { pchPassword = NewMemClear(Char,lLen + 2); if (pchPassword) strPassword.GetCString(pchPassword, lLen + 1, STRINGENCODING_8BIT); } if (!g_pResEditPrefs->arOldFiles.GetElementCount()) { GeOutString(GeLoadString(IDS_DIFF_DISTRI_NO_OLD), GEMB_ICONSTOP); DeleteMem(pchPassword); break; } if (!g_pResEditPrefs->fnNewZip.Content()) { GeOutString(GeLoadString(IDS_DIFF_DISTRI_NO_NEW), GEMB_ICONSTOP); DeleteMem(pchPassword); break; } if (!g_pResEditPrefs->fnDestZip.Content()) { GeOutString(GeLoadString(IDS_DIFF_DISTRI_NO_DEST), GEMB_ICONSTOP); DeleteMem(pchPassword); break; } if (!DiffZipFiles(g_pResEditPrefs->arOldFiles, g_pResEditPrefs->fnNewZip, g_pResEditPrefs->fnDestZip, pchPassword)) GeOutString(GeLoadString(IDS_DIFF_DISTRI_FAILED, g_pResEditPrefs->fnNewZip.GetString(), g_pResEditPrefs->fnDestZip.GetString()), GEMB_OK | GEMB_ICONEXCLAMATION); DeleteMem(pchPassword); } break; case IDC_CANCEL: Close(); break; default: break; } return true; }
Bool CSearchDialog::Command(Int32 lID, const BaseContainer &msg) { if (!m_pregExpr) return true; switch (lID) { case IDC_SEARCH_FIND_NEXT_CURRENT_BTN: { String str; Bool bCaseSensitive = false; GetString(IDC_SEARCH_EDIT, str); GetBool(IDC_SEARCH_CASE_SENSITIVE_CHK, bCaseSensitive); if (m_bRegExpr) { if (str != m_strText) { if (!m_pregExpr->Init(str)) { GeOutString(GeLoadString(IDS_INVALID_REG_EXPR), GEMB_ICONEXCLAMATION); m_strText = ""; return true; } } m_pDlg->FindString(str, m_pregExpr, true, bCaseSensitive); } else m_pDlg->FindString(str, nullptr, true, bCaseSensitive); m_strText = str; } break; case IDC_SEARCH_FIND_NEXT_ALL_BTN: { String str; Bool bCaseSensitive = false; GetString(IDC_SEARCH_EDIT, str); GetBool(IDC_SEARCH_CASE_SENSITIVE_CHK, bCaseSensitive); if (m_bRegExpr) { if (str != m_strText) { if (!m_pregExpr->Init(str)) { GeOutString(GeLoadString(IDS_INVALID_REG_EXPR), GEMB_ICONEXCLAMATION); m_strText = ""; return true; } } m_pDlg->FindString(str, m_pregExpr, false, bCaseSensitive); } else m_pDlg->FindString(str, nullptr, false, bCaseSensitive); m_strText = str; } break; case IDC_SEARCH_REG_EXPR_CHK: GetBool(IDC_SEARCH_REG_EXPR_CHK, m_bRegExpr); break; case IDC_SEARCH_CLOSE_BTN: Close(); break; default: break; } return true; }
/*********************************************************************\ Function name : CResEditBrowser::Command Description : Created at : 25.09.01, @ 22:33:39 Created by : Thomas Kunert Modified by : \*********************************************************************/ Bool CResEditBrowser::Command(Int32 lID, const BaseContainer &msg) { switch (lID) { case IDC_BROWSE_BUTTON: { Filename fn = m_strPath; AutoAlloc <BrowseFiles> pFiles; pFiles->Init(Filename("\\"), false); if (!m_strPath.Content()) fn = GeGetStartupPath() + String("resource"); if (fn.FileSelect(FILESELECTTYPE_ANYTHING, FILESELECT_DIRECTORY, GeLoadString(IDS_SPECIFY_RES_PATH))) { m_strPath = fn; FillList(); } break; } case IDC_DIRECTORY_TREE: { TreeViewItem* pSelItem = (TreeViewItem*)msg.GetVoid(TREEVIEW_MESSAGE_ITEM); Int32 lType = msg.GetInt32(TREEVIEW_MESSAGE_TYPE); if (!pSelItem) break; if (lType == TREEVIEW_DOUBLECLICK) { Filename fn = pSelItem->GetData()->GetString(ITEM_PATH_NAME); if (fn.CheckSuffix("res")) { // open the resource file if (!g_bWasActive) { CResEditMenu m; m.Execute(nullptr); } if (!g_pTreeDialog) break; g_pTreeDialog->OpenDialog(fn); } else if (fn.CheckSuffix("str")) { CDialogDoc tempDoc; tempDoc.LoadGlobalStringTable(m_strPath, pSelItem->GetData()->GetString(TREEVIEW_TEXT)); CStringtableDialog dlg(&tempDoc, true); if (dlg.Open()) { if (GeOutString(GeLoadString(IDS_SAVE_STRINGTABLE), GEMB_YESNO | GEMB_ICONQUESTION) == GEMB_R_YES) { tempDoc.SaveGlobalStringTable(); } } } else if (fn.Content()) { // open the file (it may be an image) GeExecuteFile(fn); } return true; } else if (lType == TREEVIEW_SELCHANGE) { m_dirText = pSelItem->GetData()->GetString(ITEM_PATH_NAME); } break; } }; return GeDialog::Command(lID, msg); }
/*********************************************************************\ Funktionsname : QuestionDialogYesNoCancel Beschreibung : Rückgabewert : Long Erstellt am : 11.08.01, @ 13:05:30 Argument : String str \*********************************************************************/ GEMB_R QuestionDialogYesNoCancel(String str) { return GeOutString(str, GEMB_YESNOCANCEL | GEMB_ICONQUESTION); }