aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/GraphicObjects/FileDialog.cs
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2017-02-10 15:54:50 +0100
committerjpbruyere <jp.bruyere@hotmail.com>2017-02-10 15:54:50 +0100
commit456e7c847a4aa6fed44cc2d970ac9400ea54d0c4 (patch)
tree42dc38f31028f3854f55a8203390ed922dd8cd5a /src/GraphicObjects/FileDialog.cs
parent5ca711641d1934adf08d2675641e3f61647f3ffc (diff)
TextBox, Label, simpler SVG icon for file sys viewers (improve speed a lot), divers debug and code clean
Diffstat (limited to 'src/GraphicObjects/FileDialog.cs')
-rw-r--r--src/GraphicObjects/FileDialog.cs62
1 files changed, 42 insertions, 20 deletions
diff --git a/src/GraphicObjects/FileDialog.cs b/src/GraphicObjects/FileDialog.cs
index 0ee78e13..f1e4b71d 100644
--- a/src/GraphicObjects/FileDialog.cs
+++ b/src/GraphicObjects/FileDialog.cs
@@ -31,7 +31,7 @@ namespace Crow
{
public class FileDialog: Window
{
- string searchPattern, curDirectory;
+ string searchPattern, curDir, _selectedFile, _selectedDir;
#region events
public event EventHandler OkClicked;
@@ -45,17 +45,17 @@ namespace Crow
[XmlAttributeAttribute][DefaultValue("/home")]
public virtual string CurrentDirectory {
- get { return curDirectory; }
+ get { return curDir; }
set {
- if (curDirectory == value)
+ if (curDir == value)
return;
- curDirectory = value;
- NotifyValueChanged ("CurrentDirectory", curDirectory);
-
+ curDir = value;
+ NotifyValueChanged ("CurrentDirectory", curDir);
+ SelectedDirectory = curDir;
}
}
- [XmlAttributeAttribute()][DefaultValue("*")]
+ [XmlAttributeAttribute][DefaultValue("*")]
public virtual string SearchPattern {
get { return searchPattern; }
set {
@@ -66,11 +66,8 @@ namespace Crow
}
}
- string _selectedFile;
- [XmlIgnore]public string SelectedFile {
- get {
- return _selectedFile;
- }
+ [XmlAttributeAttribute]public string SelectedFile {
+ get { return _selectedFile; }
set {
if (value == _selectedFile)
return;
@@ -78,19 +75,44 @@ namespace Crow
NotifyValueChanged ("SelectedFile", _selectedFile);
}
}
- public void onSelectedItemChanged (object sender, SelectionChangeEventArgs e){
+ [XmlAttributeAttribute]public string SelectedDirectory {
+ get { return _selectedDir; }
+ set {
+ if (value == _selectedDir)
+ return;
+ _selectedDir = value;
+ NotifyValueChanged ("SelectedDirectory", _selectedDir);
+ }
+ }
- string tmp = "";
+ public void onFVSelectedItemChanged (object sender, SelectionChangeEventArgs e){
+ if (e.NewValue != null) {
+ if (File.GetAttributes (e.NewValue.ToString ()).HasFlag (FileAttributes.Directory)) {
+ SelectedDirectory = e.NewValue.ToString ();
+ SelectedFile = "";
+ } else {
+ SelectedDirectory = Path.GetDirectoryName (e.NewValue.ToString ());
+ SelectedFile = Path.GetFileName (e.NewValue.ToString ());
+ }
+ }
+ }
+ public void onDVSelectedItemChanged (object sender, SelectionChangeEventArgs e){
if (e.NewValue != null)
- tmp = e.NewValue.ToString();
- if (tmp == SelectedFile)
+ SelectedDirectory = e.NewValue.ToString();
+ }
+ public void goUpDirClick (object sender, MouseButtonEventArgs e){
+ string root = Directory.GetDirectoryRoot(CurrentDirectory);
+ if (CurrentDirectory == root)
return;
- SelectedFile = tmp;
- //SelectedItemChanged.Raise (this, e);
+ CurrentDirectory = Directory.GetParent(CurrentDirectory).FullName;
}
void onFileSelect(object sender, MouseButtonEventArgs e){
- OkClicked.Raise (this, null);
- unloadDialog ((sender as GraphicObject).CurrentInterface);
+ if (string.IsNullOrEmpty (SelectedFile))
+ CurrentDirectory = SelectedDirectory;
+ else {
+ OkClicked.Raise (this, null);
+ unloadDialog ((sender as GraphicObject).CurrentInterface);
+ }
}
void onCancel(object sender, MouseButtonEventArgs e){
unloadDialog ((sender as GraphicObject).CurrentInterface);