From 3f60b92f2f2097ae69cefdd97da17b62212260bb Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 09:23:34 +0200
Subject: [PATCH 1/6] rename ImportDiag to ImportCSVDialog and remove field
---
source/Classes/TimeSeriesFile.vb | 5 -----
...ortDiag.Designer.vb => ImportCSVDialog.Designer.vb} | 4 ++--
.../Dialogs/{ImportDiag.resx => ImportCSVDialog.resx} | 0
source/Dialogs/{ImportDiag.vb => ImportCSVDialog.vb} | 10 +++++-----
source/Wave.vb | 6 +++---
source/Wave.vbproj | 10 +++++-----
6 files changed, 15 insertions(+), 20 deletions(-)
rename source/Dialogs/{ImportDiag.Designer.vb => ImportCSVDialog.Designer.vb} (98%)
rename source/Dialogs/{ImportDiag.resx => ImportCSVDialog.resx} (100%)
rename source/Dialogs/{ImportDiag.vb => ImportCSVDialog.vb} (96%)
diff --git a/source/Classes/TimeSeriesFile.vb b/source/Classes/TimeSeriesFile.vb
index 08c6f549..2fc1fc81 100644
--- a/source/Classes/TimeSeriesFile.vb
+++ b/source/Classes/TimeSeriesFile.vb
@@ -159,11 +159,6 @@ Public MustInherit Class TimeSeriesFile
'''
Public TimeSeries As Dictionary(Of Integer, TimeSeries)
- '''
- ''' Instance of the ImportDialog
- '''
- Friend ImportDiag As ImportDiag
-
#End Region 'Eigenschaften
#Region "Properties"
diff --git a/source/Dialogs/ImportDiag.Designer.vb b/source/Dialogs/ImportCSVDialog.Designer.vb
similarity index 98%
rename from source/Dialogs/ImportDiag.Designer.vb
rename to source/Dialogs/ImportCSVDialog.Designer.vb
index 493484b0..3cbd5e87 100644
--- a/source/Dialogs/ImportDiag.Designer.vb
+++ b/source/Dialogs/ImportCSVDialog.Designer.vb
@@ -1,5 +1,5 @@
-Partial Class ImportDiag
+Partial Class ImportCSVDialog
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@@ -24,7 +24,7 @@ Partial Class ImportDiag
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim SplitContainer1 As System.Windows.Forms.SplitContainer
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ImportDiag))
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ImportCSVDialog))
Me.GroupBox_Selection = New System.Windows.Forms.GroupBox()
Me.Label_Selected = New System.Windows.Forms.Label()
Me.Label_Search = New System.Windows.Forms.Label()
diff --git a/source/Dialogs/ImportDiag.resx b/source/Dialogs/ImportCSVDialog.resx
similarity index 100%
rename from source/Dialogs/ImportDiag.resx
rename to source/Dialogs/ImportCSVDialog.resx
diff --git a/source/Dialogs/ImportDiag.vb b/source/Dialogs/ImportCSVDialog.vb
similarity index 96%
rename from source/Dialogs/ImportDiag.vb
rename to source/Dialogs/ImportCSVDialog.vb
index c42bfd3f..cb224527 100644
--- a/source/Dialogs/ImportDiag.vb
+++ b/source/Dialogs/ImportCSVDialog.vb
@@ -18,7 +18,7 @@
Imports System.IO
Imports System.Text.RegularExpressions
-Friend Class ImportDiag
+Friend Class ImportCSVDialog
Inherits System.Windows.Forms.Form
#Region "Eigenschaften"
@@ -135,7 +135,7 @@ Friend Class ImportDiag
Me.ComboBox_DecimalSeparator.Items.Add(Constants.comma)
Me.ComboBox_DecimalSeparator.EndUpdate()
- 'Combobox Datumsformat füllen
+ 'Combobox Datumsformat füllen
For Each datumsformat As String In Helpers.DateFormats.Values
Me.DateFormat = datumsformat
Next
@@ -207,7 +207,7 @@ Friend Class ImportDiag
End If
'replace tab characters with a visual representation
- line = line.Replace(vbTab, " » ")
+ line = line.Replace(vbTab, " » ")
text &= line & Constants.eol
@@ -226,7 +226,7 @@ Friend Class ImportDiag
End Sub
- 'OK Button gedrückt
+ 'OK Button gedrückt
'******************
Private Sub Button_OK_Click(sender As Object, e As EventArgs) Handles Button_OK.Click
@@ -267,7 +267,7 @@ Friend Class ImportDiag
'------------------
Try
- 'Datenzeile muss nach Überschriften und Einheiten sein!
+ 'Datenzeile muss nach Ãœberschriften und Einheiten sein!
Me.IsInitializing = True
If (Me.NumericUpDown_LineData.Value <= Me.NumericUpDown_LineTitles.Value) Then
Me.NumericUpDown_LineData.Value = Me.NumericUpDown_LineTitles.Value + 1
diff --git a/source/Wave.vb b/source/Wave.vb
index e71493ee..30789540 100644
--- a/source/Wave.vb
+++ b/source/Wave.vb
@@ -136,7 +136,7 @@ Public Class Wave
ok = Me.ShowImportDialog(fileInstance)
Call Application.DoEvents()
Else
- 'Ansonsten alle Spalten auswählen
+ 'Ansonsten alle Spalten auswählen
Call fileInstance.selectAllSeries()
ok = True
End If
@@ -807,12 +807,12 @@ Public Class Wave
''' Instanz der Datei, die importiert werden soll
Friend Function ShowImportDialog(ByRef Datei As TimeSeriesFile) As Boolean
- Datei.ImportDiag = New ImportDiag(Datei)
+ Dim ImportDiag As New ImportCSVDialog(Datei)
Dim DiagResult As DialogResult
'Dialog anzeigen
- DiagResult = Datei.ImportDiag.ShowDialog()
+ DiagResult = ImportDiag.ShowDialog()
If (DiagResult = Windows.Forms.DialogResult.OK) Then
Return True
diff --git a/source/Wave.vbproj b/source/Wave.vbproj
index 17a06c9b..0db3cc7a 100644
--- a/source/Wave.vbproj
+++ b/source/Wave.vbproj
@@ -256,10 +256,10 @@
Form
-
- ImportDiag.vb
+
+ ImportCSVDialog.vb
-
+
Form
@@ -417,8 +417,8 @@
ExportDiag.vb
-
- ImportDiag.vb
+
+ ImportCSVDialog.vb
LogWindow.vb
From c12f00a3e72805c832b28354441b8f968ee9877d Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 10:13:36 +0200
Subject: [PATCH 2/6] added a new SelectSeriesDialog for selecting series from
known (non-CSV) file types
---
source/Dialogs/SelectSeriesDialog.Designer.vb | 219 ++++++++++++++++++
source/Dialogs/SelectSeriesDialog.resx | 148 ++++++++++++
source/Dialogs/SelectSeriesDialog.vb | 179 ++++++++++++++
source/Wave.vb | 20 +-
source/Wave.vbproj | 9 +
5 files changed, 567 insertions(+), 8 deletions(-)
create mode 100644 source/Dialogs/SelectSeriesDialog.Designer.vb
create mode 100644 source/Dialogs/SelectSeriesDialog.resx
create mode 100644 source/Dialogs/SelectSeriesDialog.vb
diff --git a/source/Dialogs/SelectSeriesDialog.Designer.vb b/source/Dialogs/SelectSeriesDialog.Designer.vb
new file mode 100644
index 00000000..df4abda7
--- /dev/null
+++ b/source/Dialogs/SelectSeriesDialog.Designer.vb
@@ -0,0 +1,219 @@
+
+Partial Class SelectSeriesDialog
+ Inherits System.Windows.Forms.Form
+
+ 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
+
+ Protected Overrides Sub Dispose(disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Windows Form-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+
+ Private Sub InitializeComponent()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SelectSeriesDialog))
+ Me.GroupBox_Selection = New System.Windows.Forms.GroupBox()
+ Me.Label_Selected = New System.Windows.Forms.Label()
+ Me.Label_Search = New System.Windows.Forms.Label()
+ Me.TextBox_Search = New System.Windows.Forms.TextBox()
+ Me.Label_Series = New System.Windows.Forms.Label()
+ Me.ListBox_Series = New System.Windows.Forms.ListBox()
+ Me.Button_SelectAll = New System.Windows.Forms.Button()
+ Me.Button_OK = New System.Windows.Forms.Button()
+ Me.Button_Cancel = New System.Windows.Forms.Button()
+ Me.Label1 = New System.Windows.Forms.Label()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.Label_FileName = New System.Windows.Forms.Label()
+ Me.Label_FileType = New System.Windows.Forms.Label()
+ Me.GroupBox_Selection.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GroupBox_Selection
+ '
+ Me.GroupBox_Selection.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
+ Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox_Selection.Controls.Add(Me.Label_Selected)
+ Me.GroupBox_Selection.Controls.Add(Me.Label_Search)
+ Me.GroupBox_Selection.Controls.Add(Me.TextBox_Search)
+ Me.GroupBox_Selection.Controls.Add(Me.Label_Series)
+ Me.GroupBox_Selection.Controls.Add(Me.ListBox_Series)
+ Me.GroupBox_Selection.Controls.Add(Me.Button_SelectAll)
+ Me.GroupBox_Selection.Location = New System.Drawing.Point(12, 53)
+ Me.GroupBox_Selection.Margin = New System.Windows.Forms.Padding(0)
+ Me.GroupBox_Selection.Name = "GroupBox_Selection"
+ Me.GroupBox_Selection.Size = New System.Drawing.Size(219, 322)
+ Me.GroupBox_Selection.TabIndex = 0
+ Me.GroupBox_Selection.TabStop = False
+ Me.GroupBox_Selection.Text = "Series selection"
+ '
+ 'Label_Selected
+ '
+ Me.Label_Selected.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label_Selected.Location = New System.Drawing.Point(138, 292)
+ Me.Label_Selected.Name = "Label_Selected"
+ Me.Label_Selected.Size = New System.Drawing.Size(75, 13)
+ Me.Label_Selected.TabIndex = 34
+ Me.Label_Selected.Text = "0 selected"
+ Me.Label_Selected.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'Label_Search
+ '
+ Me.Label_Search.AutoSize = True
+ Me.Label_Search.Location = New System.Drawing.Point(12, 21)
+ Me.Label_Search.Name = "Label_Search"
+ Me.Label_Search.Size = New System.Drawing.Size(44, 13)
+ Me.Label_Search.TabIndex = 0
+ Me.Label_Search.Text = "Search:"
+ '
+ 'TextBox_Search
+ '
+ Me.TextBox_Search.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.TextBox_Search.Location = New System.Drawing.Point(59, 18)
+ Me.TextBox_Search.Name = "TextBox_Search"
+ Me.TextBox_Search.Size = New System.Drawing.Size(154, 20)
+ Me.TextBox_Search.TabIndex = 1
+ '
+ 'Label_Series
+ '
+ Me.Label_Series.AutoSize = True
+ Me.Label_Series.Location = New System.Drawing.Point(12, 46)
+ Me.Label_Series.Name = "Label_Series"
+ Me.Label_Series.Size = New System.Drawing.Size(83, 13)
+ Me.Label_Series.TabIndex = 2
+ Me.Label_Series.Text = "Available series:"
+ '
+ 'ListBox_Series
+ '
+ Me.ListBox_Series.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
+ Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ListBox_Series.FormattingEnabled = True
+ Me.ListBox_Series.Location = New System.Drawing.Point(15, 64)
+ Me.ListBox_Series.Name = "ListBox_Series"
+ Me.ListBox_Series.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
+ Me.ListBox_Series.Size = New System.Drawing.Size(198, 212)
+ Me.ListBox_Series.TabIndex = 3
+ '
+ 'Button_SelectAll
+ '
+ Me.Button_SelectAll.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+ Me.Button_SelectAll.Location = New System.Drawing.Point(15, 287)
+ Me.Button_SelectAll.Name = "Button_SelectAll"
+ Me.Button_SelectAll.Size = New System.Drawing.Size(73, 23)
+ Me.Button_SelectAll.TabIndex = 4
+ Me.Button_SelectAll.Text = "Select all"
+ Me.Button_SelectAll.UseVisualStyleBackColor = True
+ '
+ 'Button_OK
+ '
+ Me.Button_OK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Button_OK.DialogResult = System.Windows.Forms.DialogResult.OK
+ Me.Button_OK.Location = New System.Drawing.Point(75, 388)
+ Me.Button_OK.Name = "Button_OK"
+ Me.Button_OK.Size = New System.Drawing.Size(75, 23)
+ Me.Button_OK.TabIndex = 4
+ Me.Button_OK.Text = "OK"
+ Me.Button_OK.UseVisualStyleBackColor = True
+ '
+ 'Button_Cancel
+ '
+ Me.Button_Cancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Button_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
+ Me.Button_Cancel.Location = New System.Drawing.Point(156, 388)
+ Me.Button_Cancel.Name = "Button_Cancel"
+ Me.Button_Cancel.Size = New System.Drawing.Size(75, 23)
+ Me.Button_Cancel.TabIndex = 5
+ Me.Button_Cancel.Text = "Cancel"
+ Me.Button_Cancel.UseVisualStyleBackColor = True
+ '
+ 'Label1
+ '
+ Me.Label1.AutoSize = True
+ Me.Label1.Location = New System.Drawing.Point(12, 13)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(58, 13)
+ Me.Label1.TabIndex = 6
+ Me.Label1.Text = "File name: "
+ '
+ 'Label2
+ '
+ Me.Label2.AutoSize = True
+ Me.Label2.Location = New System.Drawing.Point(12, 30)
+ Me.Label2.Name = "Label2"
+ Me.Label2.Size = New System.Drawing.Size(52, 13)
+ Me.Label2.TabIndex = 7
+ Me.Label2.Text = "File type: "
+ '
+ 'Label_FileName
+ '
+ Me.Label_FileName.AutoSize = True
+ Me.Label_FileName.Location = New System.Drawing.Point(68, 13)
+ Me.Label_FileName.Name = "Label_FileName"
+ Me.Label_FileName.Size = New System.Drawing.Size(52, 13)
+ Me.Label_FileName.TabIndex = 8
+ Me.Label_FileName.Text = "File name"
+ '
+ 'Label_FileType
+ '
+ Me.Label_FileType.AutoSize = True
+ Me.Label_FileType.Location = New System.Drawing.Point(68, 30)
+ Me.Label_FileType.Name = "Label_FileType"
+ Me.Label_FileType.Size = New System.Drawing.Size(46, 13)
+ Me.Label_FileType.TabIndex = 9
+ Me.Label_FileType.Text = "File type"
+ '
+ 'SelectSeriesDialog
+ '
+ Me.AcceptButton = Me.Button_OK
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.CancelButton = Me.Button_Cancel
+ Me.ClientSize = New System.Drawing.Size(239, 423)
+ Me.Controls.Add(Me.Label_FileType)
+ Me.Controls.Add(Me.Label_FileName)
+ Me.Controls.Add(Me.Label2)
+ Me.Controls.Add(Me.Label1)
+ Me.Controls.Add(Me.GroupBox_Selection)
+ Me.Controls.Add(Me.Button_OK)
+ Me.Controls.Add(Me.Button_Cancel)
+ Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.MinimumSize = New System.Drawing.Size(220, 320)
+ Me.Name = "SelectSeriesDialog"
+ Me.ShowInTaskbar = False
+ Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
+ Me.Text = "Import series from file"
+ Me.GroupBox_Selection.ResumeLayout(False)
+ Me.GroupBox_Selection.PerformLayout()
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Private WithEvents Button_OK As System.Windows.Forms.Button
+ Private WithEvents Button_Cancel As System.Windows.Forms.Button
+ Private WithEvents ListBox_Series As System.Windows.Forms.ListBox
+ Private WithEvents Label_Search As System.Windows.Forms.Label
+ Private WithEvents TextBox_Search As System.Windows.Forms.TextBox
+ Private WithEvents Label_Series As System.Windows.Forms.Label
+ Friend WithEvents Button_SelectAll As System.Windows.Forms.Button
+ Friend WithEvents GroupBox_Selection As System.Windows.Forms.GroupBox
+ Friend WithEvents Label_Selected As Label
+ Friend WithEvents Label1 As Label
+ Friend WithEvents Label2 As Label
+ Friend WithEvents Label_FileName As Label
+ Friend WithEvents Label_FileType As Label
+End Class
diff --git a/source/Dialogs/SelectSeriesDialog.resx b/source/Dialogs/SelectSeriesDialog.resx
new file mode 100644
index 00000000..7b62891c
--- /dev/null
+++ b/source/Dialogs/SelectSeriesDialog.resx
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 34
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAALRpK/+zaCv/smgq/7FoKv+wZir/r2Yq/69mKf+uZSn/rmUo/61kKP+tZCj/rGQo/6tj
+ KP+rYyj/AAAAAAAAAAC2ai3/KWgyTydoMUY5UCdFJ2gxCQAAAABIKBMdAAAAAAAAAABCJRIdAAAAACdv
+ MhosWihoKHM1DAAAAAAAAAAAt2st/yx0ORkrdTiZLXU34it1OO0sdjhoAAAAAAAAAAAAAAAAAAAAACt/
+ OAgsgjjeK4Q2kwAAAAAAAAAAAAAAALltLv8oFZxAAAAAAAAAAAAyiEGWMolB8TGKQKIxjEAMAAAAAAAA
+ AAAxj0CIL5I+7wAAAAAAAAAAAAAAAAAAAAC7bi//BAD5VAQA+xcAAAAAAAAAADmZSko5mUjoN5pI4Dib
+ Rq02nUW+NZ9E9DOgQl8AAAAAEQ39GgAAAAAAAAAAvW8w/wUB/08GAv/cAAAAAAAAAAAAAAAA3FAAd0Ci
+ Spc8pEvMOqRJzTejRlcAAAAAAAAAABsX+7AAAAAAAAAAAL5xMP9QMHsvEQ39/hIO/IbgWACE4FcA/+BX
+ Av3gVwP+31YGVwAAAAAAAAAAAAAAAAAAAAAkIfn6AAAAAAAAAADAcjL/AAAAABoW+6UcGfn7uk499+Bh
+ CpLhYg0D32IQuN5hEfjdYhV+AAAAAAAAAAAtKvnALiv38AAAAAAAAAAAwnMy/wAAAAAAAAAAOSrr/kUx
+ 4fkAAAAAAAAAAAAAAADgbyCo3nIk+95zJ581MvclNjP2/4hbppcAAAAAAAAAAMNzM/+ARyId4XYbiq9g
+ Z/o4MvX3OTb2lQAAAAAAAAAAAAAAAOB/M43fgTf934I5+9+GPPnfiD7+AAAAAAAAAADEdDT/4oAmA+B/
+ LPnggTC2QT71h0NA9P5GQ/M8AAAAAAAAAABJRvMiS0jx8VBK7vbgk0uAAAAAAAAAAAAAAAAAxXU0/+CH
+ ODPeiT/93oxBCQAAAABQTfHDUk/y+lJP8spTUfDdU1Hw+1NR8OJTUfAiAAAAAAAAAAAAAAAAAAAAAMZ2
+ NP/GfT9m3ZJPpwAAAAAAAAAAAAAAAFpY74paWO/gWVfv01lX714AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADGdjT/3ZdbVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA//8AAIABAAC//wAAo/MAALjnAAC+DwAArx0AAKB9AAChOQAAs4kAAKHBAACh4wAArA8AAK4/
+ //+//////////w==
+
+
+
\ No newline at end of file
diff --git a/source/Dialogs/SelectSeriesDialog.vb b/source/Dialogs/SelectSeriesDialog.vb
new file mode 100644
index 00000000..5d6eb0a3
--- /dev/null
+++ b/source/Dialogs/SelectSeriesDialog.vb
@@ -0,0 +1,179 @@
+'BlueM.Wave
+'Copyright (C) BlueM Dev Group
+'
+'
+'This program is free software: you can redistribute it and/or modify
+'it under the terms of the GNU Lesser General Public License as published by
+'the Free Software Foundation, either version 3 of the License, or
+'(at your option) any later version.
+'
+'This program is distributed in the hope that it will be useful,
+'but WITHOUT ANY WARRANTY; without even the implied warranty of
+'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+'GNU Lesser General Public License for more details.
+'
+'You should have received a copy of the GNU Lesser General Public License
+'along with this program. If not, see .
+'
+Friend Class SelectSeriesDialog
+ Inherits System.Windows.Forms.Form
+
+ Private IsInitializing As Boolean
+
+ Private tsFile As TimeSeriesFile
+ Private WithEvents inputTimer As Timers.Timer
+
+ Public Sub New(ByRef fileInstance As TimeSeriesFile)
+
+ Call MyBase.New()
+
+ IsInitializing = True
+
+ Call InitializeComponent()
+
+ Me.tsFile = fileInstance
+
+ 'Set labels
+ Me.Label_FileName.Text = IO.Path.GetFileName(Me.tsFile.File)
+ Me.Label_FileType.Text = Me.tsFile.GetType().Name
+
+ 'initialize input delay timer
+ Me.inputTimer = New Timers.Timer(1000)
+ Me.inputTimer.SynchronizingObject = Me
+ Me.inputTimer.AutoReset = False
+
+ End Sub
+
+ Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+ 'Versuchen, die Spalten auszulesen (mit Standardeinstellungen)
+ Call Me.tsFile.readSeriesInfo()
+
+ 'Anzeige aktualisieren
+ Call Me.RefreshDisplay()
+
+ 'Ende der Initialisierung
+ IsInitializing = False
+
+ End Sub
+
+ Private Sub Button_OK_Click(sender As Object, e As EventArgs) Handles Button_OK.Click
+
+ If (Me.ListBox_Series.SelectedItems.Count < 1) Then
+ MsgBox("Please select at least one series!", MsgBoxStyle.Exclamation)
+ Me.DialogResult = Windows.Forms.DialogResult.None
+ Exit Sub
+ Else
+ For Each sInfo As TimeSeriesInfo In Me.ListBox_Series.SelectedItems
+ Me.tsFile.selectSeries(sInfo.Index)
+ Next
+ End If
+
+ End Sub
+
+ Private Sub RefreshDisplay()
+
+ 'Available series
+ Dim sInfo As TimeSeriesInfo
+ Me.Label_Series.Text = $"Available series ({Me.tsFile.TimeSeriesInfos.Count}):"
+ 'remember currently selected series
+ Dim selectedSeries As New List(Of String)
+ For Each sInfo In Me.ListBox_Series.SelectedItems
+ selectedSeries.Add(sInfo.Name)
+ Next
+ 'update list box
+ Me.ListBox_Series.Items.Clear()
+ Me.ListBox_Series.BeginUpdate()
+ For Each sInfo In Me.tsFile.TimeSeriesInfos
+ Me.ListBox_Series.Items.Add(sInfo)
+ Next
+ Me.ListBox_Series.EndUpdate()
+ 'reselect any previously selected items
+ For Each sName As String In selectedSeries
+ For i As Integer = 0 To Me.ListBox_Series.Items.Count - 1
+ sInfo = Me.ListBox_Series.Items(i)
+ If sInfo.Name = sName Then
+ Me.ListBox_Series.SetSelected(i, True)
+ Continue For
+ End If
+ Next
+ Next
+
+ End Sub
+
+ '''
+ ''' Handles text changed in the search text box by resetting the input timer
+ '''
+ '''
+ '''
+ Private Sub TextBox_Search_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Search.TextChanged
+
+ 'reset the input timer
+ Me.inputTimer.Stop()
+ Me.inputTimer.Start()
+
+ End Sub
+
+ '''
+ ''' Do a case-insensitive search for matching list items and select them
+ '''
+ '''
+ '''
+ '''
+ Private Sub searchSeries(sender As Object, e As Timers.ElapsedEventArgs) Handles inputTimer.Elapsed
+
+ Dim search, itemname As String
+
+ search = Me.TextBox_Search.Text.ToLower()
+
+ If (search = "") Then Return
+
+ Me.IsInitializing = True
+ Me.ListBox_Series.BeginUpdate()
+ Me.ListBox_Series.ClearSelected()
+ For i As Integer = 0 To Me.ListBox_Series.Items.Count - 1
+ itemname = Me.ListBox_Series.Items(i).ToString().ToLower()
+ If (itemname.Contains(search)) Then
+ Me.ListBox_Series.SetSelected(i, True)
+ End If
+ Next
+ Me.ListBox_Series.EndUpdate()
+ Me.IsInitializing = False
+ Call ListBox_Series_SelectedIndexChanged(ListBox_Series, New EventArgs())
+
+ End Sub
+
+ '''
+ ''' Handles Select all button clicked by selecting all series
+ '''
+ '''
+ '''
+ Private Sub Select_All(sender As Object, e As EventArgs) Handles Button_SelectAll.Click
+
+ Me.IsInitializing = True
+ Me.ListBox_Series.BeginUpdate()
+ For i As Integer = 0 To Me.ListBox_Series.Items.Count - 1
+ Me.ListBox_Series.SetSelected(i, True)
+ Next
+ Me.ListBox_Series.EndUpdate()
+ Me.IsInitializing = False
+ Call ListBox_Series_SelectedIndexChanged(ListBox_Series, New EventArgs())
+
+ End Sub
+
+ '''
+ ''' Handles selected series changed by updating the displayed number of selected series
+ '''
+ '''
+ '''
+ Private Sub ListBox_Series_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox_Series.SelectedIndexChanged
+ If Not Me.IsInitializing Then
+ Me.Label_Selected.Text = $"{ListBox_Series.SelectedIndices.Count} selected"
+ End If
+ End Sub
+
+ Private Sub ImportDiag_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
+ Me.inputTimer.Dispose()
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/source/Wave.vb b/source/Wave.vb
index 30789540..c7bad39f 100644
--- a/source/Wave.vb
+++ b/source/Wave.vb
@@ -802,19 +802,23 @@ Public Class Wave
End Sub
'''
- ''' Zeigt den Importdialog an und liest im Anschluss die Datei mit den eingegebenen Einstellungen ein
+ ''' Shows the import dialog for series selection
'''
- ''' Instanz der Datei, die importiert werden soll
- Friend Function ShowImportDialog(ByRef Datei As TimeSeriesFile) As Boolean
+ ''' File instance from which to import
+ Friend Function ShowImportDialog(ByRef tsFile As TimeSeriesFile) As Boolean
- Dim ImportDiag As New ImportCSVDialog(Datei)
+ Dim dialog As Form
+ Dim dialogResult As DialogResult
- Dim DiagResult As DialogResult
+ If TypeOf tsFile Is Fileformats.CSV Then
+ dialog = New ImportCSVDialog(tsFile)
+ Else
+ dialog = New SelectSeriesDialog(tsFile)
+ End If
- 'Dialog anzeigen
- DiagResult = ImportDiag.ShowDialog()
+ dialogResult = dialog.ShowDialog()
- If (DiagResult = Windows.Forms.DialogResult.OK) Then
+ If dialogResult = Windows.Forms.DialogResult.OK Then
Return True
Else
Return False
diff --git a/source/Wave.vbproj b/source/Wave.vbproj
index 0db3cc7a..8ec34118 100644
--- a/source/Wave.vbproj
+++ b/source/Wave.vbproj
@@ -202,6 +202,12 @@
Form
+
+ SelectSeriesDialog.vb
+
+
+ Form
+
@@ -417,6 +423,9 @@
ExportDiag.vb
+
+ SelectSeriesDialog.vb
+
ImportCSVDialog.vb
From 7ecc0f7d55fc24bbda1f5eb50947d563c45d2260 Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 10:15:07 +0200
Subject: [PATCH 3/6] remove unnecessary workarounds for binary files
---
source/Dialogs/ImportCSVDialog.vb | 19 -------------------
1 file changed, 19 deletions(-)
diff --git a/source/Dialogs/ImportCSVDialog.vb b/source/Dialogs/ImportCSVDialog.vb
index cb224527..2a36e9a4 100644
--- a/source/Dialogs/ImportCSVDialog.vb
+++ b/source/Dialogs/ImportCSVDialog.vb
@@ -172,25 +172,6 @@ Friend Class ImportCSVDialog
'Dateiname anzeigen
Me.Label_File.Text = "File: " & Path.GetFileName(Me.datei.File)
- 'Workaround for binary file formats
- If TypeOf Me.datei Is Fileformats.SWMM_OUT _
- Or TypeOf Me.datei Is Fileformats.SydroSQLite _
- Or TypeOf Me.datei Is Fileformats.DFS0 _
- Or TypeOf Me.datei Is Fileformats.WBL Then
-
- Me.TextBox_Preview.Text = $"{Path.GetFileName(Me.datei.File)} is a binary file.{eol}Preview is not available!"
- 'Disable all other fields
- Me.GroupBox_Dateformat.Enabled = False
- Me.GroupBox_Columns.Enabled = False
- Me.GroupBox_DecimalMark.Enabled = False
- Me.GroupBox_Settings.Enabled = False
- Me.Label_Encoding.Enabled = False
- Me.ComboBox_Encoding.Enabled = False
- Me.Button_EncodingAutodetect.Enabled = False
-
- Exit Sub
- End If
-
'Vorschau anzeigen
Dim fs As New FileStream(Me.datei.File, FileMode.Open, FileAccess.Read)
Dim StrRead As New StreamReader(fs, Me.selectedEncoding)
From 1321a2787adce338eb3160ffb2ff8d4d96a10894 Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 10:15:35 +0200
Subject: [PATCH 4/6] change dialog title
---
source/Dialogs/ImportCSVDialog.Designer.vb | 6 +++---
source/Dialogs/ImportCSVDialog.vb | 3 ---
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/source/Dialogs/ImportCSVDialog.Designer.vb b/source/Dialogs/ImportCSVDialog.Designer.vb
index 3cbd5e87..52b0a115 100644
--- a/source/Dialogs/ImportCSVDialog.Designer.vb
+++ b/source/Dialogs/ImportCSVDialog.Designer.vb
@@ -527,7 +527,7 @@ Partial Class ImportCSVDialog
Me.ComboBox_Dateformat.Size = New System.Drawing.Size(139, 21)
Me.ComboBox_Dateformat.TabIndex = 1
'
- 'ImportDiag
+ 'ImportCSVDialog
'
Me.AcceptButton = Me.Button_OK
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -546,10 +546,10 @@ Partial Class ImportCSVDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.MinimumSize = New System.Drawing.Size(565, 500)
- Me.Name = "ImportDiag"
+ Me.Name = "ImportCSVDialog"
Me.ShowInTaskbar = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
- Me.Text = "Import series from file"
+ Me.Text = "Import series from CSV file"
SplitContainer1.Panel1.ResumeLayout(False)
SplitContainer1.Panel2.ResumeLayout(False)
CType(SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()
diff --git a/source/Dialogs/ImportCSVDialog.vb b/source/Dialogs/ImportCSVDialog.vb
index 2a36e9a4..04784e42 100644
--- a/source/Dialogs/ImportCSVDialog.vb
+++ b/source/Dialogs/ImportCSVDialog.vb
@@ -106,9 +106,6 @@ Friend Class ImportCSVDialog
Me.datei = fileInstance
- 'add type name of file instance to dialog title
- Me.Text &= $" - file format: {Me.datei.GetType().Name}"
-
'initialize input delay timer
Me.inputTimer = New Timers.Timer(1000)
Me.inputTimer.SynchronizingObject = Me
From 115b992c54121df106512164d62e8595ba40df51 Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 10:17:46 +0200
Subject: [PATCH 5/6] set tab order and initial focus
---
source/Dialogs/SelectSeriesDialog.Designer.vb | 16 ++++++++--------
source/Dialogs/SelectSeriesDialog.vb | 3 +++
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/source/Dialogs/SelectSeriesDialog.Designer.vb b/source/Dialogs/SelectSeriesDialog.Designer.vb
index df4abda7..a925bf6d 100644
--- a/source/Dialogs/SelectSeriesDialog.Designer.vb
+++ b/source/Dialogs/SelectSeriesDialog.Designer.vb
@@ -54,7 +54,7 @@ Partial Class SelectSeriesDialog
Me.GroupBox_Selection.Margin = New System.Windows.Forms.Padding(0)
Me.GroupBox_Selection.Name = "GroupBox_Selection"
Me.GroupBox_Selection.Size = New System.Drawing.Size(219, 322)
- Me.GroupBox_Selection.TabIndex = 0
+ Me.GroupBox_Selection.TabIndex = 4
Me.GroupBox_Selection.TabStop = False
Me.GroupBox_Selection.Text = "Series selection"
'
@@ -64,7 +64,7 @@ Partial Class SelectSeriesDialog
Me.Label_Selected.Location = New System.Drawing.Point(138, 292)
Me.Label_Selected.Name = "Label_Selected"
Me.Label_Selected.Size = New System.Drawing.Size(75, 13)
- Me.Label_Selected.TabIndex = 34
+ Me.Label_Selected.TabIndex = 5
Me.Label_Selected.Text = "0 selected"
Me.Label_Selected.TextAlign = System.Drawing.ContentAlignment.TopRight
'
@@ -124,7 +124,7 @@ Partial Class SelectSeriesDialog
Me.Button_OK.Location = New System.Drawing.Point(75, 388)
Me.Button_OK.Name = "Button_OK"
Me.Button_OK.Size = New System.Drawing.Size(75, 23)
- Me.Button_OK.TabIndex = 4
+ Me.Button_OK.TabIndex = 5
Me.Button_OK.Text = "OK"
Me.Button_OK.UseVisualStyleBackColor = True
'
@@ -135,7 +135,7 @@ Partial Class SelectSeriesDialog
Me.Button_Cancel.Location = New System.Drawing.Point(156, 388)
Me.Button_Cancel.Name = "Button_Cancel"
Me.Button_Cancel.Size = New System.Drawing.Size(75, 23)
- Me.Button_Cancel.TabIndex = 5
+ Me.Button_Cancel.TabIndex = 6
Me.Button_Cancel.Text = "Cancel"
Me.Button_Cancel.UseVisualStyleBackColor = True
'
@@ -145,7 +145,7 @@ Partial Class SelectSeriesDialog
Me.Label1.Location = New System.Drawing.Point(12, 13)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(58, 13)
- Me.Label1.TabIndex = 6
+ Me.Label1.TabIndex = 0
Me.Label1.Text = "File name: "
'
'Label2
@@ -154,7 +154,7 @@ Partial Class SelectSeriesDialog
Me.Label2.Location = New System.Drawing.Point(12, 30)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(52, 13)
- Me.Label2.TabIndex = 7
+ Me.Label2.TabIndex = 2
Me.Label2.Text = "File type: "
'
'Label_FileName
@@ -163,7 +163,7 @@ Partial Class SelectSeriesDialog
Me.Label_FileName.Location = New System.Drawing.Point(68, 13)
Me.Label_FileName.Name = "Label_FileName"
Me.Label_FileName.Size = New System.Drawing.Size(52, 13)
- Me.Label_FileName.TabIndex = 8
+ Me.Label_FileName.TabIndex = 1
Me.Label_FileName.Text = "File name"
'
'Label_FileType
@@ -172,7 +172,7 @@ Partial Class SelectSeriesDialog
Me.Label_FileType.Location = New System.Drawing.Point(68, 30)
Me.Label_FileType.Name = "Label_FileType"
Me.Label_FileType.Size = New System.Drawing.Size(46, 13)
- Me.Label_FileType.TabIndex = 9
+ Me.Label_FileType.TabIndex = 3
Me.Label_FileType.Text = "File type"
'
'SelectSeriesDialog
diff --git a/source/Dialogs/SelectSeriesDialog.vb b/source/Dialogs/SelectSeriesDialog.vb
index 5d6eb0a3..b41acc80 100644
--- a/source/Dialogs/SelectSeriesDialog.vb
+++ b/source/Dialogs/SelectSeriesDialog.vb
@@ -42,6 +42,9 @@ Friend Class SelectSeriesDialog
Me.inputTimer.SynchronizingObject = Me
Me.inputTimer.AutoReset = False
+ 'set intial focus
+ Me.TextBox_Search.Focus()
+
End Sub
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
From 0d34671a8e669075a25cae2505b1600f1b229f30 Mon Sep 17 00:00:00 2001
From: jamaa <90166+jamaa@users.noreply.github.com>
Date: Sat, 28 Oct 2023 10:24:01 +0200
Subject: [PATCH 6/6] update changelog
---
source/CHANGELOG.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/source/CHANGELOG.md b/source/CHANGELOG.md
index b2482cdb..c22b004d 100644
--- a/source/CHANGELOG.md
+++ b/source/CHANGELOG.md
@@ -3,6 +3,10 @@
Development
-------------
+NEW:
+* Added a new series selection dialog for known (non-CSV) file types
+
+CHANGED:
* Upgrade TeeChart to v4.2023.4.18
Version 2.5.0
@@ -15,7 +19,7 @@ NEW:
* Added support for reading and writing REXCHANGE header values for ZRXP files #123
FIXED:
-* Analysis function Accumulate now repects the input interpretation
+* Analysis function Accumulate now respects the input interpretation
* Time Series Properties and Values windows now restore on toolbar button press if previously minimized
* Importing from SWMM binary output format:
* Read and store metadata