Compare commits

...

7 Commits
v0.3 ... master

Author SHA1 Message Date
6543 b2616664fd
add Tree png version 2019-10-25 18:40:53 +02:00
6543 3468188067
found a changelog 2019-10-25 16:55:22 +02:00
6543 f46deb1008 found as working on disk 2019-10-25 16:54:43 +02:00
6543 baa9b2695a v0.9 2019-10-25 16:52:34 +02:00
6543 7d08f05461 v0.8 2019-10-25 16:50:19 +02:00
6543 79382dc526 v0.5 2019-10-25 16:46:56 +02:00
6543 0992b91b9d v0.4 2019-10-25 16:43:31 +02:00
24 changed files with 5905 additions and 1263 deletions

0
SB-PictureTagger.sln Normal file → Executable file
View File

124
SB-PictureTagger/Class_Mark.vb Executable file
View File

@ -0,0 +1,124 @@

Public Class Mark

'########################################################################################
'############################## Private Declarations ##################################
'########################################################################################

Private sID As String '-> Das Kommando muss angegeben werden
Private sCommand As String '-> Das Kommando muss angegeben werden
Private nLeft As Integer '\
Private nTop As Integer ' \ Die Position muss angegeben werden. Der Datentyp Rectangle wird nur intern benutzt,
Private nWidth As Integer ' / weshalb nach ausen die Eigenschaften einzeln angegeben werden müssen!
Private nHeight As Integer '/
Private sName As String '-> Der Name ist Optional
Private sDescription As String '-> Die Beschreibung ist Optional

'########################################################################################
'############################## Property ##############################################
'########################################################################################

Public Property ID As String
Get
Return Me.sID
End Get
Set(ByVal value As String)
Me.sID = value
End Set
End Property 'ID

Public Property Command As String
Get
Return Me.sCommand
End Get
Set(ByVal value As String)
Me.sCommand = value
End Set
End Property 'Command

Public Property Left() As Integer
Get
Return Me.nLeft
End Get
Set(ByVal value As Integer)
If value >= 0 Then Me.nLeft = value
End Set
End Property 'Left

Public Property Top() As Integer
Get
Return Me.nTop
End Get
Set(ByVal value As Integer)
If value >= 0 Then Me.nTop = value
End Set
End Property 'Top

Public Property Width() As Integer
Get
Return Me.nWidth
End Get
Set(ByVal value As Integer)
If value >= 0 Then Me.nWidth = value
End Set
End Property 'Width

Public Property Height() As Integer
Get
Return Me.nHeight
End Get
Set(ByVal value As Integer)
If value >= 0 Then Me.nHeight = value
End Set
End Property 'Height

Public Property Name As String
Get
Return Me.sName
End Get
Set(ByVal value As String)
Me.sName = value
End Set
End Property 'Name

Public Property Description As String
Get
Return Me.sDescription
End Get
Set(ByVal value As String)
Me.sDescription = value
End Set
End Property 'Description


'########################################################################################
'############################## PUBLIC Subs ###########################################
'########################################################################################

Public Sub Clear()
With Me
.sID = ""
.sCommand = ""
.nLeft = -1
.nTop = -1
.nWidth = -1
.nHeight = -1
.sName = ""
.sDescription = ""
End With
End Sub

Public Sub New(Optional ByVal ID As String = "", Optional ByVal Command As String = "", Optional ByVal Left As Integer = -1, Optional ByVal Top As Integer = -1, Optional ByVal Width As Integer = -1, Optional ByVal Height As Integer = -1, Optional ByVal Name As String = "", Optional ByVal Description As String = "")
With Me
.sID = ID
.sCommand = Command
.nLeft = Left
.nTop = Top
.nWidth = Width
.nHeight = Height
.sName = Name
.sDescription = Description
End With
End Sub

End Class 'Mark ### Export, Improt Vormat für Markierungen

View File

@ -0,0 +1,174 @@

Public Class MarkButton
'Erbe von Class Button
Inherits Windows.Forms.Button

'########################################################################################
'############################## Declarations ##########################################
'########################################################################################

'Variablen
Private nIndex As Integer
Private components As System.ComponentModel.IContainer
Private bRO

'Objecte
Friend WithEvents Menu As System.Windows.Forms.ContextMenuStrip
Friend WithEvents Menu_Move As System.Windows.Forms.ToolStripMenuItem 'Verschiebe Markierung
Friend WithEvents Menu_SiceChange As System.Windows.Forms.ToolStripMenuItem 'Ändere Größe
Friend WithEvents Menu_Delete As System.Windows.Forms.ToolStripMenuItem 'Verschiebe Markierung
Friend WithEvents Menu_Hide As System.Windows.Forms.ToolStripMenuItem 'Verstecke einzelne Markierung

'Events
Public Event LikeMove(ByVal sender As Object)
Public Event LikeSiceChange(ByVal sender As Object)
Public Event LikeDelete(ByVal sender As Object)


'########################################################################################
'############################## Property ##############################################
'########################################################################################

Public Property Position() As Rectangle
Get
Return New Rectangle(Me.Left, Me.Top, Me.Width, Me.Height)
End Get
Set(ByVal value As Rectangle)
Me.Width = value.Width
Me.Height = value.Height
Me.Left = value.Left
Me.Top = value.Top
End Set
End Property 'PositionOnTaggedIMG

Private bDeleted As Boolean
Public Property Deleted As Boolean
Get
Return Me.bDeleted
End Get
Set(ByVal value As Boolean)
If value Then Me.Clear()
Me.bDeleted = value
End Set
End Property

Public ReadOnly Property Index As Integer
Get
Return nIndex
End Get
End Property 'Index

'########################################################################################
'############################## PUBLIC Subs ###########################################
'########################################################################################

Public Sub Clear()
With Me
.Visible = False
.Width = 0
.Height = 0
.Left = 0
.Top = 0
.Text = ""
.FlatAppearance.BorderSize = 3
End With
End Sub 'Clear

Public Sub New(Optional ByVal Index As Integer = -1, Optional ByVal RO As Boolean = False)
'
'Main
'
Me.FlatStyle = Windows.Forms.FlatStyle.Flat
Me.BackColor = Drawing.Color.Transparent
Me.BackgroundImage = Nothing
Me.ForeColor = Drawing.Color.Transparent
Me.FlatAppearance.BorderColor = Drawing.Color.Black
Me.FlatAppearance.MouseDownBackColor = Drawing.Color.Transparent
Me.FlatAppearance.MouseOverBackColor = Drawing.Color.Transparent
Me.TabStop = False

Me.Menu = New System.Windows.Forms.ContextMenuStrip
Me.Menu_Move = New System.Windows.Forms.ToolStripMenuItem
Me.Menu_SiceChange = New System.Windows.Forms.ToolStripMenuItem
Me.Menu_Hide = New System.Windows.Forms.ToolStripMenuItem
Me.Menu_Delete = New System.Windows.Forms.ToolStripMenuItem

Me.nIndex = Index
Me.bRO = RO

'
'Menu
'
Me.Menu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Menu_Move, Me.Menu_SiceChange, Me.Menu_Hide, Me.Menu_Delete})
Me.Menu.Name = "Menu"
Me.Menu.Size = New System.Drawing.Size(202, 70)

'
'Menu_Move
'
Me.Menu_Move.Name = "Menu_Move"
Me.Menu_Move.Size = New System.Drawing.Size(201, 22)
Me.Menu_Move.Text = "Verschiebe Markierung"
Me.Menu_Move.Enabled = Not RO 'Schreibschutz setzen wenn übergenben
Me.Menu_Move.Enabled = False '<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<<#<< Noch in Arbeit >>>>>>>>

'
'Menu_SiceChange
'
Me.Menu_SiceChange.Name = "Menu_SiceChange"
Me.Menu_SiceChange.Size = New System.Drawing.Size(201, 22)
Me.Menu_SiceChange.Text = "Ändere Größe"
Me.Menu_SiceChange.Enabled = Not RO 'Schreibschutz setzen wenn übergenben

'
'Menu_Hide
'
Me.Menu_Hide.Name = "Menu_Hide"
Me.Menu_Hide.Size = New System.Drawing.Size(201, 22)
Me.Menu_Hide.Text = "Verstecke Markierung"
Me.Menu_Hide.Enabled = Not RO 'Schreibschutz setzen wenn übergenben

'
'Menu_Delete
'
Me.Menu_Delete.Name = "Menu_Delete"
Me.Menu_Delete.Size = New System.Drawing.Size(201, 22)
Me.Menu_Delete.Text = "Lösche Markierung"
Me.Menu_Delete.Enabled = Not RO 'Schreibschutz setzen wenn übergenben

If nIndex >= 0 Then Me.ContextMenuStrip = Me.Menu 'Wenn Gültiget Index Aktiviere Menü

Me.Clear()
End Sub ' New(-1, False) will execute wenn declare a new instance


'########################################################################################
'############################## Sub on Event ##########################################
'########################################################################################

'Private Sub MarkButtnon_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
' Me.FlatAppearance.BorderSize = 4
'End Sub 'MarkButnon_GotFocus Event

'Private Sub MarkButtnon_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus
' Me.FlatAppearance.BorderSize = 3
'End Sub 'MarkButnon_LostFocus Event

Private Sub Menu_Delete_Click() Handles Menu_Delete.Click
RaiseEvent LikeDelete(Me)
End Sub 'Menu_Delete_Click = Me.LikeDelete

Private Sub Menu_Hide_Click() Handles Menu_Hide.Click
Me.Visible = False
End Sub 'Menu_Hide_Click = Me.Visible <- False

Private Sub Menu_Move_Click() Handles Menu_Move.Click
RaiseEvent LikeMove(Me)
End Sub 'Menu_Move_Click = Me.LikeMove

Private Sub Menu_SiceChange_Click() Handles Menu_SiceChange.Click
RaiseEvent LikeSiceChange(Me)
End Sub 'Menu_SiceChange_Click = Me.LikeSiceChange


End Class 'MarkButton

97
SB-PictureTagger/Class_Place.vb Executable file
View File

@ -0,0 +1,97 @@

Public Class Place

'########################################################################################
'############################## Declare Events ########################################
'########################################################################################

Public Event PropertyTitleChanged()
Public Event PropertyAdressChanged()
Public Event PropertyDescriptionChanged()
Public Event PropertyGPSChanged()


'########################################################################################
'############################## Property ##############################################
'########################################################################################

Private sTitle As String
Public Property Title() As String
Get
Return sTitle
End Get
Set(ByVal value As String)
If Not value = sTitle Then
sTitle = value
RaiseEvent PropertyTitleChanged()
End If
End Set
End Property

Private sAdress As String
Public Property Adress() As String
Get
Return sAdress
End Get
Set(ByVal value As String)
If Not value = sAdress Then
sAdress = value
RaiseEvent PropertyAdressChanged()
End If
End Set
End Property

Private sDescription As String
Public Property Description() As String
Get
Return sDescription
End Get
Set(ByVal value As String)
If Not value = sDescription Then
sDescription = value
RaiseEvent PropertyDescriptionChanged()
End If
End Set
End Property

Private sGPS As String
Public Property GPS() As String
Get
Return sGPS
End Get
Set(ByVal value As String) 'Später eventuelle überprüfung auf format und deren Umwandlung -GPS Formate-
If Not value = sGPS Then
sGPS = value
RaiseEvent PropertyGPSChanged()
End If
End Set
End Property


'########################################################################################
'############################## PUBLIC Subs ###########################################
'########################################################################################

Public Sub Clear()
Me.sAdress = Nothing
Me.sDescription = Nothing
Me.sGPS = Nothing
Me.sTitle = Nothing
End Sub 'Lehren des Objects


'########################################################################################
'############################## Public Overrides ######################################
'########################################################################################

Public Overrides Function GetHashCode() As Integer
Dim sb As New System.Text.StringBuilder
sb.Append(Me.sAdress)
sb.Append(Me.sDescription)
sb.Append(Me.sGPS)
sb.Append(Me.sTitle)
Return sb.ToString.GetHashCode()
End Function 'GetHashCode


End Class 'Class Place

View File

@ -0,0 +1,170 @@

Public Class Rectangle
'########################################################################################
'############################## Private Declarations ##################################
'########################################################################################

Private nLeft As Integer = 0
Private nTop As Integer = 0
Private nWidth As Integer = 0
Private nHeight As Integer = 0


'########################################################################################
'############################## Property ##############################################
'########################################################################################

Public Property Left() As Integer
Get
Return Me.nLeft
End Get
Set(ByVal value As Integer)
If value < 0 Then value = 0
Me.nLeft = value
End Set
End Property 'Left

Public Property Top() As Integer
Get
Return Me.nTop
End Get
Set(ByVal value As Integer)
If value < 0 Then value = 0
Me.nTop = value
End Set
End Property 'Top

Public Property Width() As Integer
Get
Return Me.nWidth
End Get
Set(ByVal value As Integer)
If value < 0 Then value = 0
Me.nWidth = value
End Set
End Property 'Width

Public Property Height() As Integer
Get
Return Me.nHeight
End Get
Set(ByVal value As Integer)
If value < 0 Then value = 0
Me.nHeight = value
End Set
End Property 'Height

Public ReadOnly Property PointA As Drawing.Point
Get
Return New Drawing.Point(nLeft, nTop)
End Get
End Property 'RO PointA

Public ReadOnly Property PointB As Drawing.Point
Get
Return New Drawing.Point(nLeft + nWidth, nTop + nHeight)
End Get
End Property 'RO PointB


'########################################################################################
'############################## PUBLIC Functions ######################################
'########################################################################################


Public Function AsString() As String
With Me
If .nLeft = Nothing Then nLeft = 0
If .nTop = Nothing Then nTop = 0
If .nWidth = Nothing Then nWidth = 0
If .nHeight = Nothing Then nHeight = 0
AsString = "Left: " & Convert.ToString(.nLeft) & "; Top: " & Convert.ToString(.nTop) & "; Width: " & Convert.ToString(.nWidth) & "; Height: " & Convert.ToString(.nHeight)
End With
End Function 'AsString


'########################################################################################
'############################## PUBLIC Subs ###########################################
'########################################################################################

'New(Left, Top, Width, Height)
Public Sub New(Optional ByVal Left As Integer = Nothing, Optional ByVal Top As Integer = Nothing, Optional ByVal Width As Integer = Nothing, Optional ByVal Height As Integer = Nothing)
With Me
.Left = Left
.Top = Top
.Width = Width
.Height = Height
End With
End Sub 'New

Public Sub Clear()
With Me
.Left = 0
.Top = 0
.Width = 0
.Height = 0
End With
End Sub

'########################################################################################
'############################## PUBLIC Shared Functions ###############################
'########################################################################################

Public Shared Function Points_to_Rectangle(ByVal PointA As System.Drawing.Point, ByVal PointB As System.Drawing.Point) As Rectangle
Dim rRectangle As New Rectangle
Dim A_x As Integer = PointA.X
Dim A_y As Integer = PointA.Y
Dim B_x As Integer = PointB.X
Dim B_y As Integer = PointB.Y

If A_x < B_x Then
If A_y < B_y Then
PointA.X = A_x
PointA.Y = A_y
PointB.X = B_x
PointB.Y = B_y
ElseIf A_y > B_y Then
PointA.X = A_x
PointA.Y = B_y
PointB.X = B_x
PointB.Y = A_y
End If

ElseIf A_x > B_x Then
If A_y < B_y Then
PointA.X = B_x
PointA.Y = A_y
PointB.X = A_x
PointB.Y = B_y
ElseIf A_y > B_y Then
PointA.X = B_x
PointA.Y = B_y
PointB.X = A_x
PointB.Y = A_y
End If
End If
rRectangle.Left = PointA.X
rRectangle.Top = PointA.Y
rRectangle.Width = PointB.X - PointA.X
rRectangle.Height = PointB.Y - PointA.Y

Points_to_Rectangle = rRectangle

End Function 'Points_to_Rectangle


'########################################################################################
'############################## Public Overrides ######################################
'########################################################################################

Public Overrides Function GetHashCode() As Integer
Dim sb As New System.Text.StringBuilder
sb.Append(Convert.ToString(Me.nHeight))
sb.Append(Convert.ToString(Me.nLeft))
sb.Append(Convert.ToString(Me.nTop))
sb.Append(Convert.ToString(Me.nWidth))
Return sb.ToString.GetHashCode()
End Function 'GetHashCode


End Class 'Class Rectangle

File diff suppressed because it is too large Load Diff

View File

@ -1,165 +0,0 @@
Namespace Stammbaum.Classen
Namespace PictureTagger
'HauptClasse von PictureTagger ################################
Public Class TaggedIMG

Private sID As String 'Datenbankeintrag - In diesemfall Dateinahme :) da INI
Public Property ID() As String
Get
Return sID
End Get
Set(ByVal value As String)
sID = value
End Set
End Property

Private sTitle As String
Public Property Title() As String
Get
Return sTitle
End Get
Set(ByVal value As String)
sTitle = value
End Set
End Property

Private sDescription As String
Public Property Description() As String
Get
Return sDescription
End Get
Set(ByVal value As String)
sDescription = value
End Set
End Property

Private sTime As String
Public Property Time() As String
Get
Return sTime
End Get
Set(ByVal value As String)
sTime = value
End Set
End Property

Private iImage As Image
Public Property Image() As Image
Get
Return iImage
End Get
Set(ByVal value As Image)
iImage = value
End Set
End Property

Private sPath As String
Public Property Path() As String
Get
Return sPath
End Get
Set(ByVal value As String)
sPath = value
End Set
End Property

Private oOrt As New Stammbaum.Classen.Place
Public Property Ort() As Stammbaum.Classen.Place 'AufnahmeOrt
Get
Return oOrt
End Get
Set(ByVal value As Stammbaum.Classen.Place)
oOrt = value
End Set
End Property

Public Markierung() As Stammbaum.Classen.PictureTagger.Mark
'Hier werden Funktionen und Rotienen Geschreiben die die Markierungen steuern ....
'Ob Array oder eigene Classe steht noch nicht vest, leider

Public Sub Clear()
Me.sID = Nothing
Me.iImage = Nothing
Me.sTitle = Nothing
Me.sDescription = Nothing
Me.sTime = Nothing
Me.sPath = Nothing
Me.oOrt.Clear()
ReDim Me.Markierung(0) '####################### <<<<======= Hier werden Funktionen und Rotienen Geschreiben die die Markierungen steuern ....
End Sub

Public Sub Create_NewMark(ByVal ID As Long, ByVal PositionX As Long, ByVal PositionY As Long, Optional ByVal Radius As Long = 10, Optional ByVal Description As String = "")
' Dim Index As Integer
' 'If Me.Mark(0) is not Initalisiert Then
' ' Index = 0
' 'Else
' Index = 1 + UBound(Me.Markierung)
' 'End if
' ReDim Me.Markierung(Index)
' Me.Markierung(Index).ID = ID
' Me.Markierung(Index).PositionX = PositionX
' Me.Markierung(Index).PositionY = PositionY
' Me.Markierung(Index).Radius = Radius
' Me.Markierung(Index).Description = Description
End Sub 'In Arbeit - Erst wenn Mark eindeutig Vestgelegt :(

End Class 'TaggedIMG
'#######################################################
Public Class Mark
Public PositionX As Long
Public PositionY As Long
Public ID As Long
Public Radius As Long
Public Description As String
End Class 'Mark <<-- In Work!! Don't forget! ;) MainFeture
End Namespace 'PictureTagger
'#################################################
Public Class Place
Private sTitle As String
Public Property Title() As String
Get
Return sTitle
End Get
Set(ByVal value As String)
sTitle = value
End Set
End Property

Private sAdresse As String
Public Property Adresse() As String
Get
Return sAdresse
End Get
Set(ByVal value As String)
sAdresse = value
End Set
End Property

Private sDescription As String
Public Property Description() As String
Get
Return sDescription
End Get
Set(ByVal value As String)
sDescription = value
End Set
End Property

Private sGPS As String
Public Property GPS() As String
Get
Return sGPS
End Get
Set(ByVal value As String) 'Später eventuelle überprüfung auf format und deren Umwandlung -GPS Formate-
sGPS = value
End Set
End Property

Public Sub Clear()
Me.sAdresse = Nothing
Me.sDescription = Nothing
Me.sGPS = Nothing
End Sub

End Class 'Place
End Namespace 'Stammbaum.Classen

680
SB-PictureTagger/F_SB_PictureTagger.Designer.vb generated Normal file → Executable file
View File

@ -1,5 +1,5 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Main
Partial Class SB_PictureTagger
Inherits System.Windows.Forms.Form

'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@ -22,269 +22,221 @@ Partial Class Main
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.b_next = New System.Windows.Forms.Button()
Me.b_last = New System.Windows.Forms.Button()
Me.b_exit = New System.Windows.Forms.Button()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.tb_Bild_Time = New System.Windows.Forms.TextBox()
Me.rtb_Bild_Description = New System.Windows.Forms.RichTextBox()
Me.tb_Bild_Title = New System.Windows.Forms.TextBox()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
Me.DataGridView1 = New System.Windows.Forms.DataGridView()
Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.Position = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.Radius = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.Column2 = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.b_loaddir = New System.Windows.Forms.Button()
Me.b_save = New System.Windows.Forms.Button()
Dim Place1 As Place = New Place()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SB_PictureTagger))
Me.Panel_Botom = New System.Windows.Forms.Panel()
Me.Label7 = New System.Windows.Forms.Label()
Me.b_reloaddir = New System.Windows.Forms.Button()
Me.GroupBox3 = New System.Windows.Forms.GroupBox()
Me.b_loaddir = New System.Windows.Forms.Button()
Me.b_exit = New System.Windows.Forms.Button()
Me.b_last = New System.Windows.Forms.Button()
Me.b_next = New System.Windows.Forms.Button()
Me.Panel_Right = New System.Windows.Forms.Panel()
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.NumericUpDown_OrdnerTiefe = New System.Windows.Forms.NumericUpDown()
Me.cb_marks_visible = New System.Windows.Forms.CheckBox()
Me.GB_Ort = New System.Windows.Forms.GroupBox()
Me.tb_Place_Description = New System.Windows.Forms.TextBox()
Me.Label9 = New System.Windows.Forms.Label()
Me.tb_Place_Title = New System.Windows.Forms.TextBox()
Me.rtb_Place_Description = New System.Windows.Forms.RichTextBox()
Me.tb_Place_Name = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label5 = New System.Windows.Forms.Label()
Me.Label6 = New System.Windows.Forms.Label()
Me.tb_Place_GPS = New System.Windows.Forms.TextBox()
Me.tb_Place_Addresse = New System.Windows.Forms.TextBox()
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.NumericUpDown_OrdnerTiefe = New System.Windows.Forms.NumericUpDown()
Me.cb_AutoSave = New System.Windows.Forms.CheckBox()
Me.cb_marks_visible = New System.Windows.Forms.CheckBox()
Me.Label7 = New System.Windows.Forms.Label()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.GroupBox1.SuspendLayout()
Me.GroupBox2.SuspendLayout()
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.GroupBox3.SuspendLayout()
Me.GB_Mark = New System.Windows.Forms.GroupBox()
Me.tb_AktMark_Description = New System.Windows.Forms.TextBox()
Me.Label11 = New System.Windows.Forms.Label()
Me.tb_AktMark_Name = New System.Windows.Forms.TextBox()
Me.Label10 = New System.Windows.Forms.Label()
Me.GB_Bild = New System.Windows.Forms.GroupBox()
Me.tb_Bild_Description = New System.Windows.Forms.TextBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.tb_Bild_Time = New System.Windows.Forms.TextBox()
Me.tb_Bild_Name = New System.Windows.Forms.TextBox()
Me.TaggedIMG1 = New TaggedIMG()
Me.Panel_Botom.SuspendLayout()
Me.Panel_Right.SuspendLayout()
Me.GroupBox4.SuspendLayout()
CType(Me.NumericUpDown_OrdnerTiefe, System.ComponentModel.ISupportInitialize).BeginInit()
Me.GB_Ort.SuspendLayout()
Me.GB_Mark.SuspendLayout()
Me.GB_Bild.SuspendLayout()
CType(Me.TaggedIMG1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'PictureBox1
'Panel_Botom
'
Me.PictureBox1.Location = New System.Drawing.Point(12, 12)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(717, 618)
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
Me.PictureBox1.TabIndex = 0
Me.PictureBox1.TabStop = False
Me.Panel_Botom.Controls.Add(Me.Label7)
Me.Panel_Botom.Controls.Add(Me.b_reloaddir)
Me.Panel_Botom.Controls.Add(Me.b_loaddir)
Me.Panel_Botom.Controls.Add(Me.b_exit)
Me.Panel_Botom.Controls.Add(Me.b_last)
Me.Panel_Botom.Controls.Add(Me.b_next)
Me.Panel_Botom.Location = New System.Drawing.Point(1, 636)
Me.Panel_Botom.Name = "Panel_Botom"
Me.Panel_Botom.Size = New System.Drawing.Size(1104, 87)
Me.Panel_Botom.TabIndex = 12
'
'b_next
'Label7
'
Me.b_next.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_next.Location = New System.Drawing.Point(196, 651)
Me.b_next.Name = "b_next"
Me.b_next.Size = New System.Drawing.Size(178, 51)
Me.b_next.TabIndex = 2
Me.b_next.Text = "Nächstes Bild"
Me.b_next.UseVisualStyleBackColor = True
'
'b_last
'
Me.b_last.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_last.Location = New System.Drawing.Point(12, 651)
Me.b_last.Name = "b_last"
Me.b_last.Size = New System.Drawing.Size(178, 51)
Me.b_last.TabIndex = 3
Me.b_last.Text = "Leztes Bild"
Me.b_last.UseVisualStyleBackColor = True
'
'b_exit
'
Me.b_exit.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_exit.Location = New System.Drawing.Point(916, 651)
Me.b_exit.Name = "b_exit"
Me.b_exit.Size = New System.Drawing.Size(178, 51)
Me.b_exit.TabIndex = 4
Me.b_exit.Text = "Beenden"
Me.b_exit.UseVisualStyleBackColor = True
'
'GroupBox1
'
Me.GroupBox1.Controls.Add(Me.Label3)
Me.GroupBox1.Controls.Add(Me.Label2)
Me.GroupBox1.Controls.Add(Me.Label1)
Me.GroupBox1.Controls.Add(Me.tb_Bild_Time)
Me.GroupBox1.Controls.Add(Me.rtb_Bild_Description)
Me.GroupBox1.Controls.Add(Me.tb_Bild_Title)
Me.GroupBox1.Location = New System.Drawing.Point(742, 16)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(352, 162)
Me.GroupBox1.TabIndex = 6
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Bild"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(8, 74)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(69, 13)
Me.Label3.TabIndex = 5
Me.Label3.Text = "Kommentare:"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(8, 45)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(59, 13)
Me.Label2.TabIndex = 4
Me.Label2.Text = "Zeit/-raum:"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(6, 22)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(30, 13)
Me.Label1.TabIndex = 3
Me.Label1.Text = "Titel:"
'
'tb_Bild_Time
'
Me.tb_Bild_Time.Location = New System.Drawing.Point(83, 45)
Me.tb_Bild_Time.Name = "tb_Bild_Time"
Me.tb_Bild_Time.Size = New System.Drawing.Size(263, 20)
Me.tb_Bild_Time.TabIndex = 2
'
'rtb_Bild_Description
'
Me.rtb_Bild_Description.Location = New System.Drawing.Point(83, 70)
Me.rtb_Bild_Description.Name = "rtb_Bild_Description"
Me.rtb_Bild_Description.Size = New System.Drawing.Size(263, 86)
Me.rtb_Bild_Description.TabIndex = 1
Me.rtb_Bild_Description.Text = "Markierungen Hinzufügen !"
'
'tb_Bild_Title
'
Me.tb_Bild_Title.Location = New System.Drawing.Point(83, 19)
Me.tb_Bild_Title.Name = "tb_Bild_Title"
Me.tb_Bild_Title.Size = New System.Drawing.Size(263, 20)
Me.tb_Bild_Title.TabIndex = 0
'
'GroupBox2
'
Me.GroupBox2.Controls.Add(Me.DataGridView1)
Me.GroupBox2.Location = New System.Drawing.Point(742, 345)
Me.GroupBox2.Name = "GroupBox2"
Me.GroupBox2.Size = New System.Drawing.Size(352, 218)
Me.GroupBox2.TabIndex = 7
Me.GroupBox2.TabStop = False
Me.GroupBox2.Text = "Markierungen"
'
'DataGridView1
'
Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Position, Me.Radius, Me.Column2})
Me.DataGridView1.Location = New System.Drawing.Point(11, 19)
Me.DataGridView1.Name = "DataGridView1"
Me.DataGridView1.Size = New System.Drawing.Size(329, 221)
Me.DataGridView1.TabIndex = 1
'
'Column1
'
Me.Column1.HeaderText = "Nr."
Me.Column1.Name = "Column1"
'
'Position
'
Me.Position.HeaderText = "Position"
Me.Position.Name = "Position"
Me.Position.Visible = False
'
'Radius
'
Me.Radius.HeaderText = "Radius"
Me.Radius.Name = "Radius"
Me.Radius.Visible = False
'
'Column2
'
Me.Column2.HeaderText = "Beschreibung"
Me.Column2.Name = "Column2"
'
'b_loaddir
'
Me.b_loaddir.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_loaddir.Location = New System.Drawing.Point(732, 651)
Me.b_loaddir.Name = "b_loaddir"
Me.b_loaddir.Size = New System.Drawing.Size(178, 51)
Me.b_loaddir.TabIndex = 8
Me.b_loaddir.Text = "Ordner Öffnen"
Me.b_loaddir.UseVisualStyleBackColor = True
'
'b_save
'
Me.b_save.Font = New System.Drawing.Font("Comic Sans MS", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_save.Location = New System.Drawing.Point(380, 651)
Me.b_save.Name = "b_save"
Me.b_save.Size = New System.Drawing.Size(178, 51)
Me.b_save.TabIndex = 9
Me.b_save.Text = "Änderungen Speichern"
Me.b_save.UseVisualStyleBackColor = True
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(11, 68)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(65, 13)
Me.Label7.TabIndex = 7
Me.Label7.Text = "Pfadangabe"
'
'b_reloaddir
'
Me.b_reloaddir.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_reloaddir.Location = New System.Drawing.Point(564, 651)
Me.b_reloaddir.Location = New System.Drawing.Point(420, 14)
Me.b_reloaddir.Name = "b_reloaddir"
Me.b_reloaddir.Size = New System.Drawing.Size(165, 51)
Me.b_reloaddir.TabIndex = 10
Me.b_reloaddir.TabIndex = 11
Me.b_reloaddir.Text = "Neu Laden"
Me.b_reloaddir.UseVisualStyleBackColor = True
'
'GroupBox3
'b_loaddir
'
Me.GroupBox3.Controls.Add(Me.Label9)
Me.GroupBox3.Controls.Add(Me.tb_Place_Title)
Me.GroupBox3.Controls.Add(Me.rtb_Place_Description)
Me.GroupBox3.Controls.Add(Me.Label4)
Me.GroupBox3.Controls.Add(Me.Label5)
Me.GroupBox3.Controls.Add(Me.Label6)
Me.GroupBox3.Controls.Add(Me.tb_Place_GPS)
Me.GroupBox3.Controls.Add(Me.tb_Place_Addresse)
Me.GroupBox3.Location = New System.Drawing.Point(742, 184)
Me.GroupBox3.Name = "GroupBox3"
Me.GroupBox3.Size = New System.Drawing.Size(352, 155)
Me.GroupBox3.TabIndex = 11
Me.GroupBox3.TabStop = False
Me.GroupBox3.Text = "Aufnahme Ort"
Me.b_loaddir.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_loaddir.Location = New System.Drawing.Point(611, 14)
Me.b_loaddir.Name = "b_loaddir"
Me.b_loaddir.Size = New System.Drawing.Size(178, 51)
Me.b_loaddir.TabIndex = 12
Me.b_loaddir.Text = "Ordner Öffnen"
Me.b_loaddir.UseVisualStyleBackColor = True
'
'b_exit
'
Me.b_exit.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_exit.Location = New System.Drawing.Point(915, 14)
Me.b_exit.Name = "b_exit"
Me.b_exit.Size = New System.Drawing.Size(178, 51)
Me.b_exit.TabIndex = 13
Me.b_exit.Text = "Beenden"
Me.b_exit.UseVisualStyleBackColor = True
'
'b_last
'
Me.b_last.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_last.Location = New System.Drawing.Point(11, 14)
Me.b_last.Name = "b_last"
Me.b_last.Size = New System.Drawing.Size(178, 51)
Me.b_last.TabIndex = 8
Me.b_last.Text = "Vorheriges Bild"
Me.b_last.UseVisualStyleBackColor = True
'
'b_next
'
Me.b_next.Font = New System.Drawing.Font("Comic Sans MS", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.b_next.Location = New System.Drawing.Point(216, 14)
Me.b_next.Name = "b_next"
Me.b_next.Size = New System.Drawing.Size(178, 51)
Me.b_next.TabIndex = 9
Me.b_next.Text = "Nächstes Bild"
Me.b_next.UseVisualStyleBackColor = True
'
'Panel_Right
'
Me.Panel_Right.Controls.Add(Me.GroupBox4)
Me.Panel_Right.Controls.Add(Me.GB_Ort)
Me.Panel_Right.Controls.Add(Me.GB_Mark)
Me.Panel_Right.Controls.Add(Me.GB_Bild)
Me.Panel_Right.Location = New System.Drawing.Point(735, 12)
Me.Panel_Right.Name = "Panel_Right"
Me.Panel_Right.Size = New System.Drawing.Size(370, 618)
Me.Panel_Right.TabIndex = 13
'
'GroupBox4
'
Me.GroupBox4.Controls.Add(Me.Label8)
Me.GroupBox4.Controls.Add(Me.NumericUpDown_OrdnerTiefe)
Me.GroupBox4.Controls.Add(Me.cb_marks_visible)
Me.GroupBox4.Location = New System.Drawing.Point(9, 568)
Me.GroupBox4.Name = "GroupBox4"
Me.GroupBox4.Size = New System.Drawing.Size(352, 48)
Me.GroupBox4.TabIndex = 15
Me.GroupBox4.TabStop = False
Me.GroupBox4.Text = "Optionen"
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(199, 19)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(63, 13)
Me.Label8.TabIndex = 6
Me.Label8.Text = "OrdnerTiefe"
'
'NumericUpDown_OrdnerTiefe
'
Me.NumericUpDown_OrdnerTiefe.Location = New System.Drawing.Point(162, 16)
Me.NumericUpDown_OrdnerTiefe.Maximum = New Decimal(New Integer() {3, 0, 0, 0})
Me.NumericUpDown_OrdnerTiefe.Name = "NumericUpDown_OrdnerTiefe"
Me.NumericUpDown_OrdnerTiefe.Size = New System.Drawing.Size(31, 20)
Me.NumericUpDown_OrdnerTiefe.TabIndex = 2
'
'cb_marks_visible
'
Me.cb_marks_visible.AutoSize = True
Me.cb_marks_visible.Checked = True
Me.cb_marks_visible.CheckState = System.Windows.Forms.CheckState.Checked
Me.cb_marks_visible.Location = New System.Drawing.Point(11, 19)
Me.cb_marks_visible.Name = "cb_marks_visible"
Me.cb_marks_visible.Size = New System.Drawing.Size(121, 17)
Me.cb_marks_visible.TabIndex = 0
Me.cb_marks_visible.Text = "Zeige Markierungen"
Me.cb_marks_visible.UseVisualStyleBackColor = True
'
'GB_Ort
'
Me.GB_Ort.Controls.Add(Me.tb_Place_Description)
Me.GB_Ort.Controls.Add(Me.Label9)
Me.GB_Ort.Controls.Add(Me.tb_Place_Name)
Me.GB_Ort.Controls.Add(Me.Label4)
Me.GB_Ort.Controls.Add(Me.Label5)
Me.GB_Ort.Controls.Add(Me.Label6)
Me.GB_Ort.Controls.Add(Me.tb_Place_GPS)
Me.GB_Ort.Controls.Add(Me.tb_Place_Addresse)
Me.GB_Ort.Location = New System.Drawing.Point(7, 171)
Me.GB_Ort.Name = "GB_Ort"
Me.GB_Ort.Size = New System.Drawing.Size(352, 199)
Me.GB_Ort.TabIndex = 13
Me.GB_Ort.TabStop = False
Me.GB_Ort.Text = "Aufnahme Ort"
'
'tb_Place_Description
'
Me.tb_Place_Description.Location = New System.Drawing.Point(83, 97)
Me.tb_Place_Description.Multiline = True
Me.tb_Place_Description.Name = "tb_Place_Description"
Me.tb_Place_Description.Size = New System.Drawing.Size(263, 96)
Me.tb_Place_Description.TabIndex = 12
'
'Label9
'
Me.Label9.AutoSize = True
Me.Label9.Location = New System.Drawing.Point(8, 23)
Me.Label9.Location = New System.Drawing.Point(8, 19)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(30, 13)
Me.Label9.Size = New System.Drawing.Size(38, 13)
Me.Label9.TabIndex = 8
Me.Label9.Text = "Title:"
Me.Label9.Text = "Name:"
'
'tb_Place_Title
'tb_Place_Name
'
Me.tb_Place_Title.Location = New System.Drawing.Point(83, 16)
Me.tb_Place_Title.Name = "tb_Place_Title"
Me.tb_Place_Title.Size = New System.Drawing.Size(263, 20)
Me.tb_Place_Title.TabIndex = 7
'
'rtb_Place_Description
'
Me.rtb_Place_Description.Location = New System.Drawing.Point(83, 97)
Me.rtb_Place_Description.Name = "rtb_Place_Description"
Me.rtb_Place_Description.Size = New System.Drawing.Size(263, 52)
Me.rtb_Place_Description.TabIndex = 6
Me.rtb_Place_Description.Text = ""
Me.tb_Place_Name.Location = New System.Drawing.Point(83, 16)
Me.tb_Place_Name.Name = "tb_Place_Name"
Me.tb_Place_Name.Size = New System.Drawing.Size(263, 20)
Me.tb_Place_Name.TabIndex = 0
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(6, 97)
Me.Label4.Location = New System.Drawing.Point(8, 100)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(69, 13)
Me.Label4.TabIndex = 5
@ -293,7 +245,7 @@ Partial Class Main
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Location = New System.Drawing.Point(6, 71)
Me.Label5.Location = New System.Drawing.Point(6, 74)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(67, 13)
Me.Label5.TabIndex = 4
@ -320,133 +272,207 @@ Partial Class Main
Me.tb_Place_Addresse.Location = New System.Drawing.Point(83, 42)
Me.tb_Place_Addresse.Name = "tb_Place_Addresse"
Me.tb_Place_Addresse.Size = New System.Drawing.Size(263, 20)
Me.tb_Place_Addresse.TabIndex = 0
Me.tb_Place_Addresse.TabIndex = 1
'
'GroupBox4
'GB_Mark
'
Me.GroupBox4.Controls.Add(Me.Label8)
Me.GroupBox4.Controls.Add(Me.NumericUpDown_OrdnerTiefe)
Me.GroupBox4.Controls.Add(Me.cb_AutoSave)
Me.GroupBox4.Controls.Add(Me.cb_marks_visible)
Me.GroupBox4.Location = New System.Drawing.Point(742, 569)
Me.GroupBox4.Name = "GroupBox4"
Me.GroupBox4.Size = New System.Drawing.Size(346, 61)
Me.GroupBox4.TabIndex = 12
Me.GroupBox4.TabStop = False
Me.GroupBox4.Text = "Optionen"
Me.GB_Mark.Controls.Add(Me.tb_AktMark_Description)
Me.GB_Mark.Controls.Add(Me.Label11)
Me.GB_Mark.Controls.Add(Me.tb_AktMark_Name)
Me.GB_Mark.Controls.Add(Me.Label10)
Me.GB_Mark.Location = New System.Drawing.Point(9, 392)
Me.GB_Mark.Name = "GB_Mark"
Me.GB_Mark.Size = New System.Drawing.Size(352, 150)
Me.GB_Mark.TabIndex = 14
Me.GB_Mark.TabStop = False
Me.GB_Mark.Text = "Ausgewählte Markierung"
'
'Label8
'tb_AktMark_Description
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(199, 19)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(63, 13)
Me.Label8.TabIndex = 6
Me.Label8.Text = "OrdnerTiefe"
Me.tb_AktMark_Description.Location = New System.Drawing.Point(83, 45)
Me.tb_AktMark_Description.Multiline = True
Me.tb_AktMark_Description.Name = "tb_AktMark_Description"
Me.tb_AktMark_Description.Size = New System.Drawing.Size(263, 99)
Me.tb_AktMark_Description.TabIndex = 12
'
'NumericUpDown_OrdnerTiefe
'Label11
'
Me.NumericUpDown_OrdnerTiefe.Location = New System.Drawing.Point(162, 16)
Me.NumericUpDown_OrdnerTiefe.Maximum = New Decimal(New Integer() {3, 0, 0, 0})
Me.NumericUpDown_OrdnerTiefe.Name = "NumericUpDown_OrdnerTiefe"
Me.NumericUpDown_OrdnerTiefe.Size = New System.Drawing.Size(31, 20)
Me.NumericUpDown_OrdnerTiefe.TabIndex = 5
Me.Label11.AutoSize = True
Me.Label11.Location = New System.Drawing.Point(8, 22)
Me.Label11.Name = "Label11"
Me.Label11.Size = New System.Drawing.Size(38, 13)
Me.Label11.TabIndex = 10
Me.Label11.Text = "Name:"
'
'cb_AutoSave
'tb_AktMark_Name
'
Me.cb_AutoSave.AutoSize = True
Me.cb_AutoSave.Location = New System.Drawing.Point(11, 38)
Me.cb_AutoSave.Name = "cb_AutoSave"
Me.cb_AutoSave.Size = New System.Drawing.Size(135, 17)
Me.cb_AutoSave.TabIndex = 4
Me.cb_AutoSave.Text = "Automatisch Speichern"
Me.cb_AutoSave.UseVisualStyleBackColor = True
Me.tb_AktMark_Name.Location = New System.Drawing.Point(83, 19)
Me.tb_AktMark_Name.Name = "tb_AktMark_Name"
Me.tb_AktMark_Name.Size = New System.Drawing.Size(263, 20)
Me.tb_AktMark_Name.TabIndex = 9
'
'cb_marks_visible
'Label10
'
Me.cb_marks_visible.AutoSize = True
Me.cb_marks_visible.Location = New System.Drawing.Point(11, 19)
Me.cb_marks_visible.Name = "cb_marks_visible"
Me.cb_marks_visible.Size = New System.Drawing.Size(121, 17)
Me.cb_marks_visible.TabIndex = 3
Me.cb_marks_visible.Text = "Zeige Markierungen"
Me.cb_marks_visible.UseVisualStyleBackColor = True
Me.Label10.AutoSize = True
Me.Label10.Location = New System.Drawing.Point(8, 48)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(69, 13)
Me.Label10.TabIndex = 7
Me.Label10.Text = "Kommentare:"
'
'Label7
'GB_Bild
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(9, 633)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(0, 13)
Me.Label7.TabIndex = 13
Me.GB_Bild.Controls.Add(Me.tb_Bild_Description)
Me.GB_Bild.Controls.Add(Me.Label3)
Me.GB_Bild.Controls.Add(Me.Label2)
Me.GB_Bild.Controls.Add(Me.Label1)
Me.GB_Bild.Controls.Add(Me.tb_Bild_Time)
Me.GB_Bild.Controls.Add(Me.tb_Bild_Name)
Me.GB_Bild.Location = New System.Drawing.Point(9, 2)
Me.GB_Bild.Name = "GB_Bild"
Me.GB_Bild.Size = New System.Drawing.Size(352, 151)
Me.GB_Bild.TabIndex = 12
Me.GB_Bild.TabStop = False
Me.GB_Bild.Text = "Bild"
'
'Main
'tb_Bild_Description
'
Me.tb_Bild_Description.Location = New System.Drawing.Point(83, 70)
Me.tb_Bild_Description.Multiline = True
Me.tb_Bild_Description.Name = "tb_Bild_Description"
Me.tb_Bild_Description.Size = New System.Drawing.Size(263, 75)
Me.tb_Bild_Description.TabIndex = 11
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(8, 74)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(69, 13)
Me.Label3.TabIndex = 5
Me.Label3.Text = "Kommentare:"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(8, 48)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(59, 13)
Me.Label2.TabIndex = 4
Me.Label2.Text = "Zeit/-raum:"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(6, 22)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(30, 13)
Me.Label1.TabIndex = 3
Me.Label1.Text = "Titel:"
'
'tb_Bild_Time
'
Me.tb_Bild_Time.Location = New System.Drawing.Point(83, 45)
Me.tb_Bild_Time.Name = "tb_Bild_Time"
Me.tb_Bild_Time.Size = New System.Drawing.Size(263, 20)
Me.tb_Bild_Time.TabIndex = 1
'
'tb_Bild_Name
'
Me.tb_Bild_Name.Location = New System.Drawing.Point(83, 19)
Me.tb_Bild_Name.Name = "tb_Bild_Name"
Me.tb_Bild_Name.Size = New System.Drawing.Size(263, 20)
Me.tb_Bild_Name.TabIndex = 0
'
'TaggedIMG1
'
Me.TaggedIMG1.ActivMark = False
Me.TaggedIMG1.ActivMarkDescription = ""
Me.TaggedIMG1.ActivMarkHeight = -1
Me.TaggedIMG1.ActivMarkLeft = -1
Me.TaggedIMG1.ActivMarkName = ""
Me.TaggedIMG1.ActivMarkTop = -1
Me.TaggedIMG1.ActivMarkWidth = -1
Me.TaggedIMG1.Cursor = System.Windows.Forms.Cursors.Default
Me.TaggedIMG1.Description = Nothing
Me.TaggedIMG1.ID = Nothing
Me.TaggedIMG1.Location = New System.Drawing.Point(12, 12)
Me.TaggedIMG1.Marks_Visible = True
Me.TaggedIMG1.Name = "TaggedIMG1"
Place1.Adress = Nothing
Place1.Description = Nothing
Place1.GPS = Nothing
Place1.Title = Nothing
Me.TaggedIMG1.Place = Place1
Me.TaggedIMG1.RO = False
Me.TaggedIMG1.Size = New System.Drawing.Size(717, 616)
Me.TaggedIMG1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
Me.TaggedIMG1.TabIndex = 0
Me.TaggedIMG1.TabStop = False
Me.TaggedIMG1.Time = Nothing
Me.TaggedIMG1.Title = Nothing
'
'SB_PictureTagger
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1106, 723)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.GroupBox4)
Me.Controls.Add(Me.GroupBox3)
Me.Controls.Add(Me.b_reloaddir)
Me.Controls.Add(Me.b_save)
Me.Controls.Add(Me.b_loaddir)
Me.Controls.Add(Me.GroupBox2)
Me.Controls.Add(Me.GroupBox1)
Me.Controls.Add(Me.b_exit)
Me.Controls.Add(Me.b_last)
Me.Controls.Add(Me.b_next)
Me.Controls.Add(Me.PictureBox1)
Me.Name = "Main"
Me.Controls.Add(Me.TaggedIMG1)
Me.Controls.Add(Me.Panel_Right)
Me.Controls.Add(Me.Panel_Botom)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MinimumSize = New System.Drawing.Size(1122, 761)
Me.Name = "SB_PictureTagger"
Me.Text = "SB-PictureTagger"
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox1.PerformLayout()
Me.GroupBox2.ResumeLayout(False)
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me.GroupBox3.ResumeLayout(False)
Me.GroupBox3.PerformLayout()
Me.Panel_Botom.ResumeLayout(False)
Me.Panel_Botom.PerformLayout()
Me.Panel_Right.ResumeLayout(False)
Me.GroupBox4.ResumeLayout(False)
Me.GroupBox4.PerformLayout()
CType(Me.NumericUpDown_OrdnerTiefe, System.ComponentModel.ISupportInitialize).EndInit()
Me.GB_Ort.ResumeLayout(False)
Me.GB_Ort.PerformLayout()
Me.GB_Mark.ResumeLayout(False)
Me.GB_Mark.PerformLayout()
Me.GB_Bild.ResumeLayout(False)
Me.GB_Bild.PerformLayout()
CType(Me.TaggedIMG1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()

End Sub
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents b_next As System.Windows.Forms.Button
Friend WithEvents b_last As System.Windows.Forms.Button
Friend WithEvents b_exit As System.Windows.Forms.Button
Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents tb_Bild_Time As System.Windows.Forms.TextBox
Friend WithEvents rtb_Bild_Description As System.Windows.Forms.RichTextBox
Friend WithEvents tb_Bild_Title As System.Windows.Forms.TextBox
Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView
Friend WithEvents b_loaddir As System.Windows.Forms.Button
Friend WithEvents b_save As System.Windows.Forms.Button
Friend WithEvents Panel_Botom As System.Windows.Forms.Panel
Friend WithEvents Label7 As System.Windows.Forms.Label
Friend WithEvents b_reloaddir As System.Windows.Forms.Button
Friend WithEvents Column1 As System.Windows.Forms.DataGridViewTextBoxColumn
Friend WithEvents Position As System.Windows.Forms.DataGridViewTextBoxColumn
Friend WithEvents Radius As System.Windows.Forms.DataGridViewTextBoxColumn
Friend WithEvents Column2 As System.Windows.Forms.DataGridViewTextBoxColumn
Friend WithEvents GroupBox3 As System.Windows.Forms.GroupBox
Friend WithEvents b_loaddir As System.Windows.Forms.Button
Friend WithEvents b_exit As System.Windows.Forms.Button
Friend WithEvents b_last As System.Windows.Forms.Button
Friend WithEvents b_next As System.Windows.Forms.Button
Friend WithEvents Panel_Right As System.Windows.Forms.Panel
Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
Friend WithEvents Label8 As System.Windows.Forms.Label
Friend WithEvents NumericUpDown_OrdnerTiefe As System.Windows.Forms.NumericUpDown
Friend WithEvents cb_marks_visible As System.Windows.Forms.CheckBox
Friend WithEvents GB_Ort As System.Windows.Forms.GroupBox
Friend WithEvents tb_Place_Description As System.Windows.Forms.TextBox
Friend WithEvents Label9 As System.Windows.Forms.Label
Friend WithEvents tb_Place_Name As System.Windows.Forms.TextBox
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents Label5 As System.Windows.Forms.Label
Friend WithEvents Label6 As System.Windows.Forms.Label
Friend WithEvents tb_Place_GPS As System.Windows.Forms.TextBox
Friend WithEvents tb_Place_Addresse As System.Windows.Forms.TextBox
Friend WithEvents rtb_Place_Description As System.Windows.Forms.RichTextBox
Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
Friend WithEvents cb_AutoSave As System.Windows.Forms.CheckBox
Friend WithEvents cb_marks_visible As System.Windows.Forms.CheckBox
Friend WithEvents Label7 As System.Windows.Forms.Label
Friend WithEvents Label8 As System.Windows.Forms.Label
Friend WithEvents NumericUpDown_OrdnerTiefe As System.Windows.Forms.NumericUpDown
Friend WithEvents Label9 As System.Windows.Forms.Label
Friend WithEvents tb_Place_Title As System.Windows.Forms.TextBox
Friend WithEvents GB_Mark As System.Windows.Forms.GroupBox
Friend WithEvents tb_AktMark_Description As System.Windows.Forms.TextBox
Friend WithEvents Label11 As System.Windows.Forms.Label
Friend WithEvents tb_AktMark_Name As System.Windows.Forms.TextBox
Friend WithEvents Label10 As System.Windows.Forms.Label
Friend WithEvents GB_Bild As System.Windows.Forms.GroupBox
Friend WithEvents tb_Bild_Description As System.Windows.Forms.TextBox
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents tb_Bild_Time As System.Windows.Forms.TextBox
Friend WithEvents tb_Bild_Name As System.Windows.Forms.TextBox
Friend WithEvents TaggedIMG1 As TaggedIMG

End Class

2927
SB-PictureTagger/F_SB_PictureTagger.resx Normal file → Executable file

File diff suppressed because it is too large Load Diff

561
SB-PictureTagger/F_SB_PictureTagger.vb Normal file → Executable file
View File

@ -1,209 +1,144 @@
Option Explicit On
Imports System.IO
Imports SB_PictureTagger.Stammbaum

Public Class Main
Public Class SB_PictureTagger

'###################################################################################################################
'############### Main ##############################################################################################
'###################################################################################################################

Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Initial
Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Clear()
LoadConfigForm()
'###########################
'### Declare Variables ###
'###########################

End Sub 'Main_Load
Public Pub_sPath As String 'Pfad des Aktuell Arbeits Verzeichnises
Public Pub_aPfade(0) As String 'Array mit den Photo Pfaden
Public Pub_nPfadeIndex As Long = 0 'IndexNR des aktuell Geladenen Photos aus pub_aPfade
Public Pub_aConfigForm(0) As String 'Array mit FormConfiguration
Public Pub_nOrdnerTiefe As Integer = 0 'Recursive Ordnertiefe beim Ordnereinlesen
Public Pub_aSupportedFiles() As String = {".jpg", ".bmp", ".gif", ".png", ".jp2", ".tiff"} 'Speichert die Unterstützten Extentions

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
SaveTagg()
SaveConfigForm()
End Sub 'Form1_Closing
Private nCountMarks As Integer


'###################################################################################################################
'############### Form1_Function-Tasks ##############################################################################
'####################### Private Subs ##############################################################################
'###################################################################################################################

'###################################################################################################################
'############### Form1_Sub-Tasks ###################################################################################
'###################################################################################################################
Private Sub Clear_Form()
Private Sub Clear()
tb_Bild_Name.Clear()
tb_Bild_Time.Clear()
tb_Bild_Title.Clear()
tb_Bild_Description.Clear()

tb_Place_Name.Clear()
tb_Place_Addresse.Clear()
tb_Place_GPS.Clear()
rtb_Bild_Description.Clear()
rtb_Place_Description.Clear()
End Sub 'Resetet die Form
tb_Place_Description.Clear()

Private Sub LoadConfigForm()
'Unsterstützte Formate
ReDim Settings.PictureTagger.pub_aSupportedFiles(5)
Settings.PictureTagger.pub_aSupportedFiles(0) = ".jpg"
Settings.PictureTagger.pub_aSupportedFiles(1) = ".bmp"
Settings.PictureTagger.pub_aSupportedFiles(2) = ".gif"
Settings.PictureTagger.pub_aSupportedFiles(3) = ".png"
Settings.PictureTagger.pub_aSupportedFiles(4) = ".jp2"
Settings.PictureTagger.pub_aSupportedFiles(5) = ".tif"
'Portable oder Nicht komming soon!
tb_AktMark_Name.Clear()
tb_AktMark_Description.Clear()


'Entlehre Pfadangabe
Label7.Text = ""

'Entlehre TaggedIMG1
TaggedIMG1.Clear()

nCountMarks = 0
TaggedIMG1.RO = True

'GroubBox
GB_Bild.Enabled = False
GB_Ort.Enabled = False
GB_Mark.Enabled = False

'Aktiv mark TBs
tb_AktMark_Description.Enabled = False
tb_AktMark_Name.Enabled = False

End Sub 'LoadConfigForm
Private Sub SaveConfigForm()
'Wird noch Programmert, stürzt sich auf Stammbaum.Settings
End Sub

Private Sub Reload()
SaveTaggByEvent()
Stammbaum.Module.PictureTagger.PT_LoadVerzeichnis()
LoadTaggedIMG()
End Sub 'Reload

Private Sub SaveTaggByEvent()
If Settings.PictureTagger.pub_bChangeTagg Then
If Not System.IO.File.Exists(Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Path) Then
Settings.PictureTagger.pub_bChangeTagg = False
ElseIf cb_AutoSave.Checked Then
SaveTagg()
ElseIf MessageBox.Show("Do you want to save changes?", "SB-PictureTagger", MessageBoxButtons.YesNo) = DialogResult.Yes Then
SaveTagg()
Else
Settings.PictureTagger.pub_bChangeTagg = False
End If
Private Sub SaveData()
'Überprüfe ob Änderungen forgenommen #UND# Ob eine ID existiert #UND# Ob das Bild existiert
If (TaggedIMG1.ID <> "" Or Nothing) And System.IO.File.Exists(Pub_aPfade(Pub_nPfadeIndex)) Then
Data_Save()
End If
End Sub 'SaveTaggByEvent Like: Next/Last Picture, Colse Form, ...
End Sub 'Save Taggs when Changes are hapened

Private Sub SaveTagg()

If Settings.PictureTagger.pub_aPfade(Settings.PictureTagger.pub_nPfadeIndex) <> "" Then

'TextBox sichern
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Title = tb_Bild_Title.Text
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Time = tb_Bild_Time.Text
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Description = rtb_Bild_Description.Text

Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Title = tb_Place_Title.Text
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Adresse = tb_Place_Addresse.Text
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.GPS = tb_Place_GPS.Text
Stammbaum.Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Description = rtb_Place_Description.Text

'Lese Markierungen <-- in Planung (Fieleicht Überflüsig, jenachdem wie Markierungen angesteuert werden

Stammbaum.Module.PictureTagger.PT_SaveTaggedIMG()

End If
Settings.PictureTagger.pub_bChangeTagg = False
End Sub 'SaveTagg to What ever is Configurated in Stammbaum.Module.PictureTagger

Private Sub LoadTaggedIMG()
SaveTaggByEvent()

'Textvelder Lehren
Clear_Form()

'Lade neues TaggedIMG mit Stammbaum.Module.PictureTagger Modul
Stammbaum.Module.PictureTagger.PT_LoadTaggedIMG()

'Zeigt den BildPfad unter der PictureBox an
Label7.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Path

'Befülle die TextBox-en
tb_Bild_Title.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Title
tb_Bild_Time.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Time
rtb_Bild_Description.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Description

tb_Place_Title.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Title
tb_Place_Addresse.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Adresse
tb_Place_GPS.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.GPS
rtb_Place_Description.Text = Settings.PictureTagger.Pub_oLoaded_TaggedIMG.Ort.Description

'Erstelle Marks

End Sub 'LoadTaggedIMG -> SaveTaggByEvent()
Private Sub Resize2()

End Sub
'###################################################################################################################
'############### Buton Events: Click ###############################################################################
'####################### EVENTS ####################################################################################
'###################################################################################################################
#Region "Events"
'################################################
'############### Form Events ####################
'################################################

Private Sub SB_PictureTagger_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
SaveData()
End Sub 'Form1_Closing

Private Sub SB_PictureTagger_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Clear()
cb_marks_visible.Checked = True
TaggedIMG1.Marks_Visible = cb_marks_visible.Checked
End Sub 'SB_PictureTagger_Load


Private Sub b_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_exit.Click
' Programm Beenden
Me.Close()
End Sub 'Cloas Programm
'################################################
'############### Buton Events: Click ############
'################################################

Private Sub b_loaddir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_loaddir.Click
'Laden eines zu Taggenden Bilder-Verzeichnis
Dim sTMP As String
sTMP = Tools.Dialoge.FolderBrowserDialog()
If Directory.Exists(sTMP) Then
Settings.PictureTagger.Pub_sPath = sTMP
Reload()
If System.IO.Directory.Exists(sTMP) Then
SaveData()
Clear()
Pub_sPath = sTMP
LoadVerzeichnis()
Data_Load()
End If
End Sub 'Öffne Ordner -> wenn Pfad OK -> Reload()
End Sub 'Öffne Ordner -> wenn Pfad OK -> Save Taggs -> Lade Verzeichnis -> Load Tagged IMG

Private Sub b_reloaddir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_reloaddir.Click
Reload()
End Sub 'Relaod()

Private Sub b_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_save.Click
If Settings.PictureTagger.pub_bChangeTagg Then
SaveTagg()
End If
End Sub 'Wenn Änderung -> SaveTagg()
SaveData()
Clear()
LoadVerzeichnis()
Data_Load()
End Sub 'Save Taggs -> Lade Verzeichnis -> Load Tagged IMG

Private Sub b_next_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_next.Click
If Settings.PictureTagger.pub_nPfadeIndex < UBound(Settings.PictureTagger.pub_aPfade) Then
Settings.PictureTagger.pub_nPfadeIndex += 1
LoadTaggedIMG()
If Pub_nPfadeIndex < UBound(Pub_aPfade) Then
SaveData()
Clear()
Pub_nPfadeIndex += 1
Data_Load()
End If
End Sub 'Next Index -> LoadTaggedIMG()
End Sub 'Speichere Taggs -> Next Index -> Load Tagged IMG

Private Sub b_last_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_last.Click
If Settings.PictureTagger.pub_nPfadeIndex > 0 Then
Settings.PictureTagger.pub_nPfadeIndex = Settings.PictureTagger.pub_nPfadeIndex - 1
LoadTaggedIMG()
If Pub_nPfadeIndex > 0 Then
SaveData()
Clear()
Pub_nPfadeIndex = Pub_nPfadeIndex - 1
Data_Load()
End If
End Sub 'Last Index -> LoadTaggedIMG()
End Sub 'Speichere Taggs -> Last Index -> Load Tagged IMG

Private Sub b_exit_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_exit.Click
Me.Close()
End Sub 'b_exit_Click_1

'###################################################################################################################
'############### TextBox: TextCanched ##############################################################################
'###################################################################################################################
Private Sub rtb_Bild_Description_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtb_Bild_Description.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Description Changed
'################################################
'###### CheckBox Events: CheckStateChanged ######
'################################################

Private Sub rtb_Place_Description_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtb_Place_Description.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Ort Descriptio Changed

Private Sub tb_Bild_Time_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Bild_Time.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Time Changed

Private Sub tb_Bild_Title_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Bild_Title.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Titel Changed

Private Sub tb_Place_Title_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_Title.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Ort Titel Changed

Private Sub tb_Place_Addresse_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_Addresse.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Ort Addresse Changed

Private Sub tb_Place_GPS_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_GPS.TextChanged
Settings.PictureTagger.pub_bChangeTagg = True
End Sub 'Ort GPS Changed


'###################################################################################################################
'############### CheckBox Events: CheckStateChanged ################################################################
'###################################################################################################################

Private Sub cb_marks_visible_CheckStateChanged(ByVal sender As Object, ByVal e As System.EventArgs)
'Wenn cb_marks_visible=true then ZeichneMarks() ELSE VerstekeMarks()
Private Sub cb_marks_visible_CheckStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_marks_visible.CheckStateChanged
TaggedIMG1.Marks_Visible = cb_marks_visible.Checked
End Sub 'Visible/Hide Markierungen

'###################################################################################################################
@ -211,8 +146,306 @@ Public Class Main
'###################################################################################################################

Private Sub NumericUpDown_OrdnerTiefe_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NumericUpDown_OrdnerTiefe.ValueChanged
Settings.PictureTagger.nOrdnerTiefe = NumericUpDown_OrdnerTiefe.Value
End Sub 'Ordner Tiefe Festlegen
SaveData()
Pub_nOrdnerTiefe = NumericUpDown_OrdnerTiefe.Value
LoadVerzeichnis()
Data_Load()
End Sub ''Speichere Taggs -> Neue Ordner Tiefe -> Lade Verzeichnis -> Load Tagged IMG


'###################################################################################################################
'############### TextBox Events: TextChanged #######################################################################
'###################################################################################################################

Private Sub tb_Bild_Description_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Bild_Description.TextChanged
TaggedIMG1.Description = tb_Bild_Description.Text
End Sub

Private Sub tb_Bild_Name_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Bild_Name.TextChanged
TaggedIMG1.Title = tb_Bild_Name.Text
End Sub

Private Sub tb_Bild_Time_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Bild_Time.TextChanged
TaggedIMG1.Time = tb_Bild_Time.Text
End Sub

Private Sub tb_Place_Addresse_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_Addresse.TextChanged
TaggedIMG1.Place.Adress = tb_Place_Addresse.Text
End Sub

Private Sub tb_Place_Description_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_Description.TextChanged
TaggedIMG1.Place.Description = tb_Place_Description.Text
End Sub

Private Sub tb_Place_GPS_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_GPS.TextChanged
TaggedIMG1.Place.GPS = tb_Place_GPS.Text
End Sub

Private Sub tb_Place_Name_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_Place_Name.TextChanged
TaggedIMG1.Place.Title = tb_Place_Name.Text
End Sub

Private Sub tb_AktMark_Description_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_AktMark_Description.TextChanged
TaggedIMG1.ActivMarkDescription = tb_AktMark_Description.Text
End Sub 'tb_AktMark_Description_TextChanged

Private Sub tb_AktMark_Name_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_AktMark_Name.TextChanged
TaggedIMG1.ActivMarkName = tb_AktMark_Name.Text
End Sub 'tb_AktMark_Name_TextChanged


'###################################################################################################################
'############### TAggedIMG Events ##################################################################################
'###################################################################################################################

Private Sub TaggedIMG1_LikeToCreatMark(ByVal Left As Integer, ByVal Top As Integer, ByVal Width As Integer, ByVal Height As Integer) Handles TaggedIMG1.LikeToCreatMark
If TaggedIMG1.Marks_Create(nCountMarks, Left, Top, Width, Height) Then nCountMarks += 1
End Sub 'TaggedIMG1_LikeToCreatMark

Private Sub TaggedIMG1_ActivMarkChanged(ByVal arg As Boolean) Handles TaggedIMG1.ActivMarkChanged
If TaggedIMG1.ActivMarkID <> Nothing Or TaggedIMG1.ActivMarkID <> "" Then
tb_AktMark_Name.Text = TaggedIMG1.ActivMarkName
tb_AktMark_Name.Enabled = True
tb_AktMark_Description.Text = TaggedIMG1.ActivMarkDescription
tb_AktMark_Description.Enabled = True
Else
tb_AktMark_Name.Text = ""
tb_AktMark_Name.Enabled = False
tb_AktMark_Description.Text = ""
tb_AktMark_Description.Enabled = False
End If
End Sub 'TaggedIMG1_ActivMarkChanged


#End Region 'Events


'###################################################################################################################
'############### Lade ##############################################################################################
'###################################################################################################################

Public Sub LoadVerzeichnis()
If System.IO.Directory.Exists(Pub_sPath) Then
Pub_aPfade = Tools.Filesystem.GetFilesFromDir(Pub_sPath, Pub_aSupportedFiles, Pub_nOrdnerTiefe)
Pub_nPfadeIndex = 0
End If
End Sub 'Lade Bilder in pub_aPfade Array; Setze Index auf 0


'###################################################################################################################
'###################### D A T A ####################################################################################
'###################################################################################################################

'Taggs auslesen (jezt noch aus INI - später aus DB)
Private Sub Data_Load()
' ### Settings ###
Dim InIForEachDat As Boolean = False

'Textvelder Lehren
Me.Clear()

'Absicherung für Undimensioniertes Array
If Pub_aPfade.Length = 0 Then ReDim Pub_aPfade(0)

'Bereinige Falsche Indexangaben
If UBound(Pub_aPfade) < Pub_nPfadeIndex Then Pub_nPfadeIndex = UBound(Pub_aPfade)

' ####################
'Deklarieren
'Dim
Dim INI_Locate As String
Dim INI_Name As String
Dim PicturePath As String
Dim sKey As String 'Um INI anzusteuern

PicturePath = Pub_aPfade(Pub_nPfadeIndex)

'Bildpfad auf existenz Prüfen
If System.IO.File.Exists(PicturePath) Then
' ### Bestimmen Der INI ###
If InIForEachDat Then
INI_Name = System.IO.Path.Combine(System.IO.Path.GetFileName(PicturePath), ".ini")
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
Else
INI_Name = "Tagg.ini"
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
End If

'TaggedIMG
TaggedIMG1.Image = Image.FromFile(PicturePath)
TaggedIMG1.ID = System.IO.Path.GetFileName(PicturePath) 'Lade Wichtigste Eigenschaften = Immer Forhanden bei Geladenem TaggedIMG
TaggedIMG1.RO = False

GB_Bild.Enabled = True
GB_Ort.Enabled = True
GB_Mark.Enabled = True

TaggedIMG1.Marks_Visible = cb_marks_visible.Checked


'####################### Read from INI ######################################
If System.IO.File.Exists(INI_Locate) Then
sKey = TaggedIMG1.ID

'Lade Optionalen Rest:
'Titel
TaggedIMG1.Title = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Title", Nothing)
'Kurzbeschreibung
'##############################################################
'ReFormate Description Text from "Description"
TaggedIMG1.Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Description", Nothing))
'##############################################################

'Zeitangabe
TaggedIMG1.Time = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Time", Nothing)
'Ortsangabe-Title
TaggedIMG1.Place.Title = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Title", Nothing)
'Ortsangabe-Adresse
TaggedIMG1.Place.Adress = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Adresse", Nothing)
'Ortsangabe-Kurzbeschreibung
'##############################################################
'ReFormate Description Text from "Place.Description"
TaggedIMG1.Place.Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Description", Nothing))
'##############################################################

'Ortsangabe-GPS Koordinaten
TaggedIMG1.Place.GPS = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_GPS", Nothing)


'Führ Makrierungen einlese Schleife
''Dim i As Long
Dim Mark_ID As String
Dim Mark_Left As Integer
Dim Mark_Top As Integer
Dim Mark_Width As Integer
Dim Mark_Height As Integer
Dim Mark_Description As String
Dim Mark_Name As String
Dim Mark_Index As Integer

'Load Marks
Mark_Index = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark_MaxIndex", "-1"))
If Mark_Index >= 0 Then
For counter = 0 To Mark_Index
Mark_ID = counter
Mark_Left = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Left"))
Mark_Top = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Top"))
Mark_Width = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Width"))
Mark_Height = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Height"))
Mark_Name = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Name")
Mark_Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Description"))

TaggedIMG1.Marks_Set(Mark_ID, "Create", Mark_Left, Mark_Top, Mark_Width, Mark_Height, Mark_Name, Mark_Description)

Mark_ID = 0
Mark_Left = 0
Mark_Top = 0
Mark_Width = 0
Mark_Height = 0
Mark_Name = ""
Mark_Description = ""

Next
nCountMarks = Mark_Index + 1
End If

End If
'######################## End Read #########################################



'Zeigt den BildPfad an
Label7.Text = Pub_aPfade(Pub_nPfadeIndex)

'Befülle die TextBox-en
tb_Bild_Name.Text = TaggedIMG1.Title
tb_Bild_Time.Text = TaggedIMG1.Time
tb_Bild_Description.Text = TaggedIMG1.Description

tb_Place_Name.Text = TaggedIMG1.Place.Title
tb_Place_Addresse.Text = TaggedIMG1.Place.Adress
tb_Place_GPS.Text = TaggedIMG1.Place.GPS
tb_Place_Description.Text = TaggedIMG1.Place.Description
End If




End Sub

Private Sub Data_Save()

'### INI Einstellungen ###
Dim ForEachDat As Boolean = False
Dim INI_Locate As String
Dim INI_Name As String
Dim PicturePath As String = Pub_aPfade(Pub_nPfadeIndex)

If ForEachDat Then
INI_Name = System.IO.Path.Combine(System.IO.Path.GetFileName(PicturePath), ".ini")
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
Else
INI_Name = "Tagg.ini"
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
End If

'### Main #################
If System.IO.File.Exists(PicturePath) Then
If Not System.IO.File.Exists(INI_Locate) Then System.IO.File.Create(INI_Locate)

'Deklarationen
Dim sKey = TaggedIMG1.ID

'Titel
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Title", TaggedIMG1.Title)

'Kurzbeschreibung
'##############################################################
'Formate Description Text from "Description"
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Description", Tools.Convert.Coding.Ascii_To_Base64(TaggedIMG1.Description))
'##############################################################

'Zeitangabe
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Time", TaggedIMG1.Time)
'Ortsangabe-Title
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Title", TaggedIMG1.Place.Title)
'Ortsangabe-Adresse
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Adresse", TaggedIMG1.Place.Adress)

'Ortsangabe-Kurzbeschreibung
'##############################################################
'Formate Description Text from "TMP_TaggIMG.Place.Description"
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Description", Tools.Convert.Coding.Ascii_To_Base64(TaggedIMG1.Place.Description))
'##############################################################

'Ortsangabe-GPS Koordinaten
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_GPS", TaggedIMG1.Place.GPS)


Dim oTemp() As Mark = TaggedIMG1.Marks_GetAll
Dim counter As Integer

counter = -1
For Each Markierung As Mark In oTemp
If (Markierung.Command = "Nothing") Or (Markierung.Command = "Change") Or (Markierung.Command = "Create") Then
counter += 1

Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_ID", Convert.ToString(counter))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Left", Convert.ToString(Markierung.Left))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Top", Convert.ToString(Markierung.Top))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Width", Convert.ToString(Markierung.Width))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Height", Convert.ToString(Markierung.Height))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Name", Convert.ToString(Markierung.Name))
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & Convert.ToString(counter) & "_Description", Tools.Convert.Coding.Ascii_To_Base64(Markierung.Description))

End If

Next
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark_MaxIndex", counter)

End If
End Sub

End Class

View File

@ -1,221 +0,0 @@
Option Explicit On
Imports SB_PictureTagger.Stammbaum
Namespace Stammbaum.Module.PictureTagger
Module PictureTagger

'###################################################################################################################
'############### Lade ##############################################################################################
'###################################################################################################################

Public Sub PT_LoadVerzeichnis()
If System.IO.Directory.Exists(Settings.PictureTagger.Pub_sPath) Then
Settings.PictureTagger.pub_aPfade = Tools.Filesystem.GetFilesFromDir(Settings.PictureTagger.Pub_sPath, Settings.PictureTagger.pub_aSupportedFiles, Settings.PictureTagger.nOrdnerTiefe)
End If
End Sub 'Lade Bilder in pub_aPfade Array

Public Sub PT_LoadTaggedIMG()
'Absicherung für Undimensioniertes Array
If Settings.PictureTagger.pub_aPfade.Length = 0 Then ReDim Settings.PictureTagger.pub_aPfade(0)

'Bildpfad auf existenz Prüfen
If System.IO.File.Exists(Settings.PictureTagger.pub_aPfade(Settings.PictureTagger.pub_nPfadeIndex)) Then

'Taggs With INI:
Settings.PictureTagger.Pub_oLoaded_TaggedIMG = INI_Load_Taggs(Settings.PictureTagger.pub_aPfade(Settings.PictureTagger.pub_nPfadeIndex), False)

'Later With DB ---

End If
End Sub 'Lade TaggedIMG in Pub_oLoaded_TaggedIMG


'###################################################################################################################
'############### Speichere #########################################################################################
'###################################################################################################################
Public Sub PT_SaveTaggedIMG()

'Taggs With INI:
INI_Save_Taggs(Settings.PictureTagger.Pub_oLoaded_TaggedIMG, False)

'Later With DB ---
End Sub


'###################################################################################################################
'############### Taggs With INI ####################################################################################
'###################################################################################################################

'Taggs auslesen (jezt noch aus INI - später aus DB)
Private Function INI_Load_Taggs(ByVal PicturePath As String, Optional ByVal ForEachDat As Boolean = False) As Classen.PictureTagger.TaggedIMG
'### INI Einstellungen ###
Dim INI_Locate As String
Dim INI_Name As String

If ForEachDat Then
INI_Name = System.IO.Path.Combine(System.IO.Path.GetFileName(PicturePath), ".ini")
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
Else
INI_Name = "Tagg.ini"
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
End If

'### Main ##
Dim TMP_TaggIMG As New Classen.PictureTagger.TaggedIMG
If System.IO.File.Exists(PicturePath) Then

'Lade Wichtigste Eigenschaften = Immer Forhanden bei Geladenem TaggedIMG
TMP_TaggIMG.Image = Image.FromFile(PicturePath)
TMP_TaggIMG.Path = PicturePath
TMP_TaggIMG.ID = System.IO.Path.GetFileName(PicturePath)

If System.IO.File.Exists(INI_Locate) Then
'Deklarationen
Dim i As Long
Dim sKey As String = TMP_TaggIMG.ID

'Führ Makr einlese Schleife
Dim Mark_ID As String
Dim Mark_PositionX As Long
Dim Mark_PositionY As Long
Dim Mark_Radius As Long
Dim Mark_Description As String
Dim Mark_Index As String


'Lade Optionalen Rest:
'Titel
TMP_TaggIMG.Title = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Title", Nothing)
'Kurzbeschreibung
'##############################################################
'ReFormate Description Text from "Description"
TMP_TaggIMG.Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Description", Nothing))
'##############################################################

'Zeitangabe
TMP_TaggIMG.Time = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Time", Nothing)
'Ortsangabe-Title
TMP_TaggIMG.Ort.Title = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Title", Nothing)
'Ortsangabe-Adresse
TMP_TaggIMG.Ort.Adresse = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Adresse", Nothing)
'Ortsangabe-Kurzbeschreibung
'##############################################################
'ReFormate Description Text from "Place.Description"
TMP_TaggIMG.Ort.Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_Description", Nothing))
'##############################################################

'Ortsangabe-GPS Koordinaten
TMP_TaggIMG.Ort.GPS = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Place_GPS", Nothing)




'Load Marks
'sMark_Index = Modul_Tools.Config_INI_ReadValue(INI_Locate, ID, "Title")
i = 0
Do While i <= 200
Mark_Index = ("Mark" & Convert.ToString(i) & "_ID")
Mark_ID = Tools.Data.File.INI_ReadValue(INI_Locate, sKey, Mark_Index)
If Mark_ID <> "" Then
i += 1

Mark_PositionX = Convert.ToDouble(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(i) & "_PositionX", "0"))
Mark_PositionY = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(i) & "_PositionY", "0"))
Mark_Radius = Convert.ToInt32(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(i) & "_Radius", "0"))
'##############################################################
'ReFormate Description Text from "Mark_Description"
Mark_Description = Tools.Convert.Coding.Base64_To_Ascii(Tools.Data.File.INI_ReadValue(INI_Locate, sKey, "Mark" & Convert.ToString(i) & "_Description", Nothing))
'##############################################################

'Erstellen eines Neuen Marks
TMP_TaggIMG.Create_NewMark(Mark_ID, Mark_PositionX, Mark_PositionY, Mark_Radius, Mark_Description)
Else
'Verlasse Schleife
Exit Do
End If
Loop




End If 'File.Exists(INI_Locate)
End If 'File.Exists(PicturePath)
INI_Load_Taggs = TMP_TaggIMG

End Function

Private Sub INI_Save_Taggs(ByVal oTaggedIMG As Classen.PictureTagger.TaggedIMG, Optional ByVal ForEachDat As Boolean = False)

'### INI Einstellungen ###
Dim INI_Locate As String
Dim INI_Name As String
Dim PicturePath As String = oTaggedIMG.Path

If ForEachDat Then
INI_Name = System.IO.Path.Combine(System.IO.Path.GetFileName(PicturePath), ".ini")
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
Else
INI_Name = "Tagg.ini"
INI_Locate = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(PicturePath), INI_Name)
End If

Dim i As Long
'### Main ##
If System.IO.File.Exists(PicturePath) Then
If Not System.IO.File.Exists(INI_Locate) Then System.IO.File.Create(INI_Locate)

'Deklarationen
Dim sKey = oTaggedIMG.ID

'Titel
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Title", oTaggedIMG.Title)

'Kurzbeschreibung
'##############################################################
'Formate Description Text from "Description"
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Description", Tools.Convert.Coding.Ascii_To_Base64(oTaggedIMG.Description))
'##############################################################

'Zeitangabe
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Time", oTaggedIMG.Time)
'Ortsangabe-Title
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Title", oTaggedIMG.Ort.Title)
'Ortsangabe-Adresse
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Adresse", oTaggedIMG.Ort.Adresse)

'Ortsangabe-Kurzbeschreibung
'##############################################################
'Formate Description Text from "TMP_TaggIMG.Place.Description"
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_Description", Tools.Convert.Coding.Ascii_To_Base64(oTaggedIMG.Ort.Description))
'##############################################################

'Ortsangabe-GPS Koordinaten
Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Place_GPS", oTaggedIMG.Ort.GPS)


'Save Marks ############### wird noch geändert ############### <--
'i = 0
'If oTaggedIMG.Markierung(0).ID <> "" Then
' For i = 0 To UBound(oTaggedIMG.Markierung)
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & i & "_ID", Convert.ToString(i))
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & i & "_PositionX", Convert.ToString(oTaggedIMG.Markierung(i).PositionX))
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & i & "_PositionY", Convert.ToString(oTaggedIMG.Markierung(i).PositionY))
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & i & "_Radius", Convert.ToString(oTaggedIMG.Markierung(i).Radius))
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark" & i & "_Description", Tools.Convert.Coding.Ascii_To_Base64(oTaggedIMG.Markierung(i).Description))

' 'Schreibe Begrenzung
' Tools.Data.File.INI_WriteValue(INI_Locate, sKey, "Mark_MaxIndex", i)

' Next i
'End If

End If 'File.Exists(PicturePath)
End Sub

'###################################################################################################################
'############### Taggs With DB #####################################################################################
'###################################################################################################################



End Module 'PictureTagger
End Namespace 'Stammbaum.Module.PictureTagger

713
SB-PictureTagger/M_Tools.vb Normal file → Executable file
View File

@ -1,355 +1,360 @@
Namespace Tools
Namespace Filesystem
Module Filesystem

'######################################################################################
'################Function GetFilesFromDir(Pfad; Extention; RecursionsTiefe)############
Public Function GetFilesFromDir(ByVal Pfad As String, ByVal Extention() As String, Optional ByVal RecursionsTiefe As Integer = 0) As String()

If Extention.Length <= 0 Then ReDim Extention(0)
If Extention(0) = Nothing Then Extention(0) = ""

Dim aPathList(0) As String
Dim aPathList_Extention(0) As String

'Überprüfen auf Pfad Korektheit
If System.IO.Directory.Exists(Pfad) Then

'Auslesen der Ordner
_GetFilesFromDir(aPathList, Pfad, RecursionsTiefe)
If aPathList.Length <= 0 Then ReDim aPathList(0)

'Extention Rausfiltern
If Not (Array.IndexOf(Extention, "*") >= 0) Then
For Each EachFile In aPathList
If (Array.IndexOf(Extention, System.IO.Path.GetExtension(EachFile)) >= 0) Then
'Undimensionierte Arrays werden Dimensioniert
If aPathList_Extention.Length <= 0 Then ReDim aPathList_Extention(0)

'Wenn Letzter Wert Im Array nicht vergeben ist
If (aPathList_Extention(UBound(aPathList_Extention)) = Nothing) Or (aPathList_Extention(UBound(aPathList_Extention)) = "") Then
aPathList_Extention(UBound(aPathList_Extention)) = EachFile
Else
'Wenn Letzter Wert Im Array ist vergeben!
ReDim Preserve aPathList_Extention(UBound(aPathList_Extention) + 1)
aPathList_Extention(UBound(aPathList_Extention)) = EachFile
End If
End If
Next
Else
aPathList_Extention = aPathList
End If

'Array Sortieren
Array.Sort(aPathList_Extention)

Else
aPathList_Extention(0) = Nothing
End If
GetFilesFromDir = aPathList_Extention
End Function

Private Sub _GetFilesFromDir(ByRef aAim As String(), ByVal Pfad As String, ByVal RecursionsTiefe As Integer)
Try 'Um das Zugrifsrecht Problem zu Beseitigen
If RecursionsTiefe > 0 Then
Dim aDirs As String() = System.IO.Directory.GetDirectories(Pfad)
For Each EachDir In aDirs
_GetFilesFromDir(aAim, EachDir, (RecursionsTiefe - 1))
Next
End If
Dim aFiles As String() = System.IO.Directory.GetFiles(Pfad)

For Each EachFile In aFiles
If aAim.Length <= 0 Then ReDim aAim(0)
If (aAim(UBound(aAim)) = Nothing) Or (aAim(UBound(aAim)) = "") Then
aAim(UBound(aAim)) = EachFile
Else
ReDim Preserve aAim(UBound(aAim) + 1)
aAim(UBound(aAim)) = EachFile
End If
Next
Catch err As Exception
End Try
End Sub 'Teil von Finction GetFilesFromDir
'######################################################################################
'######################################################################################

'### with .Net: Imports System.IO; Directory.Exists(Path)####
Private Function FileExists(ByVal FileName As String) As Boolean
On Error Resume Next
FileExists = Not CBool(GetAttr(FileName) And (vbDirectory Or vbVolume))
On Error GoTo 0
End Function 'FileExists Vor VBA AND VB without .Net

'### with .Net: Imports System.IO; File.Exists(Path)####
Private Function DirExists(ByVal DirectoryName As String) As Boolean
On Error Resume Next
DirExists = CBool(GetAttr(DirectoryName) And vbDirectory)
On Error GoTo 0
End Function 'DirExists Vor VBA AND VB without .Net
'######################################################################################
'######################################################################################

End Module
End Namespace 'Filesystem
Namespace Dialoge
Module Dialoge

Public Function FolderBrowserDialog(Optional ByVal sStartPath As String = "C:\", Optional ByVal ShowNewFolderButton As Boolean = True, Optional ByRef CheckError As Boolean = False) As String
'Verändert die übergebene variable,
'wenn der benutzer durch "OK" den neuen Pfad bestätigt
FolderBrowserDialog = ""
Using FolderBrowserD As New FolderBrowserDialog
With FolderBrowserD
' Ordnervorschlag
.SelectedPath = sStartPath

.Description = "Bitte einen Ordner auswählen."

'#Button "Neuen Ordner erstellen" anzeigen
.ShowNewFolderButton = ShowNewFolderButton

'#ruft Dialog auf, weitere Ausführung nur bei Resultat "OK"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
FolderBrowserDialog = .SelectedPath
Else
CheckError = True '#Ausführung bei Abruch
End If
End With 'FolderBrowserD
End Using
End Function 'FolderBrowserDialog

'###################################################################################################################
'############### OpenFileDialog ####################################################################################
'###################################################################################################################

'Private Sub Button1_Click(ByVal sender As Object, ByVal e As _
' EventArgs) Handles Button1.Click
' ' ### OpenFileDialog ###
' Dim txt As String = ""
' Using ofd As New OpenFileDialog

' With ofd
' ' Ordnervorschlag
' .InitialDirectory = Pfad
' .Title = "Wähle Datei zum öffnen"
' ' Dateivorschlag (falls sinnvoll)
' ' .FileName = "Datei.gif"

' ' Filter
' .Filter = TextBox2.Text
' ' boolsche Abfrage ob Mehrfachauswahl zulässig
' .Multiselect = Not ChkEinzel.Checked

' ' Zeile ruft den Dialog auf, weitere Ausführung nur bei
' ' Resultat OK:
' If .ShowDialog = Windows.Forms.DialogResult.OK Then
' If ChkEinzel.Checked = True Then
' ' Bei Einzelauswahl wertet man .FileName aus
' txt = .FileName & vbNewLine

' Else
' ' Bei möglicher Multiselektion wertet man
' ' das Array .FileNames aus
' For Each filename As String In .FileNames
' txt &= filename & vbNewLine
' Next
' End If
' ' Welcher Filter wurde verwendet?
' Dim idx As Integer = .FilterIndex
' txt &= "FilterIndex: " & idx.ToString & vbNewLine
' txt &= "Gewählter Filter: " & FilterDescription(.Filter, _
' idx) & vbNewLine
' txt &= "Multiselect: " & .Multiselect.ToString
' Else
' txt = "Abbruch durch Benutzer"
' End If
' End With
' End Using
' TextBox1.Text = txt
'End Sub 'OpenFileDialog

'###################################################################################################################
'############### SaveFileDialog ####################################################################################
'###################################################################################################################

'Private Sub Button2_Click(ByVal sender As Object, ByVal e As _
' EventArgs) Handles Button2.Click
' ' ### SaveFileDialog ###
' Dim txt As String
' Using sfd As New SaveFileDialog

' With sfd
' ' Ordnervorschlag
' .InitialDirectory = Pfad
' .Title = "Eingabe Datei zum speichern (Es wird hier nicht "_
' "wirklich überschrieben)"
' ' Dateivorschlag
' .FileName = "Datei.gif"
' ' Filter
' .Filter = TextBox2.Text

' ' Zeile ruft den Dialog auf, weitere Ausführung nur bei
' ' Resultat OK:
' If .ShowDialog = Windows.Forms.DialogResult.OK Then
' txt = .FileName & vbNewLine

' ' Welcher Filter wurde verwendet?
' Dim idx As Integer = .FilterIndex
' txt &= "FilterIndex: " & idx.ToString & vbNewLine
' txt &= "Gewählter Filter: " & FilterDescription(.Filter, _
' idx)
' Else
' txt = "Abbruch durch Benutzer"
' End If
' End With
' End Using
' TextBox1.Text = txt
'End Sub 'SaveFileDialog

'###################################################################################################################
'############### xxxxxxxxxxxxxxxxxxxxxxx ###########################################################################
'###################################################################################################################

'Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As _
' Object, ByVal e As EventArgs) _
' Handles ComboBox1.SelectedIndexChanged
' Dim strFilter As String
' Select Case ComboBox1.SelectedIndex
' Case 0
' ' Einfacher Filter
' strFilter = "Gif Bilddateien|*.gif"
' Case 1
' ' Erweiterter Filter
' strFilter = "JPEG Bilddateien|*.jpg|Gif Bilddateien|*.gif|Alle Dateien|*.*"
' Case Else
' ' Mehrere Dateierweiterungen in einer Auswahl
' strFilter = "Alle Bilddateien|*.jpg; *.jpeg; *.bmp; *.gif, *.tif|Alle Dateien|*.*"
' End Select

' TextBox2.Text = strFilter
'End Sub 'ComboBox1_SelectedIndexChanged

'Private Function FilterDescription(ByVal Filter As String, _
' ByVal Index As Integer) As String
' ' erstellt aus dem Filterstring die Bezeichnung
' Dim strArr() As String = Split(Filter, "|"), _
' MyList As New List(Of String)
' For i As Integer = 0 To strArr.GetUpperBound(0)
' If (i Mod 2 = 0) Then MyList.Add(strArr(i))
' Next
' Return MyList(Index - 1)
'End Function 'FilterDescription

End Module
End Namespace 'Dialoge (Ordner Öffnen, Datei Öffnen, Datei Speichern, Ja/Nein, ...
Namespace Convert
Namespace Numeral_System
'Gehört noch Proggramiert (Hex - Dezi - Dual - Römisch - ...)
End Namespace 'Numeral_System (Hex - Dezi - Dual - Römisch - ...) in work
Namespace Coding
Module Coding
'######################################################################################
'##################################Ascii AND Base64####################################
'Ascii to Base64
Public Function Ascii_To_Base64(ByVal AsciiString As String) As String
Dim base64encoded As String = vbNull
Dim raw As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(AsciiString)
base64encoded = System.Convert.ToBase64String(raw)
Ascii_To_Base64 = base64encoded
End Function
'Base64 to Ascii
Public Function Base64_To_Ascii(ByVal Base64String As String) As String
Try
Dim raw As Byte() = System.Convert.FromBase64String(Base64String)
Base64_To_Ascii = System.Text.ASCIIEncoding.ASCII.GetString(raw)
Catch ex As Exception
Base64_To_Ascii = ""
End Try
End Function
'######################################################################################
'######################################################################################
End Module 'Coding
End Namespace 'Coding (Ascii, Base64, Dual<-in work, ...)
Namespace Koordinaten
Module Koordinaten
'Soll anhand der GPS Koordinaten GoogleMaps öfnen
'URL ansteuerung: https://developers.google.com/maps/documentation/staticmaps/
' String = "52.520817 13.40945"
'
'Umrechnung von Geo-Koordinaten: http://rechneronline.de/geo-koordinaten/
' ___________________________________________________________________________________________________
'| Grad, Minuten, Sekunden | Dezimalgrad | Grad, Dezimalminuten |
'| z.B. N52° 31' 14.941" E13° 24' 34.020" | z.B. 52.520817 13.40945 | z.B. N52° 31.249 E13° 24.567 |
' ---------------------------------------------------------------------------------------------------
' URL= "http://maps.google.com/maps?q=" & String
'In Projekt SB-PictureTagger: Set a LincLable ;)
End Module 'Koordinaten
End Namespace 'Koordinaten (GPS einheiten, MapsURLs,...)
End Namespace 'Convert
Namespace Prog_Org
Module Prog_Org
'######################################################################################
'############################## PORTABLE MODE TOOLS ###################################
'Festlegung ob Portable oder nicht, ...
Public Function PortableModeTrue(ByVal ConfigFileName As String) As Boolean
If System.IO.File.Exists(".\" & ConfigFileName) Then
PortableModeTrue = True
Else
PortableModeTrue = False
End If

End Function 'PortableModeTrue
'PortableMode:
'Übergabe: ConfigFile [WorkDir] [AppName] Return: (PortableMode=True/False)
'ConfigFile Nahme und Extendion - Wird Indirekt Geändert zu KonfigPfad
'WorkDir Pfad des Arbeitsverzeichnises - Wird Indirekt Geändert
'AppName Erstellt einen Neuern Ordner mit Diesen Nahme, wenn Nicht Portabler Mode
Public Function PortableMode(ByRef ConfigFile As String, Optional ByRef WorkDir As String = "-default-", Optional ByVal AppName As String = "-default-") As Boolean
If AppName = ("-default-" Or "") Then
AppName = Application.ProductName
End If
If Not System.IO.Directory.Exists(WorkDir) Then WorkDir = "-default-"
If WorkDir = ("-default-" Or "") Then
WorkDir = Application.StartupPath
End If

If System.IO.File.Exists(System.IO.Path.Combine(WorkDir, ConfigFile)) Then
PortableMode = True
ConfigFile = System.IO.Path.Combine(WorkDir, ConfigFile)
Else
PortableMode = False
WorkDir = Environment.GetEnvironmentVariable("APPDATA") & "\" & AppName
If Not System.IO.Directory.Exists(WorkDir) Then System.IO.Directory.CreateDirectory(WorkDir)
ConfigFile = System.IO.Path.Combine(WorkDir, ConfigFile)
If Not System.IO.File.Exists(ConfigFile) Then System.IO.File.Create(ConfigFile)
End If

End Function 'PortableMode
'######################################################################################
'######################################################################################
End Module
End Namespace 'Prog_Org
Namespace Data
Namespace DB
'Verschiedenen DBs mit ihren Befehlen
End Namespace 'DBs (SQLite, SQL, MySQL, ...)
Namespace File
Module File
'Declaration für INI:
Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32

Public Function INI_ReadValue(ByVal sFilePath As String, ByVal sSection As String, ByVal sKey As String, Optional ByVal sDefault As String = "") As String
Dim strTemp As String = Space(1024), lLength As Integer
lLength = GetPrivateProfileString(sSection, sKey, sDefault, strTemp, strTemp.Length, sFilePath)
Return (strTemp.Substring(0, lLength))
End Function 'Read a INI
Public Function INI_WriteValue(ByVal sFilePath As String, ByVal sSection As String, ByVal sKey As String, ByVal sValue As String) As Boolean
Return (Not (WritePrivateProfileString(sSection, sKey, sValue, sFilePath) = 0))
End Function 'Write a INI

End Module
End Namespace 'File (INI, XML, ...)
End Namespace 'Data = Manage Infos (DBs, Files, ...)
Namespace Tools
Namespace Filesystem
<HideModuleName()>
Module Filesystem

'######################################################################################
'################Function GetFilesFromDir(Pfad; Extention; RecursionsTiefe)############
Public Function GetFilesFromDir(ByVal Pfad As String, ByVal Extention() As String, Optional ByVal RecursionsTiefe As Integer = 0) As String()

If Extention.Length <= 0 Then ReDim Extention(0)
If Extention(0) = Nothing Then Extention(0) = ""

Dim aPathList(0) As String
Dim aPathList_Extention(0) As String

'Überprüfen auf Pfad Korektheit
If System.IO.Directory.Exists(Pfad) Then

'Auslesen der Ordner
_GetFilesFromDir(aPathList, Pfad, RecursionsTiefe)
If aPathList.Length <= 0 Then ReDim aPathList(0)

'Extention Rausfiltern
If Not (Array.IndexOf(Extention, "*") >= 0) Then
For Each EachFile In aPathList
If (Array.IndexOf(Extention, System.IO.Path.GetExtension(EachFile)) >= 0) Then
'Undimensionierte Arrays werden Dimensioniert
If aPathList_Extention.Length <= 0 Then ReDim aPathList_Extention(0)

'Wenn Letzter Wert Im Array nicht vergeben ist
If (aPathList_Extention(UBound(aPathList_Extention)) = Nothing) Or (aPathList_Extention(UBound(aPathList_Extention)) = "") Then
aPathList_Extention(UBound(aPathList_Extention)) = EachFile
Else
'Wenn Letzter Wert Im Array ist vergeben!
ReDim Preserve aPathList_Extention(UBound(aPathList_Extention) + 1)
aPathList_Extention(UBound(aPathList_Extention)) = EachFile
End If
End If
Next
Else
aPathList_Extention = aPathList
End If

'Array Sortieren
Array.Sort(aPathList_Extention)

Else
aPathList_Extention(0) = Nothing
End If
GetFilesFromDir = aPathList_Extention
End Function

Private Sub _GetFilesFromDir(ByRef aAim As String(), ByVal Pfad As String, ByVal RecursionsTiefe As Integer)
Try 'Um das Zugrifsrecht Problem zu Beseitigen
If RecursionsTiefe > 0 Then
Dim aDirs As String() = System.IO.Directory.GetDirectories(Pfad)
For Each EachDir In aDirs
_GetFilesFromDir(aAim, EachDir, (RecursionsTiefe - 1))
Next
End If
Dim aFiles As String() = System.IO.Directory.GetFiles(Pfad)

For Each EachFile In aFiles
If aAim.Length <= 0 Then ReDim aAim(0)
If (aAim(UBound(aAim)) = Nothing) Or (aAim(UBound(aAim)) = "") Then
aAim(UBound(aAim)) = EachFile
Else
ReDim Preserve aAim(UBound(aAim) + 1)
aAim(UBound(aAim)) = EachFile
End If
Next
Catch err As System.UnauthorizedAccessException
End Try
End Sub 'Teil von Finction GetFilesFromDir
'######################################################################################
'######################################################################################

'### with .Net: Imports System.IO; Directory.Exists(Path)####
Private Function FileExists(ByVal FileName As String) As Boolean
On Error Resume Next
FileExists = Not CBool(GetAttr(FileName) And (vbDirectory Or vbVolume))
On Error GoTo 0
End Function 'FileExists Vor VBA AND VB without .Net

'### with .Net: Imports System.IO; File.Exists(Path)####
Private Function DirExists(ByVal DirectoryName As String) As Boolean
On Error Resume Next
DirExists = CBool(GetAttr(DirectoryName) And vbDirectory)
On Error GoTo 0
End Function 'DirExists Vor VBA AND VB without .Net
'######################################################################################
'######################################################################################

End Module
End Namespace 'Filesystem
Namespace Dialoge
<HideModuleName()>
Module Dialoge

Public Function FolderBrowserDialog(Optional ByVal sStartPath As String = "C:\", Optional ByVal ShowNewFolderButton As Boolean = True, Optional ByRef CheckError As Boolean = False) As String
'Verändert die übergebene variable,
'wenn der benutzer durch "OK" den neuen Pfad bestätigt
FolderBrowserDialog = ""
Using FolderBrowserD As New FolderBrowserDialog
With FolderBrowserD
' Ordnervorschlag
.SelectedPath = sStartPath

.Description = "Bitte einen Ordner auswählen."

'#Button "Neuen Ordner erstellen" anzeigen
.ShowNewFolderButton = ShowNewFolderButton

'#ruft Dialog auf, weitere Ausführung nur bei Resultat "OK"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
FolderBrowserDialog = .SelectedPath
Else
CheckError = True '#Ausführung bei Abruch
End If
End With 'FolderBrowserD
End Using
End Function 'FolderBrowserDialog

'###################################################################################################################
'############### OpenFileDialog ####################################################################################
'###################################################################################################################

'Private Sub Button1_Click(ByVal sender As Object, ByVal e As _
' EventArgs) Handles Button1.Click
' ' ### OpenFileDialog ###
' Dim txt As String = ""
' Using ofd As New OpenFileDialog

' With ofd
' ' Ordnervorschlag
' .InitialDirectory = Pfad
' .Title = "Wähle Datei zum öffnen"
' ' Dateivorschlag (falls sinnvoll)
' ' .FileName = "Datei.gif"

' ' Filter
' .Filter = TextBox2.Text
' ' boolsche Abfrage ob Mehrfachauswahl zulässig
' .Multiselect = Not ChkEinzel.Checked

' ' Zeile ruft den Dialog auf, weitere Ausführung nur bei
' ' Resultat OK:
' If .ShowDialog = Windows.Forms.DialogResult.OK Then
' If ChkEinzel.Checked = True Then
' ' Bei Einzelauswahl wertet man .FileName aus
' txt = .FileName & vbNewLine

' Else
' ' Bei möglicher Multiselektion wertet man
' ' das Array .FileNames aus
' For Each filename As String In .FileNames
' txt &= filename & vbNewLine
' Next
' End If
' ' Welcher Filter wurde verwendet?
' Dim idx As Integer = .FilterIndex
' txt &= "FilterIndex: " & idx.ToString & vbNewLine
' txt &= "Gewählter Filter: " & FilterDescription(.Filter, _
' idx) & vbNewLine
' txt &= "Multiselect: " & .Multiselect.ToString
' Else
' txt = "Abbruch durch Benutzer"
' End If
' End With
' End Using
' TextBox1.Text = txt
'End Sub 'OpenFileDialog

'###################################################################################################################
'############### SaveFileDialog ####################################################################################
'###################################################################################################################

'Private Sub Button2_Click(ByVal sender As Object, ByVal e As _
' EventArgs) Handles Button2.Click
' ' ### SaveFileDialog ###
' Dim txt As String
' Using sfd As New SaveFileDialog

' With sfd
' ' Ordnervorschlag
' .InitialDirectory = Pfad
' .Title = "Eingabe Datei zum speichern (Es wird hier nicht "_
' "wirklich überschrieben)"
' ' Dateivorschlag
' .FileName = "Datei.gif"
' ' Filter
' .Filter = TextBox2.Text

' ' Zeile ruft den Dialog auf, weitere Ausführung nur bei
' ' Resultat OK:
' If .ShowDialog = Windows.Forms.DialogResult.OK Then
' txt = .FileName & vbNewLine

' ' Welcher Filter wurde verwendet?
' Dim idx As Integer = .FilterIndex
' txt &= "FilterIndex: " & idx.ToString & vbNewLine
' txt &= "Gewählter Filter: " & FilterDescription(.Filter, _
' idx)
' Else
' txt = "Abbruch durch Benutzer"
' End If
' End With
' End Using
' TextBox1.Text = txt
'End Sub 'SaveFileDialog

'###################################################################################################################
'############### xxxxxxxxxxxxxxxxxxxxxxx ###########################################################################
'###################################################################################################################

'Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As _
' Object, ByVal e As EventArgs) _
' Handles ComboBox1.SelectedIndexChanged
' Dim strFilter As String
' Select Case ComboBox1.SelectedIndex
' Case 0
' ' Einfacher Filter
' strFilter = "Gif Bilddateien|*.gif"
' Case 1
' ' Erweiterter Filter
' strFilter = "JPEG Bilddateien|*.jpg|Gif Bilddateien|*.gif|Alle Dateien|*.*"
' Case Else
' ' Mehrere Dateierweiterungen in einer Auswahl
' strFilter = "Alle Bilddateien|*.jpg; *.jpeg; *.bmp; *.gif, *.tif|Alle Dateien|*.*"
' End Select

' TextBox2.Text = strFilter
'End Sub 'ComboBox1_SelectedIndexChanged

'Private Function FilterDescription(ByVal Filter As String, _
' ByVal Index As Integer) As String
' ' erstellt aus dem Filterstring die Bezeichnung
' Dim strArr() As String = Split(Filter, "|"), _
' MyList As New List(Of String)
' For i As Integer = 0 To strArr.GetUpperBound(0)
' If (i Mod 2 = 0) Then MyList.Add(strArr(i))
' Next
' Return MyList(Index - 1)
'End Function 'FilterDescription

End Module
End Namespace 'Dialoge (Ordner Öffnen, Datei Öffnen, Datei Speichern, Ja/Nein, ...
Namespace Convert
Namespace Numeral_System
'Gehört noch Proggramiert (Hex - Dezi - Dual - Römisch - ...)
End Namespace 'Numeral_System (Hex - Dezi - Dual - Römisch - ...) in work
Namespace Coding
<HideModuleName()>
Module Coding
'######################################################################################
'##################################Ascii AND Base64####################################
'Ascii to Base64
Public Function Ascii_To_Base64(ByVal AsciiString As String) As String
If AsciiString = Nothing Then AsciiString = ""
Dim raw As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(AsciiString)
Ascii_To_Base64 = System.Convert.ToBase64String(raw)
End Function
'Base64 to Ascii
Public Function Base64_To_Ascii(ByVal Base64String As String) As String
Try
Dim raw As Byte() = System.Convert.FromBase64String(Base64String)
Base64_To_Ascii = System.Text.ASCIIEncoding.ASCII.GetString(raw)
Catch ex As Exception
Base64_To_Ascii = ""
End Try
End Function
'######################################################################################
'######################################################################################
End Module 'Coding
End Namespace 'Coding (Ascii, Base64, Dual<-in work, ...)
Namespace Koordinaten
<HideModuleName()>
Module Koordinaten
'Soll anhand der GPS Koordinaten GoogleMaps öfnen
'URL ansteuerung: https://developers.google.com/maps/documentation/staticmaps/
' String = "52.520817 13.40945"
'
'Umrechnung von Geo-Koordinaten: http://rechneronline.de/geo-koordinaten/
' ___________________________________________________________________________________________________
'| Grad, Minuten, Sekunden | Dezimalgrad | Grad, Dezimalminuten |
'| z.B. N52° 31' 14.941" E13° 24' 34.020" | z.B. 52.520817 13.40945 | z.B. N52° 31.249 E13° 24.567 |
' ---------------------------------------------------------------------------------------------------
' URL= "http://maps.google.com/maps?q=" & String
'In Projekt SB-PictureTagger: Set a LincLable ;)
End Module 'Koordinaten
End Namespace 'Koordinaten (GPS einheiten, MapsURLs,...)
End Namespace 'Convert
Namespace Prog_Org
<HideModuleName()>
Module Prog_Org
'######################################################################################
'############################## PORTABLE MODE TOOLS ###################################
'Festlegung ob Portable oder nicht, ...
Public Function PortableModeTrue(ByVal ConfigFileName As String) As Boolean
If System.IO.File.Exists(".\" & ConfigFileName) Then
PortableModeTrue = True
Else
PortableModeTrue = False
End If

End Function 'PortableModeTrue
'PortableMode:
'Übergabe: ConfigFile [WorkDir] [AppName] Return: (PortableMode=True/False)
'ConfigFile Nahme und Extendion - Wird Indirekt Geändert zu KonfigPfad
'WorkDir Pfad des Arbeitsverzeichnises - Wird Indirekt Geändert
'AppName Erstellt einen Neuern Ordner mit Diesen Nahme, wenn Nicht Portabler Mode
Public Function PortableMode(ByRef ConfigFile As String, Optional ByRef WorkDir As String = "-default-", Optional ByVal AppName As String = "-default-") As Boolean
If AppName = ("-default-" Or "") Then
AppName = Application.ProductName
End If
If Not System.IO.Directory.Exists(WorkDir) Then WorkDir = "-default-"
If WorkDir = ("-default-" Or "") Then
WorkDir = Application.StartupPath
End If

If System.IO.File.Exists(System.IO.Path.Combine(WorkDir, ConfigFile)) Then
PortableMode = True
ConfigFile = System.IO.Path.Combine(WorkDir, ConfigFile)
Else
PortableMode = False
WorkDir = Environment.GetEnvironmentVariable("APPDATA") & "\" & AppName
If Not System.IO.Directory.Exists(WorkDir) Then System.IO.Directory.CreateDirectory(WorkDir)
ConfigFile = System.IO.Path.Combine(WorkDir, ConfigFile)
If Not System.IO.File.Exists(ConfigFile) Then System.IO.File.Create(ConfigFile)
End If

End Function 'PortableMode
'######################################################################################
'######################################################################################
End Module
End Namespace 'Prog_Org
Namespace Data
Namespace DB
'Verschiedenen DBs mit ihren Befehlen
End Namespace 'DBs (SQLite, SQL, MySQL, ...)
Namespace File
<HideModuleName()>
Module File
'Declaration für INI:
Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32

Public Function INI_ReadValue(ByVal sFilePath As String, ByVal sSection As String, ByVal sKey As String, Optional ByVal sDefault As String = "") As String
Dim strTemp As String = Space(1024), lLength As Integer
lLength = GetPrivateProfileString(sSection, sKey, sDefault, strTemp, strTemp.Length, sFilePath)
Return (strTemp.Substring(0, lLength))
End Function 'Read a INI
Public Function INI_WriteValue(ByVal sFilePath As String, ByVal sSection As String, ByVal sKey As String, ByVal sValue As String) As Boolean
Return (Not (WritePrivateProfileString(sSection, sKey, sValue, sFilePath) = 0))
End Function 'Write a INI

End Module
End Namespace 'File (INI, XML, ...)
End Namespace 'Data = Manage Infos (DBs, Files, ...)
End Namespace 'Tools

2
SB-PictureTagger/My Project/Application.Designer.vb generated Normal file → Executable file
View File

@ -32,7 +32,7 @@ Namespace My
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.SB_PictureTagger.Main
Me.MainForm = Global.SB_PictureTagger.SB_PictureTagger
End Sub
End Class
End Namespace

2
SB-PictureTagger/My Project/Application.myapp Normal file → Executable file
View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-16"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>Main</MainForm>
<MainForm>SB_PictureTagger</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>

0
SB-PictureTagger/My Project/AssemblyInfo.vb Normal file → Executable file
View File

0
SB-PictureTagger/My Project/Resources.Designer.vb generated Normal file → Executable file
View File

0
SB-PictureTagger/My Project/Resources.resx Normal file → Executable file
View File

0
SB-PictureTagger/My Project/Settings.Designer.vb generated Normal file → Executable file
View File

0
SB-PictureTagger/My Project/Settings.settings Normal file → Executable file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

58
SB-PictureTagger/SB-PictureTagger.vbproj Normal file → Executable file
View File

@ -15,6 +15,21 @@
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
@ -28,7 +43,7 @@
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DebugType>None</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
@ -48,7 +63,11 @@
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resorcen\Tree.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
@ -72,7 +91,15 @@
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Classen.vb" />
<Compile Include="Class_Mark.vb" />
<Compile Include="Class_MarkButton.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="Class_Place.vb" />
<Compile Include="Class_Rectangle.vb" />
<Compile Include="Class_TaggedIMG.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="F_SB_PictureTagger.vb">
<SubType>Form</SubType>
</Compile>
@ -95,9 +122,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="M_SB_PictureTagger.vb" />
<Compile Include="M_Tools.vb" />
<Compile Include="Setings.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="F_SB_PictureTagger.resx">
@ -121,6 +146,31 @@
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Resorcen\Tree.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -1,14 +0,0 @@
Namespace Stammbaum.Settings
Namespace PictureTagger
Module PictureTagger
Public Pub_oLoaded_TaggedIMG As New Stammbaum.Classen.PictureTagger.TaggedIMG
Public Pub_sPath As String 'Pfad des Aktuell Arbeits Verzeichnises
Public pub_aPfade(0) As String 'Array mit den Photo Pfaden
Public pub_nPfadeIndex As Long = 0 'IndexNR des aktuell Geladenen Photos aus pub_aPfade
Public pub_bChangeTagg As Boolean = False 'Wenn ein Tagg geänderd wird:= True bis SaveTagg()
Public pub_aConfigForm(0) As String 'Array mit FormConfiguration
Public pub_aSupportedFiles(0) As String 'Speichert die Unterstützten Extentions
Public nOrdnerTiefe As Integer = 0 'Recursive Ordnertiefe beim Ordnereinlesen
End Module
End Namespace
End Namespace

36
doc/cangeloog.txt Executable file
View File

@ -0,0 +1,36 @@
0.1
Ordner einlesen und Bilder in Array
Ausgeben in Strucktur
Lesen Von Informationen aus INI
Für und Zurück der Bilder


0.2
Versuch von ausbau an Strucktur TaggedIMG Gescheitert
Veralgemeinern Gescheitert
-Funktions Unfähig-

0.3
Erfolgreiches umsetzen der Strucktur TaggedIMG zu Classe
Umstruckturieren der Funcktionen und Rotienen verteilungen in den einzelnen Bereichen
Ausbau der Tools - Library
Ordner Tiefen Funktio Hinzugefügt, auf Drei Unterordner Begrenzt

0.4
Entbuggen von Grafierenden Fehlern
-Speicherrotine
-Laderotiene
-Erkennung von Änderungen
-Bild wird wieder in PictureBox Geladen
-Ordner wird bei Ordner Tiefen Änderung neu Geladen
Veralgemeinerung der Funktionen (Schnelles Umrüsten auf DB, XML, etc. als Tagg-Source möglich)

0.5
Speicher rotiene feinschlif (AutoSave Checkbox funktioniert wieder)
-Halbstadion (Auser Markierungen Funktioniert Alles)-



Geplante Funktionen:
-Markierungen Erstellen/Bearbeiten/Löschen/Laden/Speichern
-Merken der Einstellungen (Portable - Normal Mode)