void CMusikSourcesCtrl::FocusNowPlaying() { KillFocus( false ); m_Libraries.at( 1 )->Select( TRUE ); SetFocusedItem( m_Libraries.at( 1 ) ); }
void CMusikSourcesCtrl::FocusLibrary() { KillFocus( false ); m_Libraries.at( 0 )->Select( TRUE ); SetFocusedItem( m_Libraries.at( 0 ) ); }
// Destructor wxWindowMGL::~wxWindowMGL() { SendDestroyEvent(); if ( gs_mouseCapture == this ) ReleaseMouse(); if (gs_activeFrame == this) { gs_activeFrame = NULL; // activate next frame in Z-order: if ( m_wnd->prev ) { wxWindowMGL *win = (wxWindowMGL*)m_wnd->prev->userData; win->SetFocus(); } else if ( m_wnd->next ) { wxWindowMGL *win = (wxWindowMGL*)m_wnd->next->userData; win->SetFocus(); } } if ( gs_focusedWindow == this ) KillFocus(); if ( gs_windowUnderMouse == this ) gs_windowUnderMouse = NULL; DestroyChildren(); if ( m_wnd ) MGL_wmDestroyWindow(m_wnd); }
void CPWL_Wnd::Destroy() { KillFocus(); OnDestroy(); if (m_bCreated) { for (int32_t i = m_aChildren.GetSize() - 1; i >= 0; i--) { if (CPWL_Wnd* pChild = m_aChildren[i]) { pChild->Destroy(); delete pChild; pChild = nullptr; } } if (m_sPrivateParam.pParentWnd) m_sPrivateParam.pParentWnd->OnNotify(this, PNM_REMOVECHILD); m_bCreated = FALSE; } DestroyMsgControl(); FXSYS_memset(&m_sPrivateParam, 0, sizeof(PWL_CREATEPARAM)); m_aChildren.RemoveAll(); m_pVScrollBar = nullptr; }
void CMusikSourcesCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { m_LockHover = true; // user pressed f2 to rename an entry if ( nChar == VK_F2 ) { CMusikPropTreeItem* pItem = GetFocusedItem(); if ( pItem ) { CPoint nPos = pItem->GetLocation(); CRect rcClient; GetClientRect( rcClient ); CRect rect( 20, nPos.y + 1, rcClient.Width(), nPos.y + PROPTREEITEM_DEFHEIGHT - 2 ); m_EditInPlace.SetString( pItem->GetLabelText() ); m_EditInPlace.ShowWindow( SW_SHOWDEFAULT ); m_EditInPlace.MoveWindow( rect ); m_EditInPlace.SetFocus(); } } // user requested playlist deletion if ( nChar == VK_DELETE ) { CMusikPropTreeItem* pItem = GetFocusedItem(); if ( pItem ) { // type was standard playlist... if ( pItem->GetPlaylistType() == MUSIK_PLAYLIST_TYPE_STANDARD ) { int nID = pItem->GetPlaylistID(); int nPos = -1; int nNextPos = -1; // find the position... for ( size_t i = 0; i < m_StdPlaylists.size(); i++ ) { if ( m_StdPlaylists.at( i ) == pItem ) { nPos = i; if ( nPos == m_StdPlaylists.size() - 1 ) nNextPos = nPos - 1; else nNextPos = nPos; break; } } // if the position is valid, then delete it // and reload the playlists... if ( nPos != -1 ) { m_Library->DeleteStdPlaylist( nID ); LoadStdPlaylists(); // now select the next entry in the // list... if -1 select the library... KillFocus( false ); if ( nNextPos == -1 ) { m_Libraries.at( 0 )->Select( TRUE ); SetFocusedItem( m_Libraries.at( 0 ) ); int WM_SOURCESLIBRARY = RegisterWindowMessage( "SOURCESLIBRARY" ); m_Parent->SendMessage( WM_SOURCESLIBRARY, NULL ); } else { m_StdPlaylists.at( nNextPos )->Select( TRUE ); SetFocusedItem( m_StdPlaylists.at( nNextPos ) ); int WM_SOURCESSTDPLAYLIST = RegisterWindowMessage( "SOURCESSTDPLAYLIST" ); m_Parent->SendMessage( WM_SOURCESSTDPLAYLIST, NULL ); } Invalidate(); } } } } m_LockHover = false; }
void CMusikSourcesCtrl::OnDropFiles(HDROP hDropInfo) { // set cursor back to hour glass SetCursor( LoadCursor( NULL, IDC_WAIT ) ); // see if the drag landed on an existing // playlist, if it did, we'll append CPoint pos; ::GetCursorPos( &pos ); ScreenToClient( &pos ); CMusikPropTreeItem* pItem = FindItem( pos ); // make sure the item isn't root if ( pItem != NULL && pItem->IsRootLevel() ) return; if ( pItem ) { KillFocus(); pItem->Select( TRUE ); SetFocusedItem( pItem ); } // dnd stuff size_t nNumFiles; TCHAR szNextFile [MAX_PATH]; SHFILEINFO rFileInfo; nNumFiles = DragQueryFile ( hDropInfo, -1, NULL, 0 ); CStdStringArray files; CStdString sTemp; for ( size_t i = 0; i < nNumFiles; i++ ) { if ( DragQueryFile( hDropInfo, i, szNextFile, MAX_PATH ) > 0 ) { // get the filetype. if its a directory // that was dropped, we'll want to // recurse it and add all the supported // media files... SHGetFileInfo( szNextFile, 0, &rFileInfo, sizeof( rFileInfo ), SHGFI_ATTRIBUTES ); if ( rFileInfo.dwAttributes & SFGAO_FOLDER ) { sTemp = szNextFile; sTemp += "\\*.*"; m_Dir.m_Dir = sTemp; m_Dir.m_Threaded = false; m_Dir.m_Target = &files; m_Dir.Run(); } // otherwise it was just a file... add it... else files.push_back( szNextFile ); } } DragFinish( hDropInfo ); // did we actually hit an item? if ( pItem ) { // standard playlist if ( pItem->GetPlaylistType() == MUSIK_PLAYLIST_TYPE_STANDARD ) m_Library->AppendStdPlaylist( pItem->GetPlaylistID(), files ); // hit now playing? else if ( pItem->GetPlaylistType() == MUSIK_SOURCES_TYPE_NOWPLAYING ) { m_Library->BeginTransaction(); CMusikSong song; for ( size_t i = 0; i < files.size(); i++ ) { // add song (if necessary) m_Library->AddSong( files.at( i ) ); m_Library->GetSongFromFilename( files.at( i ), song ); m_Player->GetPlaylist()->Add( song ); } m_Library->EndTransaction(); } } // else make a new playlist else { CStdString playlist_str; playlist_str.Format( _T( "New Playlist %d" ), m_StdPlaylists.size() ); m_Library->CreateStdPlaylist( playlist_str.c_str(), files ); LoadStdPlaylists(); } // didn't hit an item, a new // playlist was created, so it // was pushed to the back of the list if ( !pItem ) { pItem = m_StdPlaylists.at( m_StdPlaylists.size() - 1 ); // focus KillFocus(); pItem->Select( TRUE ); SetFocusedItem( pItem ); } if ( pItem ) SendNotify( PTN_SELCHANGE, pItem ); }
static intptr_t WINAPI MainDialogProc(HANDLE hDlg,intptr_t Msg,intptr_t Param1,void* Param2) { BoardParams* DlgParams=(BoardParams*)Info.SendDlgMessage(hDlg,DM_GETDLGDATA,0,0); //if(Msg==DN_KEY&&Param2==KEY_ENTER) return TRUE; switch(Msg) { case DN_INITDIALOG: Info.SendDlgMessage(hDlg,DM_RESETBOARD,0,0); SetFocus(true); break; case DN_CONTROLINPUT: { const INPUT_RECORD* record=(const INPUT_RECORD*)Param2; if(record->EventType==KEY_EVENT&&record->Event.KeyEvent.bKeyDown) { KillFocus(); if(IsNone(record)) { switch(record->Event.KeyEvent.wVirtualKeyCode) { case VK_UP: DlgParams->curr_col--; break; case VK_DOWN: DlgParams->curr_col++; break; case VK_LEFT: DlgParams->curr_row--; break; case VK_RIGHT: DlgParams->curr_row++; break; case VK_HOME: DlgParams->curr_row=0; break; case VK_END: DlgParams->curr_row=DlgParams->width-1; break; case VK_PRIOR: DlgParams->curr_col=0; break; case VK_NEXT: DlgParams->curr_col=DlgParams->height-1; break; case L' ': { Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0); if(!DlgParams->finished) { if(!DlgParams->started) Info.SendDlgMessage(hDlg,DM_START_GAME,0,0); OpenPlace(hDlg,DlgParams,DlgParams->curr_row,DlgParams->curr_col,COP_CHECK_ALL); } Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0); } break; case VK_DELETE: { Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0); if(!DlgParams->finished) { FarDialogItem DialogItem; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,&DialogItem); switch(GET_DATA_1(DialogItem)) { case STATE_CLOSE: SET_DATA_1(DialogItem,STATE_MARKED); DlgParams->curr_mines++; break; case STATE_OPEN: break; case STATE_MARKED: SET_DATA_1(DialogItem,STATE_CLOSE); DlgParams->curr_mines--; break; } Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,DlgParams->width*DlgParams->curr_col+DlgParams->curr_row,&DialogItem); Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0); } Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0); } break; case VK_F2: DlgParams->started=false; DlgParams->finished=FINISH_NO; Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mStart))); Info.SendDlgMessage(hDlg,DM_RESETBOARD,0,0); break; case VK_F3: { wchar_t ScoreKeyName[1024],PlayerKeyName[1024]; FSF.sprintf(ScoreKeyName,L"Score_%d_%d_%d",DlgParams->width,DlgParams->height,DlgParams->mines); FSF.sprintf(PlayerKeyName,L"Player_%d_%d_%d",DlgParams->width,DlgParams->height,DlgParams->mines); CFarSettings settings(MainGuid); __int64 Score; wchar_t Name[512]; Score=settings.Get(ScoreKeyName,-1); if(!settings.Get(PlayerKeyName,Name,sizeofa(Name))) Name[0]=0; if(Score>=0&&Name[0]) { wchar_t buffer[1024]; FSF.sprintf(buffer,GetMsg(mHighscoreFormat),Name,(long)Score); const wchar_t* MsgItems[]={GetMsg(mHighscoreTitle),buffer,GetMsg(mOk)}; Info.Message(&MainGuid,&HiscoreGuid,0,NULL,MsgItems,sizeofa(MsgItems),1); } } break; } } if(DlgParams->curr_row>=DlgParams->width) DlgParams->curr_row=0; if(DlgParams->curr_row<0) DlgParams->curr_row=DlgParams->width-1; if(DlgParams->curr_col>=DlgParams->height) DlgParams->curr_col=0; if(DlgParams->curr_col<0) DlgParams->curr_col=DlgParams->height-1; SetFocus(true); Info.SendDlgMessage(hDlg,DM_REDRAW,0,0); } else if(record->EventType==MOUSE_EVENT) { DWORD Buttons=record->Event.MouseEvent.dwButtonState; if(Buttons&FROM_LEFT_1ST_BUTTON_PRESSED) RunKey(L"Keys([[Space]])"); else if(Buttons&RIGHTMOST_BUTTON_PRESSED) RunKey(L"Keys([[Del]])"); } } break; case DN_GOTFOCUS: SetFocus(false); break; case DN_KILLFOCUS: KillFocus(); break; case DM_RESETBOARD: { int curr_mines=DlgParams->mines,color; FarDialogItem DialogItem; Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0); for(int i=0;i<DlgParams->height;i++) for(int j=0;j<DlgParams->width;j++) { int k=i*DlgParams->width+j; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem); SET_DATA_0(DialogItem,0); SET_DATA_1(DialogItem,0); color=0; DialogItem.VBuf[1].Char=GetChar(GET_DATA_0(DialogItem),GET_DATA_1(DialogItem),&color); int bgcolor=GetBG(i,j,STATE_CLOSE); DialogItem.VBuf[0].Attributes.ForegroundColor=DialogItem.VBuf[1].Attributes.ForegroundColor=DialogItem.VBuf[2].Attributes.ForegroundColor=color; DialogItem.VBuf[0].Attributes.BackgroundColor=DialogItem.VBuf[1].Attributes.BackgroundColor=DialogItem.VBuf[2].Attributes.BackgroundColor=bgcolor; Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem); } //set mines while(curr_mines) for(int i=0;i<DlgParams->height;i++) for(int j=0;j<DlgParams->width;j++) { int k=i*DlgParams->width+j; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem); if(curr_mines&&(!GET_DATA_0(DialogItem))) { if(rand()<=(RAND_MAX*DlgParams->mines/(DlgParams->width*DlgParams->height))) { curr_mines--; SET_DATA_0(DialogItem,9); Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem); } } } //set places for(int i=0;i<DlgParams->height;i++) for(int j=0;j<DlgParams->width;j++) { int k=i*DlgParams->width+j; Info.SendDlgMessage(hDlg,DM_GETDLGITEMSHORT,k,&DialogItem); if(GET_DATA_0(DialogItem)==0) { SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i-1,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j-1,i+1,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j,i-1,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j,i+1,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i-1,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i,hDlg,DlgParams,false)); SET_DATA_0(DialogItem,GET_DATA_0(DialogItem)+GetMine(j+1,i+1,hDlg,DlgParams,false)); Info.SendDlgMessage(hDlg,DM_SETDLGITEMSHORT,k,&DialogItem); } } DlgParams->curr_mines=0; Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0); Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0); } break; case DN_ENTERIDLE: Info.SendDlgMessage(hDlg,DM_SHOWTIME,0,0); break; case DM_SHOWTIME: { wchar_t buffer[1024]; DWORD diff_time=DlgParams->started?((DlgParams->finished?DlgParams->end_time:GetTickCount())-DlgParams->start_time)/1000:0; FSF.sprintf(buffer,GetMsg(mTime),diff_time,DlgParams->curr_mines); Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height+1,buffer); } break; case DM_START_GAME: Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,DlgParams->width*DlgParams->height,const_cast<wchar_t*>(GetMsg(mGame))); DlgParams->started=true; DlgParams->start_time=GetTickCount(); break; } return Info.DefDlgProc(hDlg,Msg,Param1,Param2); }