1
-
2
- using System ;
1
+ using System ;
3
2
using System . Collections . Generic ;
4
3
using System . Drawing ;
5
4
using System . IO ;
6
5
using System . Linq ;
7
6
using System . Windows . Forms ;
8
-
9
7
using WzVisualizer . GUI . Controls ;
10
8
using WzVisualizer . IO ;
11
9
using WzVisualizer . Properties ;
12
10
using WzVisualizer . Util ;
13
11
14
12
namespace WzVisualizer . GUI {
15
- internal delegate void AddGridRowCallBack ( DataGridView grid , BinData binData ) ;
13
+ delegate void AddGridRowCallBack ( DataGridView grid , BinData binData ) ;
16
14
17
15
public partial class MainForm : Form {
18
- internal readonly SearchForm SearchForm = new ( ) ;
19
16
20
- private readonly FolderBrowserDialog folderBrowser = new ( ) ;
21
- private readonly PropertiesViewer viewer = new ( ) ;
22
- public bool LoadAll { get ; set ; }
17
+ private readonly PropertiesViewer _viewer = new ( ) ;
18
+ internal readonly SearchForm SearchForm = new ( ) ;
23
19
24
20
public MainForm ( ) {
25
21
InitializeComponent ( ) ;
26
22
27
- // set the default path to the current directory
28
- wzPathTextbox . Text = Directory . GetCurrentDirectory ( ) ;
29
-
30
23
AddOwnedForm ( SearchForm ) ;
31
24
SearchForm . Location = new Point ( Right - SearchForm . Width - 5 , Top + SearchForm . Height / 2 ) ;
32
25
LocationChanged += ( o , args ) => SearchForm . Location = new Point ( Right - SearchForm . Width - 5 , Top + SearchForm . Height / 2 ) ;
33
- SearchForm . searchButton . Click += ( o , args ) => OnTabControlChanged ( ) ;
26
+ SearchForm . searchButton . Click += ( o , args ) => LoadCurrentTabPage ( ) ;
34
27
}
35
-
36
- public string SearchQuery => searchTextbox . Text ;
28
+ public bool LoadAll { get ; set ; }
29
+ public string SearchQuery => SearchForm . SearchBox . Text ;
37
30
38
31
/// <summary>
39
32
/// recursively add event handlers to all DataViewport components
@@ -55,10 +48,15 @@ private void AddEventHandlers(TabControl tab) {
55
48
}
56
49
}
57
50
58
- public DataViewport GetCurrentDataViewport ( ) {
51
+ public TabPage GetCurrentTabPage ( ) {
59
52
var main = TabControlMain . SelectedTab ;
60
53
var sub = ( main . Controls [ 0 ] is TabControl tc ? tc . SelectedTab : main ) ;
61
- return ( DataViewport ) sub . Controls [ 0 ] ;
54
+ return sub ;
55
+ }
56
+
57
+ public DataViewport GetCurrentDataViewport ( ) {
58
+ var tab = GetCurrentTabPage ( ) ;
59
+ return ( DataViewport ) tab . Controls [ 0 ] ;
62
60
}
63
61
64
62
/// <summary>
@@ -77,29 +75,83 @@ private void LoadWzData() {
77
75
TabControlMain . SelectedIndex = i ;
78
76
VisualizerUtil . ProcessTab ( i , this ) ;
79
77
}
80
- BtnSave_Click ( null , new MouseEventArgs ( MouseButtons . Left , 0 , 0 , 0 , 0 ) ) ;
81
- return ;
78
+ SaveBinary ( true ) ;
79
+ } else {
80
+ VisualizerUtil . ProcessTab ( TabControlMain . SelectedIndex , this ) ;
81
+ }
82
+ }
83
+
84
+ internal void LoadCurrentTabPage ( ) {
85
+ ClearAllPages ( TabControlMain ) ;
86
+
87
+ var main = TabControlMain . SelectedTab ;
88
+ var tab = GetCurrentTabPage ( ) ;
89
+ var dv = GetCurrentDataViewport ( ) ;
90
+ BinaryDataUtil . ImportGrid ( $ "{ main . Text } /{ tab . Text } .bin", dv , ( grid , data ) => VisualizerUtil . AddNewRow ( this , grid , data ) ) ;
91
+ }
92
+
93
+ private void ExportPictures ( ) {
94
+ for ( var i = 0 ; i < TabControlMain . TabCount ; i ++ ) {
95
+ // changing the selected tab will trigger the TabControl_Selected event
96
+ // which will prepare the data for us to export
97
+ TabControlMain . SelectedIndex = i ;
98
+ BinaryDataUtil . ExportPictures ( TabControlMain . TabPages [ i ] , TabControlMain . TabPages [ i ] . Text ) ;
99
+ }
100
+ MessageBox . Show ( Resources . CompleteSaveImages , Resources . SaveComplete ) ;
101
+ }
102
+
103
+ /// <summary>
104
+ /// Clear all DataViewport grids to allow re-populating data, especially when search queries are present
105
+ /// </summary>
106
+ private void ClearAllPages ( TabControl tabControl , bool clearData = false ) {
107
+ foreach ( TabPage page in tabControl . TabPages ) {
108
+ switch ( page . Controls [ 0 ] ) {
109
+ case DataViewport dv : {
110
+ if ( clearData ) dv . Data . Clear ( ) ;
111
+ dv . GridView . Rows . Clear ( ) ;
112
+ break ;
113
+ }
114
+ case TabControl tc :
115
+ if ( tc == TabControlMain && tc . SelectedTab == TabControlMain . SelectedTab )
116
+ break ;
117
+ ClearAllPages ( tc ) ;
118
+ break ;
119
+ }
120
+ }
121
+ GC . Collect ( ) ;
122
+ }
123
+
124
+ /// <summary>
125
+ /// upon clicking the save button, store data of the current opened grid.
126
+ /// Some tabs may have another TabControl in which that Control contains a Grid control.
127
+ /// </summary>
128
+ private void SaveBinary ( bool everything ) {
129
+ if ( everything ) {
130
+ for ( var i = 0 ; i < TabControlMain . TabCount ; i ++ ) {
131
+ TabControlMain . SelectedIndex = i ;
132
+ BinaryDataUtil . ExportBinary ( TabControlMain . TabPages [ i ] , TabControlMain . SelectedTab . Text ) ;
133
+ }
134
+ } else {
135
+ var selectedTab = GetCurrentTabPage ( ) ;
136
+ BinaryDataUtil . ExportBinary ( selectedTab , TabControlMain . SelectedTab . Text ) ;
82
137
}
83
138
84
- VisualizerUtil . ProcessTab ( TabControlMain . SelectedIndex , this ) ;
139
+ MessageBox . Show ( Resources . CompleteSaveBIN , Resources . SaveComplete ) ;
140
+ LoadAll = false ;
85
141
}
86
142
87
143
/// <summary>
88
144
/// Begin loading WZ data corresponding to the selected tab
89
145
/// </summary>
90
- private void BtnWzLoad_Click ( object sender , EventArgs e ) {
146
+ private void VerifyWzFolder ( string path ) {
91
147
ClearAllPages ( TabControlMain , true ) ;
92
148
DisposeWzFiles ( ) ;
93
149
94
- LoadAll = ModifierKeys == Keys . Shift ;
95
-
96
150
if ( LoadAll ) {
97
- var result = MessageBox . Show ( Resources . MassReadWarning , "Warning" , MessageBoxButtons . YesNo ) ;
151
+ var result = MessageBox . Show ( Resources . MassReadWarning , @ "Warning", MessageBoxButtons . YesNo ) ;
98
152
if ( result != DialogResult . Yes ) return ;
99
153
}
100
154
101
- var path = wzPathTextbox . Text ;
102
-
103
155
if ( ! path . Equals ( Settings . Default . PathCache ) ) {
104
156
Settings . Default . PathCache = path ;
105
157
Settings . Default . Save ( ) ;
@@ -157,49 +209,6 @@ private void BtnWzLoad_Click(object sender, EventArgs e) {
157
209
MessageBox . Show ( Resources . GameFilesNotFound , Resources . FileNotFound , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
158
210
}
159
211
160
- void ExportBinary ( TabControl tab , bool saveAll = false ) {
161
- var selectedTab = tab . SelectedTab ;
162
- if ( saveAll ) {
163
- for ( var i = 0 ; i < TabControlMain . TabCount ; i ++ ) {
164
- TabControlMain . SelectedIndex = i ;
165
- BinaryDataUtil . ExportBinary ( TabControlMain . TabPages [ i ] , TabControlMain . TabPages [ i ] . Text ) ;
166
- }
167
- } else BinaryDataUtil . ExportBinary ( selectedTab , selectedTab . Text ) ;
168
- }
169
-
170
- void ExportPictures ( TabControl tab , bool saveAll = false ) {
171
- var selectedTab = tab . SelectedTab ;
172
- if ( saveAll ) {
173
- for ( var i = 0 ; i < TabControlMain . TabCount ; i ++ ) {
174
- TabControlMain . SelectedIndex = i ;
175
- BinaryDataUtil . ExportPictures ( TabControlMain . TabPages [ i ] , TabControlMain . TabPages [ i ] . Text ) ;
176
- }
177
- } else BinaryDataUtil . ExportPictures ( selectedTab , selectedTab . Text ) ;
178
- }
179
-
180
- /// <summary>
181
- /// upon clicking the save button, store data of the current opened grid.
182
- /// Some tabs may have another TabControl in which that Control contains a Grid control.
183
- /// </summary>
184
- private void BtnSave_Click ( object sender , EventArgs ev ) {
185
- var button = ( ( MouseEventArgs ) ev ) . Button ;
186
- var saveAll = LoadAll || ModifierKeys == Keys . Shift ;
187
-
188
- if ( ! LoadAll && saveAll ) {
189
- var result = MessageBox . Show ( Resources . MassWriteWarning , "Warning" , MessageBoxButtons . YesNo ) ;
190
- if ( result != DialogResult . Yes ) return ;
191
- }
192
-
193
- ExportBinary ( TabControlMain , saveAll ) ;
194
- MessageBox . Show ( Resources . CompleteSaveBIN , "Save Complete" ) ;
195
- LoadAll = false ;
196
- }
197
-
198
- private void BtnExport_Click ( object sender , EventArgs e ) {
199
- ExportPictures ( TabControlMain , true ) ;
200
- MessageBox . Show ( Resources . CompleteSaveImages , "Save Complete" ) ;
201
- }
202
-
203
212
/// <summary>
204
213
/// Update the Window's clipboard when a cell is selected
205
214
/// </summary>
@@ -245,100 +254,77 @@ private void Grid_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
245
254
cell . OwningRow . Height = bmp . Height + 15 ;
246
255
break ;
247
256
case 3 :
248
- viewer . SetProperties ( ( string ) ( ( DataGridView ) sender ) . SelectedCells [ 0 ] . Value ) ;
249
- if ( ! viewer . Visible ) {
250
- viewer . Height = Height ;
251
- viewer . StartPosition = FormStartPosition . Manual ;
257
+ _viewer . SetProperties ( ( string ) ( ( DataGridView ) sender ) . SelectedCells [ 0 ] . Value ) ;
258
+ if ( ! _viewer . Visible ) {
259
+ _viewer . Height = Height ;
260
+ _viewer . StartPosition = FormStartPosition . Manual ;
252
261
253
- viewer . Left = Right ;
254
- viewer . Top = Top ;
262
+ _viewer . Left = Right ;
263
+ _viewer . Top = Top ;
255
264
}
256
- viewer . Show ( ) ;
257
- viewer . BringToFront ( ) ;
265
+ _viewer . Show ( ) ;
266
+ _viewer . BringToFront ( ) ;
258
267
break ;
259
268
}
260
269
}
261
270
262
- /// <summary>
263
- /// Open the FolderBrowser dialog window when the text box is clicked and set the selected
264
- /// directory as the root folder containing WZ files
265
- /// </summary>
266
- private void TextWzPath_Click ( object sender , EventArgs e ) {
267
- if ( folderBrowser . ShowDialog ( ) != DialogResult . OK ) return ;
268
- wzPathTextbox . Text = folderBrowser . SelectedPath ;
269
- }
270
-
271
-
272
- private void SearchTextBox_KeyPress ( object sender , KeyPressEventArgs e ) {
273
- if ( e . KeyChar == 13 ) {
274
- OnTabControlChanged ( ) ;
275
- }
276
- }
277
-
278
- internal void MainForm_KeyDown ( object sender , KeyEventArgs e ) {
279
- LoadAll = ModifierKeys == Keys . Shift ;
280
- saveButton . Text = LoadAll ? "Save All" : "Save" ;
281
- loadButton . Text = LoadAll ? "Load All" : "Load" ;
282
- searchButton . Text = LoadAll ? "Options" : "Search" ;
283
- }
284
-
285
- internal void MainForm_KeyUp ( object sender , KeyEventArgs e ) {
286
- LoadAll = ModifierKeys == Keys . Shift ;
287
- saveButton . Text = LoadAll ? "Save All" : "Save" ;
288
- loadButton . Text = LoadAll ? "Load All" : "Load" ;
289
- searchButton . Text = LoadAll ? "Options" : "Search" ;
290
- }
291
-
292
271
private void MainForm_Load ( object sender , EventArgs e ) {
293
- // Obtain the last used WZ root directory
294
- wzPathTextbox . Text = Settings . Default . PathCache ;
295
-
296
272
TabControlMain . Selected += TabControl_Selected ;
297
273
AddEventHandlers ( TabControlMain ) ;
298
274
299
- OnTabControlChanged ( ) ;
275
+ LoadCurrentTabPage ( ) ;
300
276
}
301
277
302
278
private void TabControl_Selected ( object sender , TabControlEventArgs e ) {
303
- OnTabControlChanged ( ) ;
279
+ LoadCurrentTabPage ( ) ;
304
280
}
305
281
306
- private void BtnSearch_Click ( object sender , EventArgs e ) {
307
- if ( ModifierKeys == Keys . Shift ) {
308
- SearchForm . Show ( ) ;
309
- } else {
310
- // re-load the tab, but this time we should have a search query
311
- OnTabControlChanged ( ) ;
282
+ private void OnLoadCurrentTabPage ( object sender , EventArgs e ) {
283
+ LoadAll = false ;
284
+
285
+ var folderDlg = new FolderBrowserDialog {
286
+ Description = "Select a folder" ,
287
+ ShowNewFolderButton = false ,
288
+ SelectedPath = Settings . Default . PathCache
289
+ } ;
290
+ if ( folderDlg . ShowDialog ( ) == DialogResult . OK ) {
291
+ VerifyWzFolder ( folderDlg . SelectedPath ) ;
312
292
}
313
293
}
294
+ private void OnLoadEverything ( object sender , EventArgs e ) {
295
+ LoadAll = true ;
296
+
297
+ var folderDlg = new FolderBrowserDialog {
298
+ Description = "Select a folder" ,
299
+ ShowNewFolderButton = false ,
300
+ SelectedPath = Settings . Default . PathCache
301
+ } ;
302
+ if ( folderDlg . ShowDialog ( ) == DialogResult . OK ) {
303
+ VerifyWzFolder ( folderDlg . SelectedPath ) ;
304
+ }
305
+ }
306
+ private void OnSaveCurrentTabPage ( object sender , EventArgs e ) {
307
+ SaveBinary ( false ) ;
308
+ }
309
+ private void OnSaveEverything ( object sender , EventArgs e ) {
310
+ var result = MessageBox . Show ( Resources . MassWriteWarning , "Warning" , MessageBoxButtons . YesNo ) ;
311
+ if ( result != DialogResult . Yes ) return ;
314
312
315
- private void OnTabControlChanged ( ) {
316
- ClearAllPages ( TabControlMain ) ;
313
+ SaveBinary ( true ) ;
314
+ }
315
+ private void OnExportPictures ( object sender , EventArgs e ) {
316
+ ExportPictures ( ) ;
317
+ }
318
+ private void OnShowSearchForm ( object sender , EventArgs e ) {
319
+ SearchForm . Show ( ) ;
320
+ }
317
321
318
- var main = TabControlMain . SelectedTab ;
319
- var dv = GetCurrentDataViewport ( ) ;
320
- BinaryDataUtil . ImportGrid ( $ "{ main . Text } /{ dv . Parent . Text } .bin", dv , ( grid , data ) => VisualizerUtil . AddNewRow ( this , grid , data ) ) ;
322
+ private void OnOpenningMainToolstrip ( object sender , EventArgs e ) {
323
+ OpenCurrentMenuItem . Text = $ "Load { GetCurrentTabPage ( ) . Text } ";
321
324
}
322
325
323
- /// <summary>
324
- /// Clear all DataViewport grids to allow re-populating data, especially when search queries are present
325
- /// </summary>
326
- private void ClearAllPages ( TabControl tabControl , bool clearData = false ) {
327
- foreach ( TabPage page in tabControl . TabPages ) {
328
- switch ( page . Controls [ 0 ] ) {
329
- case DataViewport dv : {
330
- if ( clearData ) dv . Data . Clear ( ) ;
331
- dv . GridView . Rows . Clear ( ) ;
332
- break ;
333
- }
334
- case TabControl tc :
335
- if ( tc == TabControlMain && tc . SelectedTab == TabControlMain . SelectedTab )
336
- break ;
337
- ClearAllPages ( tc ) ;
338
- break ;
339
- }
340
- }
341
- GC . Collect ( ) ;
326
+ private void exportTocsvToolStripMenuItem_Click ( object sender , EventArgs e ) {
327
+ BinaryDataUtil . ExportCSV ( GetCurrentTabPage ( ) , GetCurrentTabPage ( ) . Text ) ;
342
328
}
343
329
}
344
- }
330
+ }
0 commit comments