<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
<ReleaseVersion>0.2</ReleaseVersion>\r
+ <SynchReleaseVersion>false</SynchReleaseVersion>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">\r
<DebugSymbols>true</DebugSymbols>\r
<BaseAddress>4194304</BaseAddress>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">\r
+ <DefineConstants>__linux__</DefineConstants>\r
<Optimize>True</Optimize>\r
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
<DebugType>None</DebugType>\r
<BaseAddress>4194304</BaseAddress>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
- <DefineConstants>__linux__</DefineConstants>\r
<OutputPath>bin\Release</OutputPath>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<OutputPath>bin\Debug</OutputPath>\r
+ <DefineConstants>TRACE;DEBUG;__linux__;DEBUG_LOAD_TIME</DefineConstants>\r
</PropertyGroup>\r
<!-- <PropertyGroup Condition=" '$(Platform)' == 'Linux_x86' ">\r
<DefineConstants>__linux__</DefineConstants>\r
string _itemTemplate;\r
string _overlayTemplate;\r
\r
+ public event EventHandler Pop;\r
+ public event EventHandler Unpop;\r
public event EventHandler<SelectionChangeEventArgs> SelectedItemChanged;\r
\r
#region implemented abstract members of TemplatedControl\r
[XmlAttributeAttribute][DefaultValue(-1)]\r
public int SelectedIndex{\r
get { return _selectedIndex; }\r
- set { _selectedIndex = value; }\r
+ set { \r
+ //store value event if data is null, because in xml parsing selindex is always\r
+ //before data, so it's impossible without that trick to set a default index in goml\r
+ _selectedIndex = value; \r
+ \r
+ if (data == null) \r
+ return;\r
+ \r
+ if (_selectedIndex > data.Count - 1 || _selectedIndex < 0)\r
+ throw new Exception ("Combobox SelectedIndex out of range");\r
+\r
+\r
+ _selectedItem = data [_selectedIndex];\r
+ NotifyValueChanged ("SelectedIndex", SelectedIndex);\r
+ SelectedItemChanged.Raise (this, new SelectionChangeEventArgs(_selectedItem));\r
+\r
+ if (SelectedItem == null)\r
+ Text = "";\r
+ else\r
+ Text = _selectedItem.ToString ();\r
+ }\r
}\r
public object SelectedItem{\r
- set { \r
+ set {\r
+ if (_selectedItem == value)\r
+ return;\r
+\r
_selectedItem = value;\r
+ _selectedIndex = data.IndexOf (_selectedItem);\r
+ NotifyValueChanged ("SelectedIndex", _selectedIndex);\r
+ SelectedItemChanged.Raise (this, new SelectionChangeEventArgs(_selectedItem));\r
\r
-// NotifyValueChanged ("SelectedItem", _selectedItem);\r
-//\r
if (SelectedItem == null)\r
Text = "";\r
else\r
Text = _selectedItem.ToString ();\r
}\r
- \r
+\r
get { return _selectedItem; }\r
}\r
[XmlAttributeAttribute][DefaultValue(null)]\r
if (data == null)\r
return;\r
\r
- #if DEBUG\r
+ #if DEBUG_LOAD_TIME\r
Stopwatch loadingTime = new Stopwatch ();\r
loadingTime.Start ();\r
#endif\r
\r
ms.Dispose ();\r
\r
- #if DEBUG\r
+ if (SelectedIndex < 0)\r
+ return;\r
+\r
+ //force raise of changes\r
+ SelectedIndex = SelectedIndex;\r
+\r
+ #if DEBUG_LOAD_TIME\r
loadingTime.Stop ();\r
Debug.WriteLine("Listbox Loading: {0} ticks \t, {1} ms",\r
loadingTime.ElapsedTicks,\r
#endif\r
}\r
}\r
-\r
- void itemClick(object sender, OpenTK.Input.MouseButtonEventArgs e){\r
- object datasource = (sender as GraphicObject).DataSource;\r
- SelectedItem = datasource;\r
- SelectedItemChanged.Raise (sender, new SelectionChangeEventArgs(datasource));\r
- IsPopped = false;\r
-\r
- //Debug.WriteLine ((sender as GraphicObject).DataSource);\r
- }\r
-\r
- public event EventHandler Pop;\r
- public event EventHandler Unpop;\r
-\r
public GraphicObject Overlay {\r
get { return _overlay; }\r
set { \r
if (_overlay != null) {\r
_overlay.LayoutChanged -= _overlay_LayoutChanged;\r
- _overlay.MouseLeave -= _content_MouseLeave;\r
+ _overlay.MouseLeave -= _overlay_MouseLeave;\r
}\r
- \r
+\r
_overlay = value; \r
\r
if (_overlay == null)\r
\r
_overlay.Focusable = true;\r
_overlay.LayoutChanged += _overlay_LayoutChanged;\r
- _overlay.MouseLeave += _content_MouseLeave;\r
+ _overlay.MouseLeave += _overlay_MouseLeave;\r
+ }\r
+ }\r
+ [XmlAttributeAttribute()][DefaultValue("Combobox")]\r
+ public string Text {\r
+ get { return text; } \r
+ set {\r
+ if (text == value)\r
+ return;\r
+ text = value; \r
+ NotifyValueChanged ("Text", text);\r
+ }\r
+ } \r
+ [XmlAttributeAttribute()][DefaultValue(false)]\r
+ public bool IsPopped\r
+ {\r
+ get { return _isPopped; }\r
+ set\r
+ {\r
+ _isPopped = value;\r
+\r
+ if (_isPopped) {\r
+ onPop (this, null);\r
+ NotifyValueChanged ("SvgSub", "expanded");\r
+ return;\r
+ }\r
+\r
+ onUnpop (this, null);\r
+ NotifyValueChanged ("SvgSub", "collapsed");\r
}\r
}\r
\r
- void _content_MouseLeave (object sender, MouseMoveEventArgs e)\r
+ void itemClick(object sender, OpenTK.Input.MouseButtonEventArgs e){\r
+ object datasource = (sender as GraphicObject).DataSource;\r
+ SelectedItem = datasource;\r
+ IsPopped = false;\r
+ //Debug.WriteLine ((sender as GraphicObject).DataSource);\r
+ }\r
+ void _overlay_MouseLeave (object sender, MouseMoveEventArgs e)\r
{\r
IsPopped = false;\r
}\r
-\r
void _overlay_LayoutChanged (object sender, LayoutChangeEventArgs e)\r
{\r
ILayoutable tc = Overlay.Parent as ILayoutable;\r
Overlay.Top = 0;\r
}\r
}\r
- public override void ClearBinding ()\r
- {\r
- //ensure popped window is cleared\r
- if (Overlay != null) {\r
- if (Overlay.Parent != null) {\r
- IGOLibHost tc = Overlay.Parent as IGOLibHost;\r
- if (tc != null)\r
- tc.DeleteWidget (Overlay);\r
- }\r
- }\r
- base.ClearBinding ();\r
-\r
- }\r
\r
[XmlAttributeAttribute()][DefaultValue(true)]//overiden to get default to true\r
public override bool Focusable\r
set { base.Focusable = value; }\r
}\r
\r
- [XmlAttributeAttribute()][DefaultValue("Combobox")]\r
- public string Text {\r
- get { return text; } \r
- set {\r
- if (text == value)\r
- return;\r
- text = value; \r
- NotifyValueChanged ("Text", text);\r
- }\r
- } \r
-\r
- [XmlAttributeAttribute()][DefaultValue(false)]\r
- public bool IsPopped\r
- {\r
- get { return _isPopped; }\r
- set\r
- {\r
- _isPopped = value;\r
-\r
- if (_isPopped) {\r
- onPop (this, null);\r
- NotifyValueChanged ("SvgSub", "expanded");\r
- return;\r
- }\r
-\r
- onUnpop (this, null);\r
- NotifyValueChanged ("SvgSub", "collapsed");\r
- }\r
- }\r
\r
public virtual void onPop(object sender, EventArgs e)\r
{\r
base.onMouseClick (sender, e);\r
}\r
\r
+ public override void ClearBinding ()\r
+ {\r
+ //ensure popped window is cleared\r
+ if (Overlay != null) {\r
+ if (Overlay.Parent != null) {\r
+ IGOLibHost tc = Overlay.Parent as IGOLibHost;\r
+ if (tc != null)\r
+ tc.DeleteWidget (Overlay);\r
+ }\r
+ }\r
+ base.ClearBinding ();\r
+\r
+ }\r
}\r
}\r