//-----------------------------------------------------------------------------
// wx.NET - Choice.cs
//
// The wxChoice wrapper class.
//
// Written by Bryan Bulten (bryan@bulten.ca)
// (C) 2003 Bryan Bulten
// Licensed under the wxWidgets license, see LICENSE.txt for details.
//
// $Id: Choice.cs,v 1.20 2007/11/11 14:14:45 harald_meyer Exp $
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Drawing;
using System.Runtime.InteropServices;
namespace wx{
public class Choice : ControlWithItems
{
[DllImport("wx-c")] static extern IntPtr wxChoice_ctor();
[DllImport("wx-c")] [return: MarshalAs(UnmanagedType.U1)]
static extern bool wxChoice_Create(IntPtr self, IntPtr parent, int id, int x, int y, int w, int h, IntPtr choices, uint style, IntPtr validator, IntPtr name);
[DllImport("wx-c")] static extern void wxChoice_dtor(IntPtr self);
[DllImport("wx-c")] static extern void wxChoice_SetColumns(IntPtr self, int n);
[DllImport("wx-c")] static extern int wxChoice_GetColumns(IntPtr self);
[DllImport("wx-c")] static extern void wxChoice_Command(IntPtr self, IntPtr evt);
[DllImport("wx-c")] static extern int wxChoice_GetCurrentSelection(IntPtr self);
//---------------------------------------------------------------------
public Choice(IntPtr wxObject)
: base(wxObject) {}
public Choice()
: base(wxChoice_ctor()) { }
public Choice(Window parent, int id)
: this(parent, id, wxDefaultPosition, wxDefaultSize, new string[] { }, 0, null, null) { }
public Choice(Window parent, int id, Point pos, Size size, string[] choices)
: this(parent, id, pos, size, choices, 0, null, null) { }
public Choice(Window parent, int id, Point pos, Size size, string[] choices, uint style)
: this(parent, id, pos, size, choices, style, null, null) { }
public Choice(Window parent, int id, Point pos, Size size, string[] choices, uint style, Validator val)
: this(parent, id, pos, size, choices, style, val, null) { }
public Choice(Window parent, int id, Point pos, Size size,
string[] choices, uint style, Validator validator, string name)
: this(parent, id, pos, size, ArrayString.SafeNewFrom(choices), style, validator, new wxString(name))
{
}
internal Choice(Window parent, int id, Point pos, Size size,
ArrayString choices, uint style, Validator validator, wxString name)
: base(wxChoice_ctor())
{
if(!wxChoice_Create(this.wxObject, Object.SafePtr(parent), id, pos.X, pos.Y, size.Width, size.Height,
Object.SafePtr(choices), style,
Object.SafePtr(validator), name.wxObject))
{
throw new InvalidOperationException("Failed to create ListBox");
}
}
//---------------------------------------------------------------------
// ctors with self created id
public Choice(Window parent)
: this(parent, Window.UniqueID, wxDefaultPosition, wxDefaultSize, new string[] { }, 0, null, null) { }
public Choice(Window parent, Point pos, Size size, string[] choices)
: this(parent, Window.UniqueID, pos, size, choices, 0, null, null) { }
public Choice(Window parent, Point pos, Size size, string[] choices, uint style)
: this(parent, Window.UniqueID, pos, size, choices, style, null, null) { }
public Choice(Window parent, Point pos, Size size, string[] choices, uint style, Validator val)
: this(parent, Window.UniqueID, pos, size, choices, style, val, null) { }
public Choice(Window parent, Point pos, Size size, string[] choices, uint style, Validator validator, string name)
: this(parent, Window.UniqueID, pos, size, choices, style, validator, name) {}
//---------------------------------------------------------------------
public bool Create(Window parent, int id, Point pos, Size size,
string[] choices, uint style, Validator validator,
string name)
{
return this.Create(parent, id, pos, size, ArrayString.SafeNewFrom(choices), style, validator, new wxString(name));
}
internal bool Create(Window parent, int id, Point pos, Size size,
ArrayString choices, uint style, Validator validator,
wxString name)
{
wxSize wxsize = wxSize.SafeNew(size);
wxPoint wxpos = wxPoint.SafeNew(pos);
return wxChoice_Create(wxObject, Object.SafePtr(parent), id,
pos.X, pos.Y, size.Width, size.Height, Object.SafePtr(choices),
style, Object.SafePtr(validator), name.wxObject);
}
//---------------------------------------------------------------------
public int Columns
{
get { return wxChoice_GetColumns(wxObject); }
set { wxChoice_SetColumns(wxObject, value); }
}
//---------------------------------------------------------------------
public void Command(Event evt)
{
wxChoice_Command(wxObject, Object.SafePtr(evt));
}
//---------------------------------------------------------------------
/** Read-only property returning the index of the current selection.
* Unlike ControlWithItems.Selection() which only returns the accepted selection value,
* i.e. the selection in the control once the user closes the dropdown
* list, this function returns the current selection. That is, while
* the dropdown list is shown, it returns the currently selected item
* in it. When it is not shown, its result is the same as for the other
* function.
* */
public int CurrentSelection
{
get
{
return wxChoice_GetCurrentSelection(this.wxObject);
}
}
//-----------------------------------------------------------------------------
public event EventListener Selected
{
add { AddCommandListener(Event.wxEVT_COMMAND_CHOICE_SELECTED, ID, value, this); }
remove { RemoveHandler(value, this); }
}
}
}
|