Re: Fwd: how do I delete a row in a Gtk::ListViewText
- From: "Francis (Grizzly) Smit" <grizzly smit id au>
- To: gtkmm-list gnome org
- Subject: Re: Fwd: how do I delete a row in a Gtk::ListViewText
- Date: Mon, 27 May 2013 22:52:26 +1000
OK got it my code now is:
Gtk::ListViewText::SelectionList sellst =
m_listviewtextAvailable->get_selected();
if(sellst.empty()) return;
Glib::RefPtr<Gtk::TreeSelection> ts =
m_listviewtextAvailable->get_selection();
Gtk::TreeModel::iterator sel_it = ts->get_selected();
int sel = sellst[0];
Glib::ustring selrow = m_listviewtextAvailable->get_text(sel);
m_listviewtextOrderBy->append(selrow);
//erase(sel_it);
Glib::RefPtr<Gtk::TreeModel> reftm =
m_listviewtextAvailable->get_model();
Glib::RefPtr<Gtk::TreeStore> refStore =
Glib::RefPtr<Gtk::TreeStore>::cast_dynamic(reftm);
if(refStore){
std::cout << __FILE__ << '[' << __LINE__ << "] it's a
Gtk::TreeStore" << std::endl;
refStore->erase(sel_it);
return;
}
Glib::RefPtr<Gtk::ListStore> refLStore =
Glib::RefPtr<Gtk::ListStore>::cast_dynamic(reftm);
if(refLStore){
std::cout << __FILE__ << '[' << __LINE__ << "] it's a
Gtk::ListStore" << std::endl;
refLStore->erase(sel_it);
}
That works and my model turns out to be a Gtk::ListStore I found some
code here
https://developer.gnome.org/gtkmm-tutorial/3.4/chapter-refptr.html.en
in particular
https://developer.gnome.org/gtkmm-tutorial/3.4/sec-refptr-casting.html.en
On 27/05/13 21:29, Francis (Grizzly) Smit wrote:
On 27/05/13 21:13, Juan Angel Moreno wrote:
Sorry, you must do Yor_Model->erase(sel_it);
erase() comes from Gtk::ListStore and from Gtk::TreeModel.
my code now is:
Gtk::ListViewText::SelectionList sellst =
m_listviewtextAvailable->get_selected();
if(sellst.empty()) return;
Glib::RefPtr<Gtk::TreeSelection> ts =
m_listviewtextAvailable->get_selection();
Gtk::TreeModel::iterator sel_it = ts->get_selected();
int sel = sellst[0];
Glib::ustring selrow = m_listviewtextAvailable->get_text(sel);
//erase(sel_it);
*(m_listviewtextAvailable->get_model())->erase(sel_it);
and I get thye following compiler error:
/home/grizzlysmit/Projects/xmms2/cathy/src/dialog-new-playlist.cc:221:43: error:
‘class Gtk::TreeModel’ has no member named ‘erase’
what am I doing wrong :(
Greetings.
2013/5/27 Francis (Grizzly) Smit <grizzly smit id au
<mailto:grizzly smit id au>>
On 27/05/13 17:20, Juan Angel Moreno wrote:
For the selected row, use get_selection(), get_selected() and
with the iterator returned by get_selected(), use erase(iterator).
For an arbitrary row, iterate over the rows of your model with
your_model->children().begin(), your_model->children().end(),
etc. and use erase() on the iterator you want.
umm where does the erase function come from, I did this
Gtk::ListViewText::SelectionList sellst =
m_listviewtextAvailable->get_selected();
if(sellst.empty()) return;
Gtk::TreeModel::iterator sel_it =
m_listviewtextAvailable->get_selection()->get_selected();
int sel = sellst[0];
Glib::ustring selrow = m_listviewtextAvailable->get_text(sel);
erase(sel_it);
and I get a compile error on erase the compiler cannot find it??
Greetings
2013/5/27 Francis (Grizzly) Smit <grizzly smit id au
<mailto:grizzly smit id au>>
Yeah I have been trying to delete a row in a
Gtk::ListViewText, but I
cannot find a member function to do this, I have tried the
following
guint num_cols = get_num_columns();
guint num_rows = size();
Glib::ustring result;
if(num_cols == 1){
std::vector<Glib::ustring> tmp;
for(int r = 0; r < num_rows; r++){
if(r == row){
result = get_text(r);
}else{
tmp.insert(tmp.end(), get_text(r));
}
}
remove_all_columns();
guint n = tmp.size();
for(int r = 0; r < n; r++){
append(tmp[r]);
}
}else{
std::vector<std::vector<Glib::ustring> > tmp;
std::vector<Glib::ustring> t;
for(int r = 0; r < num_rows; r++){
if(r == row){
result = get_text(r);
}else{
t.insert(t.end(), get_text(r));
for(int c = 1; c < num_cols; c++){
t.insert(t.end(), get_text (r, c));
}
tmp.insert(tmp.end(), t);
}
}
remove_all_columns();
guint n = tmp.size();
for(int r = 0; r < n; r++){
guint _r = append(tmp[r][0]);
guint m = tmp[r].size();
for(int c = 1; c < num_cols && c < m; c++){
set_text(_r, c, tmp[r][c]);
}
}
}
but the remove_all_columns(); is too drastic I loose every
thing and can
no longer put the rows I want to keep back as append stops
working as I
have no columns any more I'd really appreciate some help on
this thx
--
.~. In my life God comes first....
/V\ but Linux is pretty high after that :-D
/( )\ Francis (Grizzly) Smit
^^-^^ http://www.smit.id.au/
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org <mailto:gtkmm-list gnome org>
https://mail.gnome.org/mailman/listinfo/gtkmm-list
--
Atentamente:
Juan Ángel Moreno Fernández
jamf gm gmail com <mailto:jamf gm gmail com>
------------------------------
Proyecto Gelide
http://gelide.sf.net
------------------------------
--
.~. In my life God comes first....
/V\ but Linux is pretty high after that :-D
/( )\ Francis (Grizzly) Smit
^^-^^ http://www.smit.id.au/
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org <mailto:gtkmm-list gnome org>
https://mail.gnome.org/mailman/listinfo/gtkmm-list
--
Atentamente:
Juan Ángel Moreno Fernández
jamf gm gmail com <mailto:jamf gm gmail com>
------------------------------
Proyecto Gelide
http://gelide.sf.net
------------------------------
--
Atentamente:
Juan Ángel Moreno Fernández
jamf gm gmail com <mailto:jamf gm gmail com>
------------------------------
Proyecto Gelide
http://gelide.sf.net
------------------------------
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
https://mail.gnome.org/mailman/listinfo/gtkmm-list
--
.~. In my life God comes first....
/V\ but Linux is pretty high after that :-D
/( )\ Francis (Grizzly) Smit
^^-^^ http://www.smit.id.au/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]