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); }
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); }
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); }