Beispiel #1
0
C4FileSelDlg::C4FileSelDlg(const char *szRootPath, const char *szTitle,
                           C4FileSel_BaseCB *pSelCallback, bool fInitElements)
    : C4GUI::Dialog(BoundBy(C4GUI::GetScreenWdt() * 2 / 3 + 10, 300, 600),
                    BoundBy(C4GUI::GetScreenHgt() * 2 / 3 + 10, 220, 500),
                    szTitle, false),
      pFileListBox(NULL),
      pSelectionInfoBox(NULL),
      btnOK(NULL),
      pSelection(NULL),
      pSelCallback(pSelCallback),
      pLocations(NULL),
      iLocationCount(0),
      pLocationComboBox(NULL) {
  sTitle.Copy(szTitle);
  // key bindings
  pKeyRefresh = new C4KeyBinding(
      C4KeyCodeEx(K_F5), "FileSelReload", KEYSCOPE_Gui,
      new C4GUI::DlgKeyCB<C4FileSelDlg>(*this, &C4FileSelDlg::KeyRefresh),
      C4CustomKey::PRIO_CtrlOverride);
  pKeyEnterOverride = new C4KeyBinding(
      C4KeyCodeEx(K_RETURN), "FileSelConfirm", KEYSCOPE_Gui,
      new C4GUI::DlgKeyCB<C4FileSelDlg>(*this, &C4FileSelDlg::KeyEnter),
      C4CustomKey::PRIO_CtrlOverride);
  if (fInitElements) InitElements();
  sPath.Copy(szRootPath);
}
Beispiel #2
0
C4PortraitSelDlg::C4PortraitSelDlg(C4FileSel_BaseCB *pSelCallback,
                                   bool fSetPicture, bool fSetBigIcon)
    : C4FileSelDlg(Config.General.ExePath,
                   FormatString(LoadResStr("IDS_MSG_SELECT"),
                                LoadResStr("IDS_TYPE_PORTRAIT")).getData(),
                   pSelCallback, false),
      pCheckSetPicture(NULL),
      pCheckSetBigIcon(NULL),
      fDefSetPicture(fSetPicture),
      fDefSetBigIcon(fSetBigIcon) {
  char path[_MAX_PATH + 1];
  // add common picture locations
  StdStrBuf strLocation;
  SCopy(Config.AtUserPath(""), path, _MAX_PATH);
  TruncateBackslash(path);
  strLocation.Format("%s %s", C4ENGINECAPTION, LoadResStr("IDS_TEXT_USERPATH"));
  AddLocation(strLocation.getData(), path);
  SCopy(Config.AtExePath(""), path, _MAX_PATH);
  TruncateBackslash(path);
  strLocation.Format("%s %s", C4ENGINECAPTION,
                     LoadResStr("IDS_TEXT_PROGRAMDIRECTORY"));
  AddCheckedLocation(strLocation.getData(), Config.General.ExePath);
#ifdef _WIN32
  if (SHGetSpecialFolderPath(NULL, path, CSIDL_PERSONAL, FALSE))
    AddCheckedLocation(LoadResStr("IDS_TEXT_MYDOCUMENTS"), path);
  if (SHGetSpecialFolderPath(NULL, path, CSIDL_MYPICTURES, FALSE))
    AddCheckedLocation(LoadResStr("IDS_TEXT_MYPICTURES"), path);
  if (SHGetSpecialFolderPath(NULL, path, CSIDL_DESKTOPDIRECTORY, FALSE))
    AddCheckedLocation(LoadResStr("IDS_TEXT_DESKTOP"), path);
#endif
#ifdef __APPLE__
  AddCheckedLocation(LoadResStr("IDS_TEXT_HOME"), getenv("HOME"));
#else
  AddCheckedLocation(LoadResStr("IDS_TEXT_HOMEFOLDER"), getenv("HOME"));
#endif
#ifndef _WIN32
  sprintf(path, "%s%c%s", getenv("HOME"), (char)DirectorySeparator,
          (const char *)"Desktop");
  AddCheckedLocation(LoadResStr("IDS_TEXT_DESKTOP"), path);
#endif
  // build dialog
  InitElements();
  // select last location
  SetCurrentLocation(Config.Startup.LastPortraitFolderIdx, false);
}
Beispiel #3
0
double CSurface3DElement::DoOp(double X, double Y, LPCSurface3DElement &pElement)
  {
  if (!m_bFitDone)
    {
    long Ix=0;
    long Iy=0;
    CSurface3DPoint BL(0.0, 0.0, (m_r3D.m_fnZ(m_dMinimumX, m_dMinimumY)));
    CSurface3DPoint BR(1.0, 0.0, (m_r3D.m_fnZ(m_dMaximumX, m_dMinimumY)));
    CSurface3DPoint TL(0.0, 1.0, (m_r3D.m_fnZ(m_dMinimumX, m_dMaximumY)));
    CSurface3DPoint TR(1.0, 1.0, (m_r3D.m_fnZ(m_dMaximumX, m_dMaximumY)));
    CSurface3DPoint CC(0.5, 0.5, (m_r3D.m_fnZ(0.5*(m_dMinimumX+m_dMaximumX), 0.5*(m_dMinimumY+m_dMaximumY))));
    Fit(m_nDivsX, m_nDivsY, BL, BR, TL, TR, CC);
    m_bFitOK=CheckFit();
    }
  if (m_bFitOK)
    {
    double Val=ValueXY(X,Y);
    //dbgpln("== %12.3f %12.3f = %12.3f %s", X,Y,Val, (LPCTSTR)m_3D.m_sName);
    pElement=this;
    return Val;
    }

  if (m_Elements==NULL)
    {
    InitElements();    
    m_r3D.MRU_Remove(this);
    }

  long Ix=X2MapI(X);
  long Iy=Y2MapI(Y);
  CSurface3DElement &E=GetElement(Ix, Iy);
  if (!E.m_bInitDone)
    {
    E.Initialise(m_dMinimumX+Ix*m_dDivWidthX, m_dMinimumX+(Ix+1)*m_dDivWidthX, m_nDivsX,
                 m_dMinimumY+Iy*m_dDivWidthY, m_dMinimumY+(Iy+1)*m_dDivWidthY, m_nDivsY);
    }
  return E.DoOp(X,Y, pElement);
  }