11 Commits

Author SHA1 Message Date
MikeMaximus
248efa8878 Fixed some export issues 2018-02-02 10:28:17 -06:00
MikeMaximus
93517f5236 Updated readme.txt for v107 2018-02-02 09:32:52 -06:00
Michael J. Seiferling
5be80b2f02 Better fix for issue #94 2018-01-28 23:14:54 -06:00
Michael J. Seiferling
2f2177fb84 Fixed issue #94 again 2018-01-28 22:43:44 -06:00
MikeMaximus
636c1495a4 Fixed sessions form tab order 2018-01-20 14:09:15 -06:00
MikeMaximus
f69d10065a Changes for issue #121 2018-01-20 14:05:10 -06:00
MikeMaximus
99d70b96fb Cleaned up column sorting for cross-platform 2018-01-19 09:26:30 -06:00
MikeMaximus
f88cf1bd18 Linux sorting fix for issue #120 2018-01-18 14:08:22 -06:00
MikeMaximus
b4d9c84c36 Update version 2018-01-18 12:06:03 -06:00
MikeMaximus
5996e28edf Changes for issue #120 2018-01-18 12:04:48 -06:00
MikeMaximus
6b9ebaab36 Fixed issue #117 again 2018-01-18 09:17:14 -06:00
13 changed files with 964 additions and 41 deletions
@@ -0,0 +1,49 @@
Imports System.Xml.Serialization
<XmlRoot("Session")>
Public Class Session
Private sGame As String
Private sStart As String
Private sEnd As String
Private sHours As String
<XmlElement("Game")>
Public Property GameName As String
Set(value As String)
sGame = value
End Set
Get
Return sGame
End Get
End Property
<XmlElement("Start")>
Public Property StartDate As String
Set(value As String)
sStart = value
End Set
Get
Return sStart
End Get
End Property
<XmlElement("End")>
Public Property EndDate As String
Set(value As String)
sEnd = value
End Set
Get
Return sEnd
End Get
End Property
<XmlElement("Hours")>
Public Property Hours As String
Set(value As String)
sHours = value
End Set
Get
Return sHours
End Get
End Property
End Class
+180
View File
@@ -0,0 +1,180 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmSessionExport
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.btnExport = New System.Windows.Forms.Button()
Me.btnCancel = New System.Windows.Forms.Button()
Me.grpExportType = New System.Windows.Forms.GroupBox()
Me.grpDateType = New System.Windows.Forms.GroupBox()
Me.optCSV = New System.Windows.Forms.RadioButton()
Me.optXML = New System.Windows.Forms.RadioButton()
Me.optCurrentLocale = New System.Windows.Forms.RadioButton()
Me.optUnix = New System.Windows.Forms.RadioButton()
Me.grpOptions = New System.Windows.Forms.GroupBox()
Me.chkCSVHeaders = New System.Windows.Forms.CheckBox()
Me.grpExportType.SuspendLayout()
Me.grpDateType.SuspendLayout()
Me.grpOptions.SuspendLayout()
Me.SuspendLayout()
'
'btnExport
'
Me.btnExport.Location = New System.Drawing.Point(116, 226)
Me.btnExport.Name = "btnExport"
Me.btnExport.Size = New System.Drawing.Size(75, 23)
Me.btnExport.TabIndex = 3
Me.btnExport.Text = "&Export"
Me.btnExport.UseVisualStyleBackColor = True
'
'btnCancel
'
Me.btnCancel.Location = New System.Drawing.Point(197, 226)
Me.btnCancel.Name = "btnCancel"
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
Me.btnCancel.TabIndex = 4
Me.btnCancel.Text = "&Cancel"
Me.btnCancel.UseVisualStyleBackColor = True
'
'grpExportType
'
Me.grpExportType.Controls.Add(Me.optXML)
Me.grpExportType.Controls.Add(Me.optCSV)
Me.grpExportType.Location = New System.Drawing.Point(12, 12)
Me.grpExportType.Name = "grpExportType"
Me.grpExportType.Size = New System.Drawing.Size(260, 70)
Me.grpExportType.TabIndex = 0
Me.grpExportType.TabStop = False
Me.grpExportType.Text = "Export Type"
'
'grpDateType
'
Me.grpDateType.Controls.Add(Me.optUnix)
Me.grpDateType.Controls.Add(Me.optCurrentLocale)
Me.grpDateType.Location = New System.Drawing.Point(12, 88)
Me.grpDateType.Name = "grpDateType"
Me.grpDateType.Size = New System.Drawing.Size(260, 70)
Me.grpDateType.TabIndex = 1
Me.grpDateType.TabStop = False
Me.grpDateType.Text = "Date Type"
'
'optCSV
'
Me.optCSV.AutoSize = True
Me.optCSV.Location = New System.Drawing.Point(6, 19)
Me.optCSV.Name = "optCSV"
Me.optCSV.Size = New System.Drawing.Size(46, 17)
Me.optCSV.TabIndex = 0
Me.optCSV.TabStop = True
Me.optCSV.Text = "CSV"
Me.optCSV.UseVisualStyleBackColor = True
'
'optXML
'
Me.optXML.AutoSize = True
Me.optXML.Location = New System.Drawing.Point(6, 42)
Me.optXML.Name = "optXML"
Me.optXML.Size = New System.Drawing.Size(47, 17)
Me.optXML.TabIndex = 1
Me.optXML.TabStop = True
Me.optXML.Text = "XML"
Me.optXML.UseVisualStyleBackColor = True
'
'optCurrentLocale
'
Me.optCurrentLocale.AutoEllipsis = True
Me.optCurrentLocale.Location = New System.Drawing.Point(6, 19)
Me.optCurrentLocale.Name = "optCurrentLocale"
Me.optCurrentLocale.Size = New System.Drawing.Size(248, 17)
Me.optCurrentLocale.TabIndex = 0
Me.optCurrentLocale.TabStop = True
Me.optCurrentLocale.Text = "Current Locale"
Me.optCurrentLocale.UseVisualStyleBackColor = True
'
'optUnix
'
Me.optUnix.AutoEllipsis = True
Me.optUnix.Location = New System.Drawing.Point(6, 42)
Me.optUnix.Name = "optUnix"
Me.optUnix.Size = New System.Drawing.Size(248, 17)
Me.optUnix.TabIndex = 1
Me.optUnix.TabStop = True
Me.optUnix.Text = "Unix Timestamp"
Me.optUnix.UseVisualStyleBackColor = True
'
'grpOptions
'
Me.grpOptions.Controls.Add(Me.chkCSVHeaders)
Me.grpOptions.Location = New System.Drawing.Point(12, 164)
Me.grpOptions.Name = "grpOptions"
Me.grpOptions.Size = New System.Drawing.Size(260, 45)
Me.grpOptions.TabIndex = 2
Me.grpOptions.TabStop = False
Me.grpOptions.Text = "Other Options"
'
'chkCSVHeaders
'
Me.chkCSVHeaders.AutoSize = True
Me.chkCSVHeaders.Location = New System.Drawing.Point(6, 19)
Me.chkCSVHeaders.Name = "chkCSVHeaders"
Me.chkCSVHeaders.Size = New System.Drawing.Size(167, 17)
Me.chkCSVHeaders.TabIndex = 0
Me.chkCSVHeaders.Text = "Export Column Headers (CSV)"
Me.chkCSVHeaders.UseVisualStyleBackColor = True
'
'frmSessionExport
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(284, 261)
Me.Controls.Add(Me.grpOptions)
Me.Controls.Add(Me.grpDateType)
Me.Controls.Add(Me.grpExportType)
Me.Controls.Add(Me.btnCancel)
Me.Controls.Add(Me.btnExport)
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "frmSessionExport"
Me.ShowIcon = False
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "Session Export Options"
Me.grpExportType.ResumeLayout(False)
Me.grpExportType.PerformLayout()
Me.grpDateType.ResumeLayout(False)
Me.grpOptions.ResumeLayout(False)
Me.grpOptions.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents btnExport As Button
Friend WithEvents btnCancel As Button
Friend WithEvents grpExportType As GroupBox
Friend WithEvents optXML As RadioButton
Friend WithEvents optCSV As RadioButton
Friend WithEvents grpDateType As GroupBox
Friend WithEvents optUnix As RadioButton
Friend WithEvents optCurrentLocale As RadioButton
Friend WithEvents grpOptions As GroupBox
Friend WithEvents chkCSVHeaders As CheckBox
End Class
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+90
View File
@@ -0,0 +1,90 @@
Imports GBM.My.Resources
Public Class frmSessionExport
Private bXML As Boolean = True
Private bUnix As Boolean = False
Private bCSVHeaders As Boolean = True
Public ReadOnly Property XML As Boolean
Get
Return bXML
End Get
End Property
Public ReadOnly Property Unix As Boolean
Get
Return bUnix
End Get
End Property
Public ReadOnly Property Headers As Boolean
Get
Return bCSVHeaders
End Get
End Property
Private Sub SetOptions()
If optXML.Checked Then
bXML = True
Else
bXML = False
End If
If optUnix.Checked Then
bUnix = True
Else
bUnix = False
End If
If chkCSVHeaders.Checked Then
bCSVHeaders = True
Else
bCSVHeaders = False
End If
End Sub
Private Sub SetForm()
Me.Text = frmSessionExport_FormName
grpExportType.Text = frmSessionExport_grpExportType
grpDateType.Text = frmSessionExport_grpDateType
grpOptions.Text = frmSessionExport_grpOptions
optCSV.Text = frmSessionExport_optCSV
optXML.Text = frmSessionExport_optXML
optCurrentLocale.Text = frmSessionExport_optCurrentLocale & " - " & Now
optUnix.Text = frmSessionExport_optUnix & " - " & mgrCommon.DateToUnix(Now)
chkCSVHeaders.Text = frmSessionExport_chkCSVHeaders
btnExport.Text = frmSessionExport_btnExport
btnCancel.Text = frmSessionExport_btnCancel
optCSV.Checked = True
optCurrentLocale.Checked = True
End Sub
Private Sub frmSessionExport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetForm()
End Sub
Private Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click
SetOptions()
Me.DialogResult = DialogResult.OK
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
Me.DialogResult = DialogResult.Cancel
End Sub
Private Sub optCSV_CheckedChanged(sender As Object, e As EventArgs) Handles optCSV.CheckedChanged
If Not optCSV.Checked Then
chkCSVHeaders.Checked = False
chkCSVHeaders.Enabled = False
Else
chkCSVHeaders.Checked = True
chkCSVHeaders.Enabled = True
End If
End Sub
End Class
+31 -4
View File
@@ -32,6 +32,8 @@ Partial Class frmSessions
Me.btnDelete = New System.Windows.Forms.Button() Me.btnDelete = New System.Windows.Forms.Button()
Me.btnClose = New System.Windows.Forms.Button() Me.btnClose = New System.Windows.Forms.Button()
Me.lblDateRange = New System.Windows.Forms.Label() Me.lblDateRange = New System.Windows.Forms.Label()
Me.lblTotalHours = New System.Windows.Forms.Label()
Me.btnExport = New System.Windows.Forms.Button()
CType(Me.dgSessions, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgSessions, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
' '
@@ -41,7 +43,7 @@ Partial Class frmSessions
Me.lblFilter.Location = New System.Drawing.Point(12, 9) Me.lblFilter.Location = New System.Drawing.Point(12, 9)
Me.lblFilter.Name = "lblFilter" Me.lblFilter.Name = "lblFilter"
Me.lblFilter.Size = New System.Drawing.Size(63, 13) Me.lblFilter.Size = New System.Drawing.Size(63, 13)
Me.lblFilter.TabIndex = 0 Me.lblFilter.TabIndex = 1
Me.lblFilter.Text = "Game Filter:" Me.lblFilter.Text = "Game Filter:"
' '
'txtFilter 'txtFilter
@@ -100,7 +102,7 @@ Partial Class frmSessions
Me.btnReset.Location = New System.Drawing.Point(591, 526) Me.btnReset.Location = New System.Drawing.Point(591, 526)
Me.btnReset.Name = "btnReset" Me.btnReset.Name = "btnReset"
Me.btnReset.Size = New System.Drawing.Size(100, 23) Me.btnReset.Size = New System.Drawing.Size(100, 23)
Me.btnReset.TabIndex = 2 Me.btnReset.TabIndex = 10
Me.btnReset.Text = "&Reset Filters" Me.btnReset.Text = "&Reset Filters"
Me.btnReset.UseVisualStyleBackColor = True Me.btnReset.UseVisualStyleBackColor = True
' '
@@ -120,7 +122,7 @@ Partial Class frmSessions
Me.btnClose.Location = New System.Drawing.Point(697, 526) Me.btnClose.Location = New System.Drawing.Point(697, 526)
Me.btnClose.Name = "btnClose" Me.btnClose.Name = "btnClose"
Me.btnClose.Size = New System.Drawing.Size(75, 23) Me.btnClose.Size = New System.Drawing.Size(75, 23)
Me.btnClose.TabIndex = 8 Me.btnClose.TabIndex = 11
Me.btnClose.Text = "&Close" Me.btnClose.Text = "&Close"
Me.btnClose.UseVisualStyleBackColor = True Me.btnClose.UseVisualStyleBackColor = True
' '
@@ -131,14 +133,37 @@ Partial Class frmSessions
Me.lblDateRange.Location = New System.Drawing.Point(310, 9) Me.lblDateRange.Location = New System.Drawing.Point(310, 9)
Me.lblDateRange.Name = "lblDateRange" Me.lblDateRange.Name = "lblDateRange"
Me.lblDateRange.Size = New System.Drawing.Size(68, 13) Me.lblDateRange.Size = New System.Drawing.Size(68, 13)
Me.lblDateRange.TabIndex = 9 Me.lblDateRange.TabIndex = 2
Me.lblDateRange.Text = "Date Range:" Me.lblDateRange.Text = "Date Range:"
' '
'lblTotalHours
'
Me.lblTotalHours.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.lblTotalHours.Location = New System.Drawing.Point(118, 531)
Me.lblTotalHours.Name = "lblTotalHours"
Me.lblTotalHours.Size = New System.Drawing.Size(361, 13)
Me.lblTotalHours.TabIndex = 8
Me.lblTotalHours.Text = "Total Hours:"
Me.lblTotalHours.TextAlign = System.Drawing.ContentAlignment.TopCenter
'
'btnExport
'
Me.btnExport.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnExport.Location = New System.Drawing.Point(485, 526)
Me.btnExport.Name = "btnExport"
Me.btnExport.Size = New System.Drawing.Size(100, 23)
Me.btnExport.TabIndex = 9
Me.btnExport.Text = "&Export Grid"
Me.btnExport.UseVisualStyleBackColor = True
'
'frmSessions 'frmSessions
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(784, 561) Me.ClientSize = New System.Drawing.Size(784, 561)
Me.Controls.Add(Me.btnExport)
Me.Controls.Add(Me.lblTotalHours)
Me.Controls.Add(Me.lblDateRange) Me.Controls.Add(Me.lblDateRange)
Me.Controls.Add(Me.btnClose) Me.Controls.Add(Me.btnClose)
Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.btnDelete)
@@ -170,4 +195,6 @@ Partial Class frmSessions
Friend WithEvents btnDelete As Button Friend WithEvents btnDelete As Button
Friend WithEvents btnClose As Button Friend WithEvents btnClose As Button
Friend WithEvents lblDateRange As Label Friend WithEvents lblDateRange As Label
Friend WithEvents lblTotalHours As Label
Friend WithEvents btnExport As Button
End Class End Class
+103 -13
View File
@@ -12,6 +12,8 @@ Public Class frmSessions
Private bEndSortAsc As Boolean = True Private bEndSortAsc As Boolean = True
Private iEndDataCol As Integer Private iEndDataCol As Integer
Private iEndDisplayCol As Integer Private iEndDisplayCol As Integer
Private bHoursSortAsc As Boolean = True
Private iHoursCol As Integer
Private Sub FormatGrid() Private Sub FormatGrid()
'Build Columns 'Build Columns
@@ -21,16 +23,19 @@ Public Class frmSessions
dgSessions.Columns.Add("Start", frmSessions_ColumnStart) dgSessions.Columns.Add("Start", frmSessions_ColumnStart)
dgSessions.Columns.Add("EndUnix", frmSessions_ColumnEnd) dgSessions.Columns.Add("EndUnix", frmSessions_ColumnEnd)
dgSessions.Columns.Add("End", frmSessions_ColumnEnd) dgSessions.Columns.Add("End", frmSessions_ColumnEnd)
dgSessions.Columns.Add("Hours", frmSessions_ColumnHours)
'Get Column Indexes 'Get Column Indexes
iStartDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("StartUnix")) iStartDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("StartUnix"))
iStartDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Start")) iStartDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Start"))
iEndDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("EndUnix")) iEndDataCol = dgSessions.Columns.IndexOf(dgSessions.Columns("EndUnix"))
iEndDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("End")) iEndDisplayCol = dgSessions.Columns.IndexOf(dgSessions.Columns("End"))
iHoursCol = dgSessions.Columns.IndexOf(dgSessions.Columns("Hours"))
'Set Sorting 'Set Sorting
dgSessions.Columns("Start").SortMode = DataGridViewColumnSortMode.Programmatic dgSessions.Columns("Start").SortMode = DataGridViewColumnSortMode.Programmatic
dgSessions.Columns("End").SortMode = DataGridViewColumnSortMode.Programmatic dgSessions.Columns("End").SortMode = DataGridViewColumnSortMode.Programmatic
dgSessions.Columns("Hours").SortMode = DataGridViewColumnSortMode.Programmatic
'Hide Columns 'Hide Columns
dgSessions.Columns("MonitorID").Visible = False dgSessions.Columns("MonitorID").Visible = False
@@ -41,6 +46,10 @@ Public Class frmSessions
Private Sub LoadData() Private Sub LoadData()
Dim oData As DataSet Dim oData As DataSet
Dim sFilter As String Dim sFilter As String
Dim dStart As DateTime
Dim dEnd As DateTime
Dim dHours As Double
Dim dTotalHours As Double
If txtFilter.Text = String.Empty Then If txtFilter.Text = String.Empty Then
oData = mgrSessions.GetSessionRange(dtpStart.Value, dtpEnd.Value) oData = mgrSessions.GetSessionRange(dtpStart.Value, dtpEnd.Value)
@@ -52,9 +61,15 @@ Public Class frmSessions
dgSessions.Rows.Clear() dgSessions.Rows.Clear()
For Each dr As DataRow In oData.Tables(0).Rows For Each dr As DataRow In oData.Tables(0).Rows
dgSessions.Rows.Add(New Object() {dr("MonitorID"), dr("Name"), dr("Start"), mgrCommon.UnixToDate(dr("Start")), dr("End"), mgrCommon.UnixToDate(dr("End"))}) dStart = mgrCommon.UnixToDate(dr("Start"))
dEnd = mgrCommon.UnixToDate(dr("End"))
dHours = Math.Round(dEnd.Subtract(dStart).TotalHours, 2)
dTotalHours += dHours
dgSessions.Rows.Add(New Object() {dr("MonitorID"), dr("Name"), dr("Start"), dStart, dr("End"), dEnd, dHours})
Next Next
lblTotalHours.Text = mgrCommon.FormatString(frmSessions_lblTotalHours, dTotalHours)
dgSessions.AutoResizeColumns() dgSessions.AutoResizeColumns()
End Sub End Sub
@@ -136,35 +151,57 @@ Public Class frmSessions
Private Sub ClearManualSortGlyphs() Private Sub ClearManualSortGlyphs()
dgSessions.Columns(iStartDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None dgSessions.Columns(iStartDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
dgSessions.Columns(iEndDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None dgSessions.Columns(iEndDisplayCol).HeaderCell.SortGlyphDirection = SortOrder.None
dgSessions.Columns(iHoursCol).HeaderCell.SortGlyphDirection = SortOrder.None
End Sub End Sub
Private Function GetSortOrder(ByVal bToggle As Boolean, ByVal iCol As Integer) As ListSortDirection Private Sub DoSort(ByRef bToggle As Boolean, ByVal iCol As Integer, ByVal iType As RowCompareHelper.iDataType)
Dim oSortType As ListSortDirection bToggle = Not bToggle
If bToggle Then If bToggle Then
oSortType = ListSortDirection.Ascending dgSessions.Sort(New RowCompareHelper(SortOrder.Ascending, iCol, iType))
dgSessions.Columns(iCol).HeaderCell.SortGlyphDirection = SortOrder.Ascending dgSessions.Columns(iCol).HeaderCell.SortGlyphDirection = SortOrder.Ascending
Else Else
oSortType = ListSortDirection.Descending dgSessions.Sort(New RowCompareHelper(SortOrder.Descending, iCol, iType))
dgSessions.Columns(iCol).HeaderCell.SortGlyphDirection = SortOrder.Descending dgSessions.Columns(iCol).HeaderCell.SortGlyphDirection = SortOrder.Descending
End If End If
End Sub
Return oSortType
End Function
Private Sub HandleSort(ByVal iCol As Integer) Private Sub HandleSort(ByVal iCol As Integer)
ClearManualSortGlyphs() ClearManualSortGlyphs()
Select Case iCol Select Case iCol
Case iStartDisplayCol Case iStartDisplayCol
bStartSortAsc = Not bStartSortAsc DoSort(bStartSortAsc, iStartDisplayCol, RowCompareHelper.iDataType.DateTimeType)
dgSessions.Sort(dgSessions.Columns(iCol), GetSortOrder(bStartSortAsc, iCol))
Case iEndDisplayCol Case iEndDisplayCol
bEndSortAsc = Not bEndSortAsc DoSort(bEndSortAsc, iEndDisplayCol, RowCompareHelper.iDataType.DateTimeType)
dgSessions.Sort(dgSessions.Columns(iCol), GetSortOrder(bEndSortAsc, iCol)) Case iHoursCol
DoSort(bHoursSortAsc, iHoursCol, RowCompareHelper.iDataType.DecimalType)
End Select End Select
End Sub End Sub
Private Sub ExportGrid()
Dim frm As New frmSessionExport
Dim sLocation As String
frm.ShowDialog()
If frm.DialogResult = DialogResult.OK Then
If frm.XML Then
sLocation = mgrCommon.SaveFileBrowser("Session_Export", frmSessions_ChooseExportLocation, "xml", frmSessions_XML, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmSessions_DefaultExportFileName)
Else
sLocation = mgrCommon.SaveFileBrowser("Session_Export", frmSessions_ChooseExportLocation, "csv", frmSessions_CSV, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), frmSessions_DefaultExportFileName)
End If
If sLocation <> String.Empty Then
If frm.XML Then
mgrSessions.ExportAsXML(sLocation, frm.Unix, dgSessions)
Else
mgrSessions.ExportAsCSV(sLocation, frm.Unix, frm.Headers, dgSessions)
End If
End If
End If
End Sub
Private Sub frmSession_Load(sender As Object, e As EventArgs) Handles MyBase.Load Private Sub frmSession_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetForm() SetForm()
ResetFilterFields() ResetFilterFields()
@@ -210,7 +247,60 @@ Public Class frmSessions
End If End If
End Sub End Sub
Private Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click
ExportGrid()
End Sub
Private Sub dgSessions_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgSessions.ColumnHeaderMouseClick Private Sub dgSessions_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgSessions.ColumnHeaderMouseClick
HandleSort(e.ColumnIndex) HandleSort(e.ColumnIndex)
End Sub End Sub
'The Mono version of the DataGridView control automatically treats all data as a string for sorting purposes.
'This class manually handles column sorting by data type.
Private Class RowCompareHelper
Implements System.Collections.IComparer
'We need to manually define data types as the column ValueType doesn't work in Mono either.
Public Enum iDataType As Integer
StringType = 1
DateTimeType = 2
IntType = 3
DecimalType = 4
End Enum
Private iSortOrderModifier As Integer = 1
Private iSortCol As Integer = 0
Private iDataTypeCol As iDataType = iDataType.StringType
Public Sub New(ByVal sortOrder As SortOrder, ByVal iCol As Integer, ByVal iType As iDataType)
iSortCol = iCol
iDataTypeCol = iType
If sortOrder = SortOrder.Descending Then
iSortOrderModifier = -1
ElseIf sortOrder = SortOrder.Ascending Then
iSortOrderModifier = 1
End If
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim iCompareResult As Integer
Dim dgRow1 As DataGridViewRow = CType(x, DataGridViewRow)
Dim dgRow2 As DataGridViewRow = CType(y, DataGridViewRow)
Select Case iDataTypeCol
Case iDataType.DecimalType
iCompareResult = If(CDec(dgRow1.Cells(iSortCol).Value) < CDec(dgRow2.Cells(iSortCol).Value), -1, 1)
Case iDataType.IntType
iCompareResult = If(CInt(dgRow1.Cells(iSortCol).Value) < CInt(dgRow2.Cells(iSortCol).Value), -1, 1)
Case iDataType.StringType
iCompareResult = String.Compare(CStr(dgRow1.Cells(iSortCol).Value), CStr(dgRow2.Cells(iSortCol).Value))
Case iDataType.DateTimeType
iCompareResult = Date.Compare(CDate(dgRow1.Cells(iSortCol).Value), CDate(dgRow2.Cells(iSortCol).Value))
End Select
Return iCompareResult * iSortOrderModifier
End Function
End Class
End Class End Class
+10
View File
@@ -127,6 +127,7 @@
<Compile Include="Classes\clsSavedPath.vb" /> <Compile Include="Classes\clsSavedPath.vb" />
<Compile Include="Classes\clsSession.vb" /> <Compile Include="Classes\clsSession.vb" />
<Compile Include="Classes\XML Serialize Classes\ExportData.vb" /> <Compile Include="Classes\XML Serialize Classes\ExportData.vb" />
<Compile Include="Classes\XML Serialize Classes\Session.vb" />
<Compile Include="Classes\XML Serialize Classes\Tag.vb" /> <Compile Include="Classes\XML Serialize Classes\Tag.vb" />
<Compile Include="Classes\XML Serialize Classes\Game.vb" /> <Compile Include="Classes\XML Serialize Classes\Game.vb" />
<Compile Include="Classes\clsGameTag.vb" /> <Compile Include="Classes\clsGameTag.vb" />
@@ -170,6 +171,12 @@
<Compile Include="Forms\frmIncludeExclude.vb"> <Compile Include="Forms\frmIncludeExclude.vb">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Forms\frmSessionExport.Designer.vb">
<DependentUpon>frmSessionExport.vb</DependentUpon>
</Compile>
<Compile Include="Forms\frmSessionExport.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\frmSessions.Designer.vb"> <Compile Include="Forms\frmSessions.Designer.vb">
<DependentUpon>frmSessions.vb</DependentUpon> <DependentUpon>frmSessions.vb</DependentUpon>
</Compile> </Compile>
@@ -276,6 +283,9 @@
<EmbeddedResource Include="Forms\frmIncludeExclude.resx"> <EmbeddedResource Include="Forms\frmIncludeExclude.resx">
<DependentUpon>frmIncludeExclude.vb</DependentUpon> <DependentUpon>frmIncludeExclude.vb</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Forms\frmSessionExport.resx">
<DependentUpon>frmSessionExport.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\frmSessions.resx"> <EmbeddedResource Include="Forms\frmSessions.resx">
<DependentUpon>frmSessions.vb</DependentUpon> <DependentUpon>frmSessions.vb</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
+1 -1
View File
@@ -114,7 +114,7 @@ Public Class mgrBackup
sSavePath = VerifySavePath(oGame) sSavePath = VerifySavePath(oGame)
'Calculate space 'Calculate space
lAvailableSpace = mgrCommon.GetAvailableDiskSpace(sBackupFile) lAvailableSpace = mgrCommon.GetAvailableDiskSpace(oSettings.BackupFolder)
lFolderSize = mgrCommon.GetFolderSize(sSavePath, oGame.IncludeArray, oGame.ExcludeArray) lFolderSize = mgrCommon.GetFolderSize(sSavePath, oGame.IncludeArray, oGame.ExcludeArray)
'Show Available Space 'Show Available Space
+126 -1
View File
@@ -1,4 +1,10 @@
Public Class mgrSessions Imports GBM.My.Resources
Imports System.IO
Imports System.Xml.Serialization
Imports System.Globalization
Public Class mgrSessions
Private Shared Function MapToObject(ByVal dr As DataRow) As clsSession Private Shared Function MapToObject(ByVal dr As DataRow) As clsSession
Dim oSession As New clsSession Dim oSession As New clsSession
@@ -123,4 +129,123 @@
Return iRowCount Return iRowCount
End Function End Function
Public Shared Function ExportAsCSV(ByVal sLocation As String, ByVal bUnixTime As Boolean, ByVal bHeaders As Boolean, ByRef dg As DataGridView) As Boolean
Dim oWriter As StreamWriter
Dim sHeader As String
Dim sCurrentRow As String
Dim dDecimal As Decimal
Dim oBannedColumns As New List(Of DataGridViewColumn)
Dim oDecimalColumns As New List(Of DataGridViewColumn)
Dim oNfi As New NumberFormatInfo
'We want to force a specific decimal seperator when exporting CSV files due to certain regions using a comma.
oNfi.NumberDecimalSeparator = "."
Try
oWriter = New StreamWriter(sLocation)
'Set Decimal Columns
oDecimalColumns.Add(dg.Columns("Hours"))
'Set Ban Columns
oBannedColumns.Add(dg.Columns("MonitorID"))
If bUnixTime Then
oBannedColumns.Add(dg.Columns("Start"))
oBannedColumns.Add(dg.Columns("End"))
Else
oBannedColumns.Add(dg.Columns("StartUnix"))
oBannedColumns.Add(dg.Columns("EndUnix"))
End If
'Handle Headers
If bHeaders Then
sHeader = String.Empty
For Each dgCol As DataGridViewColumn In dg.Columns
If Not oBannedColumns.Contains(dgCol) Then
sHeader &= dgCol.HeaderText & ","
End If
Next
sHeader = sHeader.TrimEnd(",")
oWriter.WriteLine(sHeader)
End If
'Handle Rows
For Each dgRow As DataGridViewRow In dg.Rows
sCurrentRow = String.Empty
For Each dgCell As DataGridViewCell In dgRow.Cells
If Not oBannedColumns.Contains(dg.Columns(dgCell.ColumnIndex)) Then
If oDecimalColumns.Contains(dg.Columns(dgCell.ColumnIndex)) Then
dDecimal = CDec(dgCell.Value)
sCurrentRow &= dDecimal.ToString(oNfi) & ","
Else
sCurrentRow &= dgCell.Value.ToString & ","
End If
End If
Next
sCurrentRow = sCurrentRow.TrimEnd(",")
'Don't write a LF on the last row
If dg.Rows.Count = (dgRow.Index + 1) Then
oWriter.Write(sCurrentRow)
Else
oWriter.WriteLine(sCurrentRow)
End If
Next
'Finish up
oWriter.Flush()
oWriter.Close()
mgrCommon.ShowMessage(mgrSessions_ExportSuccess, MsgBoxStyle.Information)
Return True
Catch ex As Exception
mgrCommon.ShowMessage(mgrSessions_ErrorExportFailure, ex.Message, MsgBoxStyle.Exclamation)
Return False
End Try
End Function
Public Shared Function ExportAsXML(ByVal sLocation As String, ByVal bUnixTime As Boolean, ByRef dg As DataGridView) As Boolean
Dim oSerializer As XmlSerializer
Dim oWriter As StreamWriter
Dim oCurrentSession As Session
Dim oSessions As New List(Of Session)
Dim oBannedColumns As New List(Of DataGridViewColumn)
Try
'Format data for export
For Each dgRow As DataGridViewRow In dg.Rows
oCurrentSession = New Session
oCurrentSession.GameName = dgRow.Cells("Name").Value.ToString
If bUnixTime Then
oCurrentSession.StartDate = dgRow.Cells("StartUnix").Value.ToString
oCurrentSession.EndDate = dgRow.Cells("EndUnix").Value.ToString
Else
oCurrentSession.StartDate = dgRow.Cells("Start").Value.ToString
oCurrentSession.EndDate = dgRow.Cells("End").Value.ToString
End If
oCurrentSession.Hours = dgRow.Cells("Hours").Value.ToString
oSessions.Add(oCurrentSession)
Next
'Serialize
oSerializer = New XmlSerializer(oSessions.GetType, New XmlRootAttribute("Sessions"))
oWriter = New StreamWriter(sLocation)
oSerializer.Serialize(oWriter.BaseStream, oSessions)
'Finish up
oWriter.Flush()
oWriter.Close()
mgrCommon.ShowMessage(mgrSessions_ExportSuccess, MsgBoxStyle.Information)
Return True
Catch ex As Exception
mgrCommon.ShowMessage(mgrSessions_ErrorExportFailure, ex.Message, MsgBoxStyle.Exclamation)
Return False
End Try
End Function
End Class End Class
+2 -2
View File
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' by using the '*' as shown below: ' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.6.*")> <Assembly: AssemblyVersion("1.0.7.*")>
<Assembly: AssemblyFileVersion("1.0.6.0")> <Assembly: AssemblyFileVersion("1.0.7.0")>
<Assembly: NeutralResourcesLanguageAttribute("en")> <Assembly: NeutralResourcesLanguageAttribute("en")>
+180
View File
@@ -3624,6 +3624,105 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to &amp;Cancel.
'''</summary>
Friend ReadOnly Property frmSessionExport_btnCancel() As String
Get
Return ResourceManager.GetString("frmSessionExport_btnCancel", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &amp;Export.
'''</summary>
Friend ReadOnly Property frmSessionExport_btnExport() As String
Get
Return ResourceManager.GetString("frmSessionExport_btnExport", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Export Column Headers (CSV).
'''</summary>
Friend ReadOnly Property frmSessionExport_chkCSVHeaders() As String
Get
Return ResourceManager.GetString("frmSessionExport_chkCSVHeaders", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Session Export Options.
'''</summary>
Friend ReadOnly Property frmSessionExport_FormName() As String
Get
Return ResourceManager.GetString("frmSessionExport_FormName", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Date Type.
'''</summary>
Friend ReadOnly Property frmSessionExport_grpDateType() As String
Get
Return ResourceManager.GetString("frmSessionExport_grpDateType", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Export Type.
'''</summary>
Friend ReadOnly Property frmSessionExport_grpExportType() As String
Get
Return ResourceManager.GetString("frmSessionExport_grpExportType", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Other Options.
'''</summary>
Friend ReadOnly Property frmSessionExport_grpOptions() As String
Get
Return ResourceManager.GetString("frmSessionExport_grpOptions", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to CSV.
'''</summary>
Friend ReadOnly Property frmSessionExport_optCSV() As String
Get
Return ResourceManager.GetString("frmSessionExport_optCSV", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Current Locale.
'''</summary>
Friend ReadOnly Property frmSessionExport_optCurrentLocale() As String
Get
Return ResourceManager.GetString("frmSessionExport_optCurrentLocale", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Unix Timestamp.
'''</summary>
Friend ReadOnly Property frmSessionExport_optUnix() As String
Get
Return ResourceManager.GetString("frmSessionExport_optUnix", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to XML.
'''</summary>
Friend ReadOnly Property frmSessionExport_optXML() As String
Get
Return ResourceManager.GetString("frmSessionExport_optXML", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to &amp;Close. ''' Looks up a localized string similar to &amp;Close.
'''</summary> '''</summary>
@@ -3642,6 +3741,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to &amp;Export Grid.
'''</summary>
Friend ReadOnly Property frmSessions_btnExport() As String
Get
Return ResourceManager.GetString("frmSessions_btnExport", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to &amp;Reset Filters. ''' Looks up a localized string similar to &amp;Reset Filters.
'''</summary> '''</summary>
@@ -3651,6 +3759,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Choose a location for the export file.
'''</summary>
Friend ReadOnly Property frmSessions_ChooseExportLocation() As String
Get
Return ResourceManager.GetString("frmSessions_ChooseExportLocation", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to End. ''' Looks up a localized string similar to End.
'''</summary> '''</summary>
@@ -3669,6 +3786,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Hours.
'''</summary>
Friend ReadOnly Property frmSessions_ColumnHours() As String
Get
Return ResourceManager.GetString("frmSessions_ColumnHours", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to MonitorID. ''' Looks up a localized string similar to MonitorID.
'''</summary> '''</summary>
@@ -3696,6 +3822,24 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to CSV.
'''</summary>
Friend ReadOnly Property frmSessions_CSV() As String
Get
Return ResourceManager.GetString("frmSessions_CSV", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Game Session Export.
'''</summary>
Friend ReadOnly Property frmSessions_DefaultExportFileName() As String
Get
Return ResourceManager.GetString("frmSessions_DefaultExportFileName", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Date Range:. ''' Looks up a localized string similar to Date Range:.
'''</summary> '''</summary>
@@ -3714,6 +3858,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Total Hours: [PARAM].
'''</summary>
Friend ReadOnly Property frmSessions_lblTotalHours() As String
Get
Return ResourceManager.GetString("frmSessions_lblTotalHours", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Session Viewer. ''' Looks up a localized string similar to Session Viewer.
'''</summary> '''</summary>
@@ -3723,6 +3876,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to XML.
'''</summary>
Friend ReadOnly Property frmSessions_XML() As String
Get
Return ResourceManager.GetString("frmSessions_XML", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Executable. ''' Looks up a localized string similar to Executable.
'''</summary> '''</summary>
@@ -5509,6 +5671,24 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to An error occured exporting the session data.[BR][BR][PARAM].
'''</summary>
Friend ReadOnly Property mgrSessions_ErrorExportFailure() As String
Get
Return ResourceManager.GetString("mgrSessions_ErrorExportFailure", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to The data has been exported successfully..
'''</summary>
Friend ReadOnly Property mgrSessions_ExportSuccess() As String
Get
Return ResourceManager.GetString("mgrSessions_ExportSuccess", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to An error occured creating a backup of the database file at [PARAM][BR][BR][PARAM]. ''' Looks up a localized string similar to An error occured creating a backup of the database file at [PARAM][BR][BR][PARAM].
'''</summary> '''</summary>
+60
View File
@@ -1948,4 +1948,64 @@
<data name="frmSettings_WarningAdminStart" xml:space="preserve"> <data name="frmSettings_WarningAdminStart" xml:space="preserve">
<value>Please note that GBM will not "Start with Windows" as Administrator.[BR][BR]See the Online Manual in the Help menu for details.</value> <value>Please note that GBM will not "Start with Windows" as Administrator.[BR][BR]See the Online Manual in the Help menu for details.</value>
</data> </data>
<data name="frmSessions_ColumnHours" xml:space="preserve">
<value>Hours</value>
</data>
<data name="frmSessions_lblTotalHours" xml:space="preserve">
<value>Total Hours: [PARAM]</value>
</data>
<data name="frmSessions_ChooseExportLocation" xml:space="preserve">
<value>Choose a location for the export file</value>
</data>
<data name="frmSessions_CSV" xml:space="preserve">
<value>CSV</value>
</data>
<data name="frmSessions_DefaultExportFileName" xml:space="preserve">
<value>Game Session Export</value>
</data>
<data name="frmSessions_XML" xml:space="preserve">
<value>XML</value>
</data>
<data name="mgrSessions_ErrorExportFailure" xml:space="preserve">
<value>An error occured exporting the session data.[BR][BR][PARAM]</value>
</data>
<data name="mgrSessions_ExportSuccess" xml:space="preserve">
<value>The data has been exported successfully.</value>
</data>
<data name="frmSessionExport_btnCancel" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="frmSessionExport_btnExport" xml:space="preserve">
<value>&amp;Export</value>
</data>
<data name="frmSessionExport_chkCSVHeaders" xml:space="preserve">
<value>Export Column Headers (CSV)</value>
</data>
<data name="frmSessionExport_FormName" xml:space="preserve">
<value>Session Export Options</value>
</data>
<data name="frmSessionExport_grpDateType" xml:space="preserve">
<value>Date Type</value>
</data>
<data name="frmSessionExport_grpExportType" xml:space="preserve">
<value>Export Type</value>
</data>
<data name="frmSessionExport_grpOptions" xml:space="preserve">
<value>Other Options</value>
</data>
<data name="frmSessionExport_optCSV" xml:space="preserve">
<value>CSV</value>
</data>
<data name="frmSessionExport_optCurrentLocale" xml:space="preserve">
<value>Current Locale</value>
</data>
<data name="frmSessionExport_optUnix" xml:space="preserve">
<value>Unix Timestamp</value>
</data>
<data name="frmSessionExport_optXML" xml:space="preserve">
<value>XML</value>
</data>
<data name="frmSessions_btnExport" xml:space="preserve">
<value>&amp;Export Grid</value>
</data>
</root> </root>
+12 -20
View File
@@ -1,33 +1,25 @@
Game Backup Monitor v1.0.6 Readme Game Backup Monitor v1.0.7 Readme
http://mikemaximus.github.io/gbm-web/ http://mikemaximus.github.io/gbm-web/
gamebackupmonitor@gmail.com gamebackupmonitor@gmail.com
January 15, 2018 February 2, 2018
New in 1.0.6 New in 1.0.7
All Platforms: All Platforms:
- Session Viewer Updates - Added Hours and Total Hours to the Session Viewer
- The viewer now defaults to show seven days from the last recorded session, instead of all sessions. - An Hours column now shows the time spent each session.
- Fixed issues with date sorting, it will now sort correctly regardless of format. - The Total Hours of the currently displayed sessions is now displayed under the grid.
- The recording of short sessions can now be ignored using a setting.
- Changed setting "Backup only when session time exceeds XX minutes" to "Ignore sessions shorter than XX minutes".
- This setting is now used to ignore recording sessions times (when enabled) in addition to ignoring a backup.
- This setting has been moved to the "General" section.
- This change requires no update from the user, it will function exactly as it did before.
Windows Only: - Added Export feature to the Sessions Viewer
- The session data currently displayed on the grid can be exported in CSV or XML format.
- A warning is now displayed if the "Start with Windows" setting is enabled while GBM is running as administrator. - Dates can be exported in Unix format or the current system format.
- GBM currently will not "Start with Windows" as administrator when this setting is enabled. - The CSV format can exported with or without headers.
- Please see http://mikemaximus.github.io/gbm-web/gbm_task_scheduler.html for a work-around.
Linux Only: Linux Only:
- Enhanced makefile and added start script for Linux installations (basxto) - A low disk space warning will no longer be displayed on every backup.
- GBM is now available on the archlinux user repository. https://aur.archlinux.org/packages/gbm/ (basxto) - Fixed the column sorting issues on the Session Viewer.
- GBM is now available as a deb package for installation. (basxto)
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html