@@ -11,46 +11,41 @@ var renderCommandEncoder: BinaryEncoder
1111var num = 1
1212
1313converter toWitString (s: string ): WitString = ws (s)
14+ var target = getSetting (" test.num-squares" , 50 )
1415
15- defineCommand (ws " test-command-1" ,
16- active = false ,
17- docs = ws " test command" ,
18- params = wl [(WitString , WitString )](nil , 0 ),
19- returnType = ws " " ,
20- context = ws " " ,
21- data = 123 ):
22- proc (data: uint32 , args: WitString ): WitString {.cdecl .} =
23- try :
24- echo & " [guest] test-command-1 { data} '{ args} ' "
25- except CatchableError as e:
26- echo & " [guest] err: { e.msg} "
27- return ws " "
16+ proc handleViewRender (id: int32 , data: uint32 ) {.cdecl .}
2817
29- defineCommand (ws " test-command-2" ,
30- active = false ,
31- docs = ws " test command" ,
32- params = wl [(WitString , WitString )](nil , 0 ),
33- returnType = ws " " ,
34- context = ws " " ,
35- data = 123 ):
36- proc (data: uint32 , args: WitString ): WitString {.cdecl .} =
37- try :
38- echo & " [guest] test-command-2 { data} '{ args} ' "
39- except CatchableError as e:
40- echo & " [guest] err: { e.msg} "
41- return ws " "
18+ proc openCustomView () =
19+ var renderView = renderViewFromUserId (ws " test_plugin_view" )
20+ if renderView.isNone:
21+ echo " [guest] Create new RenderView"
22+ renderView = newRenderView ().some
23+ else :
24+ echo " [guest] Reusing existing RenderView"
25+ renderView.get.setUserId (ws " test_plugin_view" )
26+ renderView.get.setRenderWhenInactive (true )
27+ renderView.get.setPreventThrottling (true )
28+ renderView.get.setRenderCallback (cast [uint32 ](handleViewRender), views.len.uint32 )
29+ renderView.get.addMode (ws " test-plugin" )
30+ renderView.get.markDirty ()
31+ show (renderView.get.view, ws " #new-tab" , true , true )
32+ views.add (renderView.take)
4233
4334proc handleViewRender (id: int32 , data: uint32 ) {.cdecl .} =
44- let view {.cursor .} = views[0 ]
35+ let index = data.int
36+ if index notin 0 .. views.high:
37+ echo " handleViewRender: index out of bounds {index} notin 0..<{views.len}"
38+ return
39+
40+ let view {.cursor .} = views[index]
4541
4642 try :
4743 let version = apiVersion ()
48- let target = getSetting (" test.num-squares" , 50 )
4944 inc num
5045 if num > target:
5146 num = 1
5247
53- # num = target
48+ num = target
5449
5550 proc vec2 (v: Vec2f ): Vec2 = vec2 (v.x, v.y)
5651
@@ -82,19 +77,57 @@ proc init() =
8277
8378 let s = getTime ()
8479 var renderView = renderViewFromUserId (ws " test_plugin_view" )
85- if renderView.isNone:
86- echo " [guest] Create new RenderView"
87- renderView = newRenderView ().some
88- else :
80+ if renderView.isSome:
8981 echo " [guest] Reusing existing RenderView"
90- renderView.get.setUserId ( ws " test_plugin_view " )
91- renderView.get.setRenderWhenInactive (true )
92- renderView.get.setPreventThrottling ( true )
93- renderView.get.setRenderCallback ( cast [ uint32 ](handleViewRender), 123 )
94- renderView.get.markDirty ()
95- show (renderView.get.view, ws " #new-tab" , true , true )
96- views.add (renderView.take)
82+ renderView.get.setRenderWhenInactive ( true )
83+ renderView.get.setPreventThrottling (true )
84+ renderView.get.setRenderCallback ( cast [ uint32 ](handleViewRender), views.len. uint32 )
85+ renderView.get.addMode ( ws " test-plugin " )
86+ renderView.get.markDirty ()
87+ show (renderView.get.view, ws " #new-tab" , true , true )
88+ views.add (renderView.take)
9789
9890 echo & " [guest] init test_plugin took { getTime () - s} ms "
9991
10092init ()
93+
94+ defineCommand (ws " test-command-1" ,
95+ active = false ,
96+ docs = ws " test command" ,
97+ params = wl [(WitString , WitString )](nil , 0 ),
98+ returnType = ws " " ,
99+ context = ws " " ,
100+ data = 123 ):
101+ proc (data: uint32 , args: WitString ): WitString {.cdecl .} =
102+ try :
103+ echo & " [guest] test-command-1 { data} '{ args} ' "
104+ inc target
105+ except CatchableError as e:
106+ echo & " [guest] err: { e.msg} "
107+ return ws " "
108+
109+ defineCommand (ws " test-command-2" ,
110+ active = false ,
111+ docs = ws " test command" ,
112+ params = wl [(WitString , WitString )](nil , 0 ),
113+ returnType = ws " " ,
114+ context = ws " " ,
115+ data = 123 ):
116+ proc (data: uint32 , args: WitString ): WitString {.cdecl .} =
117+ try :
118+ echo & " [guest] test-command-2 { data} '{ args} ' "
119+ dec target
120+ except CatchableError as e:
121+ echo & " [guest] err: { e.msg} "
122+ return ws " "
123+
124+ defineCommand (ws " open-custom-view" ,
125+ active = false ,
126+ docs = ws " docs" ,
127+ params = wl [(WitString , WitString )](nil , 0 ),
128+ returnType = ws " " ,
129+ context = ws " " ,
130+ data = 0 ):
131+ proc (data: uint32 , args: WitString ): WitString {.cdecl .} =
132+ openCustomView ()
133+ return ws " "
0 commit comments