⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finddlg.cpp

📁 ecos实时嵌入式操作系统
💻 CPP
字号:
//####COPYRIGHTBEGIN####//// ----------------------------------------------------------------------------// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.//// This program is part of the eCos host tools.//// This program is free software; you can redistribute it and/or modify it// under the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 of the License, or (at your option)// any later version.//// This program is distributed in the hope that it will be useful, but WITHOUT// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for// more details.//// You should have received a copy of the GNU General Public License along with// this program; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.//// ----------------------------------------------------------------------------////####COPYRIGHTEND####// appsettings.cpp :////===========================================================================//#####DESCRIPTIONBEGIN####//// Author(s):   julians// Contact(s):  julians// Date:        2000/09/11// Version:     $Id: finddlg.cpp,v 1.5 2002/02/28 18:30:35 julians Exp $// Purpose:// Description: Implementation file for ecFindDialog// Requires:// Provides:// See also:// Known bugs:// Usage:////####DESCRIPTIONEND####////===========================================================================#ifdef __GNUG__    #pragma implementation "finddlg.cpp"#endif#include "ecpch.h"#ifdef __BORLANDC__    #pragma hdrstop#endif#include "wx/cshelp.h"#include "wx/valgen.h"#include "finddlg.h"#include "configtool.h"#include "configtooldoc.h"#include "configtoolview.h"#include "configtree.h"#include "mainwin.h"#include "appsettings.h"//----------------------------------------------------------------------------// ecFindDialog//----------------------------------------------------------------------------BEGIN_EVENT_TABLE(ecFindDialog,wxDialog)    EVT_BUTTON(ecID_FIND_DIALOG_NEXT, ecFindDialog::OnFindNext)    EVT_CLOSE(ecFindDialog::OnCloseWindow)    EVT_BUTTON(wxID_CANCEL, ecFindDialog::OnCancel)END_EVENT_TABLE()ecFindDialog::ecFindDialog( wxWindow *parent, wxWindowID id, const wxString &title,    const wxPoint &position, const wxSize& size, long style ) :    wxDialog( ){    m_directionSelection = 1;    SetExtraStyle(wxDIALOG_EX_CONTEXTHELP);    wxDialog::Create( parent, id, title, position, size, style );    AddControls(this);    if (wxGetApp().GetSettings().m_findDialogPos.x == -1 && wxGetApp().GetSettings().m_findDialogPos.y == -1)        Centre(wxBOTH);    else        Move(wxGetApp().GetSettings().m_findDialogPos);}bool ecFindDialog::AddControls(wxWindow* parent){    //// Start of sizer-based control creation    wxSizer *item0 = new wxBoxSizer( wxHORIZONTAL );    wxSizer *item1 = new wxBoxSizer( wxVERTICAL );    wxSizer *item2 = new wxBoxSizer( wxHORIZONTAL );    wxStaticText *item3 = new wxStaticText( parent, wxID_STATIC, _(" Fi&nd what:"), wxDefaultPosition, wxDefaultSize, 0 );    item2->Add( item3, 0, wxALIGN_CENTRE|wxLEFT|wxTOP|wxBOTTOM, 5 );    wxTextCtrl *item4 = new wxTextCtrl( parent, ecID_FIND_DIALOG_WHAT, _(""), wxDefaultPosition, wxSize(200,-1), 0 );    item2->Add( item4, 1, wxALIGN_CENTRE|wxALL, 5 );    item1->Add( item2, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 0 );    wxSizer *item5 = new wxBoxSizer( wxHORIZONTAL );    wxSizer *item6 = new wxBoxSizer( wxVERTICAL );    wxCheckBox *item7 = new wxCheckBox( parent, ecID_FIND_DIALOG_MATCH_WHOLE, _("Match &whole word only"), wxDefaultPosition, wxDefaultSize, 0 );    item6->Add( item7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );    wxCheckBox *item8 = new wxCheckBox( parent, ecID_FIND_DIALOG_MATCH_CASE, _("Match &case"), wxDefaultPosition, wxDefaultSize, 0 );    item6->Add( item8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );    item5->Add( item6, 0, wxALIGN_CENTRE|wxALL, 5 );    wxString strs9[] =     {        _("&Up"),         _("&Down")    };    wxRadioBox *item9 = new wxRadioBox( parent, ecID_FIND_DIALOG_DIRECTION, _("Direction"), wxDefaultPosition, wxDefaultSize, 2, strs9, 1, wxRA_SPECIFY_ROWS );    item5->Add( item9, 0, wxALIGN_CENTRE|wxALL, 5 );    item1->Add( item5, 0, wxALIGN_CENTRE|wxRIGHT, 5 );    wxSizer *item10 = new wxBoxSizer( wxHORIZONTAL );    wxStaticText *item11 = new wxStaticText( parent, wxID_STATIC, _("&Search in:"), wxDefaultPosition, wxDefaultSize, 0 );    item10->Add( item11, 0, wxALIGN_CENTRE|wxALL, 5 );    wxString strs12[] =     {        _("Macro names"),         _("Item names"),         _("Short descriptions"),         _("Current Values"),         _("Default Values")    };    wxChoice *item12 = new wxChoice( parent, ecID_FIND_DIALOG_SEARCH_IN, wxDefaultPosition, wxSize(130,-1), 5, strs12, 0 );    item10->Add( item12, 0, wxALIGN_CENTRE|wxALL, 5 );    item1->Add( item10, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );    item0->Add( item1, 0, wxALIGN_CENTRE|wxTOP|wxBOTTOM, 5 );    wxSizer *item13 = new wxBoxSizer( wxVERTICAL );    wxButton *item14 = new wxButton( parent, ecID_FIND_DIALOG_NEXT, _("&Find Next"), wxDefaultPosition, wxDefaultSize, 0 );    item14->SetDefault();    item13->Add( item14, 0, wxALIGN_CENTRE|wxALL, 5 );    wxButton *item15 = new wxButton( parent, wxID_CANCEL, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 );    item13->Add( item15, 0, wxALIGN_CENTRE|wxALL, 5 );#ifdef __WXGTK__    wxButton *contextButton = new wxContextHelpButton( parent );    item13->Add( contextButton, 0, wxALIGN_CENTRE|wxALL, 5 );#endif    item0->Add( item13, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxTOP|wxBOTTOM, 5 );    FindWindow(ecID_FIND_DIALOG_WHAT)->SetFocus();    // Add validators    FindWindow(ecID_FIND_DIALOG_WHAT)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_findText));    FindWindow(ecID_FIND_DIALOG_MATCH_WHOLE)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_findMatchWholeWord));    FindWindow(ecID_FIND_DIALOG_MATCH_CASE)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_findMatchCase));    FindWindow(ecID_FIND_DIALOG_SEARCH_IN)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_findSearchWhat));    FindWindow(ecID_FIND_DIALOG_DIRECTION)->SetValidator(wxGenericValidator(& m_directionSelection));    // Add help text    FindWindow(ecID_FIND_DIALOG_WHAT)->SetHelpText(_("Enter your search text here."));    FindWindow(ecID_FIND_DIALOG_MATCH_WHOLE)->SetHelpText(_("Check to match whole words, clear to match parts of words."));    FindWindow(ecID_FIND_DIALOG_MATCH_CASE)->SetHelpText(_("Check if you want upper and lower case to be significant, clear otherwise."));    FindWindow(ecID_FIND_DIALOG_SEARCH_IN)->SetHelpText(_("Choose the category for your search."));    FindWindow(ecID_FIND_DIALOG_DIRECTION)->SetHelpText(_("Choose the direction of your search."));    FindWindow(ecID_FIND_DIALOG_NEXT)->SetHelpText(_("Click Find Next to search for the next match."));    FindWindow(wxID_CANCEL)->SetHelpText(_("Click Close to close the dialog."));    parent->SetAutoLayout( TRUE );    parent->SetSizer( item0 );    parent->Layout();    item0->Fit( parent );    item0->SetSizeHints( parent );    return TRUE;}bool ecFindDialog::TransferDataToWindow(){    // Convert to radiobox selection index from bool    m_directionSelection = wxGetApp().GetSettings().m_findDirection ? 1 : 0 ;        wxWindow::TransferDataToWindow();    return TRUE;}bool ecFindDialog::TransferDataFromWindow(){    wxWindow::TransferDataFromWindow();    // Convert from radiobox selection index to bool    wxGetApp().GetSettings().m_findDirection = (m_directionSelection == 1);        return TRUE;}void ecFindDialog::OnFindNext(wxCommandEvent& event){    if (!TransferDataFromWindow())        return;    if (!wxGetApp().GetConfigToolDoc())        return;    ecConfigToolView *pControlView = (ecConfigToolView*) wxGetApp().GetConfigToolDoc()->GetFirstView();    ecConfigItem* item = pControlView->DoFind(wxGetApp().GetSettings().m_findText, this);    if (item)    {        // Is the find window on top of the item?        wxRect rect1, rect2;        if (wxGetApp().GetTreeCtrl()->GetBoundingRect(item->GetTreeItem(), rect1))        {            wxPoint topLeft(rect1.x, rect1.y);            wxPoint bottomRight(rect1.GetRight(), rect1.GetBottom());            topLeft = wxGetApp().GetTreeCtrl()->ClientToScreen(topLeft);            bottomRight = wxGetApp().GetTreeCtrl()->ClientToScreen(bottomRight);            rect2 = GetRect(); // screen coords            if (rect2.Inside(topLeft) || rect2.Inside(bottomRight))            {                Move(wxPoint(topLeft.x + rect1.width, rect2.y));            }        }    }}void ecFindDialog::OnCloseWindow(wxCloseEvent& event){    wxGetApp().GetSettings().m_findDialogPos = GetPosition();    wxGetApp().GetMainFrame()->m_findDialog = NULL;    event.Skip();}void ecFindDialog::OnCancel(wxCommandEvent& event){    wxGetApp().GetSettings().m_findDialogPos = GetPosition();    wxGetApp().GetMainFrame()->m_findDialog = NULL;    event.Skip();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -