diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2015-10-21 18:55:33 +0200 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2015-10-21 18:55:33 +0200 |
| commit | f31ffd683210c50b777dce4e76d0d9912ca925a8 (patch) | |
| tree | de0783b77f39de9fa7ccf04fbd8b53bb17db9905 /src | |
| parent | 671366cd56e7d6b2a2afb0839e7fb0f895cb2df3 (diff) | |
file dialog
Diffstat (limited to 'src')
| -rw-r--r-- | src/GraphicObjects/FileDialog.cs | 141 | ||||
| -rwxr-xr-x | src/GraphicObjects/Image.cs | 1 | ||||
| -rw-r--r-- | src/GraphicObjects/Scroller.cs | 15 | ||||
| -rwxr-xr-x | src/OpenTKGameWindow.cs | 2 |
4 files changed, 157 insertions, 2 deletions
diff --git a/src/GraphicObjects/FileDialog.cs b/src/GraphicObjects/FileDialog.cs new file mode 100644 index 00000000..3a5e6cb3 --- /dev/null +++ b/src/GraphicObjects/FileDialog.cs @@ -0,0 +1,141 @@ +// +// FileDialog.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2015 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using System.Xml.Serialization; +using System.ComponentModel; +using System.IO; +using System.Collections.Generic; +using System.Diagnostics; +using OpenTK.Input; +using System.Linq; +using System.Text.RegularExpressions; + +namespace go +{ + public class FileDialog: IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + Window window; + DirectoryInfo currentDir; + FileInfo selectedFile; + string searchPattern = "*"; + + #region CTOR + public FileDialog () + { + currentDir = new DirectoryInfo (Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); + window = Interface.Load("#go.Templates.FileDialog.goml") as Window; + window.DataSource = this; + } + #endregion + + public string CurrentPath { + get { return currentDir.FullName; } + set { + currentDir = new DirectoryInfo (value); + NotifyValueChanged ("CurrentPath", CurrentPath); + } + } + public string SearchPattern { + get { return searchPattern; } + set { + searchPattern = value; + NotifyValueChanged ("Files", Files); + } + } + + public DirectoryInfo[] Directories + { + get { + //currentDir.GetDirectories + List<DirectoryInfo> tmp = currentDir.GetDirectories ().Where(fi => !fi.Attributes.HasFlag(FileAttributes.Hidden)).ToList(); + if (currentDir.Parent != null) + tmp.Insert (0, currentDir.Parent); + return tmp.ToArray (); + } + } + public FileInfo[] Files + { + get { + string[] exts = searchPattern.Replace("*","").Split ('|'); + //return currentDir.GetFiles (searchPattern).Where(fi => !fi.Attributes.HasFlag(FileAttributes.Hidden)).ToArray(); + return currentDir.GetFiles().Where(f => exts.Any + (x => f.Name.EndsWith (x, StringComparison.InvariantCultureIgnoreCase))).ToArray(); + } + } + + public void Show(){ + OpenTKGameWindow.currentWindow.AddWidget(window); + } + + void OnSelectedItemChanged (object sender, SelectionChangeEventArgs e) + { + currentDir = e.NewValue as DirectoryInfo; + NotifyValueChanged ("CurrentPath", CurrentPath); + NotifyValueChanged ("Directories", Directories); + NotifyValueChanged ("Files", Files); + + } + void onFileListItemChanged (object sender, SelectionChangeEventArgs e) + { + selectedFile = e.NewValue as FileInfo; + } + void onFileSelect(object sender, OpenTK.Input.MouseButtonEventArgs e){ + OpenTKGameWindow.currentWindow.DeleteWidget(window); + } + } + public class DirContainer: IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public void NotifyValueChanged(string name, object value) + { + ValueChanged.Raise (this, new ValueChangeEventArgs (name, value)); + } + #endregion + + public DirectoryInfo CurDir; + public DirContainer(DirectoryInfo _dir){ + CurDir = _dir; + } + public string Name { + get { return CurDir.Name; } + } + + void onDirUp(object sender, MouseButtonEventArgs e) + { + + } + public void onMouseDown(object sender, MouseButtonEventArgs e) + { + Debug.WriteLine (sender.ToString ()); + } + + } +} + diff --git a/src/GraphicObjects/Image.cs b/src/GraphicObjects/Image.cs index 10631835..71d568fd 100755 --- a/src/GraphicObjects/Image.cs +++ b/src/GraphicObjects/Image.cs @@ -76,6 +76,7 @@ namespace go _pic = new BmpPicture ();
_pic.LoadImage (path);
+ registerForGraphicUpdate ();
}
#endregion
diff --git a/src/GraphicObjects/Scroller.cs b/src/GraphicObjects/Scroller.cs index 8c2303cc..3f78b598 100644 --- a/src/GraphicObjects/Scroller.cs +++ b/src/GraphicObjects/Scroller.cs @@ -22,6 +22,8 @@ namespace go bool _scrollbarVisible;
double _scrollX = 0.0;
double _scrollY = 0.0;
+ int scrollSpeed;
+
#region public properties
@@ -92,7 +94,14 @@ namespace go }
}
- public static int ScrollSpeed = 10;
+ [XmlAttributeAttribute][DefaultValue(30)]
+ public int ScrollSpeed {
+ get { return scrollSpeed; }
+ set {
+ scrollSpeed = value;
+ ValueChanged.Raise(this, new ValueChangeEventArgs("ScrollSpeed", scrollSpeed));
+ }
+ }
#endregion
@@ -147,6 +156,10 @@ namespace go #region Mouse handling
public override bool MouseIsIn (Point m)
{
+ Debug.WriteLine ("Mouse in scroller: {0} scr coord:{1} mouse:{2}",
+ base.ScreenCoordinates (Slot).ContainsOrIsEqual (m),
+ base.ScreenCoordinates (Slot), m);
+
return Visible ? base.ScreenCoordinates(Slot).ContainsOrIsEqual (m) : false;
}
public override void checkHoverWidget (MouseMoveEventArgs e)
diff --git a/src/OpenTKGameWindow.cs b/src/OpenTKGameWindow.cs index 7cc84bca..4e5584c8 100755 --- a/src/OpenTKGameWindow.cs +++ b/src/OpenTKGameWindow.cs @@ -32,7 +32,7 @@ namespace go // : base(_width, _height, new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8), _title)
{
//VSync = VSyncMode.On;
-
+ currentWindow = this;
//Load cursors
XCursor.Cross = XCursorFile.Load("#go.Images.Icons.Cursors.cross").Cursors[0];
XCursor.Default = XCursorFile.Load("#go.Images.Icons.Cursors.arrow").Cursors[0];
|