@@ -24,6 +24,7 @@ void PopupChooseFormat::buildFormatList() {
2424 bool isFav = stringStartsWithIgnoreCase (f.name , " \xE2\x98\x85 " );
2525
2626 std::string name = f.name ;
27+ std::string originalName = f.originalName ;
2728
2829 UIButton* btn = new UIButton (name);
2930 btn->position = { 0 ,0 };
@@ -44,13 +45,18 @@ void PopupChooseFormat::buildFormatList() {
4445 }
4546
4647 if (isFav) {
47- btn->onRightClickCallback = [this , name ](...) {
48+ btn->onRightClickCallback = [this , originalName ](...) {
4849 g_addPopup (new PopupContextMenu ({
49- {" Remove from favourites" , [this , name]() {
50- auto indexAt = std::find (g_config.favExportFormats .begin (), g_config.favExportFormats .end (), name);
51- g_config.favExportFormats .erase (indexAt);
52- g_saveConfig ();
53- filterList (filterQuery);
50+ {" Remove from favourites" , [this , originalName]() {
51+ auto indexAt = std::find (g_config.favExportFormats .begin (), g_config.favExportFormats .end (), originalName);
52+ if (indexAt != g_config.favExportFormats .end ()) {
53+ g_config.favExportFormats .erase (indexAt);
54+ g_saveConfig ();
55+ filterList (filterQuery);
56+ }
57+ else {
58+ logerr (" failed to remove fav format" );
59+ }
5460 }}
5561 }));
5662 };
@@ -59,10 +65,10 @@ void PopupChooseFormat::buildFormatList() {
5965 priority1Buttons.push_back (newButton);
6066 }
6167 else {
62- btn->onRightClickCallback = [this , name ](...) {
68+ btn->onRightClickCallback = [this , originalName ](...) {
6369 g_addPopup (new PopupContextMenu ({
64- {" Add to favourites" , [this , name ]() {
65- g_config.favExportFormats .push_back (name );
70+ {" Add to favourites" , [this , originalName ]() {
71+ g_config.favExportFormats .push_back (originalName );
6672 g_saveConfig ();
6773 filterList (filterQuery);
6874 }}
@@ -148,9 +154,28 @@ PopupChooseFormat* PopupChooseFormat::withDefaultIndexedExportFormats(std::strin
148154 return withDefaultExportFormats (tt, tx, FORMAT_PALETTIZED );
149155}
150156
157+ PopupChooseFormat* PopupChooseFormat::withDefaultPaletteExportFormats (std::string tt, std::string tx)
158+ {
159+ std::vector<FormatDef> ff;
160+ for (PaletteExporter* f : g_paletteExporters) {
161+ ff.push_back ({
162+ .name = f->name (),
163+ .extension = f->extension (),
164+ .description = f->description ,
165+ .udata = (void *)f
166+ });
167+ }
168+ std::vector<FormatDef> ff2 = processFavouriteFormats (ff);
169+ PopupChooseFormat* ret = new PopupChooseFormat (tt, tx, ff2);
170+ ret->hasDefaultFormats = true ;
171+ ret->defaultFormats = ff;
172+ return ret;
173+ }
174+
151175std::vector<FormatDef> PopupChooseFormat::processFavouriteFormats (std::vector<FormatDef> srcList) {
152176 std::vector<FormatDef> ret;
153177 for (auto & f : srcList) {
178+ f.originalName = f.name ;
154179 if (std::find (g_config.favExportFormats .begin (), g_config.favExportFormats .end (), f.name ) != g_config.favExportFormats .end ()) {
155180 f.name = " \xE2\x98\x85 " + f.name ;
156181 ret.insert (ret.begin (), f);
0 commit comments