{
current_location = 0;
- save_state (_("initial"));
}
Locations::~Locations ()
{
- std::set<Location*> all_locations;
-
- for (StateMap::iterator siter = states.begin(); siter != states.end(); ++siter) {
-
- State* lstate = dynamic_cast<State*> (*siter);
-
- for (LocationList::iterator liter = lstate->locations.begin(); liter != lstate->locations.end(); ++liter) {
- all_locations.insert (*liter);
- }
-
- for (LocationList::iterator siter = lstate->states.begin(); siter != lstate->states.end(); ++siter) {
- all_locations.insert (*siter);
- }
+ for (LocationList::iterator i = locations.begin(); i != locations.end(); ) {
+ LocationList::iterator tmp = i;
+ ++tmp;
+ delete *i;
+ i = tmp;
}
-
- set_delete (&all_locations);
}
int
{
{
Glib::Mutex::Lock lm (lock);
- LocationList::iterator tmp;
+
for (LocationList::iterator i = locations.begin(); i != locations.end(); ) {
- tmp = i;
+
+ LocationList::iterator tmp = i;
++tmp;
+
if (!(*i)->is_end() && !(*i)->is_start()) {
locations.erase (i);
}
+
i = tmp;
}
- locations.clear ();
current_location = 0;
}
- save_state (_("clear"));
-
changed (); /* EMIT SIGNAL */
current_changed (0); /* EMIT SIGNAL */
}
}
}
- save_state (_("clear markers"));
-
changed (); /* EMIT SIGNAL */
}
current_location = 0;
}
- save_state (_("clear ranges"));
-
changed (); /* EMIT SIGNAL */
current_changed (0); /* EMIT SIGNAL */
}
}
}
- save_state (_("add"));
-
added (loc); /* EMIT SIGNAL */
if (make_current) {
}
if (was_removed) {
- save_state (_("remove"));
-
- removed (loc); /* EMIT SIGNAL */
+
+ removed (loc); /* EMIT SIGNAL */
if (was_current) {
current_changed (0); /* EMIT SIGNAL */
void
Locations::location_changed (Location* loc)
{
- save_state (X_("location changed"));
changed (); /* EMIT SIGNAL */
}
}
nlist = node.children();
-
+
+ locations.clear ();
+ current_location = 0;
+
{
Glib::Mutex::Lock lm (lock);
return 0;
}
-StateManager::State*
-Locations::state_factory (std::string why) const
-{
- State* state = new State (why);
-
- state->locations = locations;
-
- for (LocationList::const_iterator i = locations.begin(); i != locations.end(); ++i) {
- state->states.push_back (new Location (**i));
- }
-
- return state;
-}
-
-Change
-Locations::restore_state (StateManager::State& state)
-{
- {
- Glib::Mutex::Lock lm (lock);
- State* lstate = dynamic_cast<State*> (&state);
-
- locations = lstate->locations;
- LocationList& states = lstate->states;
- LocationList::iterator l, s;
-
- for (l = locations.begin(), s = states.begin(); s != states.end(); ++s, ++l) {
- (*l) = (*s);
- }
- }
-
- return Change (0);
-}
-
-UndoAction
-Locations::get_memento () const
-{
- return sigc::bind (mem_fun (*(const_cast<Locations*> (this)), &StateManager::use_state), _current_state_id);
-}
-
uint32_t
Locations::num_range_markers () const
{