X-Git-Url: http://git.tdb.fi/?p=poefilter.git;a=blobdiff_plain;f=source%2Ffilter.cpp;h=80ca1932facfa455cc6ee2d0bd631958cf9513d4;hp=70a126b5c8eeaf5464c1b8540915fcea5c8054d5;hb=0388bdcffe5c2c3e720afa9aa911268eac9c32de;hpb=74086c211f082f6f47c3d038dd308a257a81e006 diff --git a/source/filter.cpp b/source/filter.cpp index 70a126b..80ca193 100644 --- a/source/filter.cpp +++ b/source/filter.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include "category.h" @@ -46,11 +46,14 @@ Filter::Filter(): void Filter::write(IO::Base &out) const { - for(list::const_iterator i=categories.begin(); i!=categories.end(); ++i) + for(list::const_iterator i=blocks.begin(); i!=blocks.end(); ++i) { list st; - //IO::print(out, "# %s\n", i->first); - (*i)->create_statements(st); + st.push_back(FilterStatement()); + i->appearance.add_lines(st.back()); + i->category->create_statements(st); + + IO::print(out, "# %s\n", i->category->get_name()); for(list::const_iterator j=st.begin(); j!=st.end(); ++j) j->write(out); } @@ -104,17 +107,18 @@ void Filter::Loader::hide(const string &name) categs.push_back(&poe.get_category(name)); for(list::const_iterator i=categs.begin(); i!=categs.end(); ++i) - { - list::iterator j = find(obj.categories.begin(), obj.categories.end(), *i); - if(j!=obj.categories.end()) - obj.categories.erase(j); - } + for(list::iterator j=obj.blocks.begin(); j!=obj.blocks.end(); ++j) + if(j->category==*i) + { + obj.blocks.erase(j); + break; + } } void Filter::Loader::include(const string &name) { const Filter &base = poe.get_filter(name); - obj.categories.insert(obj.categories.end(), base.categories.begin(), base.categories.end()); + obj.blocks.insert(obj.blocks.end(), base.blocks.begin(), base.blocks.end()); } void Filter::Loader::show(const string &name) @@ -133,6 +137,19 @@ void Filter::Loader::show(const string &name) categs.push_back(&poe.get_category(name)); for(list::const_iterator i=categs.begin(); i!=categs.end(); ++i) - if(find(obj.categories.begin(), obj.categories.end(), *i)==obj.categories.end()) - obj.categories.push_back(*i); + { + bool found = false; + for(list::const_iterator j=obj.blocks.begin(); (!found && j!=obj.blocks.end()); ++j) + found = (j->category==*i); + + if(!found) + { + Block blk; + blk.category = *i; + blk.appearance = (*i)->get_appearance(); + if(const Appearance *app = poe.get_theme().find_appearance((*i)->get_name())) + blk.appearance.merge_from(*app); + obj.blocks.push_back(blk); + } + } }