diff --git a/svnsync/Controllers/ControllersTray.cs b/svnsync/Controllers/ControllersTray.cs index d0c6ffd..28cf74c 100644 --- a/svnsync/Controllers/ControllersTray.cs +++ b/svnsync/Controllers/ControllersTray.cs @@ -12,7 +12,7 @@ namespace svnsync.Controllers private static ControllersWindow controllerWindow; //private string args; public delegate void _enableLoopRun(); - public event _enableLoopRun StartLoop; + public static event _enableLoopRun StartLoop; /// /// Controlls a Tray. @@ -23,13 +23,17 @@ namespace svnsync.Controllers { viewTray = new ViewsTray(); InitControllerWindow(); - if (viewTray.Model.Args.HasArgumentType("-cron")) { - if (this.CronJob(0, false)) { + Runner(); + } + + private static void Runner() { + if(viewTray.Model.Args.HasArgumentType("-cron")) { + if(CronJob(0, false)) { viewTray.ShowSuccess(); System.Threading.Thread.Sleep(5000); viewTray.Dispose(); } else { - this.StartLoop(); + StartLoop(); } return; } else { @@ -39,8 +43,6 @@ namespace svnsync.Controllers private static void InitControllerWindow() { controllerWindow = new ControllersWindow(); - controllerWindow.SetAction(Handles.FormType.Normal); - controllerWindow.SetDeletedFiles(new List()); } public override void Dispose() @@ -53,7 +55,7 @@ namespace svnsync.Controllers } } - private Boolean CronJob(Int32 run, Boolean readyToCommit) + private static Boolean CronJob(Int32 run, Boolean readyToCommit) { if (viewTray.Model.Svn == null) { return HandleError(Handles.SvnType.NotInit, ""); @@ -92,7 +94,7 @@ namespace svnsync.Controllers return HandleError(Handles.SvnType.ExternDeletedFiles, ""); } } - return this.CronJob(run + 1, true); + return CronJob(run + 1, true); } else { if (readyToCommit) { viewTray.Model.Svn.SetArgCheckIn("Automatic Cronjob Checkin: " + StringHelper.GetTimeStamp(DateTime.Now)); @@ -104,7 +106,7 @@ namespace svnsync.Controllers if (viewTray.Model.Svn.IsError) { return HandleError(Handles.SvnType.UnexpectedError, viewTray.Model.Svn.Error); } - return this.CronJob(run + 1, true); + return CronJob(run + 1, true); } } return true; @@ -119,6 +121,7 @@ namespace svnsync.Controllers break; case Handles.SvnType.HasVersionitedFiles: controllerWindow.SetAction(Handles.FormType.UnversionFiles); + controllerWindow.SetNewFiles(viewTray.Model.Svn.NoVersionFiles); break; case Handles.SvnType.UnexpectedError: controllerWindow.SetAction(Handles.FormType.Error); @@ -173,13 +176,46 @@ namespace svnsync.Controllers } System.Windows.Forms.TreeView t = (System.Windows.Forms.TreeView)((ViewsWindowFormFileList)((System.Windows.Forms.Button)sender).Parent).tree; List l = TreeBuilder.getSelectedNodes(t.Nodes); - controllerWindow.Hide(); + controllerWindow.Dispose(); + System.Windows.Forms.Application.DoEvents(); + InitControllerWindow(); viewTray.Model.Svn.DeleteFiles(l); if(viewTray.Model.Svn.IsError) { HandleError(Handles.SvnType.UnexpectedError, viewTray.Model.Svn.Error); return; } - //this.runagainButton_Click(sender, null); + RunAgainButton_Click(sender, null); + } + internal static void RunAgainButton_Click(object sender, EventArgs e) { + controllerWindow.Dispose(); + System.Windows.Forms.Application.DoEvents(); + InitControllerWindow(); + Runner(); + } + + internal static void SvnOpenButton_Click(object sender, EventArgs e) { + System.Diagnostics.Process p = new System.Diagnostics.Process(); + p.StartInfo.FileName = "cmd"; + p.StartInfo.WorkingDirectory = viewTray.Model.Args.GetArgumentData("-d"); + p.StartInfo.Arguments = "/K svn"; + p.Start(); + } + + internal static void AddButton_Click(object sender, EventArgs e) { + if(!(sender is System.Windows.Forms.Button)) { + return; + } + System.Windows.Forms.TreeView t = (System.Windows.Forms.TreeView)((ViewsWindowFormFileList)((System.Windows.Forms.Button)sender).Parent).tree; + List l = TreeBuilder.getSelectedNodes(t.Nodes); + controllerWindow.Dispose(); + System.Windows.Forms.Application.DoEvents(); + InitControllerWindow(); + viewTray.Model.Svn.AddFiles(l); + if(viewTray.Model.Svn.IsError) { + HandleError(Handles.SvnType.UnexpectedError, viewTray.Model.Svn.Error); + return; + } + RunAgainButton_Click(sender, null); } } } diff --git a/svnsync/Controllers/ControllersWindow.cs b/svnsync/Controllers/ControllersWindow.cs index b034fb4..43e8bd8 100644 --- a/svnsync/Controllers/ControllersWindow.cs +++ b/svnsync/Controllers/ControllersWindow.cs @@ -10,10 +10,10 @@ namespace svnsync.Controllers public class ControllersWindow : OwnController { private static ViewsWindow viewWindow; - private Handles.FormType initAction; + private Handles.FormType initAction = Handles.FormType.Normal; private String initMessage; - private List initDeletedFiles; - private static ControllersTray controllerTray; + private List initDeletedFiles = new List(); + private List initNewFiles = new List(); /// /// Tray Controller /// @@ -25,6 +25,7 @@ namespace svnsync.Controllers viewWindow.Model.Message = this.initMessage; viewWindow.Model.FormType = this.initAction; viewWindow.Model.DeletedFiles = this.initDeletedFiles; + viewWindow.Model.NewFiles = this.initNewFiles; viewWindow.Draw(); } @@ -33,6 +34,7 @@ namespace svnsync.Controllers if (viewWindow != null) { viewWindow.Dispose(); } + viewWindow = null; } public static void FormClosed(Object sender, FormClosedEventArgs e) @@ -48,9 +50,7 @@ namespace svnsync.Controllers } else { viewWindow.Model.FormType = formType; } - //throw new NotImplementedException(); //this.CreateSVNOpen("Fehler im Cronjob, mehr als 10 Aufrufe!", ""); - //this.CreateFileList("Hinzufügen", "Diese Daten sind unversioniert:", s.getNoVersionFiles(), new EventHandler(addButton_Click)); //this.CreateSVNOpen("Es ist ein Unvorhersebarer Fehler aufgetreten", p); } @@ -70,16 +70,12 @@ namespace svnsync.Controllers } } - internal static void RunAgainButton_Click(object sender, EventArgs e) { - throw new NotImplementedException(); - } - - internal static void SvnOpenButton_Click(object sender, EventArgs e) { - throw new NotImplementedException(); - } - - internal void Hide() { - viewWindow.Hide(); + internal void SetNewFiles(List list) { + if(viewWindow == null) { + this.initNewFiles = list; + } else { + viewWindow.Model.NewFiles = list; + } } } } diff --git a/svnsync/Models/ModelsWindow.cs b/svnsync/Models/ModelsWindow.cs index b58f4df..cc32700 100644 --- a/svnsync/Models/ModelsWindow.cs +++ b/svnsync/Models/ModelsWindow.cs @@ -33,6 +33,13 @@ namespace svnsync.Models set { this.DeletedFilesValue = value; this.Update(); } } + private List NewFilesValue; + public List NewFiles { + get { return this.NewFilesValue; } + set { this.NewFilesValue = value; this.Update(); } + } + + public CmdArgs Args { get; private set; } } diff --git a/svnsync/Program.cs b/svnsync/Program.cs index 0302080..014761e 100644 --- a/svnsync/Program.cs +++ b/svnsync/Program.cs @@ -30,14 +30,16 @@ namespace svnsync try { Svn.Instance.SetDirectory(CmdArgs.Instance.GetArgumentData("-d")); t = new ControllersTray(); - t.StartLoop += T_StartLoop; + ControllersTray.StartLoop += T_StartLoop; t.Execute(); } catch (Exception e) { t.HideToolTip(); String text = e.Message + "\n\n" + e.StackTrace; String title = "Exception in SVNSync: " + CmdArgs.Instance.GetArgumentData("-d"); MessageBox.Show(text, title, MessageBoxButtons.OK, MessageBoxIcon.Error); - FileMutex.Instance.Delete(); + #if !DEBUG + FileMutex.Instance.Delete(); + #endif return; } if (!CmdArgs.Instance.HasArgumentType("-cron")) { diff --git a/svnsync/Properties/AssemblyInfo.cs b/svnsync/Properties/AssemblyInfo.cs index 3f7fba9..3261b38 100644 --- a/svnsync/Properties/AssemblyInfo.cs +++ b/svnsync/Properties/AssemblyInfo.cs @@ -33,6 +33,6 @@ using System.Resources; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.4.0")] -[assembly: AssemblyFileVersion("1.0.4.0")] +[assembly: AssemblyVersion("1.0.5.2")] +[assembly: AssemblyFileVersion("1.0.5.2")] [assembly: NeutralResourcesLanguageAttribute("de-DE")] diff --git a/svnsync/Views/ViewsWindow.cs b/svnsync/Views/ViewsWindow.cs index 8332452..d1a80f3 100644 --- a/svnsync/Views/ViewsWindow.cs +++ b/svnsync/Views/ViewsWindow.cs @@ -8,6 +8,7 @@ namespace svnsync.Views public class ViewsWindow : OwnView { private ViewsWindowFormInterface form; + public ModelsWindow Model { get; private set; } public ViewsWindow() { @@ -24,6 +25,7 @@ namespace svnsync.Views change = true; } break; + case Helpers.Handles.FormType.UnversionFiles: case Helpers.Handles.FormType.DeletedFiles: if(!(this.form is ViewsWindowFormFileList)) { change = true; @@ -42,6 +44,7 @@ namespace svnsync.Views case Helpers.Handles.FormType.Normal: this.form = new ViewsWindowForm(); break; + case Helpers.Handles.FormType.UnversionFiles: case Helpers.Handles.FormType.DeletedFiles: this.form = new ViewsWindowFormFileList(); break; @@ -57,19 +60,16 @@ namespace svnsync.Views public override void Dispose() { + this.Model.RemoveObserver(this); this.form.BeginInvoke((Action)(() => { this.form.Dispose(); })); } - public ModelsWindow Model { get; private set; } - internal void Draw() { this.Model.SetObserver(this); } - internal void Hide() { - this.form.Hide(); - } + } } diff --git a/svnsync/Views/ViewsWindowForm.Designer.cs b/svnsync/Views/ViewsWindowForm.Designer.cs index 4023309..38c5bea 100644 --- a/svnsync/Views/ViewsWindowForm.Designer.cs +++ b/svnsync/Views/ViewsWindowForm.Designer.cs @@ -30,44 +30,55 @@ { this.messageBox = new System.Windows.Forms.RichTextBox(); this.label1 = new System.Windows.Forms.Label(); - this.opencmd = new System.Windows.Forms.Button(); + this.svnOpenButton = new System.Windows.Forms.Button(); + this.doAgainButton = new System.Windows.Forms.Button(); this.SuspendLayout(); // // messageBox // - this.messageBox.Location = new System.Drawing.Point(6, 19); + this.messageBox.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.messageBox.Location = new System.Drawing.Point(13, 30); this.messageBox.Name = "messageBox"; this.messageBox.ReadOnly = true; - this.messageBox.Size = new System.Drawing.Size(452, 208); + this.messageBox.Size = new System.Drawing.Size(443, 195); this.messageBox.TabIndex = 2; this.messageBox.Text = ""; // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(6, 3); + this.label1.Location = new System.Drawing.Point(10, 10); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(51, 13); this.label1.TabIndex = 1; this.label1.Text = "Meldung:"; // - // opencmd + // svnOpenButton // - this.opencmd.Location = new System.Drawing.Point(6, 233); - this.opencmd.Name = "opencmd"; - this.opencmd.Size = new System.Drawing.Size(75, 23); - this.opencmd.TabIndex = 3; - this.opencmd.Text = "Open CMD"; - this.opencmd.UseVisualStyleBackColor = true; - this.opencmd.Visible = false; + this.svnOpenButton.Location = new System.Drawing.Point(318, 233); + this.svnOpenButton.Name = "svnOpenButton"; + this.svnOpenButton.Size = new System.Drawing.Size(140, 23); + this.svnOpenButton.TabIndex = 6; + this.svnOpenButton.Text = "SVN Öffnen"; + this.svnOpenButton.UseVisualStyleBackColor = true; + // + // doAgainButton + // + this.doAgainButton.Location = new System.Drawing.Point(170, 233); + this.doAgainButton.Name = "doAgainButton"; + this.doAgainButton.Size = new System.Drawing.Size(140, 23); + this.doAgainButton.TabIndex = 5; + this.doAgainButton.Text = "Wiederholen"; + this.doAgainButton.UseVisualStyleBackColor = true; // // ViewsWindowForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(464, 262); + this.Controls.Add(this.svnOpenButton); + this.Controls.Add(this.doAgainButton); this.Controls.Add(this.label1); - this.Controls.Add(this.opencmd); this.Controls.Add(this.messageBox); this.Name = "ViewsWindowForm"; this.Padding = new System.Windows.Forms.Padding(3); @@ -81,7 +92,8 @@ private System.Windows.Forms.RichTextBox messageBox; private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button opencmd; + private System.Windows.Forms.Button svnOpenButton; + private System.Windows.Forms.Button doAgainButton; } } \ No newline at end of file diff --git a/svnsync/Views/ViewsWindowForm.cs b/svnsync/Views/ViewsWindowForm.cs index da8ab5b..a26745a 100644 --- a/svnsync/Views/ViewsWindowForm.cs +++ b/svnsync/Views/ViewsWindowForm.cs @@ -19,6 +19,8 @@ namespace svnsync.Views { InitializeComponent(); this.FormClosed += ControllersWindow.FormClosed; + this.doAgainButton.Click += ControllersTray.RunAgainButton_Click; + this.svnOpenButton.Click += ControllersTray.SvnOpenButton_Click; } public void UpdateForm() @@ -32,10 +34,5 @@ namespace svnsync.Views { this.model = window; } - - public void Hide() { - this.ShowInTaskbar = false; - this.WindowState = FormWindowState.Minimized; - } } } diff --git a/svnsync/Views/ViewsWindowFormFileList.cs b/svnsync/Views/ViewsWindowFormFileList.cs index aa56b61..11d8760 100644 --- a/svnsync/Views/ViewsWindowFormFileList.cs +++ b/svnsync/Views/ViewsWindowFormFileList.cs @@ -17,8 +17,8 @@ namespace svnsync.Views { public ViewsWindowFormFileList() { InitializeComponent(); this.FormClosed += ControllersWindow.FormClosed; - this.doAgainButton.Click += new EventHandler(ControllersWindow.RunAgainButton_Click); - this.svnOpenButton.Click += new EventHandler(ControllersWindow.SvnOpenButton_Click); + this.doAgainButton.Click += new EventHandler(ControllersTray.RunAgainButton_Click); + this.svnOpenButton.Click += new EventHandler(ControllersTray.SvnOpenButton_Click); } public void UpdateForm() { @@ -31,19 +31,26 @@ namespace svnsync.Views { this.tree.ImageList = TreeBuilder.getImages(this.tree.Nodes); this.runButton.Click += new EventHandler(ControllersTray.DeleteButton_Click); break; + case Handles.FormType.UnversionFiles: + this.title.Text = "Diese Daten sind unversioniert:"; + this.runButton.Text = "Hinzufügen"; + this.tree.Nodes.AddRange(TreeBuilder.createDirList(this.model.NewFiles, this.model.Args.GetArgumentData("-d"))); + this.tree.ImageList = TreeBuilder.getImages(this.tree.Nodes); + this.runButton.Click += new EventHandler(ControllersTray.AddButton_Click); + break; } })); } - //this.CreateFileList("Löschen", "Diese Daten sind gelöscht worden:", s.getWasDeletedFiles(), new EventHandler(deleteButton_Click)); - public void SetModel(ModelsWindow window) { this.model = window; } - - public void Hide() { - this.ShowInTaskbar = false; - this.WindowState = FormWindowState.Minimized; + new public void Dispose() { + this.BeginInvoke((Action)(() => { + this.Visible = false; + this.ShowInTaskbar = false; + })); + base.Dispose(true); } } } diff --git a/svnsync/Views/ViewsWindowFormInterface.cs b/svnsync/Views/ViewsWindowFormInterface.cs index efd6571..3aafb7d 100644 --- a/svnsync/Views/ViewsWindowFormInterface.cs +++ b/svnsync/Views/ViewsWindowFormInterface.cs @@ -12,6 +12,5 @@ namespace svnsync.Views { void Show(); IAsyncResult BeginInvoke(Delegate method); void Dispose(); - void Hide(); } } diff --git a/svnsync/bin/Release/SvnSync.exe b/svnsync/bin/Release/SvnSync.exe index 267ed36..45d1b0d 100644 Binary files a/svnsync/bin/Release/SvnSync.exe and b/svnsync/bin/Release/SvnSync.exe differ diff --git a/svnsync/svnsync.csproj.user b/svnsync/svnsync.csproj.user index 3d66a99..10ef26c 100644 --- a/svnsync/svnsync.csproj.user +++ b/svnsync/svnsync.csproj.user @@ -1,7 +1,7 @@  - -d "D:\\Visual Studio 2012\\Projects" -cron -autoadd -externals-own + -d "D:\\Visual Studio 2012\\Projects" -cron -externals-own false Project