// updates the edit dialog based on the path specified void UpdateEditDlg(plString locPath) { if (locPath == gCurrentPath) return; gCurrentPath = locPath; plString itemText = plString::Format("Text (%s):", locPath.c_str()); SetDlgItemTextW(gEditDlg, IDC_LOCPATH, itemText.ToWchar()); plString ageName, setName, elementName, elementLanguage; SplitLocalizationPath(locPath, ageName, setName, elementName, elementLanguage); // now make sure they've drilled down deep enough to enable the dialog if (elementLanguage.IsEmpty()) // not deep enough EnableDlg(FALSE); else { EnableDlg(TRUE); plString key = plString::Format("%s.%s.%s", ageName.c_str(), setName.c_str(), elementName.c_str()); plString elementText = pfLocalizationDataMgr::Instance().GetElementPlainTextData(key, elementLanguage); SetDlgItemTextW(gEditDlg, IDC_LOCALIZATIONTEXT, elementText.ToWchar()); } // now to setup the add/delete buttons if (!elementLanguage.IsEmpty()) // they have selected a language { SetDlgItemText(gEditDlg, IDC_ADD, L"Add Localization"); EnableWindow(GetDlgItem(gEditDlg, IDC_ADD), TRUE); SetDlgItemText(gEditDlg, IDC_DELETE, L"Delete Localization"); if (elementLanguage != "English") // don't allow them to delete the default language EnableWindow(GetDlgItem(gEditDlg, IDC_DELETE), TRUE); else EnableWindow(GetDlgItem(gEditDlg, IDC_DELETE), FALSE); } else // they have selected something else { SetDlgItemText(gEditDlg, IDC_ADD, L"Add Element"); EnableWindow(GetDlgItem(gEditDlg, IDC_ADD), TRUE); SetDlgItemText(gEditDlg, IDC_DELETE, L"Delete Element"); if (!elementName.IsEmpty()) // they have selected an individual element { std::vector<plString> elementNames = pfLocalizationDataMgr::Instance().GetElementList(ageName, setName); if (elementNames.size() > 1) // they can't delete the only subtitle in a set EnableWindow(GetDlgItem(gEditDlg, IDC_DELETE), TRUE); else EnableWindow(GetDlgItem(gEditDlg, IDC_DELETE), FALSE); } else EnableWindow(GetDlgItem(gEditDlg, IDC_DELETE), FALSE); } }
void ABoxDlg::openStub() { iONode stub = (iONode)m_Stubs->GetItemData(m_SelectedStub); if( NodeOp.getBool(stub, "link", True) ) { executeStub(NodeOp.getStr(stub, "path", "-")); } else { // Download file. wxString tempdir = wxFileName::GetTempDir(); char* filepath = StrOp.fmt("%s%c%s", (const char*)tempdir.mb_str(wxConvUTF8), SystemOp.getFileSeparator(), NodeOp.getStr(stub, "path", "-") ); TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "tempdir [%s]", filepath ); if( FileOp.exist(filepath) ) { executeStub(filepath); } else { EnableDlg(false); StrOp.copy(m_DownloadFilename, NodeOp.getStr(stub, "path", "-")); StrOp.copy(m_DownloadUID, NodeOp.getStr(stub, "uid", "-")); m_DownloadPart = 0; iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_getdata ); wDataReq.setid( cmd, NodeOp.getStr(stub, "uid", "-") ); wDataReq.setcategory( cmd, NodeOp.getStr(stub, "category", "-") ); wDataReq.setfilename(cmd, NodeOp.getStr(stub, "path", "-")); wDataReq.setdatapart(cmd, m_DownloadPart); wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); } StrOp.free(filepath); } }
// our dialog's window procedure INT_PTR CALLBACK EditDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: { gEditDlg = hWnd; EnableDlg(FALSE); } break; case WM_COMMAND: return HandleCommandMessage(hWnd, msg, wParam, lParam); } return FALSE; }
void ABoxDlg::event(iONode node) { char* s = NodeOp.base.toString(node); TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "event: %.256s", s ); StrOp.free(s); if( wDataReq.getcmd(node) == wDataReq.abox_addlink ) { const char* uid = wDataReq.getid(node); iONode direntry = wDataReq.getdirentry(node); if( direntry != NULL && wDirEntry.getfileentry(direntry) != NULL ) { iONode fileentry = wDirEntry.getfileentry(direntry); TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "uid=%s for [%s] added=[%s]", uid, wFileEntry.getfname(fileentry), m_AddedFilename ); /* char* s = StrOp.fmt("%s:\nUID=%s\n%s=%s", wxGetApp().getCMsg("upload"), uid, wxGetApp().getCMsg("file"), wFileEntry.getfname(fileentry) ); int action = wxMessageDialog( this, wxString(s,wxConvUTF8), _T("Rocrail"), wxOK ).ShowModal(); StrOp.free(s); */ if( StrOp.equals( wFileEntry.getfname(fileentry), m_AddedFilename ) ) { TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "start upload of [%s]...", wFileEntry.getfname(fileentry) ); StrOp.copy( m_AddedUID, uid ); iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_filedata ); wDataReq.setid( cmd, uid ); wDataReq.setcategory(cmd, wFileEntry.getcategory(fileentry)); wDataReq.setfilename(cmd, FileOp.ripPath(m_AddedFilename)); wDataReq.setdatapart(cmd, 0); if( readDataBlock(wFileEntry.getfname(fileentry), cmd, 0) ) { m_AddedFilename[0] = '\0'; m_AddedUID[0] = '\0'; EnableDlg(true); } wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); } } } else if( wDataReq.getcmd(node) == wDataReq.abox_getdata ) { TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "getdata..." ); /* * <datareq cmd="11" id="20150816093859345" category="Zomaar" filename="paspoort-2014.jpeg" datapart="0" controlcode="" server="infw5601F5A0" data="FFD8FFE0 */ if( StrOp.equals(m_DownloadUID, wDataReq.getid(node)) ) { if(wDataReq.getrc(node) != 0) { m_DownloadFilename[0] = '\0'; m_DownloadUID[0] = '\0'; m_DownloadPart = -1; m_labDownloadState->SetLabel(wxT("")); EnableDlg(true); int action = wxMessageDialog( this, wxT("Error getting file data!"), _T("Rocrail"), wxOK | wxICON_EXCLAMATION ).ShowModal(); return; } wxString tempdir = wxFileName::GetTempDir(); char* filepath = StrOp.fmt("%s%c%s", (const char*)tempdir.mb_str(wxConvUTF8), SystemOp.getFileSeparator(), wDataReq.getfilename(node) ); iOFile f = FileOp.inst(filepath, OPEN_APPEND); if( f != NULL ) { const char* byteStr = wDataReq.getdata(node); byte* filedata = StrOp.strToByte( byteStr ); int len = StrOp.len(byteStr)/2; FileOp.write(f, (char*)filedata, len); FileOp.base.del(f); freeMem(filedata); } if( !wDataReq.isack(node) ) { // get next part iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_getdata ); wDataReq.setid( cmd, wDataReq.getid(node) ); wDataReq.setcategory( cmd, wDataReq.getcategory(node) ); wDataReq.setfilename(cmd, wDataReq.getfilename(node) ); m_DownloadPart++; m_labDownloadState->SetLabel(wxString::Format(wxT("%d"), m_DownloadPart)); wDataReq.setdatapart(cmd, m_DownloadPart); wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); } else { m_DownloadFilename[0] = '\0'; m_DownloadUID[0] = '\0'; m_DownloadPart = -1; m_labDownloadState->SetLabel(wxT("")); EnableDlg(true); executeStub(filepath); } StrOp.free(filepath); } } else if( wDataReq.getcmd(node) == wDataReq.abox_filedata ) { TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "filedata..." ); // <datareq cmd="10" id="20150816081059871" category="Zomaar" datapart="0" dataparts="33" totalsize="794973" data="" // controlcode="" server="infw2368A4D0" ack="true"/> if( wDataReq.isack(node) ) { if( StrOp.equals(m_AddedUID, wDataReq.getid(node) ) ) { iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_filedata ); wDataReq.setid( cmd, wDataReq.getid(node) ); wDataReq.setcategory(cmd, wDataReq.getcategory(node)); wDataReq.setfilename(cmd, wDataReq.getfilename(node)); wDataReq.setdatapart(cmd, wDataReq.getdatapart(node)+1); m_labUploadState->SetLabel(wxString::Format(wxT("%d"), wDataReq.getdatapart(cmd))); if( readDataBlock(m_AddedFilename, cmd, wDataReq.getdatapart(cmd)) ) { m_AddedFilename[0] = '\0'; m_AddedUID[0] = '\0'; m_labUploadState->SetLabel(wxT("")); EnableDlg(true); } wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); } } } else if( wDataReq.getcmd(node) == wDataReq.abox_getcategories ) { m_ReadOnly = wDataReq.isreadonly(node)?true:false; if( m_Enable ) m_Add->Enable(!m_ReadOnly); m_Category->Clear(); wxString findtext = m_FindText->GetValue(); m_FindText->Clear(); m_FindText->SetValue(findtext); iOStrTok tok = StrTokOp.inst( wDataReq.getcategory( node ), ',' ); while( StrTokOp.hasMoreTokens(tok) ) { const char* category = StrTokOp.nextToken( tok ); m_Category->Append( wxString(category,wxConvUTF8) ); m_FindText->Append( wxString(category,wxConvUTF8) ); } } else if( wDataReq.getcmd(node) == wDataReq.abox_find ) { m_SelectedStub = wxNOT_FOUND; m_Open->Enable(false); m_Modify->Enable(false); m_Delete->Enable(false); m_Stubs->DeleteAllItems(); clearStubList(); char* s = NodeOp.base.toString(node); TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "found [%s]", s ); StrOp.free(s); iONode stub = NodeOp.findNode( node, "stub"); while( stub != NULL ) { iONode clone = (iONode)NodeOp.base.clone(stub); ListOp.add(m_StubList, (obj)clone); stub = NodeOp.findNextNode( node, stub); } initResult(); if(wDataReq.istoomanyhits(node)) { // Show warning. int action = wxMessageDialog( this, wxGetApp().getMsg("toomanyhits"), _T("Rocrail"), wxOK | wxICON_EXCLAMATION ).ShowModal(); } } }
void ABoxDlg::onAdd( wxCommandEvent& event ) { if( m_Filename->GetValue().IsEmpty() || m_Text->GetValue().IsEmpty() || m_Category->GetValue().IsEmpty() ) { // Upload criteria missing. int action = wxMessageDialog( this, wxGetApp().getMsg("missingcriteria"), _T("Rocrail"), wxOK | wxICON_EXCLAMATION ).ShowModal(); return; } if( StrOp.startsWithi(m_Filename->GetValue().mb_str(wxConvUTF8), "http")) m_Link->SetValue(true); wABox.setlink(m_Ini, m_Link->IsChecked()?True:False); iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_addlink ); wDataReq.setlink( cmd, m_Link->IsChecked()?True:False); iONode direntry = NodeOp.inst(wDirEntry.name(), cmd, ELEMENT_NODE ); NodeOp.addChild(cmd, direntry); iONode fileentry = NodeOp.inst(wFileEntry.name(), cmd, ELEMENT_NODE ); NodeOp.addChild(direntry, fileentry); wFileEntry.setfname( fileentry, m_Filename->GetValue().mb_str(wxConvUTF8) ); // save the file path in case it must be uploaded m_AddedUID[0] = '\0'; if( !m_Link->IsChecked() ) { StrOp.copy( m_AddedFilename, wFileEntry.getfname(fileentry) ); EnableDlg(false); } else m_AddedFilename[0] = '\0'; wFileEntry.settext( fileentry, m_Text->GetValue().mb_str(wxConvUTF8) ); wFileEntry.setcategory( fileentry, m_Category->GetValue().mb_str(wxConvUTF8) ); if( !StrOp.startsWithi(wFileEntry.getfname(fileentry), "http")) wFileEntry.setsize(fileentry, FileOp.fileSize(wFileEntry.getfname(fileentry))); if( !StrOp.startsWithi(wFileEntry.getfname(fileentry), "http")) { char dateStr[20]; long aTime = FileOp.fileTime( wFileEntry.getfname(fileentry) ); strftime( dateStr, sizeof(dateStr), "%Y%m%d", localtime(&aTime) ); wFileEntry.setfiledate(fileentry, dateStr); strftime( dateStr, sizeof(dateStr), "%H%M%S", localtime(&aTime) ); wFileEntry.setfiletime(fileentry, dateStr); } char* s = NodeOp.base.toString(cmd); TraceOp.trc( "aboxdlg", TRCLEVEL_INFO, __LINE__, 9999, "add: %s", s ); StrOp.free(s); wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); m_FindText->SetValue(m_Text->GetValue()); m_Filename->SetValue(wxT("")); m_Text->SetValue(wxT("")); m_Category->SetValue(wxT("")); onFind(event); cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_getcategories ); wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); }