void CUIManager::Options() { CBox box(100, 100, 440, 280, 200, 50, 170); CTextBox playerName(180, 120, 20, cfg.Get("GAME", "PlayerName", "Player")); gpGeneral->DrawText(msg("menu_playername"), 110, 120, 255, 250, 50); CCheckBox cbSound(110, 150, !atoi(cfg.Get("OPTIONS", "NoSound", "0"))); gpGeneral->DrawText(msg("menu_sound"), 130, 150, 255, 250, 50); CCheckBox cbShowCards(110, 180, (atoi(cfg.Get("GAME", "ShowCards", "1")) != 0)); gpGeneral->DrawText(msg("menu_showcards"), 130, 180, 255, 250, 50); CButton btnOK(1, 110, 350, 100, 20, 50, 220, 200); gpGeneral->DrawText(msg("menu_ok"), 160 - strlen(msg("menu_ok")) * 4, 352, 255, 250, 50); CButton btnCancel(2, 220, 350, 100, 20, 50, 220, 200); gpGeneral->DrawText(msg("menu_cancel"), 270 - strlen(msg("menu_cancel")) * 4, 352, 255, 250, 50); while (1) { int key = gpGeneral->ReadKey() - SDLK_LAST; if (key == 1) { // OK button pressed if (strlen(playerName.Text()) > 0) { cfg.Set("GAME", "PlayerName", playerName.Text()); } cfg.Set("OPTIONS", "NoSound", cbSound.Checked() ? "0" : "1"); cfg.Set("GAME", "ShowCards", cbShowCards.Checked() ? "1" : "0"); g_fNoSound = !cbSound.Checked(); return; } else if (key == 2) { // Cancel button pressed return; // do nothing } } }
// Return the number of the discarded cards, and store the discarded cards into d. int CUIManager::UIDiscard(const CCard handcard[20], int count_hc, CCard *d, bool firsthand) { int i, k; DeleteDiscardImages(PLAYER_LOCAL); gpGeneral->UpdateScreen(); i = firsthand ? 287 : 260; k = firsthand ? 60 : 115; CButton btnOK(2, i, 315, 50, 22, 250, 70, 250); CButton *btnPass = firsthand ? NULL : new CButton(3, 315, 315, 50, 22, 250, 70, 250); gpGeneral->DrawImage(IMG_DISCARD, i + 5, 317); if (!firsthand) { gpGeneral->DrawImage(IMG_ABORT, 320, 317); } if (m_Time < 0) { time(&m_Time); } while (time(NULL) - m_Time < 30) { DrawTime(30 - (time(NULL) - m_Time)); int k = gpGeneral->ReadKey(false) - SDLK_LAST; if (k == 2 || k == SDLK_RIGHT - SDLK_LAST) { // OK CCard *p = d; for (i = 0; i < count_hc; i++) { if (m_iSelectedCards & (1 << i)) { *p++ = handcard[i]; } } if (p == d) { continue; // no cards selected } if (btnPass != NULL) { delete btnPass; } *p = 255; return p - d; } else if (k == 3) { // Pass delete btnPass; *d = 255; return 0; } } if (firsthand) { *d = handcard[0]; *(d + 1) = 255; return 1; } delete btnPass; *d = 255; return 0; }
int wxFileDialog::ShowModal() { wxBeginBusyCursor(); // static char fileBuf[512]; Widget parentWidget = (Widget) 0; if (m_parent) parentWidget = (Widget) m_parent->GetTopWidget(); else parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); // prepare the arg list Display* dpy = XtDisplay(parentWidget); Arg args[10]; int ac = 0; if (m_backgroundColour.IsOk()) { wxComputeColours (dpy, & m_backgroundColour, NULL); XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++; XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++; } wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); #if __WXMOTIF20__ && !__WXLESSTIF__ XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++; #else XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++; #endif Widget fileSel = XmCreateFileSelectionDialog(parentWidget, wxMOTIF_STR("file_selector"), args, ac); #define wxFSChild( name ) \ XmFileSelectionBoxGetChild(fileSel, name) XtUnmanageChild(wxFSChild(XmDIALOG_HELP_BUTTON)); Widget filterWidget = wxFSChild(XmDIALOG_FILTER_TEXT); Widget selectionWidget = wxFSChild(XmDIALOG_TEXT); Widget dirListWidget = wxFSChild(XmDIALOG_DIR_LIST); Widget fileListWidget = wxFSChild(XmDIALOG_LIST); // for changing labels Widget okWidget = wxFSChild(XmDIALOG_OK_BUTTON); Widget applyWidget = wxFSChild(XmDIALOG_APPLY_BUTTON); Widget cancelWidget = wxFSChild(XmDIALOG_CANCEL_BUTTON); Widget dirlistLabel = wxFSChild(XmDIALOG_DIR_LIST_LABEL); Widget filterLabel = wxFSChild(XmDIALOG_FILTER_LABEL); Widget listLabel = wxFSChild(XmDIALOG_LIST_LABEL); Widget selectionLabel = wxFSChild(XmDIALOG_SELECTION_LABEL); #undef wxFSChild // change labels wxXmString btnOK( wxGetStockLabel( wxID_OK, false ) ), btnCancel( wxGetStockLabel( wxID_CANCEL, false ) ), btnFilter( _("Filter") ), lblFilter( _("Filter") ), lblDirectories( _("Directories") ), lblFiles( _("Files" ) ), lblSelection( _("Selection") ); XtVaSetValues( okWidget, XmNlabelString, btnOK(), NULL ); XtVaSetValues( applyWidget, XmNlabelString, btnFilter(), NULL ); XtVaSetValues( cancelWidget, XmNlabelString, btnCancel(), NULL ); XtVaSetValues( dirlistLabel, XmNlabelString, lblDirectories(), NULL ); XtVaSetValues( filterLabel, XmNlabelString, lblFilter(), NULL ); XtVaSetValues( listLabel, XmNlabelString, lblFiles(), NULL ); XtVaSetValues( selectionLabel, XmNlabelString, lblSelection(), NULL ); Widget shell = XtParent(fileSel); if ( !m_message.empty() ) XtVaSetValues(shell, XmNtitle, (const char*)m_message.mb_str(), NULL); if (!m_wildCard.empty()) { // return something understandable by Motif wxString wildCard = ParseWildCard( m_wildCard ); wxString filter; if (!m_dir.empty()) filter = m_dir + wxString("/") + wildCard; else filter = wildCard; XmTextSetString(filterWidget, filter.char_str()); XmFileSelectionDoSearch(fileSel, NULL); } // Suggested by Terry Gitnick, 16/9/97, because of change in Motif // file selector on Solaris 1.5.1. if ( !m_dir.empty() ) { wxXmString thePath( m_dir ); XtVaSetValues (fileSel, XmNdirectory, thePath(), NULL); } wxString entirePath; if (!m_dir.empty()) { entirePath = m_dir + wxString("/") + m_fileName; } else { entirePath = m_fileName; } if (!entirePath.empty()) { XmTextSetString(selectionWidget, entirePath.char_str()); } XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); XtAddCallback(fileSel, XmNunmapCallback, (XtCallbackProc)wxFileSelClose, (XtPointer)this); //#if XmVersion > 1000 // I'm not sure about what you mean with XmVersion. // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200 // (Motif1.1.4 ==> XmVersion 1100 ) // Nevertheless, I put here a #define, so anyone can choose in (I)makefile. // #if !DEFAULT_FILE_SELECTOR_SIZE int width = wxFSB_WIDTH; int height = wxFSB_HEIGHT; XtVaSetValues(fileSel, XmNwidth, width, XmNheight, height, XmNresizePolicy, XmRESIZE_NONE, NULL); #endif wxDoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE); wxDoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE); wxChangeListBoxColours(this, dirListWidget); wxChangeListBoxColours(this, fileListWidget); XtManageChild(fileSel); m_fileSelectorAnswer = wxEmptyString; m_fileSelectorReturned = false; wxEndBusyCursor(); XtAddGrab(XtParent(fileSel), True, False); XtAppContext context = (XtAppContext) wxTheApp->GetAppContext(); XEvent event; while (!m_fileSelectorReturned) { XtAppNextEvent(context, &event); XtDispatchEvent(&event); } XtRemoveGrab(XtParent(fileSel)); XtUnmapWidget(XtParent(fileSel)); XtDestroyWidget(XtParent(fileSel)); // Now process all events, because otherwise // this might remain on the screen wxFlushEvents(XtDisplay(fileSel)); m_path = m_fileSelectorAnswer; m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); m_dir = wxPathOnly(m_path); if (m_fileName.empty()) return wxID_CANCEL; else return wxID_OK; }
void PowerlinePrompt::btn_ok() { emit btnOK(); this->accept(); }