X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fkeyframetreestore.cpp;h=596f0783974a73a397ab431179983dd69c0b8dbb;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=345fec5e18a2af0469d67568fd19616bca7539a4;hpb=c3ad95144d148602f672e95ddda1f18fc35502f8;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp b/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp index 345fec5..596f078 100644 --- a/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp +++ b/synfig-studio/trunk/src/gtkmm/keyframetreestore.cpp @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -31,7 +32,7 @@ #include "keyframetreestore.h" #include -#include "iconcontroler.h" +#include "iconcontroller.h" #include #include #include @@ -45,6 +46,8 @@ #include "onemoment.h" #include +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -58,7 +61,7 @@ using namespace studio; /* === G L O B A L S ======================================================= */ -KeyframeTreeStore_Class KeyframeTreeStore::keyframe_tree_store_class_; +// KeyframeTreeStore_Class KeyframeTreeStore::keyframe_tree_store_class_; /* === C L A S S E S & S T R U C T S ======================================= */ @@ -195,7 +198,8 @@ KeyframeTreeStore_Class::class_init_function(gpointer /*g_class*/, gpointer /*cl KeyframeTreeStore::KeyframeTreeStore(etl::loose_handle canvas_interface_): Glib::ObjectBase ("KeyframeTreeStore"), - Glib::Object (Glib::ConstructParams(keyframe_tree_store_class_.init(), (char*) 0)), + //! \todo what is going on here? why the need for this KeyframeTreeStore_Class at all? + // Glib::Object (Glib::ConstructParams(keyframe_tree_store_class_.init(), (char*) 0, (char*) 0)), canvas_interface_ (canvas_interface_) { reset_stamp(); @@ -208,7 +212,8 @@ KeyframeTreeStore::KeyframeTreeStore(etl::loose_handle @@ -304,6 +309,20 @@ KeyframeTreeStore::time_sorter(const Gtk::TreeModel::iterator &rhs,const Gtk::Tr return 0; } +int +KeyframeTreeStore::description_sorter(const Gtk::TreeModel::iterator &rhs,const Gtk::TreeModel::iterator &lhs) +{ + const Model model; + + _keyframe_iterator *rhs_iter(static_cast<_keyframe_iterator*>(rhs->gobj()->user_data)); + _keyframe_iterator *lhs_iter(static_cast<_keyframe_iterator*>(lhs->gobj()->user_data)); + + int comp = rhs_iter->iter->get_description().compare(lhs_iter->iter->get_description()); + if (comp > 0) return 1; + if (comp < 0) return -1; + return 0; +} + void KeyframeTreeStore::set_value_impl(const Gtk::TreeModel::iterator& row, int column, const Glib::ValueBase& value) { @@ -345,7 +364,7 @@ KeyframeTreeStore::set_value_impl(const Gtk::TreeModel::iterator& row, int colum // Bad old delta return; } - // row(row) on the next line is bad - don't use it, because it leaves 'row' uninitialised + // row(row) on the next line is bad - don't use it, because it leaves 'row' uninitialized //Gtk::TreeModel::iterator row(row); //row++; //if(!row)return; @@ -663,7 +682,7 @@ KeyframeTreeStore::unref_node_vfunc (iterator& xiter)const } Gtk::TreeModel::Path -KeyframeTreeStore::get_path_vfunc (const TreeModel::iterator& gtk_iter)const +KeyframeTreeStore::get_path_vfunc (const iterator& gtk_iter)const { Gtk::TreeModel::Path path; @@ -793,7 +812,7 @@ KeyframeTreeStore::find_row(const synfig::Keyframe &keyframe) } void -KeyframeTreeStore::add_keyframe(Keyframe keyframe) +KeyframeTreeStore::add_keyframe(synfig::Keyframe keyframe) { try { @@ -814,7 +833,7 @@ KeyframeTreeStore::add_keyframe(Keyframe keyframe) } void -KeyframeTreeStore::remove_keyframe(Keyframe keyframe) +KeyframeTreeStore::remove_keyframe(synfig::Keyframe keyframe) { try { @@ -834,13 +853,12 @@ KeyframeTreeStore::remove_keyframe(Keyframe keyframe) } catch(std::exception x) { - DEBUGPOINT(); g_warning(x.what()); } } void -KeyframeTreeStore::change_keyframe(Keyframe keyframe) +KeyframeTreeStore::change_keyframe(synfig::Keyframe keyframe) { try { @@ -849,11 +867,11 @@ KeyframeTreeStore::change_keyframe(Keyframe keyframe) unsigned int new_index(get_index_from_model_iter(row)); unsigned int old_index(0); synfig::KeyframeList::iterator iter; - for(old_index=0,iter=old_keyframe_list.begin();iter!=old_keyframe_list.end() && (UniqueID)*iter!=(UniqueID)keyframe;++iter,old_index++); + for(old_index=0,iter=old_keyframe_list.begin();iter!=old_keyframe_list.end() && (UniqueID)*iter!=(UniqueID)keyframe;++iter,old_index++) + ; if(iter!=old_keyframe_list.end() && new_index!=old_index) { - DEBUGPOINT(); std::vector new_order; for(unsigned int i=0;i