mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-12-26 09:25:30 +00:00
178 lines
5.4 KiB
C#
178 lines
5.4 KiB
C#
|
//
|
||
|
// DemoListItem.cs, port of tree_store.c from gtk-demo
|
||
|
//
|
||
|
// Author: Daniel Kornhauser <dkor@alum.mit.edu>
|
||
|
//
|
||
|
// Copyright (C) 2003, Ximian Inc.
|
||
|
|
||
|
/* List View/List Store
|
||
|
*
|
||
|
* The Gtk.ListStore is used to store data in tree form, to be
|
||
|
* used later on by a Gtk.ListView to display it. This demo builds
|
||
|
* a simple Gtk.ListStore and displays it. If you're new to the
|
||
|
* Gtk.ListView widgets and associates, look into the Gtk.ListStore
|
||
|
* example first.
|
||
|
*/
|
||
|
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
|
||
|
using Gtk;
|
||
|
using GtkSharp;
|
||
|
|
||
|
namespace GtkDemo
|
||
|
{
|
||
|
|
||
|
public class DemoListStore
|
||
|
{
|
||
|
private Window window;
|
||
|
ListStore store;
|
||
|
public DemoListStore (){
|
||
|
window = new Window ("ListStore Demo");
|
||
|
window.DeleteEvent += new DeleteEventHandler (WindowDelete);
|
||
|
|
||
|
VBox vbox = new VBox (false, 8);
|
||
|
vbox.BorderWidth = 8;
|
||
|
window.Add (vbox);
|
||
|
|
||
|
vbox.PackStart(new Label ("This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though)."), false, false, 0);
|
||
|
|
||
|
ScrolledWindow scrolledWindow = new ScrolledWindow ();
|
||
|
scrolledWindow.ShadowType = ShadowType.EtchedIn;
|
||
|
scrolledWindow.SetPolicy (PolicyType.Automatic, PolicyType.Automatic);
|
||
|
vbox.PackStart (scrolledWindow, true, true, 0);
|
||
|
// create model
|
||
|
CreateModel();
|
||
|
|
||
|
// create tree view
|
||
|
TreeView treeView = new TreeView (store);
|
||
|
treeView.RulesHint = true;
|
||
|
treeView.SearchColumn = (int) ColumnNumber.Description;
|
||
|
AddColumns (treeView);
|
||
|
scrolledWindow.Add (treeView);
|
||
|
|
||
|
// finish & show
|
||
|
window.SetDefaultSize (650, 400);
|
||
|
window.ShowAll ();
|
||
|
}
|
||
|
|
||
|
//FIXME: Finish implementing this function, I don't know
|
||
|
// why it doesn't work.
|
||
|
private void ItemToggled (object o, ToggledArgs args)
|
||
|
{
|
||
|
|
||
|
Gtk.TreeIter iter;
|
||
|
if (store.GetIterFromString(out iter, args.Path))
|
||
|
{
|
||
|
bool val = (bool) store.GetValue(iter, 0);
|
||
|
Console.WriteLine("toggled {0} with value {1}", args.Path, val);
|
||
|
store.SetValue(iter, 0, !val);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void AddColumns (TreeView treeView)
|
||
|
{
|
||
|
// column for fixed toggles
|
||
|
CellRendererToggle rendererToggle = new CellRendererToggle ();
|
||
|
rendererToggle.Toggled += new ToggledHandler (ItemToggled);
|
||
|
TreeViewColumn column = new TreeViewColumn("Fixed", rendererToggle, "active", 0);
|
||
|
rendererToggle.Active = true;
|
||
|
rendererToggle.Activatable = true;
|
||
|
rendererToggle.Visible = true;
|
||
|
// set this column to a fixed sizing (of 50 pixels)
|
||
|
column.Sizing = TreeViewColumnSizing.Fixed;
|
||
|
column.FixedWidth = 50;
|
||
|
treeView.AppendColumn(column);
|
||
|
// column for bug numbers
|
||
|
CellRendererText rendererText = new CellRendererText ();
|
||
|
column = new TreeViewColumn("Bug number", rendererText, "text", ColumnNumber.Number);
|
||
|
column.SortColumnId = (int) ColumnNumber.Number;
|
||
|
treeView.AppendColumn(column);
|
||
|
// column for severities
|
||
|
rendererText = new CellRendererText ();
|
||
|
column = new TreeViewColumn("Severity", rendererText, "text", ColumnNumber.Severity);
|
||
|
column.SortColumnId = (int) ColumnNumber.Severity;
|
||
|
treeView.AppendColumn(column);
|
||
|
// column for description
|
||
|
rendererText = new CellRendererText ();
|
||
|
column = new TreeViewColumn("Description", rendererText, "text", ColumnNumber.Description);
|
||
|
column.SortColumnId = (int) ColumnNumber.Description;
|
||
|
treeView.AppendColumn(column);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
private void WindowDelete (object o, DeleteEventArgs args)
|
||
|
{
|
||
|
window.Hide ();
|
||
|
window.Destroy ();
|
||
|
}
|
||
|
|
||
|
private void CreateModel ()
|
||
|
{
|
||
|
store = new ListStore (
|
||
|
typeof(bool),
|
||
|
typeof(int),
|
||
|
typeof(string),
|
||
|
typeof(string));
|
||
|
|
||
|
foreach (Bug bug in bugs) {
|
||
|
store.AppendValues(bug.Fixed,
|
||
|
bug.Number,
|
||
|
bug.Severity,
|
||
|
bug.Description);}
|
||
|
|
||
|
}
|
||
|
//FIXME: Insted of using numbert conver enum to array using
|
||
|
// GetValues and then ge the Length Property
|
||
|
public enum ColumnNumber
|
||
|
{
|
||
|
Fixed,
|
||
|
Number,
|
||
|
Severity,
|
||
|
Description,
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
private static Bug[] bugs =
|
||
|
{
|
||
|
new Bug ( false, 60482, "Normal", "scrollable notebooks and hidden tabs"),
|
||
|
new Bug ( false, 60620, "Critical", "gdk_window_clear_area (gdkwindow-win32.c) is not thread-safe" ),
|
||
|
new Bug ( false, 50214, "Major", "Xft support does not clean up correctly" ),
|
||
|
new Bug ( true, 52877, "Major", "GtkFileSelection needs a refresh method. " ),
|
||
|
new Bug ( false, 56070, "Normal", "Can't click button after setting in sensitive" ),
|
||
|
new Bug ( true, 56355, "Normal", "GtkLabel - Not all changes propagate correctly" ),
|
||
|
new Bug ( false, 50055, "Normal", "Rework width/height computations for TreeView" ),
|
||
|
new Bug ( false, 58278, "Normal", "gtk_dialog_set_response_sensitive () doesn't work" ),
|
||
|
new Bug ( false, 55767, "Normal", "Getters for all setters" ),
|
||
|
new Bug ( false, 56925, "Normal", "Gtkcalender size" ),
|
||
|
new Bug ( false, 56221, "Normal", "Selectable label needs right-click copy menu" ),
|
||
|
new Bug ( true, 50939, "Normal", "Add shift clicking to GtkTextView" ),
|
||
|
new Bug ( false, 6112, "Enhancement","netscape-like collapsable toolbars" ),
|
||
|
new Bug ( false, 1, "Normal", "First bug :=)" )
|
||
|
};
|
||
|
}
|
||
|
|
||
|
|
||
|
public class Bug
|
||
|
{
|
||
|
public bool Fixed;
|
||
|
public int Number;
|
||
|
public string Severity;
|
||
|
public string Description;
|
||
|
|
||
|
public Bug ( bool status,
|
||
|
int number,
|
||
|
string severity,
|
||
|
string description)
|
||
|
{
|
||
|
Fixed = status;
|
||
|
Number = number;
|
||
|
Severity = severity;
|
||
|
Description = description;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|