From: John L. <jr...@us...> - 2011-06-10 03:08:10
|
Update of /cvsroot/wxlua/wxLua/modules/wxluadebug/src In directory vz-cvs-4.sog:/tmp/cvs-serv31813/modules/wxluadebug/src Modified Files: wxlstack.cpp Log Message: Allow copying whole row to the clipboard Index: wxlstack.cpp =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxluadebug/src/wxlstack.cpp,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** wxlstack.cpp 22 Dec 2009 22:57:02 -0000 1.36 --- wxlstack.cpp 10 Jun 2011 03:08:06 -0000 1.37 *************** *** 146,150 **** if (!wxDialog::Create(parent, id, title, pos, size, ! wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL | wxMAXIMIZE_BOX | wxRESIZE_BORDER)) return false; --- 146,151 ---- if (!wxDialog::Create(parent, id, title, pos, size, ! wxDEFAULT_DIALOG_STYLE | wxMAXIMIZE_BOX | wxMINIMIZE_BOX | wxRESIZE_BORDER, ! wxT("wxLuaStackDialog"))) return false; *************** *** 284,288 **** m_listCtrl = new wxLuaStackListCtrl(this, m_splitterWin, ID_WXLUA_STACK_LISTCTRL, wxDefaultPosition, wxDefaultSize, ! wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_HRULES|wxLC_VRULES|wxLC_VIRTUAL ); m_listCtrl->SetImageList(m_imageList, wxIMAGE_LIST_SMALL); --- 285,289 ---- m_listCtrl = new wxLuaStackListCtrl(this, m_splitterWin, ID_WXLUA_STACK_LISTCTRL, wxDefaultPosition, wxDefaultSize, ! wxLC_REPORT|wxLC_HRULES|wxLC_VRULES|wxLC_VIRTUAL ); // wxLC_SINGLE_SEL m_listCtrl->SetImageList(m_imageList, wxIMAGE_LIST_SMALL); *************** *** 307,315 **** m_listMenu = new wxMenu(wxEmptyString, 0); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY0, wxT("Copy name"), wxT("Copy name to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY1, wxT("Copy level"), wxT("Copy level to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY2, wxT("Copy key type"), wxT("Copy key type to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY3, wxT("Copy value type"), wxT("Copy value type to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY4, wxT("Copy value"), wxT("Copy value to clipboard"), wxITEM_NORMAL); // ----------------------------------------------------------------------- --- 308,317 ---- m_listMenu = new wxMenu(wxEmptyString, 0); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_ROW, wxT("Copy row"), wxT("Copy whole row clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_COL0, wxT("Copy name"), wxT("Copy name to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_COL1, wxT("Copy level"), wxT("Copy level to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_COL2, wxT("Copy key type"), wxT("Copy key type to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_COL3, wxT("Copy value type"), wxT("Copy value type to clipboard"), wxITEM_NORMAL); ! m_listMenu->Append(ID_WXLUA_STACK_LISTMENU_COPY_COL4, wxT("Copy value"), wxT("Copy value to clipboard"), wxITEM_NORMAL); // ----------------------------------------------------------------------- *************** *** 329,333 **** Maximize(); - EnumerateStack(); --- 331,334 ---- *************** *** 821,839 **** m_findMenu->Check(ID_WXLUA_STACK_FINDMENU_ALL, all_checked); } ! else if ((id >= ID_WXLUA_STACK_LISTMENU_COPY0) && (id <= ID_WXLUA_STACK_LISTMENU_COPY4)) { long list_item = m_listCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); ! // they must select an item ! if (list_item >= 0) { ! wxString s(GetItemText(list_item, id - ID_WXLUA_STACK_LISTMENU_COPY0, true)); ! ! if (wxTheClipboard->Open()) { ! // These data objects are held by the clipboard, ! // so do not delete them in the app. ! wxTheClipboard->SetData( new wxTextDataObject(s) ); ! wxTheClipboard->Close(); } } } --- 822,856 ---- m_findMenu->Check(ID_WXLUA_STACK_FINDMENU_ALL, all_checked); } ! else if ((id >= ID_WXLUA_STACK_LISTMENU_COPY_ROW) && (id <= ID_WXLUA_STACK_LISTMENU_COPY_COL4)) { + wxString s; + long list_item = m_listCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); ! // iterate all selected items, separated by \n ! while (list_item >= 0) { ! if (!s.IsEmpty()) s += wxT("\n"); ! ! if (id == ID_WXLUA_STACK_LISTMENU_COPY_ROW) { ! s += GetItemText(list_item, 0, true); ! ! for (int i = 1; i < LIST_COL__MAX; ++i) ! s += wxT("\t") + GetItemText(list_item, i, true); ! } ! else // ((id >= ID_WXLUA_STACK_LISTMENU_COPY_COL0) && (id <= ID_WXLUA_STACK_LISTMENU_COPY_COL4)) ! { ! s += GetItemText(list_item, id - ID_WXLUA_STACK_LISTMENU_COPY_COL0, true); } + + list_item = m_listCtrl->GetNextItem(list_item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + } + + if (wxTheClipboard->Open()) + { + // These data objects are held by the clipboard, + // so do not delete them in the app. + wxTheClipboard->SetData( new wxTextDataObject(s) ); + wxTheClipboard->Close(); } } |