@@ -290,11 +290,15 @@ Sub addFilesToTreeTable(filename As String)
290
290
exportMenu.MenuItems.Add(mi3)
291
291
exportMenu.MenuItems.Add(mi4)
292
292
exportMenu.MenuItems.Add(mi5)
293
+
294
+ Dim mi6 As MenuItem
295
+ mi6.Initialize("Update with existing workfile" ,"updateWithWorkfileMi" )
293
296
294
297
fileCM.MenuItems.Add(mi)
295
298
fileCM.MenuItems.Add(mi2)
296
299
fileCM.MenuItems.Add(exportMenu)
297
-
300
+ fileCM.MenuItems.Add(mi6)
301
+
298
302
lbl.ContextMenu=fileCM
299
303
300
304
tti.Initialize("tti" ,Array As Object (lbl))
@@ -303,6 +307,7 @@ Sub addFilesToTreeTable(filename As String)
303
307
mi3.Tag=filename
304
308
mi4.Tag=filename
305
309
mi5.Tag=filename
310
+ mi6.Tag=filename
306
311
subTreeTableItem.Children.Add(tti)
307
312
End Sub
308
313
@@ -807,6 +812,77 @@ Sub importReviewMi_Action
807
812
808
813
End Sub
809
814
815
+ Sub updateWithWorkfileMI_Action
816
+ Dim mi As MenuItem =Sender
817
+ Dim selectedFilename As String =mi.tag
818
+ If selectedFilename<>currentFilename Then
819
+ fx.Msgbox(Main.MainForm,"Please first open this file" ,"" )
820
+ Return
821
+ End If
822
+
823
+ Dim fc As FileChooser
824
+ fc.Initialize
825
+ fc.SetExtensionFilter("workfile" ,Array("*.json" ))
826
+ Dim workFilePath As String
827
+ workFilePath=fc.ShowOpen(Main.MainForm)
828
+ If workFilePath="" Then
829
+ Return
830
+ End If
831
+
832
+ Dim fileSegments As List
833
+ fileSegments.Initialize
834
+
835
+ Dim workfile As Map
836
+ Dim json As JSONParser
837
+ json.Initialize(File.ReadString(workFilePath,"" ))
838
+ workfile=json.NextObject
839
+ Dim sourceFiles As List
840
+ sourceFiles=workfile.Get ("files" )
841
+ For Each sourceFileMap As Map In sourceFiles
842
+ Dim innerFilename As String
843
+ innerFilename=sourceFileMap.GetKeyAt(0 )
844
+ Dim segmentsList As List
845
+ segmentsList=sourceFileMap.Get (innerFilename)
846
+ fileSegments.AddAll(segmentsList)
847
+ Next
848
+
849
+ Dim sourceMap As Map
850
+ sourceMap.Initialize
851
+ For Each segment As List In fileSegments
852
+ Dim source As String
853
+ source=segment.Get (0 )
854
+ sourceMap.Put (source,segment)
855
+ Next
856
+
857
+ progressDialog.Show("Updating" ,"update" )
858
+ Dim size As Int =segments.Size
859
+ Dim index As Int
860
+ progressDialog.update(index,size)
861
+ Sleep(0 )
862
+ For Each segment As List In segments
863
+ index=index+1
864
+ progressDialog.update(index,size)
865
+ Dim source As String
866
+ source=segment.Get (0 )
867
+ If sourceMap.ContainsKey(source) Then
868
+ Dim segmentFromWorkfile As List
869
+ segmentFromWorkfile=sourceMap.Get (source)
870
+ Dim extra As Map
871
+ extra=segment.Get (4 )
872
+ Dim extraFromWorkfile As Map
873
+ extraFromWorkfile=segmentFromWorkfile.Get (4 )
874
+ If extraFromWorkfile.GetDefault("createdTime" ,0 )>=extra.GetDefault("createdTime" ,0 ) Then
875
+ segment.Clear
876
+ segment.AddAll(segmentFromWorkfile)
877
+ End If
878
+ End If
879
+ Next
880
+ progressDialog.close
881
+ refillVisiblePane
882
+ contentIsChanged
883
+ fx.Msgbox(Main.MainForm,"Done" ,"" )
884
+ End Sub
885
+
810
886
Sub removeFileMi_Action
811
887
Dim mi As MenuItem
812
888
mi=Sender
@@ -1652,6 +1728,16 @@ Sub viewInfoMI_Action
1652
1728
fx.Msgbox(Main.MainForm,infoBuilder.ToString,"" )
1653
1729
End Sub
1654
1730
1731
+ Sub refillVisiblePane
1732
+ Dim visibleRange As Range
1733
+ visibleRange=Main.getVisibleRange(Main.editorLV)
1734
+ Dim ExtraSize As Int
1735
+ ExtraSize=15
1736
+ For i=Max(0 ,visibleRange.firstIndex-ExtraSize*2 ) To Min(Main.editorLV.Items.Size - 1 ,visibleRange.lastIndex+ExtraSize*2 )
1737
+ Main.editorLV.Items.Set (i,"" )
1738
+ Next
1739
+ fillPane(visibleRange.firstIndex,visibleRange.lastIndex)
1740
+ End Sub
1655
1741
1656
1742
Public Sub fillPane (FirstIndex As Int , LastIndex As Int )
1657
1743
Log("fillPane" )
0 commit comments