[ADDED] Checking panel hot key improvement

Money Manager Ex Development related posts
(http://github.moneymanagerex.org/)

Moderator: Renato

Nikolay
MMEX Developer
Posts: 1384
Joined: Sat Dec 06, 2008 2:27 pm
Are you a spam bot?: No
Location: Sankt-Petersburg, Russia

Re: Checking panel hot key improvement (MS Windows)

Post by Nikolay »

My last code. Are there reasons it does not work on MAC?

Code: Select all

void MyListCtrl::OnChar(wxKeyEvent& event)
{	if (wxGetKeyState(WXK_ALT) || 
		wxGetKeyState(WXK_COMMAND) ||
		wxGetKeyState(WXK_UP) || 
		wxGetKeyState(WXK_DOWN) || 
		wxGetKeyState(WXK_LEFT) || 
		wxGetKeyState(WXK_RIGHT) || 
		wxGetKeyState(WXK_HOME) || 
		wxGetKeyState(WXK_END) ||
		wxGetKeyState(WXK_PAGEUP) || 
		wxGetKeyState(WXK_PAGEDOWN) || 
		wxGetKeyState(WXK_NUMPAD_UP) ||
		wxGetKeyState(WXK_NUMPAD_DOWN) ||
		wxGetKeyState(WXK_NUMPAD_LEFT) ||
		wxGetKeyState(WXK_NUMPAD_RIGHT) ||
		wxGetKeyState(WXK_NUMPAD_PAGEDOWN) ||
		wxGetKeyState(WXK_NUMPAD_PAGEUP) ||
		wxGetKeyState(WXK_NUMPAD_HOME) ||
		wxGetKeyState(WXK_NUMPAD_END) 
		)
	event.Skip();
  }

void MyListCtrl::OnListKeyDown(wxListEvent& event)
{
	if (!wxGetKeyState(WXK_COMMAND) && !wxGetKeyState(WXK_ALT))
 {
	switch ( event.GetKeyCode())
    {
		case WXK_DELETE:
		case WXK_NUMPAD_DELETE:
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_DELETE);
                OnDeleteTransaction(evt);
            }
            break;

        case 'V':
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKVOID);
                OnMarkTransaction(evt);
            }
            break;

        case 'R':
            {
                wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKRECONCILED);
                OnMarkTransaction(evt);
            }
            break;

        case 'U':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKUNRECONCILED);
                 OnMarkTransaction(evt);
            }
            break;

        case 'F':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARK_ADD_FLAG_FOLLOWUP);
                 OnMarkTransaction(evt);
            }
            break;
		case 'D':
            {
                 wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, MENU_TREEPOPUP_MARKDUPLICATE);
                 OnMarkTransaction(evt);
			}
            break;
	
	}
	}
	event.Skip();
	
}
Attachments
HKEYS.zip
(11.05 KiB) Downloaded 405 times

elliswr
MMEX Developer
Posts: 102
Joined: Tue May 05, 2009 8:21 am
Are you a spam bot?: No
Location: Granbury, TX
Contact:

Re: Checking panel hot key improvement (MS Windows)

Post by elliswr »

Yep, that breaks hotkeys on Mac. The only thing that allows hotkeys to work is when I edit out the OnChar method.

Nikolay
MMEX Developer
Posts: 1384
Joined: Sat Dec 06, 2008 2:27 pm
Are you a spam bot?: No
Location: Sankt-Petersburg, Russia

Re: Checking panel hot key improvement (MS Windows)

Post by Nikolay »

And if we make a bit change in the mmcheckingpanel.cpp:

Code: Select all

    EVT_MENU(MENU_ON_COPY_TRANSACTION, MyListCtrl::OnCopy) 
    EVT_MENU(MENU_ON_PASTE_TRANSACTION, MyListCtrl::OnPaste) 
    EVT_MENU(MENU_ON_NEW_TRANSACTION, MyListCtrl::OnNewTransaction) 
  
#if defined (__WXMSW__)
	EVT_CHAR(MyListCtrl::OnChar)
#endif
    EVT_LIST_KEY_DOWN(ID_PANEL_CHECKING_LISTCTRL_ACCT, MyListCtrl::OnListKeyDown)
???
PS Please, say YES :)

elliswr
MMEX Developer
Posts: 102
Joined: Tue May 05, 2009 8:21 am
Are you a spam bot?: No
Location: Granbury, TX
Contact:

Re: Checking panel hot key improvement (MS Windows)

Post by elliswr »

Nik,

So, you'll never believe this, but I got your code to work just fine on Mac without #if and #endif statements. You see, I broke the golden rule of troubleshooting and changed more than one thing at a time. If I edit out the OnChar method without changing anything else, keystrokes worked. So I jumped to the conclusion that it was your code that was the problem. At the same time, I was battling with the lack of response to clicks that the same wxlistctrl was giving me in mmcheckingpanel.

I found out how to implement the generic version of wxlistctrl and the clicks worked (in other words, native wxlistctrl is broken on Mac in 2.8.10). When I updated to the new source from the branch 0.9.5, I forgot to re-imlement the generic version of wxlistctrl, and thus your code wouldn't work no matter what I did. Sorry for all this, it now works on Windows and Mac.

Lets commit that code.

Wes

Nikolay
MMEX Developer
Posts: 1384
Joined: Sat Dec 06, 2008 2:27 pm
Are you a spam bot?: No
Location: Sankt-Petersburg, Russia

Re: Checking panel hot key improvement (MS Windows)

Post by Nikolay »

Hi wes,

Good news, thanks.

Regards,
Nikolay

Nikolay
MMEX Developer
Posts: 1384
Joined: Sat Dec 06, 2008 2:27 pm
Are you a spam bot?: No
Location: Sankt-Petersburg, Russia

Re: Checking panel hot key improvement (MS Windows)

Post by Nikolay »

Updated to SVN revision 479.
Attachments
cp_hotkeys.zip
(1.08 KiB) Downloaded 361 times

Post Reply