improve this thing
svn path=/trunk/gtk-sharp/; revision=32972
This commit is contained in:
parent
6cf715ac84
commit
8f2aa18cb0
2 changed files with 82 additions and 25 deletions
|
@ -13,6 +13,67 @@ namespace GtkDemo
|
||||||
{
|
{
|
||||||
public class DemoStockBrowser : Gtk.Window
|
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")
|
public DemoStockBrowser () : base ("Stock Item Browser Demo")
|
||||||
{
|
{
|
||||||
this.SetDefaultSize (600, 400);
|
this.SetDefaultSize (600, 400);
|
||||||
|
@ -37,33 +98,17 @@ namespace GtkDemo
|
||||||
list.Selection.Changed += new EventHandler (OnSelectionChanged);
|
list.Selection.Changed += new EventHandler (OnSelectionChanged);
|
||||||
scrolledWindow.Add (list);
|
scrolledWindow.Add (list);
|
||||||
|
|
||||||
hbox.PackStart (CreateFrame (), false, false, 0);
|
stockFrame = new StockFrame ();
|
||||||
|
hbox.PackStart (stockFrame, false, false, 0);
|
||||||
|
|
||||||
this.ShowAll ();
|
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 ()
|
private ListStore CreateStore ()
|
||||||
{
|
{
|
||||||
// image, name, label, accel, id
|
// FIXME: tremendous duplication of info
|
||||||
ListStore store = new Gtk.ListStore (typeof (Gtk.Image), typeof(string), typeof(string), typeof(string), typeof (string));
|
// 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 ();
|
string[] stock_ids = Gtk.Stock.ListIds ();
|
||||||
|
|
||||||
|
@ -71,9 +116,16 @@ namespace GtkDemo
|
||||||
{
|
{
|
||||||
Gtk.StockItem si = new StockItem ();
|
Gtk.StockItem si = new StockItem ();
|
||||||
if (Gtk.StockManager.Lookup (s, ref si)) {
|
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
|
// 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 {
|
else {
|
||||||
//Console.WriteLine ("StockItem '{0}' could not be found.", s);
|
//Console.WriteLine ("StockItem '{0}' could not be found.", s);
|
||||||
|
@ -150,7 +202,8 @@ namespace GtkDemo
|
||||||
|
|
||||||
if (((TreeSelection) o).GetSelected (out model, out iter))
|
if (((TreeSelection) o).GetSelected (out model, out iter))
|
||||||
{
|
{
|
||||||
// update the frame
|
StockInfo info = (StockInfo) model.GetValue (iter, 5);
|
||||||
|
stockFrame.Info = info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,14 @@ DemoImages
|
||||||
- improve the Progressive Image loading and error handling
|
- improve the Progressive Image loading and error handling
|
||||||
|
|
||||||
DemoStockBrowser
|
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
|
DemoTextView
|
||||||
- small issue with international text
|
- small issue with international text
|
||||||
|
|
||||||
DemoHyperText
|
DemoHyperText
|
||||||
- finish
|
- finish
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue