Пример #1
0
// 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);
    }
}
Пример #2
0
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);
  }
}
Пример #3
0
// 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;
}
Пример #4
0
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();
    }
  }

}
Пример #5
0
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);
}