diff --git a/ClipboardWatcher/ClipboardWatcher.vbproj b/ClipboardWatcher/ClipboardWatcher.vbproj
new file mode 100644
index 00000000..5f4ab946
--- /dev/null
+++ b/ClipboardWatcher/ClipboardWatcher.vbproj
@@ -0,0 +1,110 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}
+ Library
+ ClipboardWatcher
+ ClipboardWatcher
+ 512
+ Windows
+ v4.6.1
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+ ClipboardWatcher.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ ClipboardWatcher.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ frmMatch.vb
+
+
+ Form
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
\ No newline at end of file
diff --git a/ClipboardWatcher/My Project/Application.Designer.vb b/ClipboardWatcher/My Project/Application.Designer.vb
new file mode 100644
index 00000000..88dd01c7
--- /dev/null
+++ b/ClipboardWatcher/My Project/Application.Designer.vb
@@ -0,0 +1,13 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
diff --git a/ClipboardWatcher/My Project/Application.myapp b/ClipboardWatcher/My Project/Application.myapp
new file mode 100644
index 00000000..758895de
--- /dev/null
+++ b/ClipboardWatcher/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 1
+ true
+
diff --git a/ClipboardWatcher/My Project/AssemblyInfo.vb b/ClipboardWatcher/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..f1a6a172
--- /dev/null
+++ b/ClipboardWatcher/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' Allgemeine Informationen über eine Assembly werden über die folgenden
+' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+' die einer Assembly zugeordnet sind.
+
+' Werte der Assemblyattribute überprüfen
+
+
+
+
+
+
+
+
+
+
+'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
+
+
+' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+'
+' Hauptversion
+' Nebenversion
+' Buildnummer
+' Revision
+'
+' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+' übernehmen, indem Sie "*" eingeben:
+'
+
+
+
diff --git a/ClipboardWatcher/My Project/Resources.Designer.vb b/ClipboardWatcher/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..8ed471d4
--- /dev/null
+++ b/ClipboardWatcher/My Project/Resources.Designer.vb
@@ -0,0 +1,62 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My.Resources
+
+ 'This class was auto-generated by the StronglyTypedResourceBuilder
+ 'class via a tool like ResGen or Visual Studio.
+ 'To add or remove a member, edit your .ResX file then rerun ResGen
+ 'with the /str option, or rebuild your VS project.
+ '''
+ ''' A strongly-typed resource class, for looking up localized strings, etc.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Returns the cached ResourceManager instance used by this class.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ClipboardWatcher.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Overrides the current thread's CurrentUICulture property for all
+ ''' resource lookups using this strongly typed resource class.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set(ByVal value As Global.System.Globalization.CultureInfo)
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/ClipboardWatcher/My Project/Resources.resx b/ClipboardWatcher/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/ClipboardWatcher/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ClipboardWatcher/My Project/Settings.Designer.vb b/ClipboardWatcher/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..15745394
--- /dev/null
+++ b/ClipboardWatcher/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
+
+#Region "My.Settings Auto-Save Functionality"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.ClipboardWatcher.My.MySettings
+ Get
+ Return Global.ClipboardWatcher.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/ClipboardWatcher/My Project/Settings.settings b/ClipboardWatcher/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/ClipboardWatcher/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ClipboardWatcher/frmMatch.Designer.vb b/ClipboardWatcher/frmMatch.Designer.vb
new file mode 100644
index 00000000..4654c9e8
--- /dev/null
+++ b/ClipboardWatcher/frmMatch.Designer.vb
@@ -0,0 +1,30 @@
+ _
+Partial Class frmMatch
+ Inherits System.Windows.Forms.Form
+
+ 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Windows Form-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+ _
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(800, 450)
+ Me.Text = "frmMatch"
+ End Sub
+End Class
diff --git a/ClipboardWatcher/frmMatch.vb b/ClipboardWatcher/frmMatch.vb
new file mode 100644
index 00000000..77074eff
--- /dev/null
+++ b/ClipboardWatcher/frmMatch.vb
@@ -0,0 +1,14 @@
+'''
+''' Needs:
+'''
+''' - Config (Location of Window)
+''' - Clipboard Contents
+''' - Matching Profiles
+''' - Pattern Replacement Values
+''' - Connections
+'''
+
+
+Public Class frmMatch
+
+End Class
\ No newline at end of file
diff --git a/DDMonorepo.sln b/DDMonorepo.sln
index 9f992a7f..ee088a39 100644
--- a/DDMonorepo.sln
+++ b/DDMonorepo.sln
@@ -80,6 +80,12 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Language", "Modules.Languag
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RegexEditor", "Controls.RegexEditor\RegexEditor.vbproj", "{BCC6942F-CD4B-4B67-8200-1C0D002E7CC2}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZooFlow", "ZooFlow\ZooFlow.vbproj", "{D0FB36EB-783D-40E1-B71E-A0B84B2FE567}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Products", "Products", "{EB026AEE-C702-47C6-82F5-956D5C8E26C2}"
+EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClipboardWatcher", "ClipboardWatcher\ClipboardWatcher.vbproj", "{1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -198,6 +204,14 @@ Global
{BCC6942F-CD4B-4B67-8200-1C0D002E7CC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCC6942F-CD4B-4B67-8200-1C0D002E7CC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCC6942F-CD4B-4B67-8200-1C0D002E7CC2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -231,6 +245,8 @@ Global
{3D437957-B90B-4D8F-9219-6D19B0C90994} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
{D3C8CFED-D6F6-43A8-9BDF-454145D0352F} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{BCC6942F-CD4B-4B67-8200-1C0D002E7CC2} = {F98C0329-C004-417F-B2AB-7466E88D8220}
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {1FBA063D-60A5-4FC8-A529-A3D1ECFD640C} = {EB026AEE-C702-47C6-82F5-956D5C8E26C2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
diff --git a/ZooFlow/ClassClipboardWatcher.vb b/ZooFlow/ClassClipboardWatcher.vb
new file mode 100644
index 00000000..71f2f3fa
--- /dev/null
+++ b/ZooFlow/ClassClipboardWatcher.vb
@@ -0,0 +1,68 @@
+Imports System.Runtime.InteropServices
+Public Class ClassClipboardWatcher
+ Inherits NativeWindow
+ Implements IDisposable
+
+ Private Class Win32
+
+ Public Shared Function SetClipboardViewer(ByVal hWnd As IntPtr) As IntPtr
+ End Function
+ End Class
+
+ Const WM_DRAWCLIPBOARD As Integer = &H308
+
+ Public Event ClipboardChanged As EventHandler(Of IDataObject)
+ Public Shared Singleton As New ClassClipboardWatcher
+
+ Private _handle As IntPtr
+
+ Private Sub New()
+ MyBase.CreateHandle(New CreateParams)
+ _handle = Win32.SetClipboardViewer(Handle)
+ End Sub
+
+ Protected Overrides Sub WndProc(ByRef m As Message)
+
+ Select Case m.Msg
+ Case WM_DRAWCLIPBOARD
+ Dim oData As IDataObject = Clipboard.GetDataObject
+ RaiseEvent ClipboardChanged(Me, oData)
+ End Select
+ MyBase.WndProc(m)
+ End Sub
+
+#Region "IDisposable Support"
+ ' Für diese Klasse ist korrekte Ressourcenbereinigung besonders wichtig, da
+ ' mit systemübergreifenden Ressourcen gearbeitet wird
+
+ ' So ermitteln Sie überflüssige Aufrufe
+ Private disposedValue As Boolean = False
+
+ Protected Overridable Sub Dispose(ByVal disposing As Boolean)
+ If Not disposedValue Then
+ If disposing Then
+ ' TODO: Verwaltete Ressourcen freigeben, wenn sie explizit
+ ' aufgerufen werden
+ End If
+ MyBase.DestroyHandle()
+ Dim H As IntPtr = Win32.SetClipboardViewer(_handle)
+ End If
+ disposedValue = True
+ End Sub
+
+ ' Dieser Code wird von Visual Basic hinzugefügt, um das Dispose-Muster
+ ' richtig zu implementieren.
+ Public Sub Dispose() Implements IDisposable.Dispose
+ ' Sie sollten diesen Code nicht ändern, sondern stattdessen ihren
+ ' Bereinigungscode oben in
+ ' Dispose(ByVal disposing As Boolean) einfügen.
+ Dispose(True)
+ GC.SuppressFinalize(Me)
+ End Sub
+
+ Protected Overrides Sub Finalize()
+ MyBase.Finalize()
+ Dispose(False)
+ End Sub
+#End Region
+End Class
diff --git a/ZooFlow/ClassFlowForm.vb b/ZooFlow/ClassFlowForm.vb
new file mode 100644
index 00000000..d2da8887
--- /dev/null
+++ b/ZooFlow/ClassFlowForm.vb
@@ -0,0 +1,130 @@
+Imports System.Drawing.Imaging
+Imports System.Runtime.InteropServices
+
+Class Win32
+ Public Enum Bool
+ [False] = 0
+ [True]
+ End Enum
+
+
+ Public Structure Point
+ Public x As Int32
+ Public y As Int32
+
+ Public Sub New(ByVal x As Int32, ByVal y As Int32)
+ Me.x = x
+ Me.y = y
+ End Sub
+ End Structure
+
+
+ Public Structure Size
+ Public cx As Int32
+ Public cy As Int32
+
+ Public Sub New(ByVal cx As Int32, ByVal cy As Int32)
+ Me.cx = cx
+ Me.cy = cy
+ End Sub
+ End Structure
+
+
+ Structure ARGB
+ Public Blue As Byte
+ Public Green As Byte
+ Public Red As Byte
+ Public Alpha As Byte
+ End Structure
+
+
+ Public Structure BLENDFUNCTION
+ Public BlendOp As Byte
+ Public BlendFlags As Byte
+ Public SourceConstantAlpha As Byte
+ Public AlphaFormat As Byte
+ End Structure
+
+ Public Const ULW_COLORKEY As Int32 = &H1
+ Public Const ULW_ALPHA As Int32 = &H2
+ Public Const ULW_OPAQUE As Int32 = &H4
+ Public Const AC_SRC_OVER As Byte = &H0
+ Public Const AC_SRC_ALPHA As Byte = &H1
+
+
+ Public Shared Function UpdateLayeredWindow(ByVal hwnd As IntPtr, ByVal hdcDst As IntPtr, ByRef pptDst As Point, ByRef psize As Size, ByVal hdcSrc As IntPtr, ByRef pprSrc As Point, ByVal crKey As Int32, ByRef pblend As BLENDFUNCTION, ByVal dwFlags As Int32) As Bool
+ End Function
+
+ Public Shared Function GetDC(ByVal hWnd As IntPtr) As IntPtr
+ End Function
+
+ Public Shared Function ReleaseDC(ByVal hWnd As IntPtr, ByVal hDC As IntPtr) As Integer
+ End Function
+
+ Public Shared Function CreateCompatibleDC(ByVal hDC As IntPtr) As IntPtr
+ End Function
+
+ Public Shared Function DeleteDC(ByVal hdc As IntPtr) As Bool
+ End Function
+
+ Public Shared Function SelectObject(ByVal hDC As IntPtr, ByVal hObject As IntPtr) As IntPtr
+ End Function
+
+ Public Shared Function DeleteObject(ByVal hObject As IntPtr) As Bool
+ End Function
+End Class
+
+Public Class ClassFlowForm
+ Inherits Form
+ Public Sub New()
+ FormBorderStyle = FormBorderStyle.None
+ TopMost = True
+ End Sub
+
+ Public Sub SetBitmap(ByVal bitmap As Bitmap)
+ SetBitmap(bitmap, 255, bitmap.Width, bitmap.Height)
+ End Sub
+
+ Public Sub SetBitmap(ByVal Bitmap As Bitmap, ByVal Opacity As Byte, ByVal Width As Integer, ByVal Height As Integer)
+ If Bitmap.PixelFormat <> PixelFormat.Format32bppArgb Then
+ Throw New ApplicationException("The bitmap must be 32ppp with alpha-channel.")
+ End If
+
+ Dim oScreenDeviceContext As IntPtr = Win32.GetDC(IntPtr.Zero)
+ Dim oMemoryDeviceContext As IntPtr = Win32.CreateCompatibleDC(oScreenDeviceContext)
+ Dim oBitmap As IntPtr = IntPtr.Zero
+ Dim oOldBitmap As IntPtr = IntPtr.Zero
+
+ Try
+ oBitmap = Bitmap.GetHbitmap(Color.FromArgb(0))
+ oOldBitmap = Win32.SelectObject(oMemoryDeviceContext, oBitmap)
+ Dim oSize As Win32.Size = New Win32.Size(Width, Height)
+ Dim oPointSource As Win32.Point = New Win32.Point(0, 0)
+ Dim oTopPos As Win32.Point = New Win32.Point(Left, Top)
+ Dim oBlend As Win32.BLENDFUNCTION = New Win32.BLENDFUNCTION With {
+ .BlendOp = Win32.AC_SRC_OVER,
+ .BlendFlags = 0,
+ .SourceConstantAlpha = Opacity,
+ .AlphaFormat = Win32.AC_SRC_ALPHA
+ }
+ Win32.UpdateLayeredWindow(Handle, oScreenDeviceContext, oTopPos, oSize, oMemoryDeviceContext, oPointSource, 0, oBlend, Win32.ULW_ALPHA)
+ Finally
+ Win32.ReleaseDC(IntPtr.Zero, oScreenDeviceContext)
+
+ If oBitmap <> IntPtr.Zero Then
+ Win32.SelectObject(oMemoryDeviceContext, oOldBitmap)
+ Win32.DeleteObject(oBitmap)
+ End If
+
+ Win32.DeleteDC(oMemoryDeviceContext)
+ End Try
+ End Sub
+
+ Protected Overrides ReadOnly Property CreateParams As CreateParams
+ Get
+ Dim oParams As CreateParams = MyBase.CreateParams
+ oParams.ExStyle = oParams.ExStyle Or &H80000
+ Return oParams
+ End Get
+ End Property
+End Class
diff --git a/ZooFlow/My Project/Application.Designer.vb b/ZooFlow/My Project/Application.Designer.vb
new file mode 100644
index 00000000..b37a88cb
--- /dev/null
+++ b/ZooFlow/My Project/Application.Designer.vb
@@ -0,0 +1,38 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
+ ' or if you encounter build errors in this file, go to the Project Designer
+ ' (go to Project Properties or double-click the My Project node in
+ ' Solution Explorer), and make changes on the Application tab.
+ '
+ Partial Friend Class MyApplication
+
+ _
+ Public Sub New()
+ MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
+ Me.IsSingleInstance = false
+ Me.EnableVisualStyles = true
+ Me.SaveMySettingsOnExit = true
+ Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
+ End Sub
+
+ _
+ Protected Overrides Sub OnCreateMainForm()
+ Me.MainForm = Global.ZooFlow.frmMain
+ End Sub
+ End Class
+End Namespace
diff --git a/ZooFlow/My Project/Application.myapp b/ZooFlow/My Project/Application.myapp
new file mode 100644
index 00000000..1243847f
--- /dev/null
+++ b/ZooFlow/My Project/Application.myapp
@@ -0,0 +1,11 @@
+
+
+ true
+ Form1
+ false
+ 0
+ true
+ 0
+ 0
+ true
+
diff --git a/ZooFlow/My Project/AssemblyInfo.vb b/ZooFlow/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..162fe465
--- /dev/null
+++ b/ZooFlow/My Project/AssemblyInfo.vb
@@ -0,0 +1,36 @@
+Imports System.Reflection
+Imports System.Runtime.CompilerServices
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+
+
+
+
+
+
+
+
+' Setting ComVisible to false makes the types in this assembly not visible
+' to COM components. If you need to access a type in this assembly from
+' COM, set the ComVisible attribute to true on that type.
+
+
+' The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+' [assembly: AssemblyVersion("1.0.*")]
+
+
diff --git a/ZooFlow/My Project/Resources.Designer.vb b/ZooFlow/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..f18a3286
--- /dev/null
+++ b/ZooFlow/My Project/Resources.Designer.vb
@@ -0,0 +1,83 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace My.Resources
+
+ 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ '''
+ ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ZooFlow.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property CW_hatwas_klein() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("CW_hatwas_klein", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property CW_wartet_klein() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("CW_wartet_klein", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/ZooFlow/My Project/Resources.resx b/ZooFlow/My Project/Resources.resx
new file mode 100644
index 00000000..2ba959ad
--- /dev/null
+++ b/ZooFlow/My Project/Resources.resx
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\CW_hatwas_klein.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\CW_wartet_klein.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/ZooFlow/My Project/Settings.Designer.vb b/ZooFlow/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..280a1db6
--- /dev/null
+++ b/ZooFlow/My Project/Settings.Designer.vb
@@ -0,0 +1,26 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.18047
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Namespace My
+
+
+
+ Friend NotInheritable Partial Class Settings
+ Inherits System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As Settings = (CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New Settings()), Settings))
+
+ Public Shared ReadOnly Property [Default]() As Settings
+ Get
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
diff --git a/ZooFlow/My Project/Settings.settings b/ZooFlow/My Project/Settings.settings
new file mode 100644
index 00000000..39645652
--- /dev/null
+++ b/ZooFlow/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ZooFlow/My Project/licenses.licx b/ZooFlow/My Project/licenses.licx
new file mode 100644
index 00000000..d87e83cf
--- /dev/null
+++ b/ZooFlow/My Project/licenses.licx
@@ -0,0 +1 @@
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/ZooFlow/Resources/CW_hatwas_klein.png b/ZooFlow/Resources/CW_hatwas_klein.png
new file mode 100644
index 00000000..1aef1284
Binary files /dev/null and b/ZooFlow/Resources/CW_hatwas_klein.png differ
diff --git a/ZooFlow/Resources/CW_wartet_klein.png b/ZooFlow/Resources/CW_wartet_klein.png
new file mode 100644
index 00000000..adab6cce
Binary files /dev/null and b/ZooFlow/Resources/CW_wartet_klein.png differ
diff --git a/ZooFlow/ZooFlow.vbproj b/ZooFlow/ZooFlow.vbproj
new file mode 100644
index 00000000..6ac019cb
--- /dev/null
+++ b/ZooFlow/ZooFlow.vbproj
@@ -0,0 +1,143 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}
+ WinExe
+ ZooFlow
+ ZooFlow
+ v4.6.1
+ ZooFlow.Program
+ 512
+ On
+ Binary
+ Off
+ On
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ true
+ true
+ prompt
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ false
+ true
+ prompt
+
+
+ WindowsForms
+
+
+ ZooFlow.My.MyApplication
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ frmMain.vb
+
+
+ frmFlowForm.vb
+
+
+ Form
+
+
+ True
+ Application.myapp
+
+
+
+ frmMain.vb
+
+
+ frmFlowForm.vb
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.vb
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ZooFlow/frmFlowForm.Designer.vb b/ZooFlow/frmFlowForm.Designer.vb
new file mode 100644
index 00000000..f806a052
--- /dev/null
+++ b/ZooFlow/frmFlowForm.Designer.vb
@@ -0,0 +1,37 @@
+ _
+Partial Class frmFlowForm
+ Inherits ClassFlowForm
+
+ 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Windows Form-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+ _
+ Private Sub InitializeComponent()
+ Me.SuspendLayout()
+ '
+ 'frmFlowForm
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(800, 450)
+ Me.Name = "frmFlowForm"
+ Me.Text = "frmFlowForm"
+ Me.ResumeLayout(False)
+
+ End Sub
+End Class
diff --git a/ZooFlow/frmFlowForm.resx b/ZooFlow/frmFlowForm.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/ZooFlow/frmFlowForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ZooFlow/frmFlowForm.vb b/ZooFlow/frmFlowForm.vb
new file mode 100644
index 00000000..f4b25e52
--- /dev/null
+++ b/ZooFlow/frmFlowForm.vb
@@ -0,0 +1,50 @@
+Public Class frmFlowForm
+ Private WithEvents Watcher As ClassClipboardWatcher = ClassClipboardWatcher.Singleton
+
+ Public Event ClipboardChanged As EventHandler(Of IDataObject)
+
+ Private Sub frmFlowForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ AllowDrop = True
+
+ SetBitmap(My.Resources.CW_wartet_klein)
+ End Sub
+
+ Private Sub frmFlowForm_DragOver(sender As Object, e As DragEventArgs) Handles Me.DragOver
+ If e.Data.GetDataPresent(DataFormats.FileDrop) Then
+ ' Handle file dragged from Windows
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
+ ' Handle a message dragged from Outlook
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then
+ ' Handle a message dragged from Thunderbird?
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ Else
+ ' Otherwise, do not handle
+ e.Effect = DragDropEffects.None
+ End If
+ End Sub
+
+ Private Sub frmFlowForm_DragLeave(sender As Object, e As EventArgs) Handles Me.DragLeave
+ SetBitmap(My.Resources.CW_wartet_klein)
+ End Sub
+
+ Private Sub Watcher_ClipboardChanged(sender As Object, e As IDataObject) Handles Watcher.ClipboardChanged
+ RaiseEvent ClipboardChanged(sender, e)
+ End Sub
+
+ '''
+ ''' DragDrop Support
+ '''
+ Protected Overrides Sub WndProc(ByRef m As Message)
+ If m.Msg = &H84 Then
+ m.Result = CType(2, IntPtr)
+ Return
+ End If
+
+ MyBase.WndProc(m)
+ End Sub
+End Class
\ No newline at end of file
diff --git a/ZooFlow/frmMain.Designer.vb b/ZooFlow/frmMain.Designer.vb
new file mode 100644
index 00000000..093a14b1
--- /dev/null
+++ b/ZooFlow/frmMain.Designer.vb
@@ -0,0 +1,74 @@
+Partial Public Class frmMain
+ Inherits DevExpress.XtraBars.Ribbon.RibbonForm
+
+ '''
+ ''' Required designer variable.
+ '''
+ Private components As System.ComponentModel.IContainer = Nothing
+
+ '''
+ ''' Clean up any resources being used.
+ '''
+ ''' true if managed resources should be disposed; otherwise, false.
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing AndAlso (components IsNot Nothing) Then
+ components.Dispose()
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+#Region "Windows Form Designer generated code"
+
+ '''
+ ''' Required method for Designer support - do not modify
+ ''' the contents of this method with the code editor.
+ '''
+ Private Sub InitializeComponent()
+ Me.ribbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
+ Me.ribbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
+ Me.ribbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'ribbonControl1
+ '
+ Me.ribbonControl1.ExpandCollapseItem.Id = 0
+ Me.ribbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonControl1.ExpandCollapseItem})
+ Me.ribbonControl1.Location = New System.Drawing.Point(0, 0)
+ Me.ribbonControl1.MaxItemId = 1
+ Me.ribbonControl1.Name = "ribbonControl1"
+ Me.ribbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.ribbonPage1})
+ Me.ribbonControl1.Size = New System.Drawing.Size(906, 143)
+ '
+ 'ribbonPage1
+ '
+ Me.ribbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.ribbonPageGroup1})
+ Me.ribbonPage1.Name = "ribbonPage1"
+ Me.ribbonPage1.Text = "ribbonPage1"
+ '
+ 'ribbonPageGroup1
+ '
+ Me.ribbonPageGroup1.Name = "ribbonPageGroup1"
+ Me.ribbonPageGroup1.Text = "ribbonPageGroup1"
+ '
+ 'Form1
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(906, 587)
+ Me.Controls.Add(Me.ribbonControl1)
+ Me.Name = "Form1"
+ Me.Ribbon = Me.ribbonControl1
+ Me.Text = "Zoo Flow"
+ CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+
+#End Region
+
+ Private WithEvents ribbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
+ Private WithEvents ribbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
+ Private WithEvents ribbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+End Class
diff --git a/ZooFlow/frmMain.resx b/ZooFlow/frmMain.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/ZooFlow/frmMain.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ZooFlow/frmMain.vb b/ZooFlow/frmMain.vb
new file mode 100644
index 00000000..ea31f376
--- /dev/null
+++ b/ZooFlow/frmMain.vb
@@ -0,0 +1,20 @@
+
+Partial Public Class frmMain
+ Private WithEvents FlowForm As New frmFlowForm()
+
+ Shared Sub New()
+ DevExpress.UserSkins.BonusSkins.Register()
+ End Sub
+ Public Sub New()
+ InitializeComponent()
+ End Sub
+
+ Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ FlowForm.Show()
+ End Sub
+
+ Private Sub FlowForm_ClipboardChanged(sender As Object, e As IDataObject) Handles FlowForm.ClipboardChanged
+
+ End Sub
+
+End Class