Skip to content

Commit

Permalink
Fix for issue calband#7
Browse files Browse the repository at this point in the history
Improved Point Picker.  Now you can select by items and symbols.
  • Loading branch information
Richard Powell authored and superoven committed Feb 3, 2014
1 parent fed16c4 commit c09b566
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 28 deletions.
31 changes: 24 additions & 7 deletions src/show_ui.cpp
Expand Up @@ -21,6 +21,8 @@
*/

#include "show_ui.h"
#include "toolbar.h"
#include "cc_sheet.h"
#include <ctype.h>
#include <wx/statline.h>
#include <wx/spinctrl.h>
Expand Down Expand Up @@ -96,7 +98,6 @@ bool PointPicker::Create(wxWindow *parent, wxWindowID id,

void PointPicker::CreateControls()
{
// Give it an icon
// create a sizer for laying things out top down:
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
SetSizer( topsizer );
Expand All @@ -105,18 +106,29 @@ void PointPicker::CreateControls()
wxBoxSizer *top_button_sizer = new wxBoxSizer( wxHORIZONTAL );
wxButton *closeBut = new wxButton(this, wxID_OK, wxT("&Close"));
closeBut->SetDefault();
top_button_sizer->Add(closeBut, 0, wxALL, 5 );
top_button_sizer->Add(closeBut, wxSizerFlags(0).Border(wxALL, 5));

wxButton *setnumBut = new wxButton(this, PointPicker_PointPickerAll, wxT("&All"));
top_button_sizer->Add(setnumBut, 0, wxALL, 5 );
top_button_sizer->Add(setnumBut, wxSizerFlags(0).Border(wxALL, 5));

wxButton *setlabBut = new wxButton(this, PointPicker_PointPickerNone, wxT("&None"));
top_button_sizer->Add(setlabBut, 0, wxALL, 5 );
top_button_sizer->Add(setlabBut, wxSizerFlags(0).Border(wxALL, 5));

topsizer->Add(top_button_sizer, 0, wxALIGN_CENTER );
topsizer->Add(top_button_sizer, wxSizerFlags(0).Border(wxALL, 5).Center());

mList = new wxListBox(this, PointPicker_PointPickerList, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED);
topsizer->Add(mList, 0, wxGROW|wxALL, 0 );
top_button_sizer = new wxBoxSizer( wxHORIZONTAL );
auto symbols = GetSymbolsToolBar();
for (auto iter = symbols.begin(); iter != symbols.end(); ++iter)
{
auto button = new wxBitmapButton(this, wxID_ANY, *(iter->bm));
SYMBOL_TYPE which = static_cast<SYMBOL_TYPE>(std::distance(symbols.begin(), iter));
button->Bind(wxEVT_BUTTON,[this, which](wxCommandEvent&) { PointPickerBySymbol(which); });
top_button_sizer->Add(button, wxSizerFlags(0).Border(wxALL, 2));
}
topsizer->Add(top_button_sizer, wxSizerFlags(0).Border(wxALL, 5).Center());

mList = new wxListBox(this, PointPicker_PointPickerList, wxDefaultPosition, wxSize(50, 500), 0, NULL, wxLB_EXTENDED);
topsizer->Add(mList, wxSizerFlags(0).Border(wxALL, 5).Center().Expand());
Update();
}

Expand All @@ -127,6 +139,11 @@ void PointPicker::PointPickerAll(wxCommandEvent&)
}


void PointPicker::PointPickerBySymbol(SYMBOL_TYPE which)
{
mShow.SetSelection(mShow.GetCurrentSheet()->SelectPointsBySymbol(which));
}

void PointPicker::PointPickerNone(wxCommandEvent&)
{
mShow.UnselectAll();
Expand Down
1 change: 1 addition & 0 deletions src/show_ui.h
Expand Up @@ -68,6 +68,7 @@ class PointPicker : public wxDialog


void PointPickerAll(wxCommandEvent&);
void PointPickerBySymbol(SYMBOL_TYPE which);
void PointPickerNone(wxCommandEvent&);
void PointPickerSelect(wxCommandEvent&);

Expand Down
67 changes: 46 additions & 21 deletions src/toolbar.cpp
Expand Up @@ -73,9 +73,41 @@ AddCoolToolBar(const std::vector<ToolBarEntry> &entries, wxFrame& frame)


std::vector<ToolBarEntry>
GetMainToolBar()
GetSymbolsToolBar()
{
static const ToolBarEntry tb[] = {
{ wxITEM_NORMAL, NULL, wxT("plainmen"), CALCHART__setsym0 },
{ wxITEM_NORMAL, NULL, wxT("solidmen"), CALCHART__setsym1 },
{ wxITEM_NORMAL, NULL, wxT("backslash men"), CALCHART__setsym2 },
{ wxITEM_NORMAL, NULL, wxT("slash men"), CALCHART__setsym3 },
{ wxITEM_NORMAL, NULL, wxT("x men"), CALCHART__setsym4 },
{ wxITEM_NORMAL, NULL, wxT("solid backslash men"), CALCHART__setsym5 },
{ wxITEM_NORMAL, NULL, wxT("solid slash men"), CALCHART__setsym6 },
{ wxITEM_NORMAL, NULL, wxT("solid x men"), CALCHART__setsym7 }
};
static std::vector<ToolBarEntry> sTB(tb, tb + sizeof(tb)/sizeof(tb[0]));
// technically this is a race condition, but not worth fixing (how often do we call this function synchronously...?
static bool sFirstTime = true;
if (sFirstTime)
{
sFirstTime = false;
std::vector<ToolBarEntry>::iterator i = sTB.begin();
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym0));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym1));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym2));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym3));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym4));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym5));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym6));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym7));
}
return sTB;
}

std::vector<ToolBarEntry>
GetHalfOfMainToolBar()
{
static const ToolBarEntry main_tb[] = {
static const ToolBarEntry tb[] = {
{ wxITEM_NORMAL, NULL, wxT("Previous stuntsheet"), CALCHART__prev_ss },
{ wxITEM_NORMAL, NULL, wxT("Next stuntsheet"), CALCHART__next_ss, true },
{ wxITEM_RADIO, NULL, wxT("Select points with box"), CALCHART__box },
Expand All @@ -91,21 +123,13 @@ GetMainToolBar()
{ wxITEM_NORMAL, NULL, wxT("Label on left"), CALCHART__label_left },
{ wxITEM_NORMAL, NULL, wxT("Flip label"), CALCHART__label_flip },
{ wxITEM_NORMAL, NULL, wxT("Label on right"), CALCHART__label_right, true },
{ wxITEM_NORMAL, NULL, wxT("Change to plainmen"), CALCHART__setsym0 },
{ wxITEM_NORMAL, NULL, wxT("Change to solidmen"), CALCHART__setsym1 },
{ wxITEM_NORMAL, NULL, wxT("Change to backslash men"), CALCHART__setsym2 },
{ wxITEM_NORMAL, NULL, wxT("Change to slash men"), CALCHART__setsym3 },
{ wxITEM_NORMAL, NULL, wxT("Change to x men"), CALCHART__setsym4 },
{ wxITEM_NORMAL, NULL, wxT("Change to solid backslash men"), CALCHART__setsym5 },
{ wxITEM_NORMAL, NULL, wxT("Change to solid slash men"), CALCHART__setsym6 },
{ wxITEM_NORMAL, NULL, wxT("Change to solid x men"), CALCHART__setsym7 }
};
static std::vector<ToolBarEntry> sMainTB(main_tb, main_tb + sizeof(main_tb)/sizeof(main_tb[0]));
static std::vector<ToolBarEntry> sTB(tb, tb + sizeof(tb)/sizeof(tb[0]));
static bool sFirstTime = true;
if (sFirstTime)
{
sFirstTime = false;
std::vector<ToolBarEntry>::iterator i = sMainTB.begin();
std::vector<ToolBarEntry>::iterator i = sTB.begin();
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_left));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_right));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_box));
Expand All @@ -121,16 +145,17 @@ GetMainToolBar()
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_lbl_l));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_lbl_f));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_lbl_r));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym0));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym1));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym2));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym3));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym4));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym5));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym6));
(i++)->bm = new wxBitmap(BITMAP_NAME(tb_sym7));
}
return sMainTB;
return sTB;
}

std::vector<ToolBarEntry>
GetMainToolBar()
{
auto first_half = GetHalfOfMainToolBar();
auto second_half = GetSymbolsToolBar();
first_half.insert(first_half.end(), second_half.begin(), second_half.end());
return first_half;
}


Expand Down
1 change: 1 addition & 0 deletions src/toolbar.h
Expand Up @@ -38,6 +38,7 @@ struct ToolBarEntry
};

void AddCoolToolBar(const std::vector<ToolBarEntry> &entries, wxFrame& frame);
std::vector<ToolBarEntry> GetSymbolsToolBar();
std::vector<ToolBarEntry> GetMainToolBar();
std::vector<ToolBarEntry> GetAnimationToolBar();

Expand Down

0 comments on commit c09b566

Please sign in to comment.