Project

General

Profile

Statistics
| Revision:

vdfsplat / AppSrc / VdfSplat.src @ 64

History | View | Annotate | Download (27.7 KB)

1 8 wil
//TH-Header
2
//*****************************************************************************************
3
// Copyright (c)  2013 Antwise Solutions
4
// All rights reserved.
5
//
6
// $FileName    : VdfSplat.src
7 22 wil
// $ProjectName : Splat ! Vdf Debugger
8 8 wil
// $Authors     : Wil van Antwerpen
9
// $Created     : 12.14.2013  23:42
10
// $Type        : GPLv2
11
//
12
// Contents:
13
//
14
//*****************************************************************************************
15
//TH-RevisionStart
16
//TH-RevisionEnd
17
18 22 wil
Use DFAllEnt.pkg
19 49 wil
Use cToolTipController.pkg
20 7 wil
Use cDebugCJCommandBarSystem.pkg
21 10 wil
Use vWin32fh.pkg
22
Use seq_chnl.pkg
23 35 wil
Use cSplatApplication.pkg
24 43 wil
Use cSplatPanel.pkg
25 2 wil
26
Object oHtmlHelp is a cHtmlHelp
27
End_Object
28
29 35 wil
Object oApplication is a cSplatApplication
30 2 wil
    Set peHelpType to htHtmlHelp
31 46 wil
32 31 wil
    Set psAutoOpenWorkspace to "" // We're not using data files, the exe has to be completely self contained.
33 2 wil
End_Object
34
35 49 wil
Object oToolTipController is a cToolTipController
36
    Move Self to ghoToolTipController
37
End_Object
38
39 2 wil
Use oEditContextMenu.pkg
40
Use oDEOEditContextMenu.pkg
41
42 37 wil
#IF (1=0)
43
// This imagelist is a dummy, it is only used to have the Studio recognize
44
// which bitmaps are used in the application so that a "Scan Bitmaps" will always
45
// include the bitmaps as embedded resource. The imagelist itself is not used.
46
Object ImageContainer is a cImageList32
47
  Set piMaxImages to 10
48
  Procedure OnCreate
49
    Integer iImage
50
    Get AddImage "Debugger.bmp/t" to iImage
51
  End_Procedure
52
End_Object
53
#ENDIF
54
55 43 wil
Object oMain is a cSplatPanel
56 2 wil
    Set Label to "VdfSplat"
57
    Set Location to 4 3
58 22 wil
    Set Size to 300 450
59 2 wil
60 8 wil
    // Make sure it can be used here already
61
    Use cDebuggerEngine.pkg
62
63 7 wil
64
    Object oOpenProgramDialog is an OpenDialog
65
        Set Filter_String  to  'Visual DataFlex Executables|*.exe'
66
        Set Initial_Folder to 'C:\Program Files\Visual DataFlex'
67
//        Set MultiSelect_State  To False
68
        Set NoChangeDir_State  To True  // don't touch my current folder
69
        Set CreatePrompt_State To False
70
        Set HideReadOnly_State To True
71
        Set Filter_Index to 2
72 22 wil
    End_Object
73 25 wil
74
    Object oOpenSourceFileDialog is an OpenDialog
75
        Set Filter_String  to  'Visual DataFlex source|*.*'
76
//        Set Initial_Folder to 'C:\Program Files\Visual DataFlex'
77
//        Set MultiSelect_State  To False
78
        Set NoChangeDir_State  To True  // don't touch my current folder
79
        Set CreatePrompt_State To False
80
        Set HideReadOnly_State To True
81
        Set Filter_Index to 2
82
    End_Object
83 2 wil
84 10 wil
    Procedure Warning_Box String sMessage String sCaption
85
      Integer eResponse
86
87
      Get Message_Box sMessage sCaption MB_OK MB_ICONWARNING to eResponse
88 22 wil
    End_Procedure // Warning_Box
89 10 wil
90
    Procedure Fishy_Box String sMessage String sDebugfile
91
      Send Warning_Box ("Sorry but the debug file for the executable you choose\n\n"+;
92
           sDebugfile+"\ndoesn't look like it is valid.\n\n"+sMessage+"\n\nPlease try again.") ;
93
           "VdfSplat thinks this is fishy"
94 22 wil
    End_Procedure // Fishy_Box
95 10 wil
96
    //
97
    // Reads the runtime version of the .dbg file passed.
98 22 wil
    // The file must exist.
99 10 wil
    //
100
    Function ReadRuntimeVersion String sDebugFile Returns Integer
101
      Integer iRuntime
102 22 wil
      Integer iChIn
103 10 wil
      Integer iFileSize
104
      Integer iVdfMax
105
      Integer iVdfMin
106
      String  sBinary
107
108 22 wil
      Move 0 To iRuntime
109 10 wil
      Get vWin32_APIFileSize sDebugFile to iFileSize
110
      If (iFileSize > 40000) Begin
111
112 22 wil
        Get Seq_Open_Input_Channel sDebugfile to iChIn
113 10 wil
        Direct_Input channel iChIn ("binary:" + sDebugfile)
114
            Read_Block channel iChIn sBinary 50
115
        Send Seq_Close_Channel iChIn
116
        If (Left(sBinary,4)="VDFB") Begin
117
          Move (Ascii(Mid(sBinary,1,5))) To iVdfMax
118
          Move (Ascii(Mid(sBinary,1,9))) To iVdfMin
119 16 wil
          If ((iVdfMax>2 and iVdfMax < 26) and (iVdfMin<5)) Begin
120 10 wil
            Move ((iVdfMax*10)+iVdfMin) To iRuntime
121
          End
122
          Else Begin
123
            Send Fishy_Box ("The debug file suggests this is VDF version"*trim(iVdfMax)+"."+trim(iVdfMin)+"\nNot very likely that.") sDebugfile
124 22 wil
          End
125 10 wil
        End
126
        Else Begin
127
          Send Fishy_Box "The debug file signature is not correct." sDebugfile
128
       End
129
      End
130
      Else Begin
131
        Send Fishy_Box "It is wayyy too small." sDebugfile
132 22 wil
      End
133 10 wil
      Function_Return iRuntime
134 22 wil
    End_Function // ReadRuntimeVersion
135 10 wil
136 24 wil
    Procedure doOpenFile
137 27 wil
      Handle  hoDebug
138 25 wil
      Handle  hoEditor
139
      Handle  hoDialog
140
      Boolean bOpen
141
      Boolean bIsValid
142
      String  sFileName
143 24 wil
144
      Get phoDebugger to hoDebug
145
      If (hoDebug) Begin
146 25 wil
        Move (oOpenSourceFileDialog(Self)) To hoDialog
147
148
        Get Show_Dialog of hoDialog to bOpen
149
        If bOpen Begin
150
          Get File_Name of hoDialog To sFileName
151
          Get ComIsValidSourceFile of hoDebug sFileName To bIsValid
152
          If (bIsValid) Begin
153
            Get phoEditor to hoEditor
154
            If (hoEditor) Begin
155
              Send DoOpenSourceFile of hoEditor sFileName
156
            End
157
          End
158
          Else Begin
159
            Send Info_Box "source file is not part of selected program we are currently debugging."
160
          End
161
        End
162
163 24 wil
      End
164
    End_Procedure // doOpenFile
165
166 64 wil
    Procedure DoInitializeParameters
167
      Set piDebugfileVersion To 0
168
      //Set phoDebugger        To 0
169
      Set psApplication Of ghoApplication To ""
170
    End_Procedure
171
172
    //
173
    // Locates the debug file for the application binary passed.
174
    // Returns TRUE if found and sets property piDebugFileVersion
175
    //
176
    Function ParseApplicationDebugFile String sApplication Returns Boolean
177
      Boolean bExists
178
      Integer iRuntime
179
      String  sExt
180
      String  sDebugfile
181
182
      Get ParseFileExtension sApplication To sExt
183
      Move (Replace("."+sExt,sApplication,".dbg")) To sDebugfile
184
      Get vFilePathExists sDebugfile to bExists
185
      If (bExists=false) Begin
186
        Send Warning_Box ("Sorry but for the executable chosing the corresponding debug file\n"+;
187
               sDebugfile+"\ncould not be located.\n\nPlease select again.") ;
188
               "VdfSplat can't do that"
189
      End
190
      Else Begin
191
        Get ReadRuntimeVersion sDebugfile To iRuntime
192
        If (iRuntime=0) Begin
193
          Move False To bExists
194
        End
195
        Else Begin
196
          Set piDebugfileVersion To iRuntime
197
        End
198
      End
199
200
      Function_Return bExists
201
    End_Function
202
203 7 wil
    Procedure doDebugRun
204 22 wil
      String  sApplication
205
      Boolean bOpen
206 10 wil
      Boolean bExists
207 64 wil
      Boolean bRestartMode
208 8 wil
      Handle  hoDebug
209 22 wil
      Handle  hoParent
210 7 wil
      Handle  hoDialog
211 10 wil
212 35 wil
      Get psApplication of ghoApplication To sApplication
213 22 wil
      If (sApplication = "") Begin
214 10 wil
        Move (oOpenProgramDialog(Self)) To hoDialog
215
216
          Get Show_Dialog of hoDialog to bOpen
217
          If bOpen Begin
218 17 wil
            Get File_Name of hoDialog To sApplication
219 22 wil
            // Don't tell me when I selected a file, just do it.
220
            //Send Info_Box ("Selected file " + sApplication)
221 10 wil
          End
222 35 wil
          Else Send Info_Box "You did not choose a file, nothing to debug."
223 10 wil
224 22 wil
      End
225 10 wil
      If (sApplication="") Begin
226
        // Oh still no app? Use our hardcoded path
227 35 wil
        Procedure_Return
228 22 wil
      End
229 64 wil
      Get ParseApplicationDebugFile sApplication To bExists
230
231
      Get phoDebugger to hoDebug
232
      If (hoDebug) Begin
233
        Get pbDebugRestart of hoDebug to bRestartMode
234
        If (bRestartMode) Begin
235
          Send Destroy of hoDebug
236
          Move 0 To hoDebug
237 10 wil
        End
238 22 wil
      End
239 10 wil
      If (bExists and hoDebug=0) Begin
240 20 wil
        //
241
242
        Get phoDebuggerHost To hoParent
243 64 wil
        Get Create Of hoParent (RefClass(cDebuggerEngine)) To hoDebug
244 8 wil
        If (hoDebug) Begin
245
          Send DoCreateEngine of hoDebug
246 20 wil
        End
247
      End
248 10 wil
      If (bExists and hoDebug<>0) Begin
249
250 35 wil
        Set psApplication of ghoApplication To sApplication
251 20 wil
        Set ApplicationFileName of hoDebug To sApplication
252 38 wil
        // ??
253
        Send DoSetCaptionLabel Of (oVdfDbg(oClientArea(Self))) sApplication
254 60 wil
        Send DoStartDebug
255
      End
256
    End_Procedure // doDebugRun
257
258
    Procedure DoStartDebug
259
      String  sApplication
260
      Integer iRuntime
261
      Handle  hoDebug
262
263
      Get phoDebugger to hoDebug
264
      If (hoDebug<>0) Begin
265
        Get psApplication Of ghoApplication To sApplication
266
        Get piDebugfileVersion To iRuntime
267 7 wil
        //Send ComPause of hoDebug
268
        //Procedure ComStartProgram String llcmdLine Variant llwebApp Variant llurl
269 16 wil
        If (iRuntime<181) Begin
270
          Send ComStartProgram of hoDebug sApplication false ""
271
        End
272
        Else Begin                         // noheap or heap? that's' the question.
273
          Send ComStartProgram181 of hoDebug sApplication True false ""
274
        End
275 22 wil
        Send ComUpdateViews Of hoDebug
276
      End
277 60 wil
    End_Procedure
278 7 wil
279
    Procedure doStopDebug
280 64 wil
      Boolean bPaused
281
      Boolean bBreakMode
282
      Handle  hoDebug
283 7 wil
284
      Get phoDebugger to hoDebug
285
      If (hoDebug) Begin
286 64 wil
        Get pbLimitedBreakMode of hoDebug to bBreakMode
287
        Get HasProgramPaused To bPaused
288
        If (bPaused) Begin
289
          //Send doDebugContinue
290
        End
291 7 wil
        Send ComStopProgram of hoDebug
292 20 wil
        Send ComUpdateViews Of hoDebug
293 64 wil
        If (bBreakMode=False) Begin
294
          // You cannot destroy the debugger on here as the messageloop has to run to get the debuggee back to run
295
          // so killing it here would be out of sync with what you want.
296
          //Send Destroy of hoDebug
297
          Send DoInitializeParameters
298
        End
299 20 wil
      End
300 7 wil
    End_Procedure // doStopDebug
301
302 64 wil
    Procedure DoRestartDebug
303
      String  sApplication
304
305
      Get psApplication of ghoApplication To sApplication
306
      Set pbDebugRestart of (phoDebugger(Self)) to True
307
      Send DoStopDebug
308
      //Sleep 1
309
      Set psApplication of ghoApplication To sApplication
310
    End_Procedure
311
312 2 wil
    Procedure doDebugPause
313
      Handle hoDebug
314
315
      Get phoDebugger to hoDebug
316
      If (hoDebug) Begin
317
        Send ComPause of hoDebug
318 22 wil
        Send ComUpdateViews Of hoDebug
319
      End
320
    End_Procedure // doDebugPause
321 2 wil
322
    Procedure doDebugContinue
323
      Handle hoDebug
324
325
      Get phoDebugger to hoDebug
326
      If (hoDebug) Begin
327
        Send ComContinue of hoDebug
328 22 wil
        Send ComUpdateViews Of hoDebug
329
      End
330 2 wil
    End_Procedure // doDebugContinue
331
332
    Procedure doDebugStepOver
333
      Handle hoDebug
334
335
      Get phoDebugger to hoDebug
336
      If (hoDebug) Begin
337
        Send ComStepOver of hoDebug
338 22 wil
        Send ComUpdateViews Of hoDebug
339
      End
340
    End_Procedure // doDebugStepOver
341 7 wil
342
    Procedure doDebugStepInto
343
      Handle hoDebug
344
345
      Get phoDebugger to hoDebug
346
      If (hoDebug) Begin
347
        Send ComStepInto of hoDebug
348 22 wil
        Send ComUpdateViews Of hoDebug
349
      End
350 7 wil
    End_Procedure // doDebugStepInto
351
352
    Procedure doDebugStepOut
353
      Handle hoDebug
354
355
      Get phoDebugger to hoDebug
356
      If (hoDebug) Begin
357
        Send ComStepOut of hoDebug
358 22 wil
        Send ComUpdateViews Of hoDebug
359
      End
360 7 wil
    End_Procedure // doDebugStepOut
361 12 wil
362 20 wil
    Procedure doSetBreakPoint
363 12 wil
      Integer iLine
364
      String  sFileName
365
      Boolean bSuccess
366
      Handle  hoDebugger
367
      Handle  hoEditor
368
369
      Get phoDebugger to hoDebugger
370
      Get phoEditor   To hoEditor
371
      If (hoDebugger<>0 and hoEditor<>0) begin
372
373
        Get psFileName    Of hoEditor To sFileName
374 20 wil
        Get CurrentLine   Of hoEditor To iLine
375 12 wil
        If (sFileName<>"" and iLine<>0) Begin
376 20 wil
          Get SetBreakPoint of hoDebugger sFileName (&iLine) To bSuccess
377 37 wil
          If (bSuccess=false) Begin
378
            Send info_box ("Set breakpoint at line"*trim(iLine)*"Failed.\nReturned="*trim(bSuccess))
379
          End
380 20 wil
          //Send ComSetMarginImages iLine 1
381
        End
382 12 wil
      End
383 20 wil
    End_Procedure
384
385
    Procedure doRemoveBreakPoint
386
      Integer iLine
387
      String  sFileName
388
      Boolean bSuccess
389
      Handle  hoDebugger
390
      Handle  hoEditor
391
392
      Get phoDebugger to hoDebugger
393
      Get phoEditor   To hoEditor
394
      If (hoDebugger<>0 and hoEditor<>0) begin
395
396
        Get psFileName    Of hoEditor To sFileName
397
        Get CurrentLine   Of hoEditor To iLine
398
        If (sFileName<>"" and iLine<>0) Begin
399
          Get RemoveBreakPoint of hoDebugger sFileName (&iLine) To bSuccess
400 37 wil
          If (bSuccess=false) Begin
401
            Send info_box ("Removing breakpoint at line"*trim(iLine)*"Failed.\nReturned="*trim(bSuccess))
402
          End
403 20 wil
          //Send ComSetMarginImages iLine 1
404
        End
405
      End
406
    End_Procedure
407 2 wil
408 8 wil
    //
409
    //Procedure doCreateCallStack
410
    //  Boolean bCreated
411
    //  Handle  hoCallStack
412
    //
413 22 wil
    //
414 8 wil
    //  Get phoCallStack To hoCallStack
415
    //  If (hoCallStack) Begin
416
    //    Send CreateComObject of hoCallStack
417
    //    Get IsComObjectCreated Of hoCallStack To bCreated
418
    //    Showln "callstack [" bCreated "]"
419
    //    If (bCreated) Begin
420 22 wil
    //      Send RegisterComEvents Of hoCallStack
421 8 wil
    //      //Set ComWindowType Of hoGlobals To 1 // global
422 22 wil
    //    End
423 8 wil
    //  End
424
    //End_Procedure // doCreateCallStack
425 2 wil
426 7 wil
    Function HasProgramStarted Returns Boolean
427
      Boolean bStarted
428
      Handle  hoDebugger
429
430
      Move False To bStarted
431
      Get phoDebugger To hoDebugger
432
      If (hoDebugger) Begin
433
        Get pbProgramStarted of hoDebugger To bStarted
434 22 wil
      End
435 7 wil
      Function_Return bStarted
436 22 wil
    End_Function // HasProgramStarted
437 2 wil
438 7 wil
    //
439
    // A program can only be paused after it has started
440
    // This is used as an indication that we can step through the source
441 64 wil
    // The property pbProgramPaused is set on both a breakpoint and on a Pause
442 7 wil
    Function HasProgramPaused Returns Boolean
443 22 wil
      Boolean bPaused
444 7 wil
      Boolean bStarted
445
      Handle  hoDebugger
446
447
      Move False To bPaused
448
      Get HasProgramStarted To bStarted
449
      If (bStarted) Begin
450
        Get phoDebugger To hoDebugger
451
        If (hoDebugger) Begin
452
          Get pbProgramPaused of hoDebugger to bPaused
453 22 wil
        End
454
      End
455 7 wil
      Function_Return bPaused
456 22 wil
    End_Function // HasProgramPaused
457 7 wil
458 37 wil
    //
459
    // A breakpoint can only be removed if we have existing breakpoints
460
    //
461
    Function HasBreakpoints Returns Boolean
462
      Boolean bHasBreakPoints
463
      Boolean bStarted
464
      Handle  hoDebugger
465
466
      Move False To bHasBreakPoints
467
      Get HasProgramStarted To bStarted
468
      If (bStarted) Begin
469
        Get phoDebugger To hoDebugger
470
        If (hoDebugger) Begin
471
          Get HasBreakPoints of hoDebugger to bHasBreakPoints
472
        End
473
      End
474
      Function_Return bHasBreakPoints
475
    End_Function // HasBreakPoints
476 7 wil
477 37 wil
478 2 wil
479 7 wil
    Object oCommandBarSystem is a cDebugCJCommandBarSystem
480 2 wil
481
        Procedure OnCreateCommandBars
482
            Handle hoOptions
483
            Get OptionsObject to hoOptions
484
            Forward Send OnCreateCommandBars
485
        End_Procedure
486 7 wil
487 2 wil
488
        Object oMenuBar is a cCJMenuBar
489
490
            Object oFileMenu is a cCJMenuItem
491 22 wil
                Set peControlType to xtpControlPopup
492 2 wil
                Set psCaption   to "&File"
493
                Set psDescription to "Find, Save, Delete, Clear information or quit this application."
494
                Set psCategory to "Menus"
495
496
                Object oClearMenuItem is a cCJClearMenuItem
497
                    Set pbAddToDesignerMenu to True
498
                End_Object
499
500
                Object oClearAllMenu is a cCJClearAllMenuItem
501
                    Set pbAddToDesignerMenu to True
502
                End_Object
503
504
                Object oPromptMenuItem is a cCJPromptMenuItem
505
                    Set pbAddToDesignerMenu to True
506
                    Set pbControlBeginGroup to True
507
                End_Object
508
509
                Object oCJDebugPauseMenuItem is a cCJDebugPauseMenuItem
510
                    Set pbAddToDesignerMenu to True
511
                    Set pbControlBeginGroup to True
512
                End_Object
513
514
                Object oFindNextMenu is a cCJFindNextMenuItem
515
                    Set pbAddToDesignerMenu to True
516
                End_Object
517
518
                Object oFindPreviousMenu is a cCJFindPreviousMenuItem
519
                    Set pbAddToDesignerMenu to True
520
                End_Object
521
522
                Object oFindFirstMenu is a cCJFindFirstMenuItem
523
                    Set pbAddToDesignerMenu to True
524
                End_Object
525
526
                Object oFindLastMenu is a cCJFindLastMenuItem
527
                    Set pbAddToDesignerMenu to True
528
                End_Object
529
530
                Object oSaveMenuItem is a cCJSaveMenuItem
531
                    Set pbAddToDesignerMenu to True
532
                    Set pbControlBeginGroup to True
533
                End_Object
534
535
                Object oDeleteMenuItem is a cCJDeleteMenuItem
536
                    Set pbAddToDesignerMenu to True
537
                End_Object
538
539
                Object oExitMenu is a cCJExitMenuItem
540
                    Set pbControlBeginGroup to True
541
                End_Object
542
543
            End_Object
544
545
            Object oViewMenu is a cCJMenuItem
546
                Set peControlType to xtpControlPopup
547
                Set psCaption to "&View"
548
                Set psToolTip to "View"
549
                Set psDescription to "Available Views"
550
551
                Object ooVdfdbgMenuItem is a cCJMenuItem
552 7 wil
                  Set psCaption to "Debugger View"
553
                  Set psTooltip to "The debugger main view"
554 2 wil
555
                  Procedure OnExecute Variant vCommandBarControl
556
                    Handle hoClient
557
                    Get Client_Id to hoClient
558
                    Send Activate_oVdfdbg of hoClient
559
                  End_Procedure
560
                End_Object
561 24 wil
562
                Object oObjectInspectorMenuItem is a cCJMenuItem
563
                  Set psCaption to "Object Inspector     Ctrl+L"
564
                  Set psTooltip to "Inspect the objects in the running program"
565
566
                  Procedure OnExecute Variant vCommandBarControl
567
                    Handle hoClient
568
                    Get Client_Id to hoClient
569
                    Send doActivateObjectInspectorPanel of hoClient
570
                  End_Procedure
571
572
                  Function IsEnabled Returns Boolean
573
                    Boolean bPaused
574
575
                    Get HasProgramPaused To bPaused
576
                    Function_Return bPaused
577
                  End_Function
578
                End_Object
579 2 wil
            End_Object
580
581
            Object oNavigateMenu is a cCJMenuItem
582 22 wil
                Set peControlType to xtpControlPopup
583
                Set psCaption to "&Navigate"
584
                Set psTooltip to "Navigate"
585 2 wil
                Set psDescription to "Move to different areas of the application"
586
587
                Object oNextAreaMenu is a cCJNextAreaMenu
588
                End_Object
589
590
                Object oPriorAreaMenu is a cCJPriorAreaMenu
591
                End_Object
592
593
                Object oNextViewMenu is a cCJNextViewMenu
594
                End_Object
595
596
                Object oPriorViewMenu is a cCJPriorViewMenu
597
                End_Object
598
599
                Object oPromptMenu is a cCJPromptMenuItem
600
                    Set pbControlBeginGroup to True
601
                End_Object
602
603
                Object oZoomMenu is a cCJZoomMenuItem
604
                End_Object
605
606
            End_Object
607
608
            Object oWindowMenu is a cCJMDIWindowsMenuItem
609
                Set peControlType to xtpControlPopup
610
                Set psCaption to "&Window"
611
                Set psToolTip to "Window"
612 22 wil
                Set psDescription to "Display Current Views and set other display options."
613 2 wil
614 22 wil
                // These are the static windows items. More will be created in onInitPopup
615 2 wil
                Object oDisplayOptionsMenu is a cCJMenuItem
616 22 wil
                    Set peControlType to xtpControlPopup
617 2 wil
                    Set psCaption to "&Display Options"
618
                    Set psToolTip to "Display Options"
619
                    Set psDescription to "Set display options"
620
621
                    Object oStatusbarMenu is a cCJStatusbarMenuItem
622
                    End_Object
623
624
                    Object oAutoArrangeIconsMenu is a cCJAutoArrangeIconsMenuItem
625
                    End_Object
626
627
                    Object oRestoreMenusMenu is a cCJRestoreMenusMenuItem
628
                        Set pbControlBeginGroup to True
629
                    End_Object
630
631
                End_Object
632
633
                Object oCascadeMenu is a cCJCascadeMenuItem
634
                    Set pbControlBeginGroup to True
635
                End_Object
636
637
                Object oHorizTile is a cCJTileHorizontally
638
                End_Object
639
640
                Object oVertTile is a cCJTileVertically
641
                End_Object
642
643
                Object oMinimizeMenuItem is a cCJMinimizeWindowsMenuItem
644
                    Set pbControlBeginGroup to True
645
                End_Object
646
647
                Object oRestoreMenuItem is a cCJRestoreWindowsMenuItem
648
                End_Object
649
650
                Object oArrangeIconsMenuItem is a cCJAutoArrangeIconsMenuItem
651
                    Set pbControlBeginGroup to True
652
                End_Object
653
654
            End_Object
655
656
            Object oHelpMenu is a cCJMenuItem
657 22 wil
                Set peControlType to xtpControlPopup
658 2 wil
                Set psCaption to "&Help"
659
                Set psDescription to "Access Information for learning and using this DataFlex application."
660
                Set psToolTip to "Help"
661
662 22 wil
                Object oHelpMenuItem is a cCJHelpMenuItem
663 2 wil
                End_Object
664
665
                Object oAboutMenuItem is a cCJAboutMenuItem
666
                End_Object
667
668
            End_Object
669
670
        End_Object
671
672 7 wil
        Object oDebugToolBar is a cCJToolbar
673
            Set psTitle to "Debugging Toolbar"
674 2 wil
675 7 wil
676
            Object oStartDebugButton is a cCJStartDebugMenuItem
677 2 wil
            End_Object
678
679 7 wil
            Object oStopDebugButton is a cCJStopDebugMenuItem
680 2 wil
            End_Object
681
682 60 wil
            Object oRestartDebugButton is a cCJRestartDebugMenuItem
683
            End_Object
684
685 2 wil
            Object oDebugPauseButton is a cCJDebugPauseMenuItem
686
            End_Object
687
688 7 wil
            Object oDebugContinueButton is a cCJDebugContinueMenuItem
689
            End_Object
690
691 2 wil
            Object oDebugStepOverButton is a cCJStepOverMenuItem
692
            End_Object
693
694 7 wil
            Object oDebugStepIntoButton is a cCJStepIntoMenuItem
695 2 wil
            End_Object
696 7 wil
697
            Object oDebugStepOutButton is a cCJStepOutMenuItem
698
            End_Object
699
700 22 wil
            //
701 2 wil
702
            Object oPromptToolItem is a cCJPromptMenuItem
703
                Set pbControlBeginGroup to True
704
            End_Object
705
706
        End_Object
707 27 wil
708 24 wil
        Object oFileToolbar is a cCJToolbar
709
            Set psTitle To "Open Source Toolbar"
710
            Object oFileOpen is a cCJOpenFileMenuItem
711
            End_Object
712
        End_Object
713 2 wil
714 21 wil
        Object oBreakPointToolBar is a cCJToolbar
715
            Set psTitle to "Breakpoint Toolbar"
716
717
            Object oAddBreakpointButton is a cCJAddBreakpointMenuItem
718
            End_Object
719
720
            Object oRemoveBreakpointButton is a cCJRemoveBreakpointMenuItem
721
            End_Object
722
        End_Object
723
724 2 wil
        Object oEditToolBar is a cCJToolbar
725
            Set psTitle to "Edit Toolbar"
726
727
            Object oCutToolbarItem is a cCJCutMenuItem
728
            End_Object
729
730
            Object oCopyToolbarItem is a cCJCopyMenuItem
731
            End_Object
732
733
            Object oPasteToolbarItem is a cCJPasteMenuItem
734
            End_Object
735
736
            Object oDeleteEditToolbarItem is a cCJDeleteEditMenuItem
737
                Set pbControlBeginGroup to True
738
            End_Object
739
740
        End_Object
741
742
        Object oStatusBar is a cCJStatusBar
743
744
            Object oStatusPane1 is a cCJStatusBarPane
745
                Set piID to sbpIDIdlePane
746
                Set pbStyleStretch to True
747 24 wil
                Set psText To ""
748 2 wil
            End_Object
749
750
            Object oStatusPane2 is a cCJStatusBarPane
751
                Set phoViewPane to Self
752
                Set pbStyleStretch to True
753 24 wil
                Set psText To ""
754 2 wil
            End_Object
755 7 wil
756
            Object oStatusPane3 is a cCJStatusBarPane
757
                Set pbStyleStretch to True
758
                Set psText To "testing 888"
759
            End_Object
760 27 wil
761 38 wil
            Function EditorHandle Returns Handle
762
              Handle  hoEditor
763
              Boolean bIsCreated
764
765
              Get phoEditor To hoEditor
766
              If (hoEditor) Begin
767
                Get IsComObjectCreated Of hoEditor To bIsCreated
768
                If (bIsCreated=false) Begin
769
                  Move 0 To hoEditor
770
                End
771
              End
772
              Function_Return hoEditor
773
            End_Function
774
775 24 wil
            Function EditorCurrentLine Returns Integer
776
              Handle  hoEditor
777
              Integer iCount
778
779 38 wil
              Get EditorHandle To hoEditor
780 24 wil
              If (hoEditor) Begin
781
                Get CurrentLine Of hoEditor To iCount
782
              End
783
              Function_Return iCount
784
            End_Function // EditorCurrentLine
785 4 wil
786
            Function EditorLineCount Returns Integer
787
              Handle  hoEditor
788
              Integer iCount
789
790 38 wil
              Get EditorHandle To hoEditor
791 4 wil
              If (hoEditor) Begin
792
                Get ComLineCount Of hoEditor To iCount
793
              End
794
              Function_Return iCount
795 22 wil
            End_Function // EditorLineCount
796 24 wil
797
            Procedure Show_Status_Help String sStatusHelp
798
              Integer iLine
799 38 wil
              Handle  hoEditor
800
              String  sFileName
801 24 wil
802 38 wil
              Move "" To sFileName
803
              Get EditorHandle To hoEditor
804
              If (hoEditor) Begin
805
                Get psFileName of hoEditor To sFileName
806
              End
807 24 wil
              Get EditorCurrentLine To iLine
808
              Set psText Of oStatusPane1 To ("Line: "+trim(iLine))
809 38 wil
              Set psText Of oStatusPane2 To ("File: "+sFileName)
810 24 wil
            End_Procedure
811 2 wil
812
        End_Object
813
814
    End_Object
815
816
    Object oClientArea is a ClientArea
817
        Use StdAbout.pkg
818 40 wil
        Use ObjectInspector.dg
819 7 wil
        Use Vdfdbg.vw
820 2 wil
821 24 wil
        Procedure doActivateObjectInspectorPanel
822 53 wil
          Send StartObjectInspector
823 24 wil
        End_Procedure
824
825 37 wil
826
827 2 wil
        Procedure Activate_About
828 37 wil
          String sTitle sCopyright sVersion sBitmap sAuthor
829
830
          //    string sVal sVal2 sVal3
831
          //    move (SysConf(sysconf_os_name)) to sVal
832
          //    send Info_box sVal "Os Name"
833
          //    move (SysConf(sysconf_os_short_name)) to sVal2
834
          //    send Info_box sVal2 "os short name"
835
          //    move (SysConf(sysconf_os_major_rev)) to sVal3
836
          //    send Info_Box sVal3 "os major revision"
837
          //    //
838
          Move "VdfSplat" to sTitle
839
          Move "Alfa 1" to sVersion
840
          Move "Copyright 2015, GPL v2, Antwise Solutions" to sCopyright
841
          Move "Author: Wil van Antwerpen"  to sAuthor
842
          Move "Debugger.bmp/t" to sBitMap
843
          Send DoAbout sTitle sVersion sCopyright sAuthor sBitMap
844 2 wil
        End_Procedure
845
846
    End_Object
847
848
End_Object
849
850 35 wil
851
Procedure StartDebugging
852
  String sApplication
853
  Handle hoClient
854
855
  Get Client_Id Of oMain To hoClient
856
  If (hoClient) Begin
857
    Send Activate_oVdfdbg of hoClient
858
    Get psApplication of ghoApplication to sApplication
859
    If (sApplication<>"") Begin
860
      Send doDebugRun of hoClient
861
    End
862
  End
863
End_Procedure
864
865
Send StartDebugging
866 2 wil
Start_UI