From b5e9a7dbd2dcf3fb1537d2245fde310dac8ca924 Mon Sep 17 00:00:00 2001 From: govindsalinas Date: Thu, 21 Jun 2007 09:01:47 -0700 Subject: [PATCH] Added popup menu, started handling view file request from popup. Added prefs for viewer, diff, merge tools. --- FileUpdater.cs | 48 ++++++- IFileOperations.cs | 4 + Properties/Resources.Designer.cs | 14 ++ Properties/Resources.resx | 6 + UI/FileOpMenu.cs | 115 +++++++++++++++ UI/Form1.cs | 4 +- UI/PreferencesEditor.Designer.cs | 297 ++++++++++++++++++++++++++++++++++----- UI/PreferencesEditor.cs | 52 ++++++- UI/PreferencesEditor.resx | 3 + UI/RepoToolStrip.cs | 100 ++++++------- UI/RepoTreeView.Designer.cs | 10 ++ UI/RepoTreeView.cs | 14 ++ UI/RepoTreeView.resx | 3 + UI/StatusViewer.Designer.cs | 6 + UI/StatusViewer.resx | 3 + Widgit.csproj | 11 +- icons/page_code.png | Bin 0 -> 818 bytes icons/page_white_magnify.png | Bin 0 -> 554 bytes 18 files changed, 591 insertions(+), 99 deletions(-) create mode 100755 UI/FileOpMenu.cs create mode 100755 icons/page_code.png create mode 100755 icons/page_white_magnify.png diff --git a/FileUpdater.cs b/FileUpdater.cs index 1c5ec49..294c17e 100755 --- a/FileUpdater.cs +++ b/FileUpdater.cs @@ -22,6 +22,8 @@ namespace Widgit public class FileUpdater { public event FileUpdatedHandler FilesUpdated; + + Prefs m_prefs; protected Dictionary m_EventSourcesToSelectables = new Dictionary(); public ISelectable this[IFileOperations o] @@ -36,6 +38,10 @@ namespace Widgit o.Delete -= OnDeleteFiles; o.RenameOrMove -= OnMoveFiles; o.Revert -= OnRevertFiles; + o.DiffHead -= OnDiffFile; + o.DiffOther -= OnDiffHistoryFile; + o.View -= OnViewFile; + o.ViewPrevious -= OnViewPreviousFile; m_EventSourcesToSelectables.Remove(o); } else @@ -46,6 +52,10 @@ namespace Widgit o.Delete += OnDeleteFiles; o.RenameOrMove += OnMoveFiles; o.Revert += OnRevertFiles; + o.DiffHead += OnDiffFile; + o.DiffOther += OnDiffHistoryFile; + o.View += OnViewFile; + o.ViewPrevious += OnViewPreviousFile; } } } @@ -53,8 +63,9 @@ namespace Widgit Repo m_currentRepo; - public FileUpdater() + internal FileUpdater(Prefs prefs) { + m_prefs = prefs; } public void AddEventSource(IFileOperations f, ISelectable s) @@ -148,6 +159,41 @@ namespace Widgit RevertFiles(s.GetSelected()); } + protected void OnViewFile(object sender, EventArgs e) + { + ISelectable s = m_EventSourcesToSelectables[(IFileOperations)sender]; + foreach (File f in s.GetSelected()) + { + if (String.IsNullOrEmpty(m_prefs.ViewerApp)) + { + string nativePath = f.PathWithName.Replace(Repo.DirectorySeparator, System.IO.Path.DirectorySeparatorChar.ToString()); + System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(); + si.FileName = m_currentRepo.Path + System.IO.Path.DirectorySeparatorChar + nativePath; + si.UseShellExecute = true; + System.Diagnostics.Process p = new System.Diagnostics.Process(); + p.Start(); + } + } + } + + protected void OnViewPreviousFile(object sender, EventArgs e) + { + ISelectable s = m_EventSourcesToSelectables[(IFileOperations)sender]; + RevertFiles(s.GetSelected()); + } + + protected void OnDiffFile(object sender, EventArgs e) + { + ISelectable s = m_EventSourcesToSelectables[(IFileOperations)sender]; + + } + + protected void OnDiffHistoryFile(object sender, EventArgs e) + { + ISelectable s = m_EventSourcesToSelectables[(IFileOperations)sender]; + RevertFiles(s.GetSelected()); + } + protected void OnCopyFiles(object sender, EventArgs e) { //ISelectable s = m_EventSourcesToSelectables[sender]; diff --git a/IFileOperations.cs b/IFileOperations.cs index 220bc0a..a155191 100755 --- a/IFileOperations.cs +++ b/IFileOperations.cs @@ -25,5 +25,9 @@ namespace Widgit event EventHandler RenameOrMove; event EventHandler Revert; event EventHandler RefreshFiles; + event EventHandler DiffHead; + event EventHandler DiffOther; + event EventHandler View; + event EventHandler ViewPrevious; } } diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 96e7da6..6824bd3 100755 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -165,6 +165,13 @@ namespace Widgit.Properties { } } + internal static System.Drawing.Bitmap page_code { + get { + object obj = ResourceManager.GetObject("page_code", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap page_copy { get { object obj = ResourceManager.GetObject("page_copy", resourceCulture); @@ -207,6 +214,13 @@ namespace Widgit.Properties { } } + internal static System.Drawing.Bitmap page_white_magnify { + get { + object obj = ResourceManager.GetObject("page_white_magnify", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap resultset_next { get { object obj = ResourceManager.GetObject("resultset_next", resourceCulture); diff --git a/Properties/Resources.resx b/Properties/Resources.resx index e143e40..6740a0d 100755 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -208,4 +208,10 @@ ..\icons\application_view_list.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\icons\page_code.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\icons\page_white_magnify.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/UI/FileOpMenu.cs b/UI/FileOpMenu.cs new file mode 100755 index 0000000..7d1625d --- /dev/null +++ b/UI/FileOpMenu.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; + +namespace Widgit +{ + using Props = global::Widgit.Properties.Resources; + + class FileOpMenu : ContextMenuStrip, IFileOperations + { +#pragma warning disable 0067 + public event SelectedStatesChangedHandler StatesChanged; + public event EventHandler RefreshFiles; +#pragma warning restore 0067 + public event EventHandler Add; + public event EventHandler Copy; + public event EventHandler Delete; + public event EventHandler RenameOrMove; + public event EventHandler Revert; + public event EventHandler DiffHead; + public event EventHandler DiffOther; + public event EventHandler View; + public event EventHandler ViewPrevious; + + protected ToolStripMenuItem m_view = new ToolStripMenuItem("View", Props.page_white_magnify); + protected ToolStripMenuItem m_viewPrevious = new ToolStripMenuItem("View previous revision...", Props.page_white_magnify); + protected ToolStripMenuItem m_diffHead = new ToolStripMenuItem("Diff against HEAD", Props.page_code); + protected ToolStripMenuItem m_diffOther = new ToolStripMenuItem("Diff against Other...", Props.page_code); + private ToolStripMenuItem m_addFile = new ToolStripMenuItem("Add", Props.page_add); + private ToolStripMenuItem m_copyFiles = new ToolStripMenuItem("Copy...", Props.page_copy); + private ToolStripMenuItem m_moveRename = new ToolStripMenuItem("Move/Rename...", Props.page_go); + private ToolStripMenuItem m_revertFiles = new ToolStripMenuItem("Revert", Props.arrow_redo); + private ToolStripMenuItem m_removeFiles = new ToolStripMenuItem("Delete", Props.delete); + + public FileOpMenu() + { + SuspendLayout(); + + Items.Add(m_view); + Items.Add(m_viewPrevious); + Items.Add(m_diffHead); + Items.Add(m_diffOther); + Items.Add(m_addFile); + Items.Add(m_copyFiles); + Items.Add(m_moveRename); + Items.Add(m_revertFiles); + Items.Add(m_removeFiles); + m_view.Click += OnView; + m_viewPrevious.Click += OnViewPrevious; + m_diffHead.Click += OnDiffHead; + m_diffOther.Click += OnDiffOther; + m_addFile.Click += OnAdd; + m_copyFiles.Click += OnCopy; + m_moveRename.Click += OnMove; + m_revertFiles.Click += OnRevert; + m_removeFiles.Click += OnDelete; + + ResumeLayout(); + } + + protected void OnView(object sender, EventArgs e) + { + FireEvent(View); + } + + protected void OnViewPrevious(object sender, EventArgs e) + { + FireEvent(ViewPrevious); + } + + protected void OnDiffHead(object sender, EventArgs e) + { + FireEvent(DiffHead); + } + + protected void OnDiffOther(object sender, EventArgs e) + { + FireEvent(DiffOther); + } + + protected void OnAdd(object sender, EventArgs e) + { + FireEvent(Add); + } + + protected void OnCopy(object sender, EventArgs e) + { + FireEvent(Copy); + } + + protected void OnMove(object sender, EventArgs e) + { + FireEvent(RenameOrMove); + } + + protected void OnRevert(object sender, EventArgs e) + { + FireEvent(Revert); + } + + protected void OnDelete(object sender, EventArgs e) + { + FireEvent(Delete); + } + + protected void FireEvent(EventHandler h) + { + if (h != null) + { + h(this, new EventArgs()); + } + } + } +} diff --git a/UI/Form1.cs b/UI/Form1.cs index c521eb0..c89bb2f 100755 --- a/UI/Form1.cs +++ b/UI/Form1.cs @@ -18,7 +18,7 @@ namespace Widgit Repo m_currentRepo; ImageList m_imageList = new ImageList(); - public FileUpdater m_fileUpdater = new FileUpdater(); + public FileUpdater m_fileUpdater; public Form1() { @@ -26,6 +26,7 @@ namespace Widgit //TextWriter stdout = System.Console.Out; //OutputTextWriter m_outputWriter = new OutputTextWriter(m_outputArea, stdout); //System.Console.SetOut(m_outputWriter); + m_fileUpdater = new FileUpdater(m_prefs); PopulateImageList(); Executioner.BinaryDirPath = m_prefs.GitDir; SetReposList(); @@ -34,6 +35,7 @@ namespace Widgit m_repoViewer.ImageList = m_imageList; m_statusViewer.FileUpdater = m_fileUpdater; m_statusViewer.ImageList = m_imageList; + } protected void PopulateImageList() diff --git a/UI/PreferencesEditor.Designer.cs b/UI/PreferencesEditor.Designer.cs index 8d146ab..e587711 100755 --- a/UI/PreferencesEditor.Designer.cs +++ b/UI/PreferencesEditor.Designer.cs @@ -28,34 +28,95 @@ namespace Widgit /// private void InitializeComponent() { - this.label1 = new System.Windows.Forms.Label(); + this.m_folderChooser = new System.Windows.Forms.FolderBrowserDialog(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); this.m_gitPath = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); - this.m_folderChooser = new System.Windows.Forms.FolderBrowserDialog(); + this.label1 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.button5 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.m_mergetoolArgs = new System.Windows.Forms.TextBox(); + this.m_difftoolArgs = new System.Windows.Forms.TextBox(); + this.m_mergeTool = new System.Windows.Forms.TextBox(); + this.m_difftool = new System.Windows.Forms.TextBox(); + this.m_editor = new System.Windows.Forms.TextBox(); + this.m_editorArgs = new System.Windows.Forms.TextBox(); this.button2 = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.m_fileChooser = new System.Windows.Forms.OpenFileDialog(); + this.panel1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); this.groupBox1.SuspendLayout(); + this.tabPage2.SuspendLayout(); this.SuspendLayout(); // - // label1 + // m_folderChooser // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(3, 32); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(48, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Git Path:"; + this.m_folderChooser.ShowNewFolderButton = false; + // + // panel1 + // + this.panel1.Controls.Add(this.tabControl1); + this.panel1.Location = new System.Drawing.Point(12, 12); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(407, 281); + this.panel1.TabIndex = 0; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(407, 281); + this.tabControl1.TabIndex = 6; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.groupBox1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(399, 255); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Windows Options"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.m_gitPath); + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(8, 37); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(407, 65); + this.groupBox1.TabIndex = 4; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Windows Options"; // // m_gitPath // - this.m_gitPath.Location = new System.Drawing.Point(72, 42); + this.m_gitPath.Location = new System.Drawing.Point(57, 29); this.m_gitPath.Name = "m_gitPath"; - this.m_gitPath.Size = new System.Drawing.Size(256, 20); + this.m_gitPath.Size = new System.Drawing.Size(238, 20); this.m_gitPath.TabIndex = 1; // // button1 // - this.button1.Location = new System.Drawing.Point(326, 27); + this.button1.Location = new System.Drawing.Point(301, 27); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 2; @@ -63,13 +124,169 @@ namespace Widgit this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.OnChooseMinGWPath); // - // m_folderChooser + // label1 // - this.m_folderChooser.ShowNewFolderButton = false; + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 32); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(48, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Git Path:"; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.label7); + this.tabPage2.Controls.Add(this.label6); + this.tabPage2.Controls.Add(this.label5); + this.tabPage2.Controls.Add(this.label4); + this.tabPage2.Controls.Add(this.label3); + this.tabPage2.Controls.Add(this.label2); + this.tabPage2.Controls.Add(this.button5); + this.tabPage2.Controls.Add(this.button4); + this.tabPage2.Controls.Add(this.button3); + this.tabPage2.Controls.Add(this.m_mergetoolArgs); + this.tabPage2.Controls.Add(this.m_difftoolArgs); + this.tabPage2.Controls.Add(this.m_mergeTool); + this.tabPage2.Controls.Add(this.m_difftool); + this.tabPage2.Controls.Add(this.m_editor); + this.tabPage2.Controls.Add(this.m_editorArgs); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(399, 255); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Editors"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(3, 207); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(117, 13); + this.label7.TabIndex = 14; + this.label7.Text = "Merge Tool Arguments:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(3, 171); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(64, 13); + this.label6.TabIndex = 13; + this.label6.Text = "Merge Tool:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(3, 135); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(103, 13); + this.label5.TabIndex = 12; + this.label5.Text = "Diff Tool Arguments:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 98); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(50, 13); + this.label4.TabIndex = 11; + this.label4.Text = "Diff Tool:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 63); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(90, 13); + this.label3.TabIndex = 10; + this.label3.Text = "Editor Arguments:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(3, 27); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(37, 13); + this.label2.TabIndex = 9; + this.label2.Text = "Editor:"; + // + // button5 + // + this.button5.Location = new System.Drawing.Point(315, 24); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(75, 23); + this.button5.TabIndex = 8; + this.button5.Text = "Browse..."; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.OnBrowseEditor); + // + // button4 + // + this.button4.Location = new System.Drawing.Point(315, 93); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(75, 23); + this.button4.TabIndex = 7; + this.button4.Text = "Browse..."; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.OnBrowseDifftool); + // + // button3 + // + this.button3.Location = new System.Drawing.Point(315, 165); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 23); + this.button3.TabIndex = 6; + this.button3.Text = "Browse..."; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.OnBrowseMegetool); + // + // m_mergetoolArgs + // + this.m_mergetoolArgs.Location = new System.Drawing.Point(123, 204); + this.m_mergetoolArgs.Name = "m_mergetoolArgs"; + this.m_mergetoolArgs.Size = new System.Drawing.Size(181, 20); + this.m_mergetoolArgs.TabIndex = 5; + // + // m_difftoolArgs + // + this.m_difftoolArgs.Location = new System.Drawing.Point(123, 132); + this.m_difftoolArgs.Name = "m_difftoolArgs"; + this.m_difftoolArgs.Size = new System.Drawing.Size(181, 20); + this.m_difftoolArgs.TabIndex = 4; + // + // m_mergeTool + // + this.m_mergeTool.Location = new System.Drawing.Point(123, 168); + this.m_mergeTool.Name = "m_mergeTool"; + this.m_mergeTool.Size = new System.Drawing.Size(181, 20); + this.m_mergeTool.TabIndex = 3; + // + // m_difftool + // + this.m_difftool.Location = new System.Drawing.Point(123, 96); + this.m_difftool.Name = "m_difftool"; + this.m_difftool.Size = new System.Drawing.Size(181, 20); + this.m_difftool.TabIndex = 2; + // + // m_editor + // + this.m_editor.Location = new System.Drawing.Point(123, 24); + this.m_editor.Name = "m_editor"; + this.m_editor.Size = new System.Drawing.Size(181, 20); + this.m_editor.TabIndex = 1; + // + // m_editorArgs + // + this.m_editorArgs.Location = new System.Drawing.Point(123, 60); + this.m_editorArgs.Name = "m_editorArgs"; + this.m_editorArgs.Size = new System.Drawing.Size(181, 20); + this.m_editorArgs.TabIndex = 0; // // button2 // - this.button2.Location = new System.Drawing.Point(338, 107); + this.button2.Location = new System.Drawing.Point(340, 311); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 3; @@ -77,42 +294,58 @@ namespace Widgit this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.OnSave); // - // groupBox1 + // m_fileChooser // - this.groupBox1.Controls.Add(this.button1); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Location = new System.Drawing.Point(12, 12); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(407, 65); - this.groupBox1.TabIndex = 4; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Windows Options"; + this.m_fileChooser.ShowReadOnly = true; // // PreferencesEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(431, 141); + this.ClientSize = new System.Drawing.Size(431, 346); this.Controls.Add(this.button2); - this.Controls.Add(this.m_gitPath); - this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Name = "PreferencesEditor"; this.Text = "PreferencesEditor"; + this.panel1.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } #endregion - private System.Windows.Forms.Label label1; + private System.Windows.Forms.FolderBrowserDialog m_folderChooser; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TextBox m_mergetoolArgs; + private System.Windows.Forms.TextBox m_difftoolArgs; + private System.Windows.Forms.TextBox m_mergeTool; + private System.Windows.Forms.TextBox m_difftool; + private System.Windows.Forms.TextBox m_editor; + private System.Windows.Forms.TextBox m_editorArgs; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.TextBox m_gitPath; private System.Windows.Forms.Button button1; - private System.Windows.Forms.FolderBrowserDialog m_folderChooser; + private System.Windows.Forms.Label label1; private System.Windows.Forms.Button button2; - private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.OpenFileDialog m_fileChooser; } } \ No newline at end of file diff --git a/UI/PreferencesEditor.cs b/UI/PreferencesEditor.cs index 7e43d92..489484e 100755 --- a/UI/PreferencesEditor.cs +++ b/UI/PreferencesEditor.cs @@ -19,19 +19,26 @@ namespace Widgit m_gitPath.Text = m_prefs.GitDir; } - protected string ChooseDir() + protected string ChooseDir(bool bDirs) { - DialogResult r = m_folderChooser.ShowDialog(); - if (r == DialogResult.OK) + DialogResult r; + string s = ""; + if (bDirs) { - return m_folderChooser.SelectedPath; + r = m_folderChooser.ShowDialog(); + s = m_folderChooser.SelectedPath; } - return ""; + else + { + r = m_fileChooser.ShowDialog(); + s = m_fileChooser.FileName; + } + return s; } private void OnChooseMinGWPath(object sender, EventArgs e) { - string dir = ChooseDir(); + string dir = ChooseDir(true); if (!String.IsNullOrEmpty(dir)) { m_gitPath.Text = dir; @@ -48,8 +55,41 @@ namespace Widgit return; } m_prefs.GitDir = dir; + m_prefs.DiffApp = m_difftool.Text; + m_prefs.DiffArgs = m_difftoolArgs.Text; + m_prefs.ViewerApp = m_editor.Text; + m_prefs.ViewerArgs = m_editorArgs.Text; + m_prefs.MergeApp = m_mergeTool.Text; + m_prefs.MergeArgs = m_mergetoolArgs.Text; m_prefs.Save(); Close(); } + + private void OnBrowseEditor(object sender, EventArgs e) + { + string dir = ChooseDir(false); + if (!String.IsNullOrEmpty(dir)) + { + m_editor.Text = dir; + } + } + + private void OnBrowseDifftool(object sender, EventArgs e) + { + string dir = ChooseDir(false); + if (!String.IsNullOrEmpty(dir)) + { + m_difftool.Text = dir; + } + } + + private void OnBrowseMegetool(object sender, EventArgs e) + { + string dir = ChooseDir(false); + if (!String.IsNullOrEmpty(dir)) + { + m_mergeTool.Text = dir; + } + } } } \ No newline at end of file diff --git a/UI/PreferencesEditor.resx b/UI/PreferencesEditor.resx index 90929fd..a0bc4b6 100755 --- a/UI/PreferencesEditor.resx +++ b/UI/PreferencesEditor.resx @@ -120,4 +120,7 @@ 17, 17 + + 153, 17 + \ No newline at end of file diff --git a/UI/RepoToolStrip.cs b/UI/RepoToolStrip.cs index 053dd0b..fb0ba83 100755 --- a/UI/RepoToolStrip.cs +++ b/UI/RepoToolStrip.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; +using Git; namespace Widgit { @@ -19,6 +20,12 @@ namespace Widgit public event EventHandler RenameOrMove; public event EventHandler Revert; public event EventHandler RefreshFiles; +#pragma warning disable 0067 + public event EventHandler DiffHead; + public event EventHandler DiffOther; + public event EventHandler View; + public event EventHandler ViewPrevious; +#pragma warning restore 0067 protected int m_stateMask = -1; public int StateMask { get { return m_stateMask; } set { m_stateMask = value; } } @@ -26,21 +33,22 @@ namespace Widgit protected int m_checkedMask = -1; public int CheckedMask { get { return m_checkedMask; } set { m_checkedMask = value; } } - private System.Windows.Forms.ToolStripDropDownButton m_typeSelector = new System.Windows.Forms.ToolStripDropDownButton(); - private System.Windows.Forms.ToolStripMenuItem m_normal = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_added = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_modified = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_unmergedOrBroken = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_copied = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_renamed = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_deleted = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripMenuItem m_unmanaged = new System.Windows.Forms.ToolStripMenuItem(); - private System.Windows.Forms.ToolStripButton m_refresh = new System.Windows.Forms.ToolStripButton(); - private System.Windows.Forms.ToolStripButton m_addFile = new System.Windows.Forms.ToolStripButton(); - private System.Windows.Forms.ToolStripButton m_copyFiles = new System.Windows.Forms.ToolStripButton(); - private System.Windows.Forms.ToolStripButton m_moveRename = new System.Windows.Forms.ToolStripButton(); - private System.Windows.Forms.ToolStripButton m_revertFiles = new System.Windows.Forms.ToolStripButton(); - private System.Windows.Forms.ToolStripButton m_removeFiles = new System.Windows.Forms.ToolStripButton(); + private ToolStripDropDownButton m_typeSelector = new ToolStripDropDownButton("Select Types To Show", Props.page); + private ToolStripMenuItem m_normal = new ToolStripMenuItem("Up to date", Props.page); + private ToolStripMenuItem m_added = new ToolStripMenuItem("Added", Props.page_add); + private ToolStripMenuItem m_modified = new ToolStripMenuItem("Modified", Props.page_edit); + private ToolStripMenuItem m_unmergedOrBroken = new ToolStripMenuItem("Unmerged/Broken", Props.page_error); + private ToolStripMenuItem m_copied = new ToolStripMenuItem("Copied", Props.page_copy); + private ToolStripMenuItem m_renamed = new ToolStripMenuItem("Renamed", Props.page_go); + private ToolStripMenuItem m_deleted = new ToolStripMenuItem("Deleted", Props.delete); + private ToolStripMenuItem m_unmanaged = new ToolStripMenuItem("Unmanaged", Props.disconnect); + + private ToolStripButton m_refresh = new ToolStripButton("Refresh", Props.arrow_refresh); + private ToolStripButton m_addFile = new ToolStripButton("Add", Props.page_add); + private ToolStripButton m_copyFiles = new ToolStripButton("Copy...", Props.page_copy); + private ToolStripButton m_moveRename = new ToolStripButton("Move/Rename...", Props.page_go); + private ToolStripButton m_revertFiles = new ToolStripButton("Revert", Props.arrow_redo); + private ToolStripButton m_removeFiles = new ToolStripButton("Delete", Props.delete); public RepoToolStrip() { @@ -72,10 +80,8 @@ namespace Widgit m_unmanaged, } ); - m_typeSelector.Image = Props.page; m_typeSelector.ImageTransparentColor = System.Drawing.Color.Magenta; m_typeSelector.Size = new System.Drawing.Size(29, 22); - m_typeSelector.Text = "Select Types To Show"; ResumeLayout(); } @@ -84,61 +90,39 @@ namespace Widgit SuspendLayout(); m_checkedMask = checkedMask; m_stateMask = showMask; - InitMenuItem(m_normal, "Up To Date", Check(Git.FileState.Normal), Props.page); - m_normal.Visible = Show(Git.FileState.Normal); - InitMenuItem(m_added, "Added", Check(Git.FileState.Added), Props.page_add); - m_added.Visible = Show(Git.FileState.Added); - InitMenuItem(m_modified, "Modified", Check(Git.FileState.Modified), Props.page_edit); - m_modified.Visible = Show(Git.FileState.Modified); - InitMenuItem(m_unmergedOrBroken, "Unmgerged/Broken", Check(Git.FileState.Unmerged), Props.page_error); - m_unmergedOrBroken.Visible = Show(Git.FileState.Unmerged); - InitMenuItem(m_copied, "Copied", Check(Git.FileState.Copied), Props.page_copy); - m_copied.Visible = Show(Git.FileState.Copied); - InitMenuItem(m_renamed, "Renamed", Check(Git.FileState.Renamed), Props.page_go); - m_renamed.Visible = Show(Git.FileState.Renamed); - InitMenuItem(m_deleted, "Deleted", Check(Git.FileState.Deleted), Props.page_delete); - m_deleted.Visible = Show(Git.FileState.Deleted); - InitMenuItem(m_unmanaged, "Unmanaged", Check(Git.FileState.Unknown), Props.disconnect); - m_unmanaged.Visible = Show(Git.FileState.Unknown); - - InitButton(m_refresh, "Refresh", Props.arrow_refresh, ToolStripItemAlignment.Right, OnRefresh); - InitButton(m_addFile, "Add", Props.page_add, ToolStripItemAlignment.Left, OnAdd); - InitButton(m_copyFiles, "Copy...", Props.page_copy, ToolStripItemAlignment.Left, OnCopy); - InitButton(m_moveRename, "Move/Rename...", Props.page_go, ToolStripItemAlignment.Left, OnMoveRename); - InitButton(m_revertFiles, "Revert", Props.arrow_redo, ToolStripItemAlignment.Left, OnRevert); - InitButton(m_removeFiles, "Delete", Props.page_delete, ToolStripItemAlignment.Left, OnDelete); + InitMenuItem(m_normal, Git.FileState.Normal); + InitMenuItem(m_added, Git.FileState.Added); + InitMenuItem(m_modified, Git.FileState.Modified); + InitMenuItem(m_unmergedOrBroken, Git.FileState.Unmerged); + InitMenuItem(m_copied, Git.FileState.Copied); + InitMenuItem(m_renamed, Git.FileState.Renamed); + InitMenuItem(m_deleted, Git.FileState.Deleted); + InitMenuItem(m_unmanaged, Git.FileState.Unknown); + + InitButton(m_refresh, ToolStripItemAlignment.Right, OnRefresh); + InitButton(m_addFile, ToolStripItemAlignment.Left, OnAdd); + InitButton(m_copyFiles, ToolStripItemAlignment.Left, OnCopy); + InitButton(m_moveRename, ToolStripItemAlignment.Left, OnMoveRename); + InitButton(m_revertFiles, ToolStripItemAlignment.Left, OnRevert); + InitButton(m_removeFiles, ToolStripItemAlignment.Left, OnDelete); ResumeLayout(); return true; } - protected bool Check(Git.FileState s) - { - return 0 != (m_checkedMask & (int)s); - } - - protected bool Show(Git.FileState s) - { - return 0 != (m_stateMask & (int)s); - } - - protected void InitButton(ToolStripButton b, string text, Image im, ToolStripItemAlignment a, EventHandler h) + protected void InitButton(ToolStripButton b, ToolStripItemAlignment a, EventHandler h) { b.Alignment = a; b.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - b.Image = im; b.Size = new System.Drawing.Size(23, 22); - b.Text = text; b.Click += h; } - protected void InitMenuItem(ToolStripMenuItem i, string text, bool bDefaultChecked, Image im) + protected void InitMenuItem(ToolStripMenuItem i, FileState state) { - i.Checked = true; + i.Checked = 0 != (m_checkedMask & (int)state); i.CheckOnClick = true; - i.CheckState = bDefaultChecked ? CheckState.Checked : CheckState.Unchecked; - i.Image = im; i.Size = new System.Drawing.Size(171, 22); - i.Text = text; + i.Visible = 0 != (m_stateMask & (int)state); i.CheckedChanged += OnStatesChanged; } diff --git a/UI/RepoTreeView.Designer.cs b/UI/RepoTreeView.Designer.cs index 093a068..393144b 100755 --- a/UI/RepoTreeView.Designer.cs +++ b/UI/RepoTreeView.Designer.cs @@ -30,6 +30,7 @@ namespace Widgit { this.m_workspaceTree = new System.Windows.Forms.TreeView(); this.m_toolbar = new Widgit.RepoToolStrip(); + this.m_opMenu = new Widgit.FileOpMenu(); this.SuspendLayout(); // // m_workspaceTree @@ -39,15 +40,23 @@ namespace Widgit this.m_workspaceTree.Name = "m_workspaceTree"; this.m_workspaceTree.Size = new System.Drawing.Size(388, 519); this.m_workspaceTree.TabIndex = 5; + this.m_workspaceTree.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.OnNodeActivated); + this.m_workspaceTree.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.OnNodeClicked); // // m_toolbar // + this.m_toolbar.CheckedMask = -1; this.m_toolbar.Location = new System.Drawing.Point(0, 0); this.m_toolbar.Name = "m_toolbar"; this.m_toolbar.Size = new System.Drawing.Size(388, 25); + this.m_toolbar.StateMask = -1; this.m_toolbar.TabIndex = 6; this.m_toolbar.Text = "repoToolStrip1"; // + // m_opMenu + // + this.m_opMenu.Name = "m_opMenu"; + // // RepoTreeView // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -65,5 +74,6 @@ namespace Widgit private System.Windows.Forms.TreeView m_workspaceTree; private Widgit.RepoToolStrip m_toolbar; + private FileOpMenu m_opMenu; } } diff --git a/UI/RepoTreeView.cs b/UI/RepoTreeView.cs index dbcd153..17b72e6 100755 --- a/UI/RepoTreeView.cs +++ b/UI/RepoTreeView.cs @@ -34,6 +34,7 @@ namespace Widgit m_updater = value; m_updater.FilesUpdated += OnFilesUpdated; m_updater[m_toolbar] = (ISelectable)this; + m_updater[m_opMenu] = (ISelectable)this; } } @@ -255,5 +256,18 @@ namespace Widgit { m_expandedPaths.Clear(); } + + private void OnNodeActivated(object sender, TreeNodeMouseClickEventArgs e) + { + + } + + private void OnNodeClicked(object sender, TreeNodeMouseClickEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + m_opMenu.Show(m_workspaceTree, e.X, e.Y); + } + } } } diff --git a/UI/RepoTreeView.resx b/UI/RepoTreeView.resx index fa0f142..576d08f 100755 --- a/UI/RepoTreeView.resx +++ b/UI/RepoTreeView.resx @@ -120,4 +120,7 @@ 17, 17 + + 119, 17 + \ No newline at end of file diff --git a/UI/StatusViewer.Designer.cs b/UI/StatusViewer.Designer.cs index 467e91d..76b3d3c 100755 --- a/UI/StatusViewer.Designer.cs +++ b/UI/StatusViewer.Designer.cs @@ -31,6 +31,7 @@ namespace Widgit this.m_statusList = new System.Windows.Forms.ListView(); this.columnHeader7 = new System.Windows.Forms.ColumnHeader(); this.m_toolbar = new Widgit.RepoToolStrip(); + this.fileOpMenu1 = new Widgit.FileOpMenu(); this.SuspendLayout(); // // m_statusList @@ -60,6 +61,10 @@ namespace Widgit this.m_toolbar.TabIndex = 3; this.m_toolbar.Text = "repoToolStrip1"; // + // fileOpMenu1 + // + this.fileOpMenu1.Name = "fileOpMenu1"; + // // StatusViewer // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -78,5 +83,6 @@ namespace Widgit private System.Windows.Forms.ListView m_statusList; private System.Windows.Forms.ColumnHeader columnHeader7; private RepoToolStrip m_toolbar; + private FileOpMenu fileOpMenu1; } } diff --git a/UI/StatusViewer.resx b/UI/StatusViewer.resx index fa0f142..af3b88f 100755 --- a/UI/StatusViewer.resx +++ b/UI/StatusViewer.resx @@ -120,4 +120,7 @@ 17, 17 + + 119, 17 + \ No newline at end of file diff --git a/Widgit.csproj b/Widgit.csproj index 0a94e4f..5738472 100755 --- a/Widgit.csproj +++ b/Widgit.csproj @@ -48,6 +48,9 @@ + + Component + UserControl @@ -257,6 +260,12 @@ + + + + + + - + \ No newline at end of file diff --git a/icons/page_code.png b/icons/page_code.png new file mode 100755 index 0000000000000000000000000000000000000000..f7ea90419d950f9e69d977a1f5847456d96a5f0b GIT binary patch literal 818 zcwPZA1I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs literal 0 HcwPel00001 diff --git a/icons/page_white_magnify.png b/icons/page_white_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e GIT binary patch literal 554 zcwPZ20@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f