Development Checkin, should not break

This commit is contained in:
BlubbFish 2017-04-16 00:21:20 +00:00
parent 19bd2da502
commit 76f6fca48b
17 changed files with 573 additions and 79 deletions

View File

@ -2,6 +2,7 @@
using BlubbFish.Utils;
using svnsync.Views;
using svnsync.Helpers;
using System.Collections.Generic;
namespace svnsync.Controllers
{
@ -21,8 +22,7 @@ namespace svnsync.Controllers
protected override void Init()
{
viewTray = new ViewsTray();
controllerWindow = new ControllersWindow();
controllerWindow.SetAction(Handles.FormType.Normal);
InitControllerWindow();
if (viewTray.Model.Args.HasArgumentType("-cron")) {
if (this.CronJob(0, false)) {
viewTray.ShowSuccess();
@ -37,6 +37,12 @@ namespace svnsync.Controllers
}
}
private static void InitControllerWindow() {
controllerWindow = new ControllersWindow();
controllerWindow.SetAction(Handles.FormType.Normal);
controllerWindow.SetDeletedFiles(new List<string>());
}
public override void Dispose()
{
if (viewTray != null) {
@ -104,7 +110,7 @@ namespace svnsync.Controllers
return true;
}
private Boolean HandleError(Handles.SvnType svnType, String message, String stacktrace = "")
private static Boolean HandleError(Handles.SvnType svnType, String message, String stacktrace = "")
{
viewTray.ShowError(svnType, message);
switch (svnType) {
@ -120,6 +126,7 @@ namespace svnsync.Controllers
break;
case Handles.SvnType.ExternDeletedFiles:
controllerWindow.SetAction(Handles.FormType.DeletedFiles);
controllerWindow.SetDeletedFiles(viewTray.Model.Svn.WasDeletedFiles);
break;
case Handles.SvnType.LockedFile:
controllerWindow.SetAction(Handles.FormType.ManualResolve);
@ -159,5 +166,20 @@ namespace svnsync.Controllers
viewTray.Dispose();
System.Windows.Forms.Application.Exit();
}
internal static void DeleteButton_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<System.Windows.Forms.TreeNode> l = TreeBuilder.getSelectedNodes(t.Nodes);
controllerWindow.Hide();
viewTray.Model.Svn.DeleteFiles(l);
if(viewTray.Model.Svn.IsError) {
HandleError(Handles.SvnType.UnexpectedError, viewTray.Model.Svn.Error);
return;
}
//this.runagainButton_Click(sender, null);
}
}
}

View File

@ -3,6 +3,7 @@ using System.Windows.Forms;
using BlubbFish.Utils;
using svnsync.Views;
using svnsync.Helpers;
using System.Collections.Generic;
namespace svnsync.Controllers
{
@ -11,6 +12,8 @@ namespace svnsync.Controllers
private static ViewsWindow viewWindow;
private Handles.FormType initAction;
private String initMessage;
private List<string> initDeletedFiles;
private static ControllersTray controllerTray;
/// <summary>
/// Tray Controller
/// </summary>
@ -21,6 +24,8 @@ namespace svnsync.Controllers
viewWindow = new ViewsWindow();
viewWindow.Model.Message = this.initMessage;
viewWindow.Model.FormType = this.initAction;
viewWindow.Model.DeletedFiles = this.initDeletedFiles;
viewWindow.Draw();
}
public override void Dispose()
@ -47,7 +52,6 @@ namespace svnsync.Controllers
//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);
//this.CreateFileList("Löschen", "Diese Daten sind gelöscht worden:", s.getWasDeletedFiles(), new EventHandler(deleteButton_Click));
}
internal void SetMessage(String p)
@ -58,5 +62,24 @@ namespace svnsync.Controllers
viewWindow.Model.Message = p;
}
}
internal void SetDeletedFiles(List<string> p) {
if(viewWindow == null) {
this.initDeletedFiles = p;
} else {
viewWindow.Model.DeletedFiles = p;
}
}
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();
}
}
}

View File

@ -1,8 +1,9 @@
using System;
using System.Collections.Generic;
namespace svnsync.Helpers
{
class Handles
public class Handles
{
public enum SvnType
{
@ -33,4 +34,14 @@ namespace svnsync.Helpers
System.Runtime.Serialization.StreamingContext context)
{ }
}
public class TreePart {
public TreePart(String name, bool isFolder, List<TreePart> child) {
this.name = name;
this.child = child;
this.isFolder = isFolder;
}
public string name { get; private set; }
public List<TreePart> child { get; set; }
public bool isFolder { get; set; }
}
}

View File

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace svnsync.Helpers {
public class TreeBuilder {
public static TreeNode[] createDirList(List<string> tree, String root) {
List<TreePart> ntree = new List<TreePart>();
foreach(String node in tree) {
String folder = node;
folder = folder.Replace('\\', '/');
folder = (folder.StartsWith("/")) ? folder.Substring(1) : folder;
folder = (folder.EndsWith("/")) ? folder.Substring(0, folder.Length - 1) : folder;
bool isFolder = System.IO.Directory.Exists(root + "/" + folder);
String[] folders = folder.Split('/');
Array.Reverse(folders);
List<TreePart> prev = null;
foreach(String entry in folders) {
String name = entry;
if(prev == null)
prev = new List<TreePart>() { new TreePart(name, isFolder, new List<TreePart>()) };
else
prev = new List<TreePart>() { new TreePart(name, isFolder, prev) };
if(!isFolder)
isFolder = true;
}
ntree = treeMatch(ntree, prev);
}
return createListDirRender(ntree);
}
public static List<TreePart> treeMatch(List<TreePart> ntree, List<TreePart> input) {
String[] key1 = array_keys(input);
if(ntree.Count == 0 || (key1.Length > 0 && !array_key_exists(key1[0], ntree)) || key1.Length == 0) {
ntree.Add(input[0]);
} else {
String[] key2 = array_keys(findName(key1[0], input));
if(key2.Length != 0) {
if(array_key_exists(key2[0], findName(key1[0], ntree))) {
/*setChild(key2[0], findName(key1[0], ntree),*/
treeMatch(findName(key1[0], ntree), findName(key1[0], input));
} else {
findName(key1[0], ntree).Add(findName(key1[0], input)[0]);
}
}
}
return ntree;
}
public static string[] array_keys(List<TreePart> input) {
List<String> ret = new List<String>();
foreach(TreePart item in input) {
ret.Add(item.name);
}
return ret.ToArray();
}
public static bool array_key_exists(string p, List<TreePart> ntree) {
foreach(TreePart item in ntree) {
if(item.name == p)
return true;
}
return false;
}
public static List<TreePart> findName(string key, List<TreePart> input) {
foreach(TreePart item in input) {
if(item.name == key)
return item.child;
}
return null;
}
public static TreeNode[] createListDirRender(List<TreePart> ntree) {
TreeNode[] t = new TreeNode[ntree.Count];
int i = 0;
foreach(TreePart item in ntree) {
String name = item.name + ((item.isFolder) ? ".folder" : (item.name.LastIndexOf('.') == -1) ? ".file" : item.name.Substring(item.name.LastIndexOf('.')));
if(item.child.Count == 0)
t[i++] = new TreeNode(name);
else
t[i++] = new TreeNode(name, createListDirRender(item.child));
t[i - 1].Checked = true;
}
return t;
}
public static ImageList getImages(TreeNodeCollection treeNodeCollection) {
ImageList li = new ImageList();
runThroughNodes(li.Images, treeNodeCollection);
return li;
}
public static void runThroughNodes(ImageList.ImageCollection imageCollection, TreeNodeCollection treeNodeCollection) {
foreach(TreeNode item in treeNodeCollection) {
imageCollection.Add(getImageType(item.Text));
item.ImageIndex = imageCollection.Count - 1;
item.Text = item.Text.Substring(0, item.Text.LastIndexOf("."));
if(item.Nodes.Count > 0)
runThroughNodes(imageCollection, item.Nodes);
}
}
public static Icon getImageType(string p) {
switch(p.Substring(p.LastIndexOf("."))) {
case ".folder":
return Properties.Resources.Special_Folder;
case ".file":
return Properties.Resources.Special_File;
}
return Properties.Resources.Special_File;
}
public static List<TreeNode> getSelectedNodes(TreeNodeCollection treeNodeCollection) {
List<TreeNode> l = new List<TreeNode>();
foreach(TreeNode item in treeNodeCollection) {
if(item.Checked && item.Nodes.Count == 0)
l.Add(item);
if(item.Nodes.Count > 0)
l.AddRange(getSelectedNodes(item.Nodes));
}
return l;
}
}
}

View File

@ -51,9 +51,7 @@ namespace svnsync.Libraries {
if (handles[0] == ' ') {
if (handles[2] == 'L') {
throw new Helpers.SvnLockedException("Datei: " + file + " ist gelockt!");
}
//Modifizierte Eigenschaft
else if (handles[1] == 'M') {
} else if(handles[1] == 'M') { //Modifizierte Eigenschaft
this.modified.Add(file);
} else {
throw new NotImplementedException("NOT IMPLEMENTED in SvnClass: SVN Line[0] ' '");
@ -62,9 +60,7 @@ namespace svnsync.Libraries {
this.added.Add(file);
} else if (handles[0] == 'D') {
this.isdeleted.Add(file);
}
// Modifizierte Datei
else if (handles[0] == 'M') {
} else if(handles[0] == 'M') { // Modifizierte Datei
this.modified.Add(file);
} else if (handles[0] == 'R') {
throw new NotImplementedException("NOT IMPLEMENTED in SvnClass: SVN Line[0] 'R'");
@ -94,45 +90,11 @@ namespace svnsync.Libraries {
private void Runner(String arg) {
this.SvnOutput = "";
this.SvnError = "";
this.p.StartInfo.Arguments = arg;
this.p.StartInfo.Arguments = arg + " --non-interactive";
this.p.Start();
Int64 e_lenth = 0;
while (!this.p.HasExited) {
if(this.p.StandardOutput.Peek() != -1) {
this.SvnOutput += this.p.StandardOutput.ReadLine();
}
this.p.StandardError.BaseStream.Flush();
if (this.p.StandardError.BaseStream.Length > e_lenth) {
this.SvnError += this.p.StandardError.BaseStream.ReadByte();
e_lenth++;
}
System.Threading.Thread.Sleep(10);
}
this.SvnOutput += p.StandardOutput.ReadToEnd();
this.SvnError += p.StandardError.ReadToEnd();
/*this.p.OutputDataReceived += this.P_OutputDataReceived;
this.p.ErrorDataReceived += this.P_ErrorDataReceived;
this.p.BeginOutputReadLine();
this.p.BeginErrorReadLine();
while(!this.p.HasExited) {
this.p.StandardError.BaseStream.FlushAsync();
this.p.StandardOutput.BaseStream.FlushAsync();
System.Threading.Thread.Sleep(10);
}
this.p.WaitForExit();
this.p.CancelOutputRead();
this.p.CancelErrorRead();*/
}
private void P_ErrorDataReceived(Object sender, DataReceivedEventArgs e) {
if(e.Data != null) {
this.SvnError += e.Data + "\n";
}
}
private void P_OutputDataReceived(Object sender, DataReceivedEventArgs e) {
this.SvnOutput += e.Data + "\n";
this.SvnError = this.p.StandardError.ReadToEnd();
this.SvnOutput = this.p.StandardOutput.ReadToEnd();
}
internal void DeleteFiles(List<String> files) {

View File

@ -1,6 +1,7 @@
using System;
using BlubbFish.Utils;
using svnsync.Helpers;
using System.Collections.Generic;
namespace svnsync.Models
{
@ -11,7 +12,7 @@ namespace svnsync.Models
}
protected override void Init() {
this.Args = CmdArgs.Instance;
}
private String MessageValue = "";
@ -21,9 +22,18 @@ namespace svnsync.Models
}
private Handles.FormType FormTypeValue;
internal Handles.FormType FormType {
public Handles.FormType FormType {
get { return this.FormTypeValue; }
set { this.FormTypeValue = value; this.Update(); }
}
private List<String> DeletedFilesValue;
public List<string> DeletedFiles {
get { return this.DeletedFilesValue; }
set { this.DeletedFilesValue = value; this.Update(); }
}
public CmdArgs Args { get; private set; }
}
}

View File

@ -43,7 +43,9 @@ namespace svnsync
if (!CmdArgs.Instance.HasArgumentType("-cron")) {
T_StartLoop();
}
FileMutex.Instance.Delete();
#if !DEBUG
FileMutex.Instance.Delete();
#endif
return;
/*Application.Run();*/
/*Application.EnableVisualStyles();

View File

@ -11,7 +11,7 @@ using System.Resources;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("BlubbFish")]
[assembly: AssemblyProduct("SvnSync")]
[assembly: AssemblyCopyright("Copyright © 2012 - 10.03.2017")]
[assembly: AssemblyCopyright("Copyright © 2012 - 16.04.2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -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.3.1")]
[assembly: AssemblyFileVersion("1.0.3.1")]
[assembly: AssemblyVersion("1.0.4.0")]
[assembly: AssemblyFileVersion("1.0.4.0")]
[assembly: NeutralResourcesLanguageAttribute("de-DE")]

View File

@ -1,29 +1,58 @@
using System;
using BlubbFish.Utils;
using svnsync.Models;
using System.Windows.Forms;
namespace svnsync.Views
{
public class ViewsWindow : OwnView
{
private ViewsWindowForm form;
private ViewsWindowFormInterface form;
public ViewsWindow()
{
this.form = new ViewsWindowForm();
this.Init();
this.Model.SetObserver(this);
}
public override void Update()
{
Boolean change = false;
switch(this.Model.FormType) {
default:
case Helpers.Handles.FormType.Normal:
if(!(this.form is ViewsWindowForm)) {
change = true;
}
break;
case Helpers.Handles.FormType.DeletedFiles:
if(!(this.form is ViewsWindowFormFileList)) {
change = true;
}
break;
}
if(change) {
this.SwitchContext();
}
this.form.UpdateForm();
}
private void SwitchContext() {
switch(this.Model.FormType) {
default:
case Helpers.Handles.FormType.Normal:
this.form = new ViewsWindowForm();
break;
case Helpers.Handles.FormType.DeletedFiles:
this.form = new ViewsWindowFormFileList();
break;
}
this.form.SetModel(this.Model);
this.form.Show();
}
protected override void Init()
{
this.Model = ModelsWindow.Instance;
this.form.SetModel(this.Model);
this.form.Show();
}
public override void Dispose()
@ -34,5 +63,13 @@ namespace svnsync.Views
}
public ModelsWindow Model { get; private set; }
internal void Draw() {
this.Model.SetObserver(this);
}
internal void Hide() {
this.form.Hide();
}
}
}

View File

@ -1,6 +1,6 @@
namespace svnsync.Views
{
partial class ViewsWindowForm
partial class ViewsWindowForm
{
/// <summary>
/// Required designer variable.
@ -28,32 +28,32 @@
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.messageBox = new System.Windows.Forms.RichTextBox();
this.label1 = new System.Windows.Forms.Label();
this.opencmd = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// messageBox
//
this.messageBox.Location = new System.Drawing.Point(6, 19);
this.messageBox.Name = "messageBox";
this.messageBox.ReadOnly = true;
this.messageBox.Size = new System.Drawing.Size(452, 208);
this.messageBox.TabIndex = 2;
this.messageBox.Text = "";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Location = new System.Drawing.Point(6, 3);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(51, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Meldung:";
//
// messageBox
//
this.messageBox.Location = new System.Drawing.Point(15, 26);
this.messageBox.Name = "messageBox";
this.messageBox.ReadOnly = true;
this.messageBox.Size = new System.Drawing.Size(437, 96);
this.messageBox.TabIndex = 2;
this.messageBox.Text = "";
//
// opencmd
//
this.opencmd.Location = new System.Drawing.Point(15, 227);
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;
@ -66,10 +66,11 @@
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.label1);
this.Controls.Add(this.opencmd);
this.Controls.Add(this.messageBox);
this.Controls.Add(this.label1);
this.Name = "ViewsWindowForm";
this.Padding = new System.Windows.Forms.Padding(3);
this.Text = "ViewsWindowsForm";
this.ResumeLayout(false);
this.PerformLayout();
@ -78,8 +79,9 @@
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.RichTextBox messageBox;
private System.Windows.Forms.Button opencmd;
}
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button opencmd;
}
}

View File

@ -12,7 +12,7 @@ using svnsync.Controllers;
namespace svnsync.Views
{
public partial class ViewsWindowForm : Form
public partial class ViewsWindowForm : Form, ViewsWindowFormInterface
{
private ModelsWindow model;
public ViewsWindowForm()
@ -32,5 +32,10 @@ namespace svnsync.Views
{
this.model = window;
}
public void Hide() {
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
}
}
}

View File

@ -0,0 +1,103 @@
namespace svnsync.Views {
partial class ViewsWindowFormFileList {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if(disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.tree = new System.Windows.Forms.TreeView();
this.title = new System.Windows.Forms.Label();
this.runButton = new System.Windows.Forms.Button();
this.doAgainButton = new System.Windows.Forms.Button();
this.svnOpenButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// tree
//
this.tree.CheckBoxes = true;
this.tree.HideSelection = false;
this.tree.Location = new System.Drawing.Point(10, 30);
this.tree.Name = "tree";
this.tree.Size = new System.Drawing.Size(440, 191);
this.tree.TabIndex = 0;
//
// title
//
this.title.AutoSize = true;
this.title.Location = new System.Drawing.Point(10, 10);
this.title.Name = "title";
this.title.Size = new System.Drawing.Size(35, 13);
this.title.TabIndex = 1;
this.title.Text = "label1";
//
// runButton
//
this.runButton.Location = new System.Drawing.Point(10, 226);
this.runButton.Name = "runButton";
this.runButton.Size = new System.Drawing.Size(140, 23);
this.runButton.TabIndex = 2;
this.runButton.Text = "button1";
this.runButton.UseVisualStyleBackColor = true;
//
// doAgainButton
//
this.doAgainButton.Location = new System.Drawing.Point(162, 226);
this.doAgainButton.Name = "doAgainButton";
this.doAgainButton.Size = new System.Drawing.Size(140, 23);
this.doAgainButton.TabIndex = 3;
this.doAgainButton.Text = "Wiederholen";
this.doAgainButton.UseVisualStyleBackColor = true;
//
// svnOpenButton
//
this.svnOpenButton.Location = new System.Drawing.Point(310, 226);
this.svnOpenButton.Name = "svnOpenButton";
this.svnOpenButton.Size = new System.Drawing.Size(140, 23);
this.svnOpenButton.TabIndex = 4;
this.svnOpenButton.Text = "SVN Öffnen";
this.svnOpenButton.UseVisualStyleBackColor = true;
//
// ViewsWindowFormFileList
//
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.runButton);
this.Controls.Add(this.title);
this.Controls.Add(this.tree);
this.Name = "ViewsWindowFormFileList";
this.Text = "ViewsWindowFormDelete";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label title;
private System.Windows.Forms.Button runButton;
private System.Windows.Forms.Button doAgainButton;
private System.Windows.Forms.Button svnOpenButton;
protected internal System.Windows.Forms.TreeView tree;
}
}

View File

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using svnsync.Models;
using svnsync.Controllers;
using svnsync.Helpers;
namespace svnsync.Views {
public partial class ViewsWindowFormFileList : Form, ViewsWindowFormInterface {
private ModelsWindow model;
public ViewsWindowFormFileList() {
InitializeComponent();
this.FormClosed += ControllersWindow.FormClosed;
this.doAgainButton.Click += new EventHandler(ControllersWindow.RunAgainButton_Click);
this.svnOpenButton.Click += new EventHandler(ControllersWindow.SvnOpenButton_Click);
}
public void UpdateForm() {
this.BeginInvoke((Action)(() => {
switch(this.model.FormType) {
case Helpers.Handles.FormType.DeletedFiles:
this.title.Text = "Diese Daten sind gelöscht worden:";
this.runButton.Text = "Löschen";
this.tree.Nodes.AddRange(TreeBuilder.createDirList(this.model.DeletedFiles, this.model.Args.GetArgumentData("-d")));
this.tree.ImageList = TreeBuilder.getImages(this.tree.Nodes);
this.runButton.Click += new EventHandler(ControllersTray.DeleteButton_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;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using svnsync.Models;
namespace svnsync.Views {
public interface ViewsWindowFormInterface {
void UpdateForm();
void SetModel(ModelsWindow window);
void Show();
IAsyncResult BeginInvoke(Delegate method);
void Dispose();
void Hide();
}
}

View File

@ -31,7 +31,7 @@
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x64</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -78,6 +78,7 @@
</Compile>
<Compile Include="Helpers\Handles.cs" />
<Compile Include="Helpers\StringHelper.cs" />
<Compile Include="Helpers\TreeBuilder.cs" />
<Compile Include="Models\ModelsTray.cs" />
<Compile Include="Models\ModelsWindow.cs" />
<Compile Include="Program.cs" />
@ -91,6 +92,13 @@
<Compile Include="Views\ViewsWindowForm.Designer.cs">
<DependentUpon>ViewsWindowForm.cs</DependentUpon>
</Compile>
<Compile Include="Views\ViewsWindowFormFileList.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Views\ViewsWindowFormFileList.Designer.cs">
<DependentUpon>ViewsWindowFormFileList.cs</DependentUpon>
</Compile>
<Compile Include="Views\ViewsWindowFormInterface.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
@ -107,6 +115,9 @@
<EmbeddedResource Include="Views\ViewsWindowForm.resx">
<DependentUpon>ViewsWindowForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Views\ViewsWindowFormFileList.resx">
<DependentUpon>ViewsWindowFormFileList.cs</DependentUpon>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<StartArguments>-d "E:\\Eigene Dateien\\Dokumente\\Visual Studio 2017\\Projects" -cron -autoadd -autodelete -externals-own</StartArguments>
<StartArguments>-d "D:\\Visual Studio 2012\\Projects" -cron -autoadd -externals-own</StartArguments>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<StartAction>Project</StartAction>
</PropertyGroup>