void GetValue(wxVariant &variant, unsigned int col) const override { if (col == 0) variant = to_wx(combo.Str()); else if (col == 1) { wxIcon icon; try { auto icon_bmp = cmd::get(combo.CmdName())->Icon(16); if (icon_bmp.IsOk()) icon.CopyFromBitmap(icon_bmp); } catch (agi::Exception const&) { // Just use no icon; error is reported in the description column } variant << wxDataViewIconText(to_wx(combo.CmdName()), icon); } else if (col == 2) { try { variant = cmd::get(combo.CmdName())->StrHelp(); } catch (agi::Exception const& e) { variant = to_wx(e.GetChainedMessage()); } } else throw agi::InternalError("HotkeyDataViewModel asked for an invalid column number", nullptr); }
HotkeyModelCombo(HotkeyModelCategory *parent, Combo const& combo) : parent(parent) , combo(combo) , cmd_name(to_wx(combo.CmdName())) , cmd_str(to_wx(combo.Str())) { }
void GetValue(wxVariant &variant, unsigned int col) const { if (col == 0) variant = to_wx(combo.Str()); else if (col == 1) { wxBitmap icon_bmp(icon::get(combo.CmdName(), 16)); wxIcon icon; if (icon_bmp.IsOk()) icon.CopyFromBitmap(icon_bmp); variant << wxDataViewIconText(to_wx(combo.CmdName()), icon); } else if (col == 2) { try { variant = cmd::get(combo.CmdName())->StrHelp(); } catch (agi::Exception const& e) { variant = to_wx(e.GetChainedMessage()); } } else throw agi::InternalError("HotkeyDataViewModel asked for an invalid column number", 0); }
TEST(lagi_hotkey, combo_stuff) { Hotkey::HotkeyMap hm = Hotkey("", simple_valid).GetHotkeyMap(); Hotkey::HotkeyMap::const_iterator it, end; std::tr1::tie(it, end) = hm.equal_range("cmd1"); EXPECT_EQ(3, std::distance(it, end)); std::tr1::tie(it, end) = hm.equal_range("cmd2"); ASSERT_EQ(1, std::distance(it, end)); Combo c = it->second; EXPECT_STREQ("Ctrl-C", c.StrMenu().c_str()); EXPECT_STREQ("cmd2", c.CmdName().c_str()); EXPECT_STREQ("Default", c.Context().c_str()); EXPECT_EQ(2, c.Get().size()); }
bool SetValue(wxVariant const& variant, unsigned int col) override { if (col == 0) { wxArrayString toks = wxSplit(variant.GetString(), '-'); std::vector<std::string> keys; keys.reserve(toks.size()); transform(toks.begin(), toks.end(), back_inserter(keys), (std::string(*)(wxString const&))&from_wx); combo = Combo(combo.Context(), combo.CmdName(), keys); cmd_str = to_wx(combo.Str()); return true; } else if (col == 1) { wxDataViewIconText text; text << variant; combo = Combo(combo.Context(), from_wx(text.GetText()), combo.Get()); cmd_name = text.GetText(); return true; } return false; }
bool SetValue(wxVariant const& variant, unsigned int col) { if (col == 0) { wxArrayString toks = wxSplit(variant.GetString(), '-'); std::vector<std::string> keys; keys.resize(toks.size()); for (size_t i = 0; i < toks.size(); ++i) keys[i] = STD_STR(toks[i]); combo = Combo(combo.Context(), combo.CmdName(), keys); cmd_str = combo.Str(); return true; } else if (col == 1) { wxDataViewIconText text; text << variant; combo = Combo(combo.Context(), STD_STR(text.GetText()), combo.Get()); cmd_name = text.GetText(); return true; } return false; }
void Apply(Hotkey::HotkeyMap *hk_map) { if (combo.CmdName().size() || combo.Str().size()) hk_map->insert(make_pair(combo.CmdName(), combo)); }
void Hotkey::ComboInsert(Combo const& combo) { str_map.insert(make_pair(combo.Str(), combo)); cmd_map.insert(make_pair(combo.CmdName(), combo)); }