14 changed files with 1334 additions and 26 deletions
-
2common/CMakeLists.txt
-
264common/dialogs/eda_reorderable_list_dialog.cpp
-
123common/dialogs/eda_reorderable_list_dialog_base.cpp
-
695common/dialogs/eda_reorderable_list_dialog_base.fbp
-
69common/dialogs/eda_reorderable_list_dialog_base.h
-
60common/lib_tree_model_adapter.cpp
-
2common/settings/app_settings.cpp
-
4common/tool/actions.cpp
-
49common/widgets/lib_tree.cpp
-
67include/dialogs/eda_reorderable_list_dialog.h
-
16include/lib_tree_model_adapter.h
-
1include/tool/actions.h
-
6include/widgets/lib_tree.h
-
2include/widgets/widget_hotkey_list.h
@ -0,0 +1,264 @@ |
|||
/*
|
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. |
|||
* |
|||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#include <algorithm>
|
|||
#include <bitmaps.h>
|
|||
#include <macros.h>
|
|||
#include <dialogs/eda_reorderable_list_dialog.h>
|
|||
|
|||
|
|||
static int DEFAULT_SINGLE_COL_WIDTH = 260; |
|||
|
|||
|
|||
EDA_REORDERABLE_LIST_DIALOG::EDA_REORDERABLE_LIST_DIALOG( wxWindow* aParent, const wxString& aTitle, |
|||
const std::vector<wxString>& aAllItems, |
|||
const std::vector<wxString>& aEnabledItems ) : |
|||
EDA_REORDERABLE_LIST_DIALOG_BASE( aParent, wxID_ANY, aTitle ), |
|||
m_availableItems( aAllItems ), |
|||
m_enabledItems( aEnabledItems ), |
|||
m_selectedAvailable( 0 ), |
|||
m_selectedEnabled( 0 ) |
|||
{ |
|||
m_btnUp->SetBitmap( KiBitmap( BITMAPS::small_up ) ); |
|||
m_btnDown->SetBitmap( KiBitmap( BITMAPS::small_down ) ); |
|||
|
|||
// DIALOG_SHIM needs a unique hash_key because classname is not sufficient
|
|||
// because so many dialogs share this same class, with different numbers of
|
|||
// columns, different column names, and column widths.
|
|||
m_hash_key = TO_UTF8( aTitle ); |
|||
|
|||
m_availableListBox->InsertColumn( 0, wxEmptyString, wxLIST_FORMAT_LEFT, |
|||
DEFAULT_SINGLE_COL_WIDTH ); |
|||
m_enabledListBox->InsertColumn( 0, wxEmptyString, wxLIST_FORMAT_LEFT, |
|||
DEFAULT_SINGLE_COL_WIDTH ); |
|||
|
|||
updateItems(); |
|||
|
|||
SetupStandardButtons(); |
|||
|
|||
// this line fixes an issue on Linux Ubuntu using Unity (dialog not shown),
|
|||
// and works fine on all systems
|
|||
GetSizer()->Fit( this ); |
|||
|
|||
Centre(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::updateItems() |
|||
{ |
|||
m_availableListBox->DeleteAllItems(); |
|||
m_enabledListBox->DeleteAllItems(); |
|||
|
|||
std::set<wxString> enabledSet; |
|||
|
|||
for( size_t idx = 0; idx < m_enabledItems.size(); ++idx ) |
|||
{ |
|||
wxListItem info; |
|||
info.m_itemId = idx; |
|||
info.m_col = 0; |
|||
info.m_text = m_enabledItems[idx]; |
|||
info.m_width = DEFAULT_SINGLE_COL_WIDTH; |
|||
info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_WIDTH; |
|||
|
|||
m_enabledListBox->InsertItem( info ); |
|||
|
|||
if( m_selectedEnabled == static_cast<long>( idx ) ) |
|||
m_enabledListBox->SetItemState( idx, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); |
|||
|
|||
enabledSet.insert( m_enabledItems[idx] ); |
|||
} |
|||
|
|||
m_availableItems.erase( std::remove_if( m_availableItems.begin(), m_availableItems.end(), |
|||
[&]( const wxString& aItem ) -> bool |
|||
{ |
|||
return enabledSet.count( aItem ); |
|||
} ), |
|||
m_availableItems.end() ); |
|||
|
|||
for( size_t idx = 0; idx < m_availableItems.size(); ++idx ) |
|||
{ |
|||
wxListItem info; |
|||
info.m_itemId = idx; |
|||
info.m_col = 0; |
|||
info.m_text = m_availableItems[idx]; |
|||
info.m_width = DEFAULT_SINGLE_COL_WIDTH; |
|||
info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_WIDTH; |
|||
|
|||
m_availableListBox->InsertItem( info ); |
|||
|
|||
if( m_selectedAvailable == static_cast<long>( idx ) ) |
|||
m_availableListBox->SetItemState( idx, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); |
|||
} |
|||
|
|||
if( !m_availableItems.empty() ) |
|||
m_availableListBox->EnsureVisible( m_selectedAvailable ); |
|||
|
|||
if( !m_enabledItems.empty() ) |
|||
m_enabledListBox->EnsureVisible( m_selectedEnabled ); |
|||
|
|||
m_btnAdd->Enable( !m_availableItems.empty() ); |
|||
m_btnRemove->Enable( !m_enabledItems.empty() ); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onAddItem( wxCommandEvent& aEvent ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_availableListBox, info ) ) |
|||
return; |
|||
|
|||
m_availableItems.erase( m_availableItems.begin() + info.m_itemId ); |
|||
m_availableListBox->DeleteItem( m_selectedAvailable ); |
|||
|
|||
long pos = std::min( m_selectedEnabled + 1, static_cast<long>( m_enabledItems.size() ) ); |
|||
|
|||
info.m_itemId = pos; |
|||
info.m_mask = wxLIST_MASK_TEXT; |
|||
|
|||
m_enabledItems.insert( m_enabledItems.begin() + pos, info.m_text ); |
|||
m_enabledListBox->InsertItem( info ); |
|||
|
|||
updateButtons(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onRemoveItem( wxCommandEvent& aEvent ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_enabledListBox, info ) || info.m_itemId == 0 ) |
|||
return; |
|||
|
|||
m_enabledItems.erase( m_enabledItems.begin() + info.m_itemId ); |
|||
m_enabledListBox->DeleteItem( m_selectedEnabled ); |
|||
|
|||
m_selectedEnabled = std::min( m_selectedEnabled, |
|||
static_cast<long>( m_enabledItems.size() - 1 ) ); |
|||
|
|||
m_enabledListBox->SetItemState( m_selectedEnabled, wxLIST_STATE_SELECTED, |
|||
wxLIST_STATE_SELECTED ); |
|||
|
|||
long pos = std::max( long( 0 ), m_selectedAvailable ); |
|||
info.m_itemId = pos; |
|||
|
|||
m_availableItems.insert( m_availableItems.begin() + pos, info.m_text ); |
|||
m_availableListBox->InsertItem( info ); |
|||
|
|||
updateButtons(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onMoveUp( wxCommandEvent& aEvent ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_enabledListBox, info ) || info.m_itemId == 0 ) |
|||
return; |
|||
|
|||
auto current = m_enabledItems.begin() + info.m_itemId; |
|||
auto prev = m_enabledItems.begin() + info.m_itemId - 1; |
|||
|
|||
std::iter_swap( current, prev ); |
|||
|
|||
m_selectedEnabled--; |
|||
|
|||
updateButtons(); |
|||
updateItems(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onMoveDown( wxCommandEvent& aEvent ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_enabledListBox, info ) |
|||
|| info.m_itemId == static_cast<long>( m_enabledItems.size() ) - 1 ) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
auto current = m_enabledItems.begin() + info.m_itemId; |
|||
auto prev = m_enabledItems.begin() + info.m_itemId + 1; |
|||
|
|||
std::iter_swap( current, prev ); |
|||
|
|||
m_selectedEnabled++; |
|||
|
|||
updateButtons(); |
|||
updateItems(); |
|||
} |
|||
|
|||
|
|||
bool EDA_REORDERABLE_LIST_DIALOG::getSelectedItem( wxListCtrl* aList, wxListItem& aInfo ) |
|||
{ |
|||
long item = aList->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); |
|||
|
|||
if( item < 0 ) |
|||
return false; |
|||
|
|||
aInfo.m_mask = wxLIST_MASK_DATA | wxLIST_MASK_STATE | wxLIST_MASK_TEXT; |
|||
aInfo.m_itemId = item; |
|||
aInfo.m_col = 0; |
|||
|
|||
if( !aList->GetItem( aInfo ) ) |
|||
return false; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onEnabledListItemSelected( wxListEvent& event ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_enabledListBox, info ) ) |
|||
{ |
|||
m_selectedEnabled = -1; |
|||
return; |
|||
} |
|||
|
|||
m_selectedEnabled = info.m_itemId; |
|||
updateButtons(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::onAvailableListItemSelected( wxListEvent& event ) |
|||
{ |
|||
wxListItem info; |
|||
|
|||
if( !getSelectedItem( m_availableListBox, info ) ) |
|||
{ |
|||
m_selectedAvailable = -1; |
|||
return; |
|||
} |
|||
|
|||
m_selectedAvailable = info.m_itemId; |
|||
updateButtons(); |
|||
} |
|||
|
|||
|
|||
void EDA_REORDERABLE_LIST_DIALOG::updateButtons() |
|||
{ |
|||
m_btnUp->Enable( !m_enabledItems.empty() && m_selectedEnabled > 0 ); |
|||
m_btnDown->Enable( !m_enabledItems.empty() && m_selectedEnabled > 0 && |
|||
m_selectedEnabled < static_cast<int>( m_enabledItems.size() ) - 1 ); |
|||
m_btnAdd->Enable( !m_availableItems.empty() && m_selectedAvailable >= 0 ); |
|||
m_btnRemove->Enable( !m_enabledItems.empty() && m_selectedEnabled > 0 ); |
|||
} |
@ -0,0 +1,123 @@ |
|||
///////////////////////////////////////////////////////////////////////////
|
|||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
|||
// http://www.wxformbuilder.org/
|
|||
//
|
|||
// PLEASE DO *NOT* EDIT THIS FILE!
|
|||
///////////////////////////////////////////////////////////////////////////
|
|||
|
|||
#include "eda_reorderable_list_dialog_base.h"
|
|||
|
|||
///////////////////////////////////////////////////////////////////////////
|
|||
|
|||
EDA_REORDERABLE_LIST_DIALOG_BASE::EDA_REORDERABLE_LIST_DIALOG_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) |
|||
{ |
|||
this->SetSizeHints( wxDefaultSize, wxDefaultSize ); |
|||
|
|||
wxBoxSizer* bSizerMain; |
|||
bSizerMain = new wxBoxSizer( wxVERTICAL ); |
|||
|
|||
wxBoxSizer* bTop; |
|||
bTop = new wxBoxSizer( wxHORIZONTAL ); |
|||
|
|||
wxBoxSizer* bLeftSide; |
|||
bLeftSide = new wxBoxSizer( wxVERTICAL ); |
|||
|
|||
m_availableListLabel = new wxStaticText( this, wxID_ANY, _("Available:"), wxDefaultPosition, wxDefaultSize, 0 ); |
|||
m_availableListLabel->Wrap( -1 ); |
|||
bLeftSide->Add( m_availableListLabel, 0, wxALL, 5 ); |
|||
|
|||
m_availableListBox = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_NO_HEADER|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES|wxBORDER_SIMPLE|wxVSCROLL ); |
|||
m_availableListBox->SetMinSize( wxSize( 280,150 ) ); |
|||
|
|||
bLeftSide->Add( m_availableListBox, 0, wxALL, 5 ); |
|||
|
|||
|
|||
bTop->Add( bLeftSide, 1, wxEXPAND, 5 ); |
|||
|
|||
wxBoxSizer* bMiddleButtons; |
|||
bMiddleButtons = new wxBoxSizer( wxVERTICAL ); |
|||
|
|||
m_btnAdd = new wxButton( this, wxID_ANY, _(">>"), wxDefaultPosition, wxSize( 48,-1 ), 0 ); |
|||
bMiddleButtons->Add( m_btnAdd, 0, wxALL, 5 ); |
|||
|
|||
m_btnRemove = new wxButton( this, wxID_ANY, _("<<"), wxDefaultPosition, wxSize( 48,-1 ), 0 ); |
|||
bMiddleButtons->Add( m_btnRemove, 0, wxALL, 5 ); |
|||
|
|||
|
|||
bTop->Add( bMiddleButtons, 0, wxALIGN_CENTER_VERTICAL, 5 ); |
|||
|
|||
wxBoxSizer* bRightSide; |
|||
bRightSide = new wxBoxSizer( wxVERTICAL ); |
|||
|
|||
m_enabledListLabel = new wxStaticText( this, wxID_ANY, _("Enabled:"), wxDefaultPosition, wxDefaultSize, 0 ); |
|||
m_enabledListLabel->Wrap( -1 ); |
|||
bRightSide->Add( m_enabledListLabel, 0, wxALL, 5 ); |
|||
|
|||
m_enabledListBox = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_NO_HEADER|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES|wxBORDER_SIMPLE|wxVSCROLL ); |
|||
m_enabledListBox->SetMinSize( wxSize( 280,150 ) ); |
|||
|
|||
bRightSide->Add( m_enabledListBox, 3, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); |
|||
|
|||
wxBoxSizer* bSizer4; |
|||
bSizer4 = new wxBoxSizer( wxHORIZONTAL ); |
|||
|
|||
m_btnUp = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); |
|||
m_btnUp->SetToolTip( _("Move up") ); |
|||
|
|||
bSizer4->Add( m_btnUp, 0, wxALL, 5 ); |
|||
|
|||
m_btnDown = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); |
|||
m_btnDown->SetToolTip( _("Move down") ); |
|||
|
|||
bSizer4->Add( m_btnDown, 0, wxALL, 5 ); |
|||
|
|||
|
|||
bRightSide->Add( bSizer4, 1, wxEXPAND, 5 ); |
|||
|
|||
|
|||
bTop->Add( bRightSide, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); |
|||
|
|||
|
|||
bSizerMain->Add( bTop, 1, wxEXPAND, 5 ); |
|||
|
|||
m_ButtonsSizer = new wxBoxSizer( wxHORIZONTAL ); |
|||
|
|||
m_sdbSizer = new wxStdDialogButtonSizer(); |
|||
m_sdbSizerOK = new wxButton( this, wxID_OK ); |
|||
m_sdbSizer->AddButton( m_sdbSizerOK ); |
|||
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); |
|||
m_sdbSizer->AddButton( m_sdbSizerCancel ); |
|||
m_sdbSizer->Realize(); |
|||
|
|||
m_ButtonsSizer->Add( m_sdbSizer, 1, wxALL, 5 ); |
|||
|
|||
|
|||
bSizerMain->Add( m_ButtonsSizer, 0, wxEXPAND, 5 ); |
|||
|
|||
|
|||
this->SetSizer( bSizerMain ); |
|||
this->Layout(); |
|||
bSizerMain->Fit( this ); |
|||
|
|||
this->Centre( wxBOTH ); |
|||
|
|||
// Connect Events
|
|||
m_availableListBox->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onAvailableListItemSelected ), NULL, this ); |
|||
m_btnAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onAddItem ), NULL, this ); |
|||
m_btnRemove->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onRemoveItem ), NULL, this ); |
|||
m_enabledListBox->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onEnabledListItemSelected ), NULL, this ); |
|||
m_btnUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onMoveUp ), NULL, this ); |
|||
m_btnDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onMoveDown ), NULL, this ); |
|||
} |
|||
|
|||
EDA_REORDERABLE_LIST_DIALOG_BASE::~EDA_REORDERABLE_LIST_DIALOG_BASE() |
|||
{ |
|||
// Disconnect Events
|
|||
m_availableListBox->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onAvailableListItemSelected ), NULL, this ); |
|||
m_btnAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onAddItem ), NULL, this ); |
|||
m_btnRemove->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onRemoveItem ), NULL, this ); |
|||
m_enabledListBox->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onEnabledListItemSelected ), NULL, this ); |
|||
m_btnUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onMoveUp ), NULL, this ); |
|||
m_btnDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_REORDERABLE_LIST_DIALOG_BASE::onMoveDown ), NULL, this ); |
|||
|
|||
} |
@ -0,0 +1,695 @@ |
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> |
|||
<wxFormBuilder_Project> |
|||
<FileVersion major="1" minor="16" /> |
|||
<object class="Project" expanded="1"> |
|||
<property name="class_decoration"></property> |
|||
<property name="code_generation">C++</property> |
|||
<property name="disconnect_events">1</property> |
|||
<property name="disconnect_mode">source_name</property> |
|||
<property name="disconnect_php_events">0</property> |
|||
<property name="disconnect_python_events">0</property> |
|||
<property name="embedded_files_path">res</property> |
|||
<property name="encoding">UTF-8</property> |
|||
<property name="event_generation">connect</property> |
|||
<property name="file">eda_reorderable_list_dialog_base</property> |
|||
<property name="first_id">1000</property> |
|||
<property name="help_provider">none</property> |
|||
<property name="image_path_wrapper_function_name"></property> |
|||
<property name="indent_with_spaces"></property> |
|||
<property name="internationalize">1</property> |
|||
<property name="name">eda_reorderable_list_dialog_base</property> |
|||
<property name="namespace"></property> |
|||
<property name="path">.</property> |
|||
<property name="precompiled_header"></property> |
|||
<property name="relative_path">1</property> |
|||
<property name="skip_lua_events">1</property> |
|||
<property name="skip_php_events">1</property> |
|||
<property name="skip_python_events">1</property> |
|||
<property name="ui_table">UI</property> |
|||
<property name="use_array_enum">0</property> |
|||
<property name="use_enum">0</property> |
|||
<property name="use_microsoft_bom">0</property> |
|||
<object class="Dialog" expanded="1"> |
|||
<property name="aui_managed">0</property> |
|||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property> |
|||
<property name="bg"></property> |
|||
<property name="center">wxBOTH</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="enabled">1</property> |
|||
<property name="event_handler">decl_pure_virtual</property> |
|||
<property name="extra_style"></property> |
|||
<property name="fg"></property> |
|||
<property name="font"></property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">EDA_REORDERABLE_LIST_DIALOG_BASE</property> |
|||
<property name="pos"></property> |
|||
<property name="size"></property> |
|||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property> |
|||
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property> |
|||
<property name="title"></property> |
|||
<property name="tooltip"></property> |
|||
<property name="two_step_creation">0</property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bSizerMain</property> |
|||
<property name="orient">wxVERTICAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxEXPAND</property> |
|||
<property name="proportion">1</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bTop</property> |
|||
<property name="orient">wxHORIZONTAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxEXPAND</property> |
|||
<property name="proportion">1</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bLeftSide</property> |
|||
<property name="orient">wxVERTICAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxStaticText" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label">Available:</property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_availableListLabel</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style"></property> |
|||
<property name="subclass">; ; forward_declare</property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<property name="wrap">-1</property> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxListCtrl" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size">280,150</property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_availableListBox</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style">wxLC_HRULES|wxLC_NO_HEADER|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES</property> |
|||
<property name="subclass"></property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style">wxBORDER_SIMPLE|wxVSCROLL</property> |
|||
<event name="OnListItemSelected">onAvailableListItemSelected</event> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALIGN_CENTER_VERTICAL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bMiddleButtons</property> |
|||
<property name="orient">wxVERTICAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxButton" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="auth_needed">0</property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="bitmap"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="current"></property> |
|||
<property name="default">0</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="disabled"></property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="focus"></property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label">>></property> |
|||
<property name="margins">-1,-1</property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_btnAdd</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="position"></property> |
|||
<property name="pressed"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size">48,-1</property> |
|||
<property name="style"></property> |
|||
<property name="subclass">; ; forward_declare</property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<event name="OnButtonClick">onAddItem</event> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxButton" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="auth_needed">0</property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="bitmap"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="current"></property> |
|||
<property name="default">0</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="disabled"></property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="focus"></property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label"><<</property> |
|||
<property name="margins"></property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_btnRemove</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="position"></property> |
|||
<property name="pressed"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size">48,-1</property> |
|||
<property name="style"></property> |
|||
<property name="subclass">; ; forward_declare</property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<event name="OnButtonClick">onRemoveItem</event> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property> |
|||
<property name="proportion">1</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bRightSide</property> |
|||
<property name="orient">wxVERTICAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxStaticText" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label">Enabled:</property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_enabledListLabel</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style"></property> |
|||
<property name="subclass"></property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<property name="wrap">-1</property> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND</property> |
|||
<property name="proportion">3</property> |
|||
<object class="wxListCtrl" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size">280,150</property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_enabledListBox</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style">wxLC_HRULES|wxLC_NO_HEADER|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES</property> |
|||
<property name="subclass"></property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip"></property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style">wxBORDER_SIMPLE|wxVSCROLL</property> |
|||
<event name="OnListItemSelected">onEnabledListItemSelected</event> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxEXPAND</property> |
|||
<property name="proportion">1</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">bSizer4</property> |
|||
<property name="orient">wxHORIZONTAL</property> |
|||
<property name="permission">none</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxBitmapButton" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="auth_needed">0</property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="bitmap"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="current"></property> |
|||
<property name="default">0</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="disabled"></property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="focus"></property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label">Up</property> |
|||
<property name="margins"></property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_btnUp</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="position"></property> |
|||
<property name="pressed"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style"></property> |
|||
<property name="subclass">; ; forward_declare</property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip">Move up</property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<event name="OnButtonClick">onMoveUp</event> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxBitmapButton" expanded="1"> |
|||
<property name="BottomDockable">1</property> |
|||
<property name="LeftDockable">1</property> |
|||
<property name="RightDockable">1</property> |
|||
<property name="TopDockable">1</property> |
|||
<property name="aui_layer"></property> |
|||
<property name="aui_name"></property> |
|||
<property name="aui_position"></property> |
|||
<property name="aui_row"></property> |
|||
<property name="auth_needed">0</property> |
|||
<property name="best_size"></property> |
|||
<property name="bg"></property> |
|||
<property name="bitmap"></property> |
|||
<property name="caption"></property> |
|||
<property name="caption_visible">1</property> |
|||
<property name="center_pane">0</property> |
|||
<property name="close_button">1</property> |
|||
<property name="context_help"></property> |
|||
<property name="context_menu">1</property> |
|||
<property name="current"></property> |
|||
<property name="default">0</property> |
|||
<property name="default_pane">0</property> |
|||
<property name="disabled"></property> |
|||
<property name="dock">Dock</property> |
|||
<property name="dock_fixed">0</property> |
|||
<property name="docking">Left</property> |
|||
<property name="enabled">1</property> |
|||
<property name="fg"></property> |
|||
<property name="floatable">1</property> |
|||
<property name="focus"></property> |
|||
<property name="font"></property> |
|||
<property name="gripper">0</property> |
|||
<property name="hidden">0</property> |
|||
<property name="id">wxID_ANY</property> |
|||
<property name="label">Down</property> |
|||
<property name="margins"></property> |
|||
<property name="markup">0</property> |
|||
<property name="max_size"></property> |
|||
<property name="maximize_button">0</property> |
|||
<property name="maximum_size"></property> |
|||
<property name="min_size"></property> |
|||
<property name="minimize_button">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="moveable">1</property> |
|||
<property name="name">m_btnDown</property> |
|||
<property name="pane_border">1</property> |
|||
<property name="pane_position"></property> |
|||
<property name="pane_size"></property> |
|||
<property name="permission">protected</property> |
|||
<property name="pin_button">1</property> |
|||
<property name="pos"></property> |
|||
<property name="position"></property> |
|||
<property name="pressed"></property> |
|||
<property name="resize">Resizable</property> |
|||
<property name="show">1</property> |
|||
<property name="size"></property> |
|||
<property name="style"></property> |
|||
<property name="subclass">; ; forward_declare</property> |
|||
<property name="toolbar_pane">0</property> |
|||
<property name="tooltip">Move down</property> |
|||
<property name="validator_data_type"></property> |
|||
<property name="validator_style">wxFILTER_NONE</property> |
|||
<property name="validator_type">wxDefaultValidator</property> |
|||
<property name="validator_variable"></property> |
|||
<property name="window_extra_style"></property> |
|||
<property name="window_name"></property> |
|||
<property name="window_style"></property> |
|||
<event name="OnButtonClick">onMoveDown</event> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxEXPAND</property> |
|||
<property name="proportion">0</property> |
|||
<object class="wxBoxSizer" expanded="1"> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">m_ButtonsSizer</property> |
|||
<property name="orient">wxHORIZONTAL</property> |
|||
<property name="permission">public</property> |
|||
<object class="sizeritem" expanded="1"> |
|||
<property name="border">5</property> |
|||
<property name="flag">wxALL</property> |
|||
<property name="proportion">1</property> |
|||
<object class="wxStdDialogButtonSizer" expanded="1"> |
|||
<property name="Apply">0</property> |
|||
<property name="Cancel">1</property> |
|||
<property name="ContextHelp">0</property> |
|||
<property name="Help">0</property> |
|||
<property name="No">0</property> |
|||
<property name="OK">1</property> |
|||
<property name="Save">0</property> |
|||
<property name="Yes">0</property> |
|||
<property name="minimum_size"></property> |
|||
<property name="name">m_sdbSizer</property> |
|||
<property name="permission">protected</property> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</object> |
|||
</wxFormBuilder_Project> |
@ -0,0 +1,69 @@ |
|||
/////////////////////////////////////////////////////////////////////////// |
|||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3) |
|||
// http://www.wxformbuilder.org/ |
|||
// |
|||
// PLEASE DO *NOT* EDIT THIS FILE! |
|||
/////////////////////////////////////////////////////////////////////////// |
|||
|
|||
#pragma once |
|||
|
|||
#include <wx/artprov.h> |
|||
#include <wx/xrc/xmlres.h> |
|||
#include <wx/intl.h> |
|||
#include "dialog_shim.h" |
|||
#include <wx/string.h> |
|||
#include <wx/stattext.h> |
|||
#include <wx/gdicmn.h> |
|||
#include <wx/font.h> |
|||
#include <wx/colour.h> |
|||
#include <wx/settings.h> |
|||
#include <wx/listctrl.h> |
|||
#include <wx/sizer.h> |
|||
#include <wx/button.h> |
|||
#include <wx/bitmap.h> |
|||
#include <wx/image.h> |
|||
#include <wx/icon.h> |
|||
#include <wx/bmpbuttn.h> |
|||
#include <wx/dialog.h> |
|||
|
|||
/////////////////////////////////////////////////////////////////////////// |
|||
|
|||
|
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
/// Class EDA_REORDERABLE_LIST_DIALOG_BASE |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
class EDA_REORDERABLE_LIST_DIALOG_BASE : public DIALOG_SHIM |
|||
{ |
|||
private: |
|||
|
|||
protected: |
|||
wxStaticText* m_availableListLabel; |
|||
wxListCtrl* m_availableListBox; |
|||
wxButton* m_btnAdd; |
|||
wxButton* m_btnRemove; |
|||
wxStaticText* m_enabledListLabel; |
|||
wxListCtrl* m_enabledListBox; |
|||
wxBitmapButton* m_btnUp; |
|||
wxBitmapButton* m_btnDown; |
|||
wxStdDialogButtonSizer* m_sdbSizer; |
|||
wxButton* m_sdbSizerOK; |
|||
wxButton* m_sdbSizerCancel; |
|||
|
|||
// Virtual event handlers, override them in your derived class |
|||
virtual void onAvailableListItemSelected( wxListEvent& event ) = 0; |
|||
virtual void onAddItem( wxCommandEvent& event ) = 0; |
|||
virtual void onRemoveItem( wxCommandEvent& event ) = 0; |
|||
virtual void onEnabledListItemSelected( wxListEvent& event ) = 0; |
|||
virtual void onMoveUp( wxCommandEvent& event ) = 0; |
|||
virtual void onMoveDown( wxCommandEvent& event ) = 0; |
|||
|
|||
|
|||
public: |
|||
wxBoxSizer* m_ButtonsSizer; |
|||
|
|||
EDA_REORDERABLE_LIST_DIALOG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); |
|||
|
|||
~EDA_REORDERABLE_LIST_DIALOG_BASE(); |
|||
|
|||
}; |
|||
|
@ -0,0 +1,67 @@ |
|||
/* |
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. |
|||
* |
|||
* 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 3 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, see <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
#ifndef EDA_REORDERABLE_LIST_DIALOG_H |
|||
#define EDA_REORDERABLE_LIST_DIALOG_H |
|||
|
|||
#include <eda_reorderable_list_dialog_base.h> |
|||
|
|||
/** |
|||
* A dialog which allows selecting a list of items from a list of available items, and reordering |
|||
* those items. |
|||
*/ |
|||
class EDA_REORDERABLE_LIST_DIALOG : public EDA_REORDERABLE_LIST_DIALOG_BASE |
|||
{ |
|||
public: |
|||
|
|||
/** |
|||
* @param aParent Pointer to the parent window. |
|||
* @param aTitle The title shown on top. |
|||
* @param aAllItems A list of elements. |
|||
* @param aEnabledItems A list of elements that are already in the "enabled" category. |
|||
*/ |
|||
EDA_REORDERABLE_LIST_DIALOG( wxWindow* aParent, const wxString& aTitle, |
|||
const std::vector<wxString>& aAllItems, |
|||
const std::vector<wxString>& aEnabledItems ); |
|||
|
|||
const std::vector<wxString>& EnabledList() { return m_enabledItems; } |
|||
|
|||
protected: |
|||
void onAddItem( wxCommandEvent& aEvent ) override; |
|||
void onRemoveItem( wxCommandEvent& aEvent ) override; |
|||
void onMoveUp( wxCommandEvent& aEvent ) override; |
|||
void onMoveDown( wxCommandEvent& aEvent ) override; |
|||
void onAvailableListItemSelected( wxListEvent& event ) override; |
|||
void onEnabledListItemSelected( wxListEvent& event ) override; |
|||
|
|||
private: |
|||
void updateItems(); |
|||
|
|||
bool getSelectedItem( wxListCtrl* aList, wxListItem& aInfo ); |
|||
|
|||
void updateButtons(); |
|||
|
|||
std::vector<wxString> m_availableItems; |
|||
std::vector<wxString> m_enabledItems; |
|||
|
|||
long m_selectedAvailable; |
|||
long m_selectedEnabled; |
|||
}; |
|||
|
|||
#endif |
Write
Preview
Loading…
Cancel
Save
Reference in new issue