public static TreeViewItem ToTreeViewItem(this ProjectModel project) { var node = new TreeViewItem { Header = project.Name }; if (!project.AllChildrenExist) node.ExpandSubtree(); return node; }
//private static void ProcessNode(HtmlNode node, Stack<HtmlNode> stack) //{ // var depth = stack.Count; // var padding = String.Empty.PadLeft(depth, ' '); // stack.Push(node); // try // { // Debug.WriteLine(padding + "Node: " + node.Name); // foreach (var child in node.ChildNodes) // { // ProcessNode(child, stack); // } // } // finally // { // stack.Pop(); // } //} private void button_Click(object sender, RoutedEventArgs e) { using (var stream = File.OpenRead(@"C:\Documents\bookmarks_7_27_15.html")) { var doc = new HtmlDocument(); doc.Load(stream); var rootFolder = new Folder { Name = "<root>" }; ProcessNode(doc.DocumentNode, rootFolder); if (rootFolder.Folders.Count == 1) rootFolder = rootFolder.Folders.Single(); treeView.Items.Add(GetTree(rootFolder)); var bookmarks = rootFolder.AllBookmarks.ToList(); bookmarks.Sort( (l, r) => StringComparer.OrdinalIgnoreCase.Compare(l.Href.ToString(), r.Href.ToString())); var lookupItem = new TreeViewItem { Header = "Lookup" }; var lookup = rootFolder.AllBookmarks.ToLookup(b => b.Href.ToString(), b => b.Folder, StringComparer.OrdinalIgnoreCase); foreach (var key in lookup) { var folders = new HashSet<string>(key.Select(k => k.FullName), StringComparer.OrdinalIgnoreCase); if (folders.Count > 1) { //folders.Sort((l, r) => StringComparer.OrdinalIgnoreCase.Compare(l.FullName, r.FullName)); var keyItem = new TreeViewItem { Header = key.Key + " (" + folders.Count + ")" }; foreach (var folder in folders.OrderBy(f => f, StringComparer.OrdinalIgnoreCase)) keyItem.Items.Add(new TreeViewItem { Header = folder }); lookupItem.Items.Add(keyItem); } } lookupItem.ExpandSubtree(); treeView.Items.Add(lookupItem); var set = new HashSet<string>(StringComparer.OrdinalIgnoreCase); foreach (var bookmark in rootFolder.AllBookmarks) set.Add(bookmark.ToString()); foreach (var txt in set) Debug.WriteLine(txt); using (var output = File.OpenWrite(@"C:\Documents\output.html")) { output.SetLength(0); using (var writer = new StreamWriter(output)) { writer.WriteLine(@"<!DOCTYPE NETSCAPE-Bookmark-file-1>"); writer.WriteLine(@"<!-- This is an automatically generated file."); writer.WriteLine(@" It will be read and overwritten."); writer.WriteLine(@" DO NOT EDIT! -->"); writer.WriteLine( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=UTF-8\">"); writer.WriteLine(@"<TITLE>Bookmarks</TITLE>"); WriteFolder(rootFolder, writer, new HashSet<string>(StringComparer.OrdinalIgnoreCase), ""); } } //Debugger.Break(); } }
public MainWindow(ICatalogManager catMgr, IFinancialManager finMgr) { InitializeComponent(); _catMgr = catMgr; _finMgr = finMgr; var root = new TreeViewItem(); root.Header = "Tree"; var child = new TreeViewItem(); child.Header = "Initial Data Typing"; root.Items.Add(child); child = new TreeViewItem(); child.Header = "Descriptions"; root.Items.Add(child); MainTreeView.Items.Add(root); root.ExpandSubtree(); AreaComboBox.AddHandler(TextBoxBase.TextChangedEvent, new TextChangedEventHandler(ComboBox_TextChanged)); }
public MainWindow(ICatalogManager catMgr, IFinancialManager finMgr) { InitializeComponent(); _catMgr = catMgr; _finMgr = finMgr; var root = new TreeViewItem(); root.Header = "Tree"; var child = new TreeViewItem(); child.Header = "Initial Data Typing"; child.Selected += TreeViewItemSelected; child.Tag = typeof(InitialDataTypingView); root.Items.Add(child); child = new TreeViewItem(); child.Header = "Descriptions"; child.Selected += TreeViewItemSelected; child.Tag = typeof(DescriptionView); root.Items.Add(child); MainTreeView.Items.Add(root); root.ExpandSubtree(); }
private void AddLayer(Layer layer) { Type layerClassType = layer.GetType(); TreeViewItem newItem = new TreeViewItem(); newItem.Header = Layer.LayerTypes[layerClassType]; newItem.Tag = layer; foreach (var p in layerClassType.GetProperties()) { var property = p; // we want to closure this value in lambdas - therefore there must be an additional variable - do not use the foreach variable p! LayerAttributes.LayerAttribute[] layerAttributeList = (LayerAttributes.LayerAttribute[]) property.GetCustomAttributes(typeof(LayerAttributes.LayerAttribute), false); if (layerAttributeList.Length > 0) { // create ui for this element layerAttributeList[0].CreateTreeViewSubElement(newItem, (int)Layers.ActualWidth, () => { return property.GetMethod.Invoke(layer, new object[0]); }, (value) => { property.SetMethod.Invoke(layer, new object[] { value }); }); // pointset layer must be registered if (layerAttributeList[0] is LayerAttributes.LayerAttributePointSet) terrainRenderingPreview.AddPointSet((PointSet)property.GetMethod.Invoke(layer, new object[0])); } } if (Layers.Items.IsEmpty || (Layers.SelectedItem == null)) Layers.Items.Insert(0, newItem); else Layers.Items.Insert(Layers.Items.IndexOf(Layers.SelectedItem), newItem); newItem.ExpandSubtree(); newItem.IsSelected = true; }
/// <summary>Expands the specified <see cref="T:System.Windows.Controls.TreeViewItem" /> control and all its child <see cref="T:System.Windows.Controls.TreeViewItem" /> elements.</summary> /// <param name="container">The <see cref="T:System.Windows.Controls.TreeViewItem" /> to expand.</param> /// <returns> /// <see langword="true" /> if the specified <see cref="T:System.Windows.Controls.TreeViewItem" /> and all its child elements were expanded; otherwise, <see langword="false" />.</returns> // Token: 0x060058EB RID: 22763 RVA: 0x0018987E File Offset: 0x00187A7E protected virtual bool ExpandSubtree(TreeViewItem container) { if (container != null) { container.ExpandSubtree(); return(true); } return(false); }
public void ShowObject(BsonValue bsonValue) { var tree = new TreeView(); var item = new TreeViewItem(); tree.Items.Add(item); WriteObject(item, bsonValue); item.ExpandSubtree(); this.Content = tree; Show(); Focus(); this.Topmost= true; }
public ExceptionMessageBox(System.Exception e, string userExceptionMessage) { InitializeComponent(); this._userExceptionMessage = userExceptionMessage; textBox1.Text = userExceptionMessage; TreeViewItem treeViewItem = new TreeViewItem(); treeViewItem.Header = "Exception"; treeViewItem.ExpandSubtree(); buildTreeLayer(e, treeViewItem); treeView1.Items.Add(treeViewItem); }
public MainWindow() { InitializeComponent(); var root = new TreeViewItem(); root.Header = "Tree"; var child = new TreeViewItem(); child.Header = "Initial Data Typing"; root.Items.Add(child); child = new TreeViewItem(); child.Header = "Descriptions"; root.Items.Add(child); MainTreeView.Items.Add(root); root.ExpandSubtree(); }
public ExplanationView(IEnumerable<AutoCompletionResult.CommandResult> commandResults) { InitializeComponent(); foreach (var commandResult in commandResults) { var commandTreeItem = new TreeViewItem {Header = commandResult.Item.Text + commandResult.CompletionId}; Action<TreeViewItem, Explanation> renderExplanation = null; renderExplanation = (t, exp) => { var header = exp.Value + " " + exp.Description + " "; var childItem = new TreeViewItem {Header = header}; t.Items.Add(childItem); foreach (var explanation in exp.GetDetails() ?? new Explanation[] {}) { renderExplanation(childItem, explanation); } }; renderExplanation(commandTreeItem, commandResult.Explanation); commandTreeItem.ExpandSubtree(); ExplanationTree.Items.Add(commandTreeItem); } }
public MainWindow(ICatalogManager catMgr) { InitializeComponent(); _catMgr = catMgr; var root = new TreeViewItem(); root.Header = "Tree"; var child = CreateTreeViewItem("Initial Data Typing"); child.Tag = typeof(InitialDataTypingForm); root.Items.Add(child); child = CreateTreeViewItem("Descriptions"); child.Tag = typeof(DescriptionsForm); root.Items.Add(child); MainTreeView.Items.Add(root); root.ExpandSubtree(); AreaComboBox.AddHandler(TextBoxBase.TextChangedEvent, new TextChangedEventHandler(ComboBox_TextChanged)); }
void Group() { GroupTree.Items.Clear(); Results.Visibility = Visibility.Collapsed; GroupTree.Visibility = Visibility.Visible; if (Query.Text == string.Empty || DataToQuery.Text == string.Empty) return; try { Regex theExpr; try { theExpr = new Regex(Query.Text, RegExOptions, Timeout); } catch (RegexMatchTimeoutException) { Status.Content = QueryTime.Content = "Timeout"; return; } catch (Exception E) { Status.Content = E.Message; return; } var c = theExpr.Matches(DataToQuery.Text); foreach (Match match in c) { var header = new TreeViewItem { Header = match.Value }; foreach (var groupName in theExpr.GetGroupNames()) { var theGroup = match.Groups[groupName]; if (groupName == "0") continue; var groupHeader = new TreeViewItem { Header = "<" + groupName + "> " + theGroup }; header.Items.Add(groupHeader); foreach (Capture theCapture in theGroup.Captures) groupHeader.Items.Add(theCapture.Value); } GroupTree.Items.Add(header); header.ExpandSubtree(); } Status.Content = c.Count == 0 ? "No Matches" : "Matched"; } catch (Exception e) { Status.Content = e.Message; } }
/// <summary> /// Constructor. /// </summary> public Setup() { Logger.Info("Entering constructor."); // Defines how to show the setup window. Controller.ShowWindowEvent += delegate { Dispatcher.BeginInvoke((Action)delegate { Logger.Info("Entering ShowWindowEvent."); Show(); Activate(); BringIntoView(); Logger.Info("Exiting ShowWindowEvent."); }); }; // Defines how to hide the setup windows. Controller.HideWindowEvent += delegate { Dispatcher.BeginInvoke((Action)delegate { Hide(); }); }; // Defines what to do when changing page. // The remote folder addition wizard has several steps. Controller.ChangePageEvent += delegate(PageType type) { Dispatcher.BeginInvoke((Action)delegate { Logger.Info("Entering ChangePageEvent."); Reset(); // Show appropriate setup page. switch (type) { // Welcome page that shows up at first run. #region Page Setup case PageType.Setup: { // UI elements. Header = Properties_Resources.Welcome; Description = Properties_Resources.Intro; Button cancel_button = new Button() { Content = Properties_Resources.Cancel }; Button continue_button = new Button() { Content = Properties_Resources.Continue, IsEnabled = false }; Buttons.Add(continue_button); Buttons.Add(cancel_button); continue_button.Focus(); // Actions. Controller.UpdateSetupContinueButtonEvent += delegate(bool enabled) { Dispatcher.BeginInvoke((Action)delegate { continue_button.IsEnabled = enabled; }); }; cancel_button.Click += delegate { Dispatcher.BeginInvoke((Action)delegate { Program.UI.StatusIcon.Dispose(); Controller.SetupPageCancelled(); }); }; continue_button.Click += delegate { Controller.SetupPageCompleted(); }; Controller.CheckSetupPage(); break; } #endregion #region Page Tutorial case PageType.Tutorial: { switch (Controller.TutorialCurrentPage) { // First page of the tutorial. case 1: { // UI elements. Header = Properties_Resources.WhatsNext; Description = Properties_Resources.CmisSyncCreates; WPF.Image slide_image = new WPF.Image() { Width = 350, Height = 200 }; slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-1"); Button skip_tutorial_button = new Button() { Content = Properties_Resources.SkipTutorial }; Button continue_button = new Button() { Content = Properties_Resources.Continue }; ContentCanvas.Children.Add(slide_image); Canvas.SetLeft(slide_image, 215); Canvas.SetTop(slide_image, 130); Buttons.Add(continue_button); Buttons.Add(skip_tutorial_button); // Actions. skip_tutorial_button.Click += delegate { Controller.TutorialSkipped(); }; continue_button.Click += delegate { Controller.TutorialPageCompleted(); }; break; } // Second page of the tutorial. case 2: { // UI elements. Header = Properties_Resources.Synchronization; Description = Properties_Resources.DocumentsAre; Button continue_button = new Button() { Content = Properties_Resources.Continue }; WPF.Image slide_image = new WPF.Image() { Width = 350, Height = 200 }; slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-2"); ContentCanvas.Children.Add(slide_image); Canvas.SetLeft(slide_image, 215); Canvas.SetTop(slide_image, 130); Buttons.Add(continue_button); // Actions. continue_button.Click += delegate { Controller.TutorialPageCompleted(); }; break; } // Third page of the tutorial. case 3: { // UI elements. Header = Properties_Resources.StatusIcon; Description = Properties_Resources.StatusIconShows; Button continue_button = new Button() { Content = Properties_Resources.Continue }; WPF.Image slide_image = new WPF.Image() { Width = 350, Height = 200 }; slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-3"); ContentCanvas.Children.Add(slide_image); Canvas.SetLeft(slide_image, 215); Canvas.SetTop(slide_image, 130); Buttons.Add(continue_button); // Actions. continue_button.Click += delegate { Controller.TutorialPageCompleted(); }; break; } // Fourth page of the tutorial. case 4: { // UI elements. Header = Properties_Resources.AddFolders; Description = Properties_Resources.YouCan; Button finish_button = new Button() { Content = Properties_Resources.Finish }; WPF.Image slide_image = new WPF.Image() { Width = 350, Height = 200 }; slide_image.Source = UIHelpers.GetImageSource("tutorial-slide-4"); CheckBox check_box = new CheckBox() { Content = Properties_Resources.Startup, IsChecked = true }; ContentCanvas.Children.Add(slide_image); Canvas.SetLeft(slide_image, 215); Canvas.SetTop(slide_image, 130); ContentCanvas.Children.Add(check_box); Canvas.SetLeft(check_box, 185); Canvas.SetBottom(check_box, 12); Buttons.Add(finish_button); // Actions. check_box.Click += delegate { Controller.StartupItemChanged(check_box.IsChecked.Value); }; finish_button.Click += delegate { Controller.TutorialPageCompleted(); }; break; } } break; } #endregion // First step of the remote folder addition dialog: Specifying the server. #region Page Add1 case PageType.Add1: { // UI elements. Header = Properties_Resources.Where; // Address input UI. TextBlock address_label = new TextBlock() { Text = Properties_Resources.EnterWebAddress, FontWeight = FontWeights.Bold }; TextBox address_box = new TextBox() { Width = 420, Text = (Controller.PreviousAddress != null) ? Controller.PreviousAddress.ToString() : "" }; TextBlock address_help_label = new TextBlock() { Text = Properties_Resources.Help + ": ", FontSize = 11, Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128)) }; Run run = new Run(Properties_Resources.WhereToFind); Hyperlink link = new Hyperlink(run); link.NavigateUri = new Uri("https://github.com/nicolas-raoul/CmisSync/wiki/What-address"); address_help_label.Inlines.Add(link); link.RequestNavigate += (sender, e) => { System.Diagnostics.Process.Start(e.Uri.ToString()); }; // Rather than a TextBlock, we use a textBox so that users can copy/paste the error message and Google it. TextBox address_error_label = new TextBox() { FontSize = 11, Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)), Visibility = Visibility.Hidden, IsReadOnly = true, Background = Brushes.Transparent, BorderThickness = new Thickness(0), TextWrapping = TextWrapping.Wrap, MaxWidth = 420 }; // User input UI. TextBlock user_label = new TextBlock() { Text = Properties_Resources.User + ":", FontWeight = FontWeights.Bold, Width = 200 }; TextBox user_box = new TextBox() { Width = 200 }; if (Controller.saved_user == String.Empty || Controller.saved_user == null) { user_box.Text = Environment.UserName; } else { user_box.Text = Controller.saved_user; } TextBlock user_help_label = new TextBlock() { FontSize = 11, Width = 200, Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128)) }; // Password input UI. TextBlock password_label = new TextBlock() { Text = Properties_Resources.Password + ":", FontWeight = FontWeights.Bold, Width = 200 }; PasswordBox password_box = new PasswordBox() { Width = 200 }; TextBlock password_help_label = new TextBlock() { FontSize = 11, Width = 200, Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128)) }; // Buttons. Button cancel_button = new Button() { Content = Properties_Resources.Cancel }; Button continue_button = new Button() { Content = Properties_Resources.Continue }; Buttons.Add(continue_button); Buttons.Add(cancel_button); // Address ContentCanvas.Children.Add(address_label); Canvas.SetTop(address_label, 160); Canvas.SetLeft(address_label, 185); ContentCanvas.Children.Add(address_box); Canvas.SetTop(address_box, 180); Canvas.SetLeft(address_box, 185); ContentCanvas.Children.Add(address_help_label); Canvas.SetTop(address_help_label, 205); Canvas.SetLeft(address_help_label, 185); ContentCanvas.Children.Add(address_error_label); Canvas.SetTop(address_error_label, 235); Canvas.SetLeft(address_error_label, 185); // User ContentCanvas.Children.Add(user_label); Canvas.SetTop(user_label, 300); Canvas.SetLeft(user_label, 185); ContentCanvas.Children.Add(user_box); Canvas.SetTop(user_box, 330); Canvas.SetLeft(user_box, 185); ContentCanvas.Children.Add(user_help_label); Canvas.SetTop(user_help_label, 355); Canvas.SetLeft(user_help_label, 185); // Password ContentCanvas.Children.Add(password_label); Canvas.SetTop(password_label, 300); Canvas.SetRight(password_label, 30); ContentCanvas.Children.Add(password_box); Canvas.SetTop(password_box, 330); Canvas.SetRight(password_box, 30); ContentCanvas.Children.Add(password_help_label); Canvas.SetTop(password_help_label, 355); Canvas.SetRight(password_help_label, 30); TaskbarItemInfo.ProgressValue = 0.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; if (Controller.PreviousAddress == null || Controller.PreviousAddress.ToString() == String.Empty) address_box.Text = "https://"; else address_box.Text = Controller.PreviousAddress.ToString(); address_box.Focus(); address_box.Select(address_box.Text.Length, 0); // Actions. Controller.ChangeAddressFieldEvent += delegate(string text, string example_text) { Dispatcher.BeginInvoke((Action)delegate { address_box.Text = text; address_help_label.Text = example_text; }); }; Controller.ChangeUserFieldEvent += delegate(string text, string example_text) { Dispatcher.BeginInvoke((Action)delegate { user_box.Text = text; user_help_label.Text = example_text; }); }; Controller.ChangePasswordFieldEvent += delegate(string text, string example_text) { Dispatcher.BeginInvoke((Action)delegate { password_box.Password = text; password_help_label.Text = example_text; }); }; Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled) { Dispatcher.BeginInvoke((Action)delegate { continue_button.IsEnabled = button_enabled; }); }; Controller.CheckAddPage(address_box.Text); address_box.TextChanged += delegate { string error = Controller.CheckAddPage(address_box.Text); if (!String.IsNullOrEmpty(error)) { address_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture); address_error_label.Visibility = Visibility.Visible; } else address_error_label.Visibility = Visibility.Hidden; }; cancel_button.Click += delegate { Controller.PageCancelled(); }; continue_button.Click += delegate { // Show wait cursor System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; // Try to find the CMIS server (asynchronously) GetRepositoriesFuzzyDelegate dlgt = new GetRepositoriesFuzzyDelegate(CmisUtils.GetRepositoriesFuzzy); IAsyncResult ar = dlgt.BeginInvoke(new Uri(address_box.Text), user_box.Text, password_box.Password, null, null); while (!ar.AsyncWaitHandle.WaitOne(100)) { System.Windows.Forms.Application.DoEvents(); } Tuple<CmisServer, Exception> result = dlgt.EndInvoke(ar); CmisServer cmisServer = result.Item1; Controller.repositories = cmisServer != null ? cmisServer.Repositories : null; address_box.Text = cmisServer.Url.ToString(); // Hide wait cursor System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; if (Controller.repositories == null) { // Could not retrieve repositories list from server, show warning. string warning = ""; string message = result.Item2.Message; Exception e = result.Item2; if (e is CmisPermissionDeniedException) { warning = Properties_Resources.LoginFailedForbidden; } else if (e is CmisServerNotFoundException) { warning = Properties_Resources.ConnectFailure; } else if (e.Message == "SendFailure" && cmisServer.Url.Scheme.StartsWith("https")) { warning = Properties_Resources.SendFailureHttps; } else if (e.Message == "TrustFailure") { warning = Properties_Resources.TrustFailure; } else { warning = message + Environment.NewLine + Properties_Resources.Sorry; } address_error_label.Text = warning; address_error_label.Visibility = Visibility.Visible; } else { // Continue to next step, which is choosing a particular folder. Controller.Add1PageCompleted( new Uri(address_box.Text), user_box.Text, password_box.Password); } }; break; } #endregion // Second step of the remote folder addition dialog: choosing the folder. #region Page Add2 case PageType.Add2: { // UI elements. Header = Properties_Resources.Which; // A tree allowing the user to browse CMIS repositories/folders. /*if(TODO check if OpenDataSpace, and further separate code below) { System.Uri resourceLocater = new System.Uri("/CmisSync;component/TreeView.xaml", System.UriKind.Relative); System.Windows.Controls.TreeView treeView = System.Windows.Application.LoadComponent(resourceLocater) as TreeView; ObservableCollection<CmisRepo> repos = new ObservableCollection<CmisRepo>(); */ System.Windows.Controls.TreeView treeView = new System.Windows.Controls.TreeView(); treeView.Width = 410; treeView.Height = 267; // Some CMIS servers hold several repositories (ex:Nuxeo). Show one root per repository. foreach (KeyValuePair<String, String> repository in Controller.repositories) { System.Windows.Controls.TreeViewItem item = new System.Windows.Controls.TreeViewItem(); item.Tag = new SelectionTreeItem(repository.Key, "/"); item.Header = repository.Value; treeView.Items.Add(item); } ContentCanvas.Children.Add(treeView); Canvas.SetTop(treeView, 70); Canvas.SetLeft(treeView, 185); // Action: when an element in the tree is clicked, loads its children and show them. treeView.SelectedItemChanged += delegate { // Identify the selected remote path. TreeViewItem item = (TreeViewItem)treeView.SelectedItem; Controller.saved_remote_path = ((SelectionTreeItem)item.Tag).fullPath; // Identify the selected repository. object cursor = item; while (cursor is TreeViewItem) { TreeViewItem treeViewItem = (TreeViewItem)cursor; cursor = treeViewItem.Parent; if (!(cursor is TreeViewItem)) { Controller.saved_repository = ((SelectionTreeItem)treeViewItem.Tag).repository; } } // Load sub-folders if it has not been done already. // We use each item's Tag to store metadata: whether this item's subfolders have been loaded or not. if (((SelectionTreeItem)item.Tag).childrenLoaded == false) { System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; // Get list of subfolders (asynchronously) GetSubfoldersDelegate dlgt = new GetSubfoldersDelegate(CmisUtils.GetSubfolders); IAsyncResult ar = dlgt.BeginInvoke(Controller.saved_repository, Controller.saved_remote_path, Controller.saved_address.ToString(), Controller.saved_user, Controller.saved_password, null, null); while (!ar.AsyncWaitHandle.WaitOne(100)) { System.Windows.Forms.Application.DoEvents(); } string[] subfolders = dlgt.EndInvoke(ar); // Create a sub-item for each subfolder foreach (string subfolder in subfolders) { System.Windows.Controls.TreeViewItem subItem = new System.Windows.Controls.TreeViewItem(); subItem.Tag = new SelectionTreeItem(null, subfolder); subItem.Header = Path.GetFileName(subfolder); item.Items.Add(subItem); } ((SelectionTreeItem)item.Tag).childrenLoaded = true; item.ExpandSubtree(); System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; } }; Button cancel_button = new Button() { Content = Properties_Resources.Cancel }; Button continue_button = new Button() { Content = CmisSync.Properties_Resources.ResourceManager.GetString("Continue", CultureInfo.CurrentCulture) }; Button back_button = new Button() { Content = Properties_Resources.Back, IsDefault = false }; Buttons.Add(back_button); Buttons.Add(continue_button); Buttons.Add(cancel_button); continue_button.Focus(); cancel_button.Click += delegate { Controller.PageCancelled(); }; continue_button.Click += delegate { Controller.Add2PageCompleted( Controller.saved_repository, Controller.saved_remote_path); }; back_button.Click += delegate { Controller.BackToPage1(); }; break; } #endregion // Third step of the remote folder addition dialog: Customizing the local folder. #region Page Customize case PageType.Customize: { string parentFolder = Controller.DefaultRepoPath; // UI elements. Header = Properties_Resources.Customize; // Customize local folder name TextBlock localfolder_label = new TextBlock() { Text = Properties_Resources.EnterLocalFolderName, FontWeight = FontWeights.Bold, TextWrapping = TextWrapping.Wrap, Width = 420 }; string localfoldername = Controller.saved_address.Host.ToString(); foreach (KeyValuePair<String, String> repository in Controller.repositories) { if (repository.Key == Controller.saved_repository) { localfoldername += "\\" + repository.Value; break; } } TextBox localfolder_box = new TextBox() { Width = 420, Text = localfoldername }; TextBlock localrepopath_label = new TextBlock() { Text = Properties_Resources.ChangeRepoPath, FontWeight = FontWeights.Bold }; TextBox localrepopath_box = new TextBox() { Width = 375, Text = Path.Combine(parentFolder, localfolder_box.Text) }; localfolder_box.TextChanged += delegate { localrepopath_box.Text = Path.Combine(parentFolder, localfolder_box.Text); }; Button choose_folder_button = new Button() { Width = 40, Content = "..." }; TextBlock localfolder_error_label = new TextBlock() { FontSize = 11, Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)), Visibility = Visibility.Hidden, TextWrapping = TextWrapping.Wrap }; Button cancel_button = new Button() { Content = Properties_Resources.Cancel }; Button add_button = new Button() { Content = Properties_Resources.Add, IsDefault = true }; Button back_button = new Button() { Content = Properties_Resources.Back }; Buttons.Add(back_button); Buttons.Add(add_button); Buttons.Add(cancel_button); // Local Folder Name ContentCanvas.Children.Add(localfolder_label); Canvas.SetTop(localfolder_label, 160); Canvas.SetLeft(localfolder_label, 185); ContentCanvas.Children.Add(localfolder_box); Canvas.SetTop(localfolder_box, 180); Canvas.SetLeft(localfolder_box, 185); ContentCanvas.Children.Add(localrepopath_label); Canvas.SetTop(localrepopath_label, 200); Canvas.SetLeft(localrepopath_label, 185); ContentCanvas.Children.Add(localrepopath_box); Canvas.SetTop(localrepopath_box, 220); Canvas.SetLeft(localrepopath_box, 185); ContentCanvas.Children.Add(choose_folder_button); Canvas.SetTop(choose_folder_button, 220); Canvas.SetLeft(choose_folder_button, 565); ContentCanvas.Children.Add(localfolder_error_label); Canvas.SetTop(localfolder_error_label, 275); Canvas.SetLeft(localfolder_error_label, 185); TaskbarItemInfo.ProgressValue = 0.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; localfolder_box.Focus(); localfolder_box.Select(localfolder_box.Text.Length, 0); // Actions. Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled) { Dispatcher.BeginInvoke((Action)delegate { if (add_button.IsEnabled != button_enabled) { add_button.IsEnabled = button_enabled; if (button_enabled) { add_button.IsDefault = true; back_button.IsDefault = false; } } }); }; // Repo name validity. string error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text); if (!String.IsNullOrEmpty(error)) { localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture); localfolder_error_label.Visibility = Visibility.Visible; } else localfolder_error_label.Visibility = Visibility.Hidden; localfolder_box.TextChanged += delegate { error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text); if (!String.IsNullOrEmpty(error)) { localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture); localfolder_error_label.Visibility = Visibility.Visible; } else localfolder_error_label.Visibility = Visibility.Hidden; }; // Repo path validity. error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text); if (!String.IsNullOrEmpty(error)) { localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture); localfolder_error_label.Visibility = Visibility.Visible; } else localfolder_error_label.Visibility = Visibility.Hidden; localrepopath_box.TextChanged += delegate { error = Controller.CheckRepoPathAndName(localrepopath_box.Text, localfolder_box.Text); if (!String.IsNullOrEmpty(error)) { localfolder_error_label.Text = Properties_Resources.ResourceManager.GetString(error, CultureInfo.CurrentCulture); localfolder_error_label.Visibility = Visibility.Visible; } else localfolder_error_label.Visibility = Visibility.Hidden; }; // Choose a folder. choose_folder_button.Click += delegate { System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { parentFolder = folderBrowserDialog1.SelectedPath; localrepopath_box.Text = Path.Combine(parentFolder, localfolder_box.Text); } }; // Other actions. cancel_button.Click += delegate { Controller.PageCancelled(); }; back_button.Click += delegate { Controller.BackToPage2(); }; add_button.Click += delegate { Controller.CustomizePageCompleted(localfolder_box.Text, localrepopath_box.Text); }; break; } #endregion // Fourth page of the remote folder addition dialog: starting to sync. // TODO: This step should be removed. Now it appears just a brief instant, because sync is asynchronous. #region Page Syncing case PageType.Syncing: { // UI elements. Header = Properties_Resources.AddingFolder + " ‘" + Controller.SyncingReponame + "’…"; Description = Properties_Resources.MayTakeTime; Button finish_button = new Button() { Content = Properties_Resources.Finish, IsEnabled = false }; ProgressBar progress_bar = new ProgressBar() { Width = 414, Height = 15, Value = Controller.ProgressBarPercentage }; ContentCanvas.Children.Add(progress_bar); Canvas.SetLeft(progress_bar, 185); Canvas.SetTop(progress_bar, 150); TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal; Buttons.Add(finish_button); // Actions. Controller.UpdateProgressBarEvent += delegate(double percentage) { Dispatcher.BeginInvoke((Action)delegate { progress_bar.Value = percentage; TaskbarItemInfo.ProgressValue = percentage / 100; }); }; break; } #endregion // Final page of the remote folder addition dialog: end of the addition wizard. #region Page Finished case PageType.Finished: { // UI elements. Header = Properties_Resources.Ready; Description = Properties_Resources.YouCanFind; Button finish_button = new Button() { Content = Properties_Resources.Finish }; Button open_folder_button = new Button() { Content = Properties_Resources.OpenFolder }; TaskbarItemInfo.ProgressValue = 0.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; Buttons.Add(open_folder_button); Buttons.Add(finish_button); // Actions. finish_button.Click += delegate { Controller.FinishPageCompleted(); }; open_folder_button.Click += delegate { Controller.OpenFolderClicked(); }; SystemSounds.Exclamation.Play(); break; } #endregion } ShowAll(); Logger.Info("Exiting ChangePageEvent."); }); }; this.Closing += delegate { Controller.PageCancelled(); }; Controller.PageCancelled(); Logger.Info("Exiting constructor."); }
public SparkleSetup() { Controller.ShowWindowEvent += delegate { Dispatcher.BeginInvoke ((Action) delegate { Show (); Activate (); BringIntoView (); }); }; Controller.HideWindowEvent += delegate { Dispatcher.BeginInvoke ((Action) delegate { Hide (); }); }; Controller.ChangePageEvent += delegate (PageType type, string [] warnings) { Dispatcher.BeginInvoke ((Action) delegate { Reset (); switch (type) { case PageType.Setup: { Header = "Welcome to CmisSync!"; Description = "CmisSync allows you to keep in sync with any CMIS-compatible repository, and use your documents even when offline.\nIt is like Dropbox for Enterprise Content Management!\nAvailable for Linux, Mac, Windows."; Button cancel_button = new Button () { Content = "Cancel" }; Button continue_button = new Button () { Content = "Continue", IsEnabled = false }; Buttons.Add (continue_button); Buttons.Add (cancel_button); continue_button.Focus(); Controller.UpdateSetupContinueButtonEvent += delegate (bool enabled) { Dispatcher.BeginInvoke ((Action) delegate { continue_button.IsEnabled = enabled; }); }; cancel_button.Click += delegate { Dispatcher.BeginInvoke ((Action) delegate { Program.UI.StatusIcon.Dispose (); Controller.SetupPageCancelled (); }); }; continue_button.Click += delegate { Controller.SetupPageCompleted (); }; Controller.CheckSetupPage (); break; } case PageType.Invite: { Header = "You've received an invite!"; Description = "Do you want to add this project to SparkleShare?"; TextBlock address_label = new TextBlock () { Text = "Address:", Width = 150, TextAlignment = TextAlignment.Right }; TextBlock address_value = new TextBlock () { Text = Controller.PendingInvite.Address, Width = 175, FontWeight = FontWeights.Bold }; TextBlock path_label = new TextBlock () { Text = "Remote Path:", Width = 150, TextAlignment = TextAlignment.Right }; TextBlock path_value = new TextBlock () { Width = 175, Text = Controller.PendingInvite.RemotePath, FontWeight = FontWeights.Bold }; Button cancel_button = new Button () { Content = "Cancel" }; Button add_button = new Button () { Content = "Add" }; ContentCanvas.Children.Add (address_label); Canvas.SetLeft (address_label, 180); Canvas.SetTop (address_label, 200); ContentCanvas.Children.Add (address_value); Canvas.SetLeft (address_value, 340); Canvas.SetTop (address_value, 200); ContentCanvas.Children.Add (path_label); Canvas.SetLeft (path_label, 180); Canvas.SetTop (path_label, 225); ContentCanvas.Children.Add (path_value); Canvas.SetLeft (path_value, 340); Canvas.SetTop (path_value, 225); Buttons.Add (add_button); Buttons.Add (cancel_button); cancel_button.Click += delegate { Controller.PageCancelled (); }; add_button.Click += delegate { Controller.InvitePageCompleted (); }; break; } case PageType.Add1: { Header = "Where is your organization's server?"; // Address TextBlock address_label = new TextBlock () { Text = "Enter a Web address where the documents can be seen:", FontWeight = FontWeights.Bold }; TextBox address_box = new TextBox () { Width = 420, Text = Controller.PreviousAddress, IsEnabled = (Controller.SelectedPlugin.Address == null) }; TextBlock address_help_label = new TextBlock() { Text = "Help: ", FontSize = 11, Foreground = new SolidColorBrush(Color.FromRgb(128, 128, 128)) }; Run run = new Run("Where to find this address"); Hyperlink link = new Hyperlink(run); link.NavigateUri = new Uri("https://github.com/nicolas-raoul/CmisSync/wiki/What-address"); address_help_label.Inlines.Add(link); link.RequestNavigate += (sender, e) => { System.Diagnostics.Process.Start(e.Uri.ToString()); }; TextBlock address_error_label = new TextBlock() { FontSize = 11, Foreground = new SolidColorBrush(Color.FromRgb(255, 128, 128)), Visibility = Visibility.Hidden }; // User TextBlock user_label = new TextBlock() { Text = "User:"******"Password:"******"Cancel" }; Button continue_button = new Button () { Content = "Continue" }; // Address ContentCanvas.Children.Add (address_label); Canvas.SetTop (address_label, 160); Canvas.SetLeft (address_label, 185); ContentCanvas.Children.Add (address_box); Canvas.SetTop (address_box, 180); Canvas.SetLeft (address_box, 185); ContentCanvas.Children.Add(address_help_label); Canvas.SetTop(address_help_label, 205); Canvas.SetLeft(address_help_label, 185); ContentCanvas.Children.Add(address_error_label); Canvas.SetTop(address_error_label, 235); Canvas.SetLeft(address_error_label, 185); // User ContentCanvas.Children.Add(user_label); Canvas.SetTop(user_label, 300); Canvas.SetLeft(user_label, 185); ContentCanvas.Children.Add(user_box); Canvas.SetTop(user_box, 330); Canvas.SetLeft(user_box, 185); ContentCanvas.Children.Add(user_help_label); Canvas.SetTop(user_help_label, 355); Canvas.SetLeft(user_help_label, 185); // Password ContentCanvas.Children.Add(password_label); Canvas.SetTop(password_label, 300); Canvas.SetRight(password_label, 30); ContentCanvas.Children.Add(password_box); Canvas.SetTop(password_box, 330); Canvas.SetRight(password_box, 30); ContentCanvas.Children.Add(password_help_label); Canvas.SetTop(password_help_label, 355); Canvas.SetRight(password_help_label, 30); TaskbarItemInfo.ProgressValue = 0.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; Buttons.Add (continue_button); Buttons.Add (cancel_button); address_box.Focus (); address_box.Select (address_box.Text.Length, 0); Controller.ChangeAddressFieldEvent += delegate (string text, string example_text, FieldState state) { Dispatcher.BeginInvoke ((Action) delegate { address_box.Text = text; address_box.IsEnabled = (state == FieldState.Enabled); address_help_label.Text = example_text; }); }; Controller.ChangeUserFieldEvent += delegate(string text, string example_text, FieldState state) { Dispatcher.BeginInvoke((Action)delegate { user_box.Text = text; user_box.IsEnabled = (state == FieldState.Enabled); user_help_label.Text = example_text; }); }; Controller.ChangePasswordFieldEvent += delegate(string text, string example_text, FieldState state) { Dispatcher.BeginInvoke((Action)delegate { password_box.Password = text; password_box.IsEnabled = (state == FieldState.Enabled); password_help_label.Text = example_text; }); }; Controller.UpdateAddProjectButtonEvent += delegate(bool button_enabled) { Dispatcher.BeginInvoke ((Action) delegate { continue_button.IsEnabled = button_enabled; }); }; Controller.CheckAddPage (address_box.Text); address_box.TextChanged += delegate { Controller.CheckAddPage (address_box.Text); }; cancel_button.Click += delegate { Controller.PageCancelled (); }; continue_button.Click += delegate { // Show wait cursor System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; // Try to find the CMIS server CmisServer cmisServer = CmisUtils.GetRepositoriesFuzzy( address_box.Text, user_box.Text, password_box.Password); Controller.repositories = cmisServer.repositories; address_box.Text = cmisServer.url; // Hide wait cursor System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; if (Controller.repositories == null) { // Show warning address_error_label.Text = "Sorry, CmisSync can not find a CMIS server at this address.\nPlease check again.\nIf you are sure about the address, open it in a browser and post\nthe resulting XML to the CmisSync forum."; address_error_label.Visibility = Visibility.Visible; } else { // Continue to folder selection Controller.Add1PageCompleted( address_box.Text, user_box.Text, password_box.Password); } }; break; } case PageType.Add2: { Header = "Which remote folder do you want to sync?"; System.Windows.Controls.TreeView treeView = new System.Windows.Controls.TreeView(); treeView.Width = 410; treeView.Height = 267; foreach (string repository in Controller.repositories) { System.Windows.Controls.TreeViewItem item = new System.Windows.Controls.TreeViewItem(); item.Tag = new SelectionTreeItem("/"); item.Header = repository; treeView.Items.Add(item); } ContentCanvas.Children.Add(treeView); Canvas.SetTop(treeView, 70); Canvas.SetLeft(treeView, 185); treeView.SelectedItemChanged += delegate { // Identify the selected remote path. TreeViewItem item = (TreeViewItem)treeView.SelectedItem; Controller.saved_remote_path = ((SelectionTreeItem)item.Tag).fullPath; // Identify the selected repository. object cursor = item; while (cursor is TreeViewItem) { TreeViewItem treeViewItem = (TreeViewItem)cursor; cursor = treeViewItem.Parent; if ( ! (cursor is TreeViewItem)) { Controller.saved_repository = (string)treeViewItem.Header; } } // Load sub-folders if it has not been done already. // We use each item's Tag to store metadata: whether this item's subfolders have been loaded or not. if ( ((SelectionTreeItem)item.Tag).childrenLoaded == false) { System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; // Get list of subfolders string[] subfolders = CmisUtils.GetSubfolders(Controller.saved_repository, Controller.saved_remote_path, Controller.saved_address, Controller.saved_user, Controller.saved_password); // Create a sub-item for each subfolder foreach (string subfolder in subfolders) { System.Windows.Controls.TreeViewItem subItem = new System.Windows.Controls.TreeViewItem(); subItem.Tag = new SelectionTreeItem(subfolder); subItem.Header = Path.GetFileName(subfolder); item.Items.Add(subItem); } ((SelectionTreeItem)item.Tag).childrenLoaded = true; item.ExpandSubtree(); System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; } }; Button cancel_button = new Button() { Content = "Cancel" }; Button add_button = new Button() { Content = "Add" }; Buttons.Add(add_button); Buttons.Add(cancel_button); cancel_button.Click += delegate { Controller.PageCancelled(); }; add_button.Click += delegate { Controller.Add2PageCompleted( Controller.saved_repository, Controller.saved_remote_path); }; break; } case PageType.Syncing: { Header = "Adding folder ‘" + Controller.SyncingFolder + "’…"; Description = "This may either take a short or a long time depending on the folder's size."; Button finish_button = new Button () { Content = "Finish", IsEnabled = false }; Button cancel_button = new Button () { Content = "Cancel" }; ProgressBar progress_bar = new ProgressBar () { Width = 414, Height = 15, Value = Controller.ProgressBarPercentage }; ContentCanvas.Children.Add (progress_bar); Canvas.SetLeft (progress_bar, 185); Canvas.SetTop (progress_bar, 150); TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal; Buttons.Add (cancel_button); Buttons.Add(finish_button); Controller.UpdateProgressBarEvent += delegate (double percentage) { Dispatcher.BeginInvoke ((Action) delegate { progress_bar.Value = percentage; TaskbarItemInfo.ProgressValue = percentage / 100; }); }; cancel_button.Click += delegate { Controller.SyncingCancelled (); }; break; } case PageType.Error: { Header = "Oops! Something went wrong…"; Description = "Please check the following:"; TextBlock help_block = new TextBlock () { TextWrapping = TextWrapping.Wrap, Width = 310 }; TextBlock bullets_block = new TextBlock () { Text = "•\n\n\n•" }; help_block.Inlines.Add (new Bold (new Run (Controller.PreviousUrl))); help_block.Inlines.Add (" is the address we've compiled. Does this look alright?\n\n"); help_block.Inlines.Add ("Do you have access rights to this remote project?"); if (warnings.Length > 0) { bullets_block.Text += "\n\n•"; help_block.Inlines.Add ("\n\nHere's the raw error message:"); foreach (string warning in warnings) { help_block.Inlines.Add ("\n"); help_block.Inlines.Add (new Bold (new Run (warning))); } } Button cancel_button = new Button () { Content = "Cancel" }; Button try_again_button = new Button () { Content = "Try again…" }; ContentCanvas.Children.Add (bullets_block); Canvas.SetLeft (bullets_block, 195); Canvas.SetTop (bullets_block, 100); ContentCanvas.Children.Add (help_block); Canvas.SetLeft (help_block, 210); Canvas.SetTop (help_block, 100); TaskbarItemInfo.ProgressValue = 1.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Error; Buttons.Add (try_again_button); Buttons.Add (cancel_button); cancel_button.Click += delegate { Controller.PageCancelled (); }; try_again_button.Click += delegate { Controller.ErrorPageCompleted (); }; break; } case PageType.Finished: { Header = "Your documents are ready!"; Description = "You can find them in your CmisSync folder."; Button finish_button = new Button () { Content = "Finish" }; Button open_folder_button = new Button () { Content = string.Format ("Open {0}", Path.GetFileName (Controller.PreviousPath)) }; if (warnings.Length > 0) { Image warning_image = new Image () { Source = Imaging.CreateBitmapSourceFromHIcon (Drawing.SystemIcons.Information.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions ()) }; TextBlock warning_block = new TextBlock () { Text = warnings [0], Width = 310, TextWrapping = TextWrapping.Wrap }; ContentCanvas.Children.Add (warning_image); Canvas.SetLeft (warning_image, 193); Canvas.SetTop (warning_image, 100); ContentCanvas.Children.Add (warning_block); Canvas.SetLeft (warning_block, 240); Canvas.SetTop (warning_block, 100); } TaskbarItemInfo.ProgressValue = 0.0; TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None; Buttons.Add(open_folder_button); Buttons.Add (finish_button); finish_button.Click += delegate { Controller.FinishPageCompleted (); }; open_folder_button.Click += delegate { Controller.OpenFolderClicked (); }; SystemSounds.Exclamation.Play (); break; } case PageType.Tutorial: { switch (Controller.TutorialPageNumber) { case 1: { Header = "What's happening next?"; Description = "CmisSync creates a special folder on your computer " + "that will keep track of your folders."; WPF.Image slide_image = new WPF.Image () { Width = 350, Height = 200 }; slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-1"); Button skip_tutorial_button = new Button () { Content = "Skip tutorial" }; Button continue_button = new Button () { Content = "Continue" }; ContentCanvas.Children.Add (slide_image); Canvas.SetLeft (slide_image, 215); Canvas.SetTop (slide_image, 130); Buttons.Add (continue_button); Buttons.Add (skip_tutorial_button); skip_tutorial_button.Click += delegate { Controller.TutorialSkipped (); }; continue_button.Click += delegate { Controller.TutorialPageCompleted (); }; break; } case 2: { Header = "Sharing files with others"; Description = "All files added to the server are automatically synced to your " + "local folder."; Button continue_button = new Button () { Content = "Continue" }; WPF.Image slide_image = new WPF.Image () { Width = 350, Height = 200 }; slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-2"); ContentCanvas.Children.Add (slide_image); Canvas.SetLeft (slide_image, 215); Canvas.SetTop (slide_image, 130); Buttons.Add (continue_button); continue_button.Click += delegate { Controller.TutorialPageCompleted (); }; break; } case 3: { Header = "The status icon is here to help"; Description = "It shows the syncing progress, provides easy access to " + "your folders and lets you view recent changes."; Button continue_button = new Button () { Content = "Continue" }; WPF.Image slide_image = new WPF.Image () { Width = 350, Height = 200 }; slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-3"); ContentCanvas.Children.Add (slide_image); Canvas.SetLeft (slide_image, 215); Canvas.SetTop (slide_image, 130); Buttons.Add (continue_button); continue_button.Click += delegate { Controller.TutorialPageCompleted (); }; break; } case 4: { Header = "Adding repository folders to CmisSync"; Description = "You can easily add a new CMIS folder " + "at any time."; Button finish_button = new Button () { Content = "Finish" }; WPF.Image slide_image = new WPF.Image () { Width = 350, Height = 200 }; slide_image.Source = SparkleUIHelpers.GetImageSource ("tutorial-slide-4"); CheckBox check_box = new CheckBox () { Content = "Add CmisSync to startup items", IsChecked = true }; ContentCanvas.Children.Add (slide_image); Canvas.SetLeft (slide_image, 215); Canvas.SetTop (slide_image, 130); ContentCanvas.Children.Add (check_box); Canvas.SetLeft (check_box, 185); Canvas.SetBottom (check_box, 12); Buttons.Add (finish_button); check_box.Click += delegate { Controller.StartupItemChanged (check_box.IsChecked.Value); }; finish_button.Click += delegate { Controller.TutorialPageCompleted (); }; break; } } break; } } ShowAll (); }); }; }
private void UpdateCacheView() { cacheDirectoryTextBox.Text = Cache.CacheDirectory; cacheTreeView.Items.Clear(); //show error if cache not detected if (!File.Exists(Cache.CacheDirectory + Cache.CacheFileName)) { cacheTreeView.Items.Add("No cache file found in directory."); _canExtract = false; return; } //fill the treeview var cacheTreeItem = new TreeViewItem { Header = "Cache", Tag = -1, ContextMenu = (ContextMenu)Resources["ExtractContextMenu"] }; cacheTreeItem.MouseDoubleClick += cacheTreeViewItem_DoubleClick; cacheTreeItem.ExpandSubtree(); foreach (var archiveId in Cache.GetArchiveIds()) { var archiveTreeItem = new TreeViewItem { Header = $"Archive {archiveId}", Tag = archiveId, ContextMenu = (ContextMenu)Resources["ExtractContextMenu"] }; archiveTreeItem.MouseDoubleClick += cacheTreeViewItem_DoubleClick; cacheTreeItem.Items.Add(archiveTreeItem); } _canExtract = true; cacheTreeView.Items.Add(cacheTreeItem); }
private void ShowFormula(string cellRef, string formula) { var formulaObject = new ExcelFormulaParser.ExcelFormula(formula); System.Action action = () => { FormulaTreeView.Items.Clear(); var rootItem = new TreeViewItem {Header = cellRef}; FormulaTreeView.Items.Add(rootItem); ShowFormula(new Queue<ExcelFormulaToken>(formulaObject), rootItem.Items); rootItem.ExpandSubtree(); }; Dispatcher.BeginInvoke(action); }
private void ParserService_ParseInformationUpdated(object sender, ParseInformationEventArgs e) { if (_textEditor == null || !FileUtility.IsEqualFileName(_textEditor.FileName, e.FileName)) { return; } trvLayout.Items.Clear(); IVbModuleWrapper wrapper = (IVbModuleWrapper)e.NewUnresolvedFile; TreeViewItem root = new TreeViewItem(); root.Header = GetNodeHeaderWithIcon(wrapper.Module.Name, CompletionImage.Class); TreeViewItem fields = new TreeViewItem(); root.Items.Add(fields); TreeViewItem properties = new TreeViewItem(); root.Items.Add(properties); TreeViewItem methods = new TreeViewItem(); root.Items.Add(methods); foreach (IVbMember member in wrapper.Module.Members) { TreeViewItem memberNode = new TreeViewItem(); memberNode.Header = member.Name; memberNode.Tag = member; memberNode.Selected += memberNode_Selected; if (member is IVbProperty) { properties.Items.Add(memberNode); } else if (member is IVbMethod) { methods.Items.Add(memberNode); } else if (member is IVbField) { fields.Items.Add(memberNode); } } fields.Header = GetNodeHeaderWithIcon(string.Format("Fields ({0})", fields.Items.Count), CompletionImage.Field); properties.Header = GetNodeHeaderWithIcon(string.Format("Properties ({0})", properties.Items.Count), CompletionImage.Property); methods.Header = GetNodeHeaderWithIcon(string.Format("Methods ({0})", methods.Items.Count), CompletionImage.Method); root.ExpandSubtree(); trvLayout.Items.Add(root); }
public TreeViewItem GetTreeViewItem() { TreeViewItem node = new TreeViewItem(); node.Header = this.Name; node.Tag = this; { ContextMenu cm = new ContextMenu(); MenuItem item1 = new MenuItem() { Header = "Open instance in explorer" }; item1.Click += delegate { Process.Start(this.Path); }; cm.Items.Add(item1); node.ContextMenu = cm; } // Minecraft version TreeViewItem mcVer = new TreeViewItem(); mcVer.Header = "Minecraft version " + ((this.Version == null) ? "" : this.Version.Key); mcVer.MouseUp += (s, e) => { Label tb = new Label(); tb.Content = (this.Version == null ? "no version" : this.Version.Type.ToString() + " - " + this.Version.Key); Button bt = new Button(); bt.Content = "Change version"; bt.Click +=bt_Click; App.mainWindow.listBox_instanceInfo.Items.Clear(); App.mainWindow.listBox_instanceInfo.Items.Add(tb); App.mainWindow.listBox_instanceInfo.Items.Add(bt); }; node.Items.Add(mcVer); foreach (IBackup b in PluginManager.backups) { node.Items.Add(b.treeItem(this)); } node.ExpandSubtree(); return node; }
private void Run_Click(object sender, RoutedEventArgs e) { if (isLoad == true) { Attribute hair = new Attribute("HairColor", new string[] { "Black", "Gray", "Silver" }); Attribute height = new Attribute("Height", new string[] { "Short", "Medium", "High" }); Attribute weight = new Attribute("Weight", new string[] { "Light", "Medium", "Heavy" }); Attribute cream = new Attribute("Cream", new string[] { "Yes", "No" }); Attribute[] attributes = new Attribute[] { hair, height, weight, cream }; DataTable samples = datatable; DecisionTree id3 = new DecisionTree(); TreeNode root = id3.mountTree(samples, "Result", attributes); TreeNode root1 = root; var decisiontree = new DecisionTree(); decisiontree.SearchRule(root); RuleID3 = decisiontree.RuleID3; int i = 1; foreach (var rule in RuleID3) { ListRule.Add("Rule [" +i+ "]: IF {" + rule); i++; } lvRule.ItemsSource = ListRule; DecisionTree.printNode(root, " "); tvDecisionTree.Items.Clear(); TreeViewItem item = new TreeViewItem(); item.Header = "Logical Tree"; DumpVisualTree(item, root1); tvDecisionTree.Items.Add(item); item.ExpandSubtree(); txtTree.Text = DecisionTree.TreeList; } else MessageBox.Show("Data must load before run", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }
/// <summary> /// Recursively expands all the nodes under the given item. /// </summary> /// <returns>true if the subtree was expanded, false otherwise.</returns> /// <remarks>This can be overriden to modify/disable the numpad-* behavior.</remarks> protected virtual bool ExpandSubtree(TreeViewItem container) { if (container != null) { container.ExpandSubtree(); return true; } return false; }