improve this thing

svn path=/trunk/gtk-sharp/; revision=32972
This commit is contained in:
John Luke 2004-08-28 20:51:06 +00:00
parent 6cf715ac84
commit 8f2aa18cb0
2 changed files with 82 additions and 25 deletions

View file

@ -13,6 +13,67 @@ namespace GtkDemo
{
public class DemoStockBrowser : Gtk.Window
{
class StockInfo
{
internal string Name;
internal string Label;
internal string Accel;
internal string ID;
internal Gdk.Pixbuf Icon;
}
// in a real application this would be
// split into its own file
class StockFrame : Gtk.Frame
{
StockInfo info;
Label category;
Label name;
Label id;
Label label;
Image icon;
internal StockFrame () : base ("Selected Item")
{
this.SetSizeRequest (200, -1);
// Icon and Item / Icon Only / ???
category = new Label ("???");
// icon / blank
icon = new Image ("");
// _Add / blank
label = new Label ();
label.UseUnderline = true;
// Gtk.Stock.Cancel
name = new Label ();
// gtk-stock-cancel
id = new Label ();
VBox vbox = new VBox (false, 3);
vbox.PackStart (category, false, true, 0);
vbox.PackStart (icon, false, true, 0);
vbox.PackStart (label, false, true, 0);
vbox.PackStart (name, false, true, 0);
vbox.PackStart (id, false, true, 0);
this.Add (vbox);
this.ShowAll ();
}
internal StockInfo Info
{
get { return info; }
set {
info = value;
name.Text = info.Name;
label.Text = info.Label;
id.Text = info.ID;
icon.Pixbuf = info.Icon;
}
}
}
StockFrame stockFrame;
public DemoStockBrowser () : base ("Stock Item Browser Demo")
{
this.SetDefaultSize (600, 400);
@ -37,33 +98,17 @@ namespace GtkDemo
list.Selection.Changed += new EventHandler (OnSelectionChanged);
scrolledWindow.Add (list);
hbox.PackStart (CreateFrame (), false, false, 0);
stockFrame = new StockFrame ();
hbox.PackStart (stockFrame, false, false, 0);
this.ShowAll ();
}
Frame CreateFrame ()
{
// Icon and Item / Icon Only / ???
// icon / blank
// _Add / blank
// Gtk.Stock.Cancel
// gtk-stock-cancel
Frame frame = new Frame ("Selected Item");
VBox vbox = new VBox (false, 3);
vbox.PackStart (new Label ("???"), false, true, 0);
vbox.PackStart (new Image (), false, true, 0);
vbox.PackStart (new Label ("_Add"), false, true, 0);
vbox.PackStart (new Label ("Gtk.Stock.Add"), false, true, 0);
vbox.PackStart (new Label ("gtk-stock-add"), false, true, 0);
frame.Add (vbox);
return frame;
}
private ListStore CreateStore ()
{
// image, name, label, accel, id
ListStore store = new Gtk.ListStore (typeof (Gtk.Image), typeof(string), typeof(string), typeof(string), typeof (string));
// FIXME: tremendous duplication of info
// image, name, label, accel, id, StockInfo
ListStore store = new Gtk.ListStore (typeof (Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof (string), typeof (StockInfo));
string[] stock_ids = Gtk.Stock.ListIds ();
@ -71,9 +116,16 @@ namespace GtkDemo
{
Gtk.StockItem si = new StockItem ();
if (Gtk.StockManager.Lookup (s, ref si)) {
Gdk.Pixbuf icon = new Image (s, IconSize.Menu).RenderIcon (s, IconSize.Menu, "");
Gdk.Pixbuf icon = this.RenderIcon (s, IconSize.Menu, "");
StockInfo info = new StockInfo ();
info.Icon = icon;
info.Name = GetCLSName (si.StockId);
info.Label = si.Label;
info.Accel = GetKeyName (si);
info.ID = si.StockId;
// FIXME: si.Label needs to _AccelAware
store.AppendValues (icon, GetCLSName (si.StockId), si.Label, GetKeyName (si), si.StockId);
store.AppendValues (icon, GetCLSName (si.StockId), si.Label, GetKeyName (si), si.StockId, info);
}
else {
//Console.WriteLine ("StockItem '{0}' could not be found.", s);
@ -150,7 +202,8 @@ namespace GtkDemo
if (((TreeSelection) o).GetSelected (out model, out iter))
{
// update the frame
StockInfo info = (StockInfo) model.GetValue (iter, 5);
stockFrame.Info = info;
}
}

View file

@ -14,10 +14,14 @@ DemoImages
- improve the Progressive Image loading and error handling
DemoStockBrowser
- almost everything
- underline _label properly
- use StudlyCaps instead of current horrible hack
- missing stockitems for some reason
- remove duplication in ListStore, and use DataFunc's
DemoTextView
- small issue with international text
DemoHyperText
- finish