From: Jean-Philippe Bruyère Date: Sun, 5 Nov 2017 22:01:15 +0000 (+0100) Subject: add error message in showcase X-Git-Tag: v0.9.5-beta~198 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=8d59e42e78db11afaf9b2f6530403a12b1d1926c;p=jp%2Fcrow.git add error message in showcase --- 8d59e42e78db11afaf9b2f6530403a12b1d1926c diff --cc Tests/Showcase.cs index 2639b0f7,00000000..4880ede5 mode 100644,000000..100644 --- a/Tests/Showcase.cs +++ b/Tests/Showcase.cs @@@ -1,201 -1,0 +1,216 @@@ +// +// UIEditor.cs +// +// Author: +// Jean-Philippe Bruyère +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using OpenTK; +using OpenTK.Graphics.OpenGL; +using Crow; +using System.IO; +using System.Collections.Generic; +using System.Reflection; +using System.Linq; + +namespace Tests +{ + class Showcase : CrowWindow + { + [STAThread] + static void Main () + { + Showcase win = new Showcase (); + win.Run (30); + } + + public Showcase () + : base(1024, 800,"Showcase") + { + } + + Container crowContainer; + + protected override void OnLoad (EventArgs e) + { + base.OnLoad (e); + + GraphicObject g = Load ("#Tests.ui.showcase.crow"); + g.DataSource = this; + crowContainer = g.FindByName ("CrowContainer") as Container; + //I set an empty object as datasource at this level to force update when new + //widgets are added to the interface + crowContainer.DataSource = new object (); ++ hideError (); + } + + void Dv_SelectedItemChanged (object sender, SelectionChangeEventArgs e) + { + FileSystemInfo fi = e.NewValue as FileSystemInfo; + if (fi == null) + return; + if (fi is DirectoryInfo) + return; ++ hideError(); + lock (this.CurrentInterface.UpdateMutex) { - GraphicObject g = this.CurrentInterface.Load (fi.FullName); - crowContainer.SetChild (g); - g.DataSource = this; ++ try { ++ GraphicObject g = this.CurrentInterface.Load (fi.FullName); ++ crowContainer.SetChild (g); ++ g.DataSource = this; ++ } catch (Exception ex) { ++ showError (ex); ++ } + } + + string source = ""; + using (Stream s = new FileStream (fi.FullName, FileMode.Open)) { + using (StreamReader sr = new StreamReader (s)) { + source = sr.ReadToEnd (); + } + } + NotifyValueChanged ("source", source); + } + ++ void showError(Exception ex) { ++ NotifyValueChanged ("ErrorMessage", ex.Message + ex.InnerException); ++ NotifyValueChanged ("ShowError", true); ++ } ++ void hideError () { ++ NotifyValueChanged ("ShowError", false); ++ } ++ + void Tb_TextChanged (object sender, TextChangeEventArgs e) + { ++ hideError(); + GraphicObject g = null; + try { + lock (this.ifaceControl [0].CrowInterface.UpdateMutex) { + Instantiator inst = null; + using (MemoryStream ms = new MemoryStream (System.Text.Encoding.Unicode.GetBytes (e.Text))){ + inst = new Instantiator (ms); + } + g = inst.CreateInstance (this.ifaceControl [0].CrowInterface); + crowContainer.SetChild (g); - - } ++ g.DataSource = this; ++ } + } catch (Exception ex) { + System.Diagnostics.Debug.WriteLine (ex.ToString ()); ++ showError (ex); + } - g.DataSource = this; + } + public override void OnRender (FrameEventArgs e) - { ++ { + base.OnRender (e); + } + + #region Test values for Binding + public int intValue = 500; + DirectoryInfo curDir = new DirectoryInfo (Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); + //DirectoryInfo curDir = new DirectoryInfo (@"/mnt/data/Images"); + public FileSystemInfo[] CurDirectory { + get { return curDir.GetFileSystemInfos (); } + } + public int IntValue { + get { + return intValue; + } + set { + intValue = value; + NotifyValueChanged ("IntValue", intValue); + } + } + void onSpinnerValueChange(object sender, ValueChangeEventArgs e){ + if (e.MemberName != "Value") + return; + intValue = Convert.ToInt32(e.NewValue); + } + void change_alignment(object sender, EventArgs e){ + RadioButton rb = sender as RadioButton; + if (rb == null) + return; + NotifyValueChanged ("alignment", Enum.Parse(typeof(Alignment), rb.Caption)); + } + public IList List2 = new List(new string[] + { + "string1", + "string2", + "string3", + // "string4", + // "string5", + // "string6", + // "string7", + // "string8", + // "string8", + // "string8", + // "string8", + // "string8", + // "string8", + // "string9" + } + ); + public IList TestList2 { + set{ + List2 = value; + NotifyValueChanged ("TestList2", testList); + } + get { return List2; } + } + IList testList = Color.ColorDic.Values.ToList(); + public IList TestList { + set{ + testList = value; + NotifyValueChanged ("TestList", testList); + } + get { return testList; } + } + string curSources = ""; + public string CurSources { + get { return curSources; } + set { + if (value == curSources) + return; + curSources = value; + NotifyValueChanged ("CurSources", curSources); + } + } + bool boolVal = true; + public bool BoolVal { + get { return boolVal; } + set { + if (boolVal == value) + return; + boolVal = value; + NotifyValueChanged ("BoolVal", boolVal); + } + } + + #endregion + + void OnClear (object sender, MouseButtonEventArgs e) => TestList = null; + + void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.Values.ToList(); + + } + + +} diff --cc Tests/ui/showcase.crow index 4453e6aa,00000000..a511a100 mode 100755,000000..100755 --- a/Tests/ui/showcase.crow +++ b/Tests/ui/showcase.crow @@@ -1,22 -1,0 +1,24 @@@ + + + + + + + + + + + + + ++ +