[Gtk-sharp-list] progressbar on a treeview

Andrey Gankov gankov.andrey at inbox.ru
Fri Dec 18 10:03:01 UTC 2015


Второй способ.

Он выгоднее если у тебя в колонке 2, где тип object лежит какой то класс
который может сообщить по прогресс. Или ты хочешь что то считать на лету,
например вычислять прогресс.

//Колонку можно созать одной строкой
treeview1.AppendColumn ("Статус", new Gtk.CellRendererProgress (),
StatusCellDataFuc);

//Собственно сама функция
	private void StatusCellDataFuc (Gtk.TreeViewColumn column, Gtk.CellRenderer
cell, Gtk.TreeModel model, Gtk.TreeIter iter)
	{
		//Можно взять какие то данные из модели(ListStore)
                int curentPosition = (int) model.GetValue (iter, ??);
                //И задать их рендеру. Нужно учитывать что это функция будет
вызывать всякий раз когда treeview захочет перерисовать ячеку. Ты можешь
установить натройки рендера.
               int pencent = (curentPosition / total) * 100;
               (cell as Gtk.CellRendererProgress).Value = pencent;
               (cell as Gtk.CellRendererProgress).Text =
String.Format("{0}%", percent);
	}

Тут только при работе из другого потока нужно будет как то затавлять
treeview перерисовывать данные. Если в ListStroe будет что то менятся то
данные пререрисуются. Если меняться будет только в о вложенном в листор
объекте то treeview может не перерисовать.

То есть еще раз хочу что бы ты понял колонки в treeView с колонками, в
данных ListStore, могут быть никак не связаны. Этом примере они связаны
только через функцию StatusCellDataFuc, она знает в какую колонку ListStore
лезть, может брать данные из нескольких для формирования одной ячейки. Может
вообще ничего не брать.

А в первом примере мы через аттрибуты задавали, cell рендеру, куда лездть в
модель что бы получить свойстов text, куда лезть что бы получить value и так
далее.

Можешь посмотреть как например вот тут в рабочей программе. Устанавливаестя
цвет текста ячейки
https://github.com/QualitySolution/Bazar/blob/master/newaprashka/MainWinAccrual.cs#L329
Просто исходя из значения, числа.



--
View this message in context: http://mono.1490590.n4.nabble.com/progressbar-on-a-treeview-tp4667178p4667185.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.


More information about the Gtk-sharp-list mailing list