@@ -48,6 +48,22 @@ public class NPWindowState
4848 /// </summary>
4949 public List < byte [ ] > Tabs { get ; private set ; }
5050 /// <summary>
51+ ///
52+ /// </summary>
53+ public string TabsList
54+ {
55+ get
56+ {
57+ List < string > gsList = new List < string > ( ) ;
58+ foreach ( var t in Tabs )
59+ {
60+ gsList . Add ( ( new Guid ( t ) ) . ToString ( ) ) ;
61+
62+ }
63+ return String . Join ( ", " , gsList . ToArray ( ) ) ;
64+ }
65+ }
66+ /// <summary>
5167 /// Top left X/Y coordinates
5268 /// </summary>
5369 public WindowXY TopLeftCoords { get ; private set ; }
@@ -170,108 +186,27 @@ public void ChangeActiveTab(int NewActiveTab)
170186 /// <summary>
171187 ///
172188 /// </summary>
173- /// <param name="NewTabs "></param>
174- public void WriteTabList ( List < byte [ ] > NewTabs )
189+ /// <param name="newTabs "></param>
190+ public void WriteTabList ( List < byte [ ] > newTabs )
175191 {
176- using ( MemoryStream stream = new MemoryStream ( bytes ) )
177- {
178- using ( MemoryStream outStream = new MemoryStream ( ) )
179- {
180- using ( BinaryReader reader = new BinaryReader ( stream ) )
181- {
182- using ( BinaryWriter writer = new BinaryWriter ( outStream ) )
183- {
184- var hdr = reader . ReadBytes ( 2 ) ;
185- writer . Write ( hdr ) ;
186- string hdrType = Encoding . ASCII . GetString ( hdr ) ;
187- if ( hdrType == "NP" )
188- {
189- CRC32Check c = new CRC32Check ( ) ;
192+ NumberTabs = ( ulong ) newTabs . Count ;
193+ Tabs = newTabs ;
190194
191- reader . ReadLEB128Unsigned ( ) ;
192- writer . Write ( SequenceNumber . WriteLEB128Unsigned ( ) ) ;
193- c . AddBytes ( SequenceNumber ) ;
194-
195- reader . ReadLEB128Unsigned ( ) ;
196- writer . Write ( BytesToCRC ) ;
197- c . AddBytes ( BytesToCRC ) ;
198-
199-
200- var delim = reader . ReadBytes ( 1 ) ;
201- writer . Write ( delim ) ;
202- c . AddBytes ( delim ) ;
203-
204- var OriginalNumberTabs = reader . ReadLEB128Unsigned ( ) ;
205- NumberTabs = ( ulong ) NewTabs . Count ;
206-
207- writer . Write ( NumberTabs . WriteLEB128Unsigned ( ) ) ;
208- c . AddBytes ( NumberTabs ) ;
209-
210- reader . ReadBytes ( ( int ) OriginalNumberTabs * 16 ) ;
211-
212- for ( int x = 0 ; x < ( int ) NumberTabs ; x ++ )
213- {
214- writer . Write ( Tabs [ x ] ) ;
215- c . AddBytes ( Tabs [ x ] ) ;
216- }
217-
218- reader . ReadLEB128Unsigned ( ) ;
219- writer . Write ( ActiveTab . WriteLEB128Unsigned ( ) ) ;
220- c . AddBytes ( ActiveTab ) ;
221-
222- var tlc1 = reader . ReadUInt32 ( ) ;
223- writer . Write ( tlc1 ) ;
224- c . AddBytes ( tlc1 ) ;
225- var tlc2 = reader . ReadUInt32 ( ) ;
226- writer . Write ( tlc2 ) ;
227- c . AddBytes ( tlc2 ) ;
228-
229- TopLeftCoords = new WindowXY ( ( int ) tlc1 , ( int ) tlc2 ) ;
230-
231-
232- var brc3 = reader . ReadUInt32 ( ) ;
233- writer . Write ( brc3 ) ;
234- c . AddBytes ( brc3 ) ;
235- var brc4 = reader . ReadUInt32 ( ) ;
236- writer . Write ( brc4 ) ;
237- c . AddBytes ( brc4 ) ;
238-
239- BottomRightCoords = new WindowXY ( ( int ) brc3 , ( int ) brc4 ) ;
240-
241-
242- var wsc5 = reader . ReadUInt32 ( ) ;
243- writer . Write ( wsc5 ) ;
244- c . AddBytes ( wsc5 ) ;
245- var wsc6 = reader . ReadUInt32 ( ) ;
246- writer . Write ( wsc6 ) ;
247- c . AddBytes ( wsc6 ) ;
248-
249- WindowSize = new WindowXY ( ( int ) wsc5 , ( int ) wsc6 ) ;
250-
251-
252- var delim2 = reader . ReadBytes ( 1 ) ;
253- writer . Write ( delim2 ) ;
254- c . AddBytes ( delim2 ) ;
255-
256- reader . ReadBytes ( 4 ) ;
257- CRC32Stored = c . CRC32 ;
258- writer . Write ( CRC32Stored ) ;
259- CRC32Calculated = c . CRC32 ;
260- }
261- }
262- }
263- }
264- }
195+ Save ( ) ;
265196 }
266197
267198 /// <summary>
268199 ///
269200 /// </summary>
270- /// <param name="TopLeft "></param>
271- /// <param name="BottomRight "></param>
272- public void Resize ( WindowXY TopLeft , WindowXY BottomRight )
201+ /// <param name="topLeft "></param>
202+ /// <param name="bottomRight "></param>
203+ public void Resize ( WindowXY topLeft , WindowXY bottomRight )
273204 {
274205 //This should be the main one
206+ TopLeftCoords = topLeft ;
207+ BottomRightCoords = bottomRight ;
208+
209+ Save ( ) ;
275210 }
276211
277212 /// <summary>
@@ -363,6 +298,64 @@ private void ParseBytes()
363298 }
364299 }
365300 }
366- }
301+ }
302+
303+ private void Save ( )
304+ {
305+ using ( MemoryStream outStream = new MemoryStream ( ) )
306+ {
307+ using ( BinaryWriter writer = new BinaryWriter ( outStream ) )
308+ {
309+ writer . Write ( [ 0x4E , 0x50 ] ) ;
310+
311+ CRC32Check c = new CRC32Check ( ) ;
312+ writer . Write ( SequenceNumber . WriteLEB128Unsigned ( ) ) ;
313+ c . AddBytes ( SequenceNumber ) ;
314+
315+ writer . Write ( BytesToCRC . WriteLEB128Unsigned ( ) ) ;
316+ c . AddBytes ( BytesToCRC ) ;
317+
318+ writer . Write ( [ 0x00 ] ) ;
319+ c . AddBytes ( [ 0x00 ] ) ;
320+
321+ writer . Write ( NumberTabs . WriteLEB128Unsigned ( ) ) ;
322+ c . AddBytes ( NumberTabs ) ;
323+
324+ foreach ( var t in Tabs )
325+ {
326+ writer . Write ( t ) ;
327+ c . AddBytes ( t ) ;
328+ }
329+
330+ writer . Write ( ActiveTab . WriteLEB128Unsigned ( ) ) ;
331+ c . AddBytes ( ActiveTab ) ;
332+
333+ writer . Write ( TopLeftCoords . X ) ;
334+ c . AddBytes ( ( uint ) TopLeftCoords . X ) ;
335+
336+ writer . Write ( TopLeftCoords . Y ) ;
337+ c . AddBytes ( ( uint ) TopLeftCoords . Y ) ;
338+
339+ writer . Write ( BottomRightCoords . X ) ;
340+ c . AddBytes ( ( uint ) BottomRightCoords . X ) ;
341+
342+ writer . Write ( BottomRightCoords . Y ) ;
343+ c . AddBytes ( ( uint ) BottomRightCoords . Y ) ;
344+
345+ writer . Write ( WindowSize . X ) ;
346+ c . AddBytes ( ( uint ) WindowSize . X ) ;
347+
348+ writer . Write ( WindowSize . Y ) ;
349+ c . AddBytes ( ( uint ) WindowSize . Y ) ;
350+
351+ writer . Write ( [ 0x00 ] ) ;
352+ c . AddBytes ( [ 0x00 ] ) ;
353+
354+ writer . Write ( c . CRC32 ) ;
355+
356+ bytes = outStream . ToArray ( ) ;
357+ }
358+ }
359+ }
367360 }
368361}
0 commit comments