//////////////////////////////////////////////////////////////////////
// This file was auto-generated by codelite's wxCrafter Plugin
// wxCrafter project file: quickfindbarbase.wxcp
// Do not modify this file by hand!
//////////////////////////////////////////////////////////////////////

#ifndef _CODELITE_LITEEDITOR_QUICKFINDBARBASE_BASE_CLASSES_H
#define _CODELITE_LITEEDITOR_QUICKFINDBARBASE_BASE_CLASSES_H

// clang-format off
#include <wx/settings.h>
#include <wx/xrc/xmlres.h>
#include <wx/xrc/xh_bmp.h>
#include <wx/panel.h>
#include <wx/artprov.h>
#include <wx/sizer.h>
#include <wx/toolbar.h>
#include "clToolBar.h"
#include <wx/textctrl.h>
#include "clThemedTextCtrl.hpp"
#include <wx/button.h>
#include "clThemedButton.h"
#include <wx/popupwin.h>
#include <wx/checkbox.h>
#include <wx/imaglist.h>
#include <wx/bitmap.h>
#include <map>
#include <wx/icon.h>
#if wxVERSION_NUMBER >= 2900
#include <wx/persist.h>
#include <wx/persist/toplevel.h>
#include <wx/persist/bookctrl.h>
#include <wx/persist/treebook.h>
#endif

#ifdef WXC_FROM_DIP
#undef WXC_FROM_DIP
#endif
#if wxVERSION_NUMBER >= 3100
#define WXC_FROM_DIP(x) wxWindow::FromDIP(x, NULL)
#else
#define WXC_FROM_DIP(x) x
#endif

// clang-format on

class QuickFindBarBase : public wxPanel
{
public:
    enum {
        wxID_FIND_ALL = 1001,
    };

protected:
    clToolBar* m_toolbar;
    clThemedTextCtrl* m_textCtrlFind;
    clThemedButton* m_buttonFind;
    clThemedButton* m_buttonFindPrev;
    clThemedButton* m_buttonFindAll;
    clThemedTextCtrl* m_textCtrlReplace;
    clThemedButton* m_buttonReplace;
    clThemedButton* m_buttonReplaceAll;

protected:
    virtual void OnEnter(wxCommandEvent& event) { event.Skip(); }
    virtual void OnText(wxCommandEvent& event) { event.Skip(); }
    virtual void OnKeyDown(wxKeyEvent& event) { event.Skip(); }
    virtual void OnFind(wxCommandEvent& event) { event.Skip(); }
    virtual void OnFindUI(wxUpdateUIEvent& event) { event.Skip(); }
    virtual void OnButtonKeyDown(wxKeyEvent& event) { event.Skip(); }
    virtual void OnFindPrev(wxCommandEvent& event) { event.Skip(); }
    virtual void OnFindPrevUI(wxUpdateUIEvent& event) { event.Skip(); }
    virtual void OnFindAll(wxCommandEvent& event) { event.Skip(); }
    virtual void OnFindAllUI(wxUpdateUIEvent& event) { event.Skip(); }
    virtual void OnReplaceTextUpdated(wxCommandEvent& event) { event.Skip(); }
    virtual void OnReplaceTextEnter(wxCommandEvent& event) { event.Skip(); }
    virtual void OnReplaceKeyDown(wxKeyEvent& event) { event.Skip(); }
    virtual void OnReplace(wxCommandEvent& event) { event.Skip(); }
    virtual void OnReplaceUI(wxUpdateUIEvent& event) { event.Skip(); }
    virtual void OnReplaceAll(wxCommandEvent& event) { event.Skip(); }
    virtual void OnReplaceAllUI(wxUpdateUIEvent& event) { event.Skip(); }

public:
    clToolBar* GetToolbar() { return m_toolbar; }
    clThemedTextCtrl* GetTextCtrlFind() { return m_textCtrlFind; }
    clThemedButton* GetButtonFind() { return m_buttonFind; }
    clThemedButton* GetButtonFindPrev() { return m_buttonFindPrev; }
    clThemedButton* GetButtonFindAll() { return m_buttonFindAll; }
    clThemedTextCtrl* GetTextCtrlReplace() { return m_textCtrlReplace; }
    clThemedButton* GetButtonReplace() { return m_buttonReplace; }
    clThemedButton* GetButtonReplaceAll() { return m_buttonReplaceAll; }
    QuickFindBarBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
                     const wxSize& size = wxSize(-1, -1), long style = wxTAB_TRAVERSAL | wxTRANSPARENT_WINDOW);
    virtual ~QuickFindBarBase();
};

class QuickFindBarOptionsMenuBase : public wxPopupTransientWindow
{
protected:
    wxPanel* m_panel71;
    wxCheckBox* m_checkBoxCase;
    wxCheckBox* m_checkBoxRegex;
    wxCheckBox* m_checkBoxWord;
    wxCheckBox* m_checkBoxWildcard;
    wxCheckBox* m_checkBoxMultipleSelections;

protected:
    virtual void OnCheckBoxRegex(wxCommandEvent& event) { event.Skip(); }
    virtual void OnCheckWild(wxCommandEvent& event) { event.Skip(); }

public:
    wxCheckBox* GetCheckBoxCase() { return m_checkBoxCase; }
    wxCheckBox* GetCheckBoxRegex() { return m_checkBoxRegex; }
    wxCheckBox* GetCheckBoxWord() { return m_checkBoxWord; }
    wxCheckBox* GetCheckBoxWildcard() { return m_checkBoxWildcard; }
    wxCheckBox* GetCheckBoxMultipleSelections() { return m_checkBoxMultipleSelections; }
    wxPanel* GetPanel71() { return m_panel71; }
    QuickFindBarOptionsMenuBase(wxWindow* parent, long style = wxBORDER_NONE);
    virtual ~QuickFindBarOptionsMenuBase();
};

class QuickFindBarImages : public wxImageList
{
protected:
    // Maintain a map of all bitmaps representd by their name
    std::map<wxString, wxBitmap> m_bitmaps;
    // The requested image resolution (can be one of @2x, @1.5x, @1.25x or an empty string (the default)
    wxString m_resolution;
    int m_imagesWidth;
    int m_imagesHeight;

protected:
public:
    QuickFindBarImages();
    const wxBitmap& Bitmap(const wxString& name) const
    {
        if(!m_bitmaps.count(name + m_resolution))
            return wxNullBitmap;
        return m_bitmaps.find(name + m_resolution)->second;
    }

    void SetBitmapResolution(const wxString& res = wxEmptyString) { m_resolution = res; }

    virtual ~QuickFindBarImages();
};

#endif
