Re: [glade--]Treeview no glademm
Christof Petig <[email protected]> Thu, 15 Jan 2004 12:36:11 +0100
| Newsgroups | gmane.comp.gnome.glademm |
|---|---|
| Organization | Adolf Petig GmbH & Co. KG |
| Message-ID | <[email protected]> |
PhYx schrieb:
> thx you very much but dont lose your time to do this exemple, i have
> finally decided to use gtkmm without glade. I really need the treeview
> and i am part of a member of 4 people so we have to do a sound table mix
> for school, its our projet.
I put together a _minimal_ (only glademm file created and 30 lines of
code added to window1.hh and window1.cc) example of a treeview with
glade(mm).
It should give you (and other people) an idea of how much work has to be
done to get treeview support with current glade-2.
> btw i ll need to use drag and drop to take a file from a treeview in a
> window and to drop it in another window, if you have any advice about
> doing that in gtkmm thx to tell me =)
Look into my example (running). You can drop lines into _existing_
positions but you cannot move a line to become a child of another
(unless it already has children). This is a problem of gtk2.2 (fixed in
2.3). If this is important for you should raise your voice on gtk-devel, see
http://lists.gnome.org/archives/gtk-devel-list/2004-January/msg00061.html
> i saw there is a signal drag and drop in treeview but it works only to
> drag and drop in the treeview right ?
You can drag and drop between treeviews, given that you implement it
yourself. You have to derive from the Model (!) [TreeStore] and override
the dnd vfuncs:
class MyTreeStore : public Gtk::TreeStore
{ MyTreeStore(const Gtk::TreeModelColumnRecord& cols)
: Gtk::TreeStore(cols) {}
virtual bool drag_data_get_vfunc(const Gtk::TreeModel::Path&
path, GtkSelectionData* selection_data);
virtual bool drag_data_delete_vfunc(const Gtk::TreeModel::Path&
path);
virtual bool drag_data_received_vfunc(const TreeModel::Path&
dest, GtkSelectionData* selection_data);
public:
static Glib::RefPtr<MyTreeStore> MyTreeStore::create(const
Gtk::TreeModelColumnRecord& cols)
{ MyTreeStore *x=new MyTreeStore(cols);
x->reference();
return Glib::RefPtr<MyTreeStore>(x);
}
};
I experimented with drag_data_received beeing like:
GtkTreeModel *model=0;
GtkTreePath *path=0;
if (!gtk_tree_get_row_drag_data(selection_data,&model,&path))
return false;
Glib::RefPtr<Gtk::TreeModel> source=Glib::wrap(model);
Gtk::TreeIter
sourceit=source->get_iter(Gtk::TreeModel::Path(path,false)),
destit=get_iter(dest);
that should give you an initial idea about what to do.
Feel free to ask more
Christof
minimal_tv_example.tgz
(application/x-gtar, 3.4 KB) - not displayed