mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-12-27 19:45:44 +00:00
246d4e1620
gratuitous differences from the C version. Make comment and indent style consistent. Don't use "this." where not needed. Override OnDeleteEvent rather than connecting one's own DeleteEvent signal. * sample/GtkDemo/DemoApplicationWindow.cs (static DemoApplicationWindow): register the Gtk logo icon with StockManager so it shows up correctly in the toolbar. (AddActions): Register the radio items as radio items so they work right. * sample/GtkDemo/DemoHyperText.cs (EventAfter): handle link-clicking from Widget.WidgetEventAfter (as in the C version), rather than ButtonRelease, now that WidgetEventAfter is wrapped. * sample/GtkDemo/DemoImages.cs (DemoImages): use Gtk.Image.LoadFromResource (particularly to make the animation work right). (OnDestroyed): handle clean up (remove the timeout, etc) * sample/GtkDemo/DemoMain.cs (LoadStream): Fix handling of blank lines and whitespace to match the C version. * sample/GtkDemo/DemoPixbuf.cs (Expose): Use System.Runtime.InteropServices.Marshal.Copy() to copy pixbuf.Pixels to pass to DrawRgbImageDithalign, to make this more like the C version (and probably faster?) (timeout): Remove the FIXME since it seems to work now * sample/GtkDemo/DemoStockBrowser.cs: Simplify a bunch. Use reflection to get the C# names of the stock icons rather than trying to correctly re-mangle the ids. Display the Label with the accelerator underlined. * sample/GtkDemo/DemoTextView.cs (AttachWidgets): use Gtk.Image.LoadFromResource, so the image is properly loaded as an animation, not a static image. Don't set the combobox's "Active" property (for consistency with the C version). (InsertText): Fix miscellaneous differences with the C version. Remove some leftover cruft from earlier workarounds for gtk# bugs. * sample/GtkDemo/DemoTreeStore.cs (AddColumns): Make this more like the C version so the checkboxes are sensitized and hidden correctly on a per-row basis. * sample/GtkDemo/DemoUIManager.cs: Make the radio menu items work. * sample/GtkDemo/README: * sample/GtkDemo/TODO: update svn path=/trunk/gtk-sharp/; revision=42481
89 lines
2.4 KiB
C#
89 lines
2.4 KiB
C#
/* Color Selector
|
|
*
|
|
* GtkColorSelection lets the user choose a color. GtkColorSelectionDialog is
|
|
* a prebuilt dialog containing a GtkColorSelection.
|
|
*
|
|
*/
|
|
|
|
using System;
|
|
using Gdk;
|
|
using Gtk;
|
|
|
|
namespace GtkDemo
|
|
{
|
|
[Demo ("Color Selection", "DemoColorSelection.cs")]
|
|
public class DemoColorSelection : Gtk.Window
|
|
{
|
|
private Gdk.Color color;
|
|
private Gtk.DrawingArea drawingArea;
|
|
|
|
public DemoColorSelection () : base ("Color Selection")
|
|
{
|
|
BorderWidth = 8;
|
|
VBox vbox = new VBox (false,8);
|
|
vbox.BorderWidth = 8;
|
|
Add (vbox);
|
|
|
|
// Create the color swatch area
|
|
Frame frame = new Frame ();
|
|
frame.ShadowType = ShadowType.In;
|
|
vbox.PackStart (frame, true, true, 0);
|
|
|
|
drawingArea = new DrawingArea ();
|
|
drawingArea.ExposeEvent += new ExposeEventHandler (ExposeEventCallback);
|
|
// set a minimum size
|
|
drawingArea.SetSizeRequest (200,200);
|
|
// set the color
|
|
color = new Gdk.Color (0, 0, 0xff);
|
|
drawingArea.ModifyBg (StateType.Normal, color);
|
|
frame.Add (drawingArea);
|
|
|
|
Alignment alignment = new Alignment (1.0f, 0.5f, 0.0f, 0.0f);
|
|
Button button = new Button ("_Change the above color");
|
|
button.Clicked += new EventHandler (ChangeColorCallback);
|
|
alignment.Add (button);
|
|
vbox.PackStart (alignment);
|
|
|
|
ShowAll ();
|
|
}
|
|
|
|
protected override bool OnDeleteEvent (Gdk.Event evt)
|
|
{
|
|
Destroy ();
|
|
return true;
|
|
}
|
|
|
|
// Expose callback for the drawing area
|
|
private void ExposeEventCallback (object o, ExposeEventArgs args)
|
|
{
|
|
EventExpose eventExpose = args.Event;
|
|
Gdk.Window window = eventExpose.Window;
|
|
Rectangle area = eventExpose.Area;
|
|
|
|
window.DrawRectangle (drawingArea.Style.BackgroundGC (StateType.Normal),
|
|
true,
|
|
area.X, area.Y,
|
|
area.Width, area.Height);
|
|
args.RetVal = true;
|
|
}
|
|
|
|
private void ChangeColorCallback (object o, EventArgs args)
|
|
{
|
|
using (ColorSelectionDialog colorSelectionDialog = new ColorSelectionDialog ("Changing color")) {
|
|
colorSelectionDialog.TransientFor = this;
|
|
colorSelectionDialog.ColorSelection.PreviousColor = color;
|
|
colorSelectionDialog.ColorSelection.CurrentColor = color;
|
|
colorSelectionDialog.ColorSelection.HasPalette = true;
|
|
|
|
if (colorSelectionDialog.Run () == (int) ResponseType.Ok) {
|
|
Gdk.Color selected = colorSelectionDialog.ColorSelection.CurrentColor;
|
|
drawingArea.ModifyBg (StateType.Normal, selected);
|
|
}
|
|
|
|
colorSelectionDialog.Hide ();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|