GTKD TreeView - Delete TreeView SubItem with Button?

Michael Robertson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 20 10:10:03 PST 2015


On Friday, 20 November 2015 at 17:09:50 UTC, TheDGuy wrote:
> Hello,
>
> is it possible, to delete a selected TreeView SubItem with a 
> Button-Click?
>
> My Code currently looks like this:
>
> import gtk.MainWindow;
> import gtk.Box;
> import gtk.Main;
>
> import gtk.Button;
> import gdk.Event;
> import gtk.Widget;
>
> import List, Languages;
>
> void main(string[] args){
> 	Main.init(args);
> 	MainWindow win = new MainWindow("TreeView Example");
> 	win.setDefaultSize(500,300);
>
> 	Box box = new Box(Orientation.VERTICAL, 0);
>
> 	auto list =  new List();
> 	auto german = list.addCountry("German", "Germany");
> 	auto city = list.addCountryCity(german, "German", "Munich");
>
> 	auto sweden = list.addCountry("Swedish", "Sweden");
> 	auto cit = list.addCountryCity(sweden, "Swedish", "Stockholm");
>
> 	auto treeView = new LanguageTree(list);
> 	box.packStart(treeView, true, true, 0);
>
> 	auto btn_Delete = new Button("Delete");
> 	box.add(btn_Delete);
>
> 	win.add(box);
> 	win.showAll();
> 	Main.run();
> }
>
> class DeleteButton : Button
> {
> 	this(in string text)
> 	{
> 		super(text);
> 		addOnButtonRelease(&del);
> 	}
> 	private bool del(Event event, Widget widget)
> 	{
> 		return true;
> 	}
>
> }
>
> But i neither know how i get the currently selected item nor 
> how i could delete it within the "del"-Event of the 
> "DeleteButton"?

TreeIter iter = treeView.getSelectedIter;

then you can use the TreeIter to delete the item.
If your List is a ListStore or TreeStore, it has a remove method 
that you can call.
If its a custom store you will have to implement it yourself like 
this

class List:TreeModel
{
.....
	void remove(TreeIter iter)
	{
		//maybe remove item from your actual data structure or other 
processing

		//send rowDeleted signal
		rowDeleted(iter);

	}
.....
}


More information about the Digitalmars-d-learn mailing list