Beispiel #1
0
        private HelperControls.FolderPathEntry AddFolderControl()
        {
            //Just use the last one if it is empty anyway
            if (InnerControlContainer.Controls.Count > 0)
            {
                HelperControls.FolderPathEntry lastEntry = (HelperControls.FolderPathEntry)InnerControlContainer.Controls[0];
                if (lastEntry.SelectedPath.Trim().Length == 0)
                {
                    return(lastEntry);
                }
            }

            try
            {
                InnerControlContainer.SuspendLayout();
                HelperControls.FolderPathEntry entry = new Duplicati.GUI.HelperControls.FolderPathEntry();
                entry.FolderBrowserDialog   = folderBrowserDialog;
                entry.SelectedPathChanged  += new EventHandler(FolderPathEntry_SelectedPathChanged);
                entry.DeleteButton_Clicked += new EventHandler(FolderPathEntry_DeleteButtonClicked);
                entry.SelectedPathLeave    += new EventHandler(FolderPathEntry_Leave);
                entry.Height = entry.MinimumSize.Height + 2;

                InnerControlContainer.Controls.Add(entry);
                entry.Dock = DockStyle.Top;
                entry.BringToFront();
                return(entry);
            }
            finally
            {
                InnerControlContainer.ResumeLayout();
            }
        }
Beispiel #2
0
 void FolderPathEntry_DeleteButtonClicked(object sender, EventArgs e)
 {
     HelperControls.FolderPathEntry entry = (HelperControls.FolderPathEntry)sender;
     InnerControlContainer.Controls.Remove(entry);
     entry.SelectedPathChanged  -= new EventHandler(FolderPathEntry_SelectedPathChanged);
     entry.DeleteButton_Clicked -= new EventHandler(FolderPathEntry_DeleteButtonClicked);
     entry.SelectedPathLeave    -= new EventHandler(FolderPathEntry_Leave);
     EnsureLastFolderEntryIsEmpty();
 }
Beispiel #3
0
 /// <summary>
 /// Helper function that ensures that the last folder entry is always empty so the user may enter text in it
 /// </summary>
 private void EnsureLastFolderEntryIsEmpty()
 {
     if (InnerControlContainer.Controls.Count == 0)
     {
         AddFolderControl().Focus();
     }
     else
     {
         HelperControls.FolderPathEntry lastEntry = (HelperControls.FolderPathEntry)InnerControlContainer.Controls[0];
         if (lastEntry.SelectedPath.Trim().Length == 0)
         {
             //If we have a duplicate empty, remove the non-focused one
             if (InnerControlContainer.Controls.Count > 1 && ((HelperControls.FolderPathEntry)InnerControlContainer.Controls[1]).SelectedPath.Trim().Length == 0)
             {
                 FolderPathEntry_DeleteButtonClicked(InnerControlContainer.Controls[(lastEntry.Focused ? 0 : 1)], null);
             }
         }
         else
         {
             AddFolderControl();
         }
     }
 }
Beispiel #4
0
        private void FolderPathEntry_Leave(object sender, EventArgs e)
        {
            lock (m_lock)
            {
                HelperControls.FolderPathEntry entry = (HelperControls.FolderPathEntry)sender;

                string path = entry.SelectedPath.Trim();

                if (path.Length > 0 && !m_sizes.ContainsKey(path))
                {
                    StartCalculator();
                    m_calculator.AddTask(path);
                    m_calculator_CompletedWork(null, null);
                }
                else if (entry.SelectedPath.Trim() == "")
                {
                    entry.FolderSize = "";
                }
                else if (m_sizes.ContainsKey(path))
                {
                    m_calculator_CompletedWork(null, null);
                }
            }
        }