Skip to content

Commit f4db70c

Browse files
committed
Column widths and visibility is now saved and restored
1 parent e143bb8 commit f4db70c

File tree

23 files changed

+992
-219
lines changed

23 files changed

+992
-219
lines changed

src/Logbert/App.config

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,6 @@
135135
<setting name="FontStyleFatal" serializeAs="String">
136136
<value>Regular</value>
137137
</setting>
138-
<setting name="WaitCursorTimeout" serializeAs="String">
139-
<value>250</value>
140-
</setting>
141138
<setting name="PnlSyslogSettingsInterface" serializeAs="String">
142139
<value />
143140
</setting>
@@ -384,6 +381,75 @@
384381
<setting name="DockLayoutWinDebugReceiver" serializeAs="String">
385382
<value />
386383
</setting>
384+
<setting name="ColumnVisibleLog4NetDirReceiver" serializeAs="String">
385+
<value>1,1,1,1,1,1</value>
386+
</setting>
387+
<setting name="ColumnWidthLog4NetDirReceiver" serializeAs="String">
388+
<value>100,100,100,100,100,1024</value>
389+
</setting>
390+
<setting name="ColumnVisibleLog4NetUdpReceiver" serializeAs="String">
391+
<value>1,1,1,1,1,1</value>
392+
</setting>
393+
<setting name="ColumnVisibleLog4NetFileReceiver" serializeAs="String">
394+
<value>1,1,1,1,1,1</value>
395+
</setting>
396+
<setting name="ColumnWidthLog4NetUdpReceiver" serializeAs="String">
397+
<value>100,100,100,100,100,1024</value>
398+
</setting>
399+
<setting name="ColumnWidthLog4NetFileReceiver" serializeAs="String">
400+
<value>100,100,100,100,100,1024</value>
401+
</setting>
402+
<setting name="ColumnVisibleNLogDirReceiver" serializeAs="String">
403+
<value>1,1,1,1,1,1</value>
404+
</setting>
405+
<setting name="ColumnVisibleNLogFileReceiver" serializeAs="String">
406+
<value>1,1,1,1,1,1</value>
407+
</setting>
408+
<setting name="ColumnVisibleNLogTcpReceiver" serializeAs="String">
409+
<value>1,1,1,1,1,1</value>
410+
</setting>
411+
<setting name="ColumnVisibleNLogUdpReceiver" serializeAs="String">
412+
<value>1,1,1,1,1,1</value>
413+
</setting>
414+
<setting name="ColumnWidthNLogDirReceiver" serializeAs="String">
415+
<value>100,100,100,100,100,1024</value>
416+
</setting>
417+
<setting name="ColumnWidthNLogFileReceiver" serializeAs="String">
418+
<value>100,100,100,100,100,1024</value>
419+
</setting>
420+
<setting name="ColumnWidthNLogTcpReceiver" serializeAs="String">
421+
<value>100,100,100,100,100,1024</value>
422+
</setting>
423+
<setting name="ColumnWidthNLogUdpReceiver" serializeAs="String">
424+
<value>100,100,100,100,100,1024</value>
425+
</setting>
426+
<setting name="ColumnVisibleEventlogReceiver" serializeAs="String">
427+
<value>1,1,1,1,1,1,1,1</value>
428+
</setting>
429+
<setting name="ColumnWidthEventlogReceiver" serializeAs="String">
430+
<value>100,100,100,100,100,100,100,1024</value>
431+
</setting>
432+
<setting name="ColumnVisibleSyslogFileReceiver" serializeAs="String">
433+
<value>1,1,1,1,1,1,1</value>
434+
</setting>
435+
<setting name="ColumnWidthSyslogFileReceiver" serializeAs="String">
436+
<value>100,100,100,100,100,100,1024</value>
437+
</setting>
438+
<setting name="ColumnVisibleSyslogUdpReceiver" serializeAs="String">
439+
<value>1,1,1,1,1,1,1</value>
440+
</setting>
441+
<setting name="ColumnWidthSyslogUdpReceiver" serializeAs="String">
442+
<value>100,100,100,100,100,100,1024</value>
443+
</setting>
444+
<setting name="ColumnVisibleWinDebugReceiver" serializeAs="String">
445+
<value>1,1,1,1,1</value>
446+
</setting>
447+
<setting name="ColumnWidthWinDebugReceiver" serializeAs="String">
448+
<value>100,100,100,100,1024</value>
449+
</setting>
450+
<setting name="WaitCursorTimeout" serializeAs="String">
451+
<value>1000</value>
452+
</setting>
387453
</Com.Couchcoding.Logbert.Properties.Settings>
388454
</userSettings>
389455
<applicationSettings>

src/Logbert/Dialogs/Docking/FrmLogDocument.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,9 @@ protected override void Dispose(bool disposing)
930930

931931
if (memStream.Length > 0)
932932
{
933-
mLogProvider.SaveLayout(Encoding.UTF8.GetString(memStream.ToArray()));
933+
mLogProvider.SaveLayout(
934+
Encoding.UTF8.GetString(memStream.ToArray())
935+
, ((FrmLogWindow)mLogWindow).GetColumnLayout());
934936
}
935937
}
936938
}

src/Logbert/Dialogs/Docking/FrmLogWindow.cs

Lines changed: 74 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -333,30 +333,23 @@ private void InitializeColumns(ILogProvider logProvider)
333333
, SortMode = DataGridViewColumnSortMode.Programmatic
334334
});
335335

336-
foreach (KeyValuePair<int, string> columnData in logProvider.Columns)
336+
foreach (KeyValuePair<int, LogColumnData> columnData in logProvider.Columns)
337337
{
338338
DataGridViewColumn clmHdr = new DataGridViewTextBoxColumn
339339
{
340340
Tag = columnData.Key
341-
, HeaderText = columnData.Value
341+
, HeaderText = columnData.Value.Name
342+
, Width = columnData.Value.Width
343+
, Visible = columnData.Value.Visible
342344
, SortMode = DataGridViewColumnSortMode.Programmatic
343345
};
344346

345347
dtgLogMessages.Columns.Add(clmHdr);
346-
347-
// Set a default width to the column.
348-
clmHdr.Width = 100;
349348
}
350349
}
351350
finally
352351
{
353352
dtgLogMessages.ResumeDrawing();
354-
355-
if (dtgLogMessages.ColumnCount > 0)
356-
{
357-
// Initial strech the last column.
358-
dtgLogMessages.Columns[dtgLogMessages.ColumnCount - 1].Width = 1024;
359-
}
360353
}
361354
}
362355
}
@@ -578,6 +571,59 @@ private void DtgLogMessagesRowHeightInfoNeeded(object sender, DataGridViewRowHei
578571
}
579572
}
580573

574+
private void dtgLogMessages_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
575+
{
576+
if (e.Button == MouseButtons.Right && e.RowIndex >= 0)
577+
{
578+
cmLogMessage.Show(
579+
this
580+
, PointToClient(Cursor.Position));
581+
}
582+
}
583+
584+
private void dtgLogMessages_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
585+
{
586+
if (e.Button == MouseButtons.Right && e.RowIndex >= 0)
587+
{
588+
dtgLogMessages.Rows[e.RowIndex].Selected = true;
589+
}
590+
}
591+
592+
private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)
593+
{
594+
IDataObject clipboardData = dtgLogMessages.GetClipboardContent();
595+
596+
if (clipboardData != null)
597+
{
598+
Clipboard.SetDataObject(clipboardData);
599+
}
600+
}
601+
602+
private void synchronizeTreeToolStripMenuItem_Click(object sender, EventArgs e)
603+
{
604+
LogMessage selectedMessage = mFilteredLogMessages[dtgLogMessages.SelectedRows[0].Index] as LogMessage;
605+
606+
if (selectedMessage != null)
607+
{
608+
mLogcontainer.SynchronizeTree(selectedMessage);
609+
}
610+
}
611+
612+
private void CmsToggleBookmarkClick(object sender, EventArgs e)
613+
{
614+
LogMessage selectedMessage = mFilteredLogMessages[dtgLogMessages.SelectedRows[0].Index] as LogMessage;
615+
616+
// Toggle the bookmark state.
617+
if (mBookmarks.Contains(selectedMessage))
618+
{
619+
RemoveBookmark(selectedMessage);
620+
}
621+
else
622+
{
623+
AddBookmark(selectedMessage);
624+
}
625+
}
626+
581627
/// <summary>
582628
/// Handles the SettingChanging event of the <see cref="Application"/>.
583629
/// </summary>
@@ -1104,6 +1150,23 @@ public void SearchLogMessage(string pattern, bool searchForward = true, bool sea
11041150
}
11051151
}
11061152

1153+
public List<LogColumnData> GetColumnLayout()
1154+
{
1155+
List<LogColumnData> columnLayout = new List<LogColumnData>();
1156+
1157+
foreach (DataGridViewColumn column in dtgLogMessages.Columns)
1158+
{
1159+
if ((int)column.Tag == -1)
1160+
{
1161+
continue;
1162+
}
1163+
1164+
columnLayout.Add(new LogColumnData(column.HeaderText, column.Visible, column.Width));
1165+
}
1166+
1167+
return columnLayout;
1168+
}
1169+
11071170
#endregion
11081171

11091172
#region Constructor
@@ -1175,57 +1238,5 @@ public FrmLogWindow(ILogProvider logProvider, ILogContainer logContainer)
11751238

11761239
#endregion
11771240

1178-
private void dtgLogMessages_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
1179-
{
1180-
if (e.Button == MouseButtons.Right && e.RowIndex >= 0)
1181-
{
1182-
cmLogMessage.Show(
1183-
this
1184-
, PointToClient(Cursor.Position));
1185-
}
1186-
}
1187-
1188-
private void dtgLogMessages_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
1189-
{
1190-
if (e.Button == MouseButtons.Right && e.RowIndex >= 0)
1191-
{
1192-
dtgLogMessages.Rows[e.RowIndex].Selected = true;
1193-
}
1194-
}
1195-
1196-
private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)
1197-
{
1198-
IDataObject clipboardData = dtgLogMessages.GetClipboardContent();
1199-
1200-
if (clipboardData != null)
1201-
{
1202-
Clipboard.SetDataObject(clipboardData);
1203-
}
1204-
}
1205-
1206-
private void synchronizeTreeToolStripMenuItem_Click(object sender, EventArgs e)
1207-
{
1208-
LogMessage selectedMessage = mFilteredLogMessages[dtgLogMessages.SelectedRows[0].Index] as LogMessage;
1209-
1210-
if (selectedMessage != null)
1211-
{
1212-
mLogcontainer.SynchronizeTree(selectedMessage);
1213-
}
1214-
}
1215-
1216-
private void CmsToggleBookmarkClick(object sender, EventArgs e)
1217-
{
1218-
LogMessage selectedMessage = mFilteredLogMessages[dtgLogMessages.SelectedRows[0].Index] as LogMessage;
1219-
1220-
// Toggle the bookmark state.
1221-
if (mBookmarks.Contains(selectedMessage))
1222-
{
1223-
RemoveBookmark(selectedMessage);
1224-
}
1225-
else
1226-
{
1227-
AddBookmark(selectedMessage);
1228-
}
1229-
}
12301241
}
12311242
}

src/Logbert/Dialogs/FrmAddEditFilter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#endregion
3030

3131
using Com.Couchcoding.GuiLibrary.Dialogs;
32+
using Com.Couchcoding.Logbert.Helper;
3233
using Com.Couchcoding.Logbert.Interfaces;
3334
using Com.Couchcoding.Logbert.Logging.Filter;
3435
using Com.Couchcoding.Logbert.Properties;
@@ -124,9 +125,9 @@ public FrmAddEditFilter(ILogProvider logProvider, LogFilterColumn filterToEdit)
124125

125126
if (logProvider != null)
126127
{
127-
foreach (string columnName in logProvider.Columns.Values)
128+
foreach (LogColumnData columnName in logProvider.Columns.Values)
128129
{
129-
cmbColumnToFilter.Items.Add(columnName);
130+
cmbColumnToFilter.Items.Add(columnName.Name);
130131
}
131132

132133
if (cmbColumnToFilter.Items.Count > 0)
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#region Copyright © 2018 Couchcoding
2+
3+
// File: LogColumnData.cs
4+
// Package: Logbert
5+
// Project: Logbert
6+
//
7+
// The MIT License (MIT)
8+
//
9+
// Copyright (c) 2018 Couchcoding
10+
//
11+
// Permission is hereby granted, free of charge, to any person obtaining a copy
12+
// of this software and associated documentation files (the "Software"), to deal
13+
// in the Software without restriction, including without limitation the rights
14+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15+
// copies of the Software, and to permit persons to whom the Software is
16+
// furnished to do so, subject to the following conditions:
17+
//
18+
// The above copyright notice and this permission notice shall be included in
19+
// all copies or substantial portions of the Software.
20+
//
21+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27+
// THE SOFTWARE.
28+
29+
#endregion
30+
31+
namespace Com.Couchcoding.Logbert.Helper
32+
{
33+
/// <summary>
34+
/// Implements a class to store log column specific data.
35+
/// </summary>
36+
public sealed class LogColumnData
37+
{
38+
#region Public Properties
39+
40+
/// <summary>
41+
/// Gets the name of the log column.
42+
/// </summary>
43+
public string Name
44+
{
45+
get;
46+
}
47+
48+
/// <summary>
49+
/// Gets the visibility state of the log column.
50+
/// </summary>
51+
public bool Visible
52+
{
53+
get;
54+
}
55+
56+
/// <summary>
57+
/// Gets the width of the log column.
58+
/// </summary>
59+
public int Width
60+
{
61+
get;
62+
}
63+
64+
#endregion
65+
66+
#region Constructor
67+
68+
/// <summary>
69+
/// Initializes a new instance of the <see cref="LogColumnData"/> with the specified parameters.
70+
/// </summary>
71+
/// <param name="name">The name of the log column.</param>
72+
/// <param name="visible">The visibility state of the log column.</param>
73+
/// <param name="width">The width of the log column.</param>
74+
public LogColumnData(string name, bool visible = true, int width = 100)
75+
{
76+
Name = name ?? string.Empty;
77+
Visible = visible;
78+
Width = width;
79+
}
80+
81+
#endregion
82+
}
83+
}

0 commit comments

Comments
 (0)