@@ -22,8 +22,10 @@ define([
22
22
'../com/component/Component' ,
23
23
'../com/component/FileNavigation' ,
24
24
'./Block' ,
25
- './BlockMenu'
26
- ] , function ( boardFrameHtml , boardFrameCss , com_Config , com_String , com_util , com_interface , Component , FileNavigation , Block , BlockMenu ) {
25
+ './BlockMenu' ,
26
+ './CodeView'
27
+ ] , function ( boardFrameHtml , boardFrameCss , com_Config , com_String , com_util , com_interface ,
28
+ Component , FileNavigation , Block , BlockMenu , CodeView ) {
27
29
'use strict' ;
28
30
//========================================================================
29
31
// Define Variable
@@ -102,6 +104,12 @@ define([
102
104
case 'run-all' :
103
105
that . runAll ( ) ;
104
106
break ;
107
+ case 'code-view' :
108
+ that . viewCode ( ) ;
109
+ break ;
110
+ case 'code-export' :
111
+ that . exportCode ( ) ;
112
+ break ;
105
113
case 'view-depth' :
106
114
that . viewDepthInfo ( ) ;
107
115
break ;
@@ -525,11 +533,10 @@ define([
525
533
} ) ;
526
534
fileNavi . open ( ) ;
527
535
}
528
- runBlock ( block , execute = true ) {
536
+ runBlock ( block , execute = true , addcell = true ) {
529
537
if ( block . id == 'apps_markdown' ) {
530
538
// if markdown, run single
531
- block . popup . run ( ) ;
532
- return ;
539
+ return block . popup . run ( execute , addcell ) ;
533
540
}
534
541
let rootBlockDepth = block . depth ;
535
542
let groupedBlocks = block . getGroupedBlocks ( ) ;
@@ -543,7 +550,10 @@ define([
543
550
thisBlockCode = thisBlockCode . replaceAll ( '\n' , '\n' + indent ) ;
544
551
code . appendFormat ( '{0}{1}{2}' , prevNewLine , indent , thisBlockCode ) ;
545
552
} ) ;
546
- com_interface . insertCell ( 'code' , code . toString ( ) , execute , block . blockNumber ) ;
553
+ if ( addcell ) {
554
+ com_interface . insertCell ( 'code' , code . toString ( ) , execute , block . blockNumber ) ;
555
+ }
556
+ return code . toString ( ) ;
547
557
}
548
558
runAll ( ) {
549
559
let that = this ;
@@ -553,6 +563,57 @@ define([
553
563
}
554
564
} )
555
565
}
566
+ getOverallCode ( ) {
567
+ let overallCode = new com_String ( ) ;
568
+ let that = this ;
569
+ this . blockList . forEach ( ( block ) => {
570
+ if ( block . isGroup ) {
571
+ if ( overallCode . toString ( ) != '' ) {
572
+ overallCode . appendLine ( ) ;
573
+ overallCode . appendLine ( ) ;
574
+ }
575
+ let groupCode = that . runBlock ( block , false , false ) ;
576
+ if ( block . id == 'apps_markdown' ) {
577
+ // if markdown, add #
578
+ groupCode = '#' + groupCode . replaceAll ( '\n' , '\n# ' ) ;
579
+ }
580
+ overallCode . appendFormatLine ( '# VisualPython [{0}]{1}' , block . blockNumber ,
581
+ block . id == 'apps_markdown' ? ' - Markdown' :'' ) ;
582
+ overallCode . append ( groupCode ) ;
583
+ }
584
+ } ) ;
585
+ return overallCode . toString ( ) ;
586
+ }
587
+ viewCode ( ) {
588
+ let overallCode = this . getOverallCode ( ) ;
589
+ let codeview = new CodeView ( {
590
+ codeview : overallCode ,
591
+ config : {
592
+ id : 'boardCodeview' ,
593
+ name : 'Overall Codeview' ,
594
+ path : ''
595
+ }
596
+ } ) ;
597
+ codeview . open ( ) ;
598
+ }
599
+ exportCode ( ) {
600
+ let that = this ;
601
+ // save .py file
602
+ let fileNavi = new FileNavigation ( {
603
+ type : 'save' ,
604
+ fileName : this . tmpState . boardTitle ,
605
+ extensions : [ 'py' ] ,
606
+ finish : function ( filesPath , status , error ) {
607
+ let fileName = filesPath [ 0 ] . file ;
608
+ let filePath = filesPath [ 0 ] . path ;
609
+
610
+ // save py file
611
+ let overallCode = that . getOverallCode ( ) ;
612
+ vpKernel . saveFile ( fileName , filePath , overallCode ) ;
613
+ }
614
+ } ) ;
615
+ fileNavi . open ( ) ;
616
+ }
556
617
viewDepthInfo ( ) {
557
618
this . state . viewDepthNumber = ! this . state . viewDepthNumber ;
558
619
0 commit comments