@@ -22,8 +22,10 @@ define([
2222 '../com/component/Component' ,
2323 '../com/component/FileNavigation' ,
2424 './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 ) {
2729 'use strict' ;
2830 //========================================================================
2931 // Define Variable
@@ -102,6 +104,12 @@ define([
102104 case 'run-all' :
103105 that . runAll ( ) ;
104106 break ;
107+ case 'code-view' :
108+ that . viewCode ( ) ;
109+ break ;
110+ case 'code-export' :
111+ that . exportCode ( ) ;
112+ break ;
105113 case 'view-depth' :
106114 that . viewDepthInfo ( ) ;
107115 break ;
@@ -525,11 +533,10 @@ define([
525533 } ) ;
526534 fileNavi . open ( ) ;
527535 }
528- runBlock ( block , execute = true ) {
536+ runBlock ( block , execute = true , addcell = true ) {
529537 if ( block . id == 'apps_markdown' ) {
530538 // if markdown, run single
531- block . popup . run ( ) ;
532- return ;
539+ return block . popup . run ( execute , addcell ) ;
533540 }
534541 let rootBlockDepth = block . depth ;
535542 let groupedBlocks = block . getGroupedBlocks ( ) ;
@@ -543,7 +550,10 @@ define([
543550 thisBlockCode = thisBlockCode . replaceAll ( '\n' , '\n' + indent ) ;
544551 code . appendFormat ( '{0}{1}{2}' , prevNewLine , indent , thisBlockCode ) ;
545552 } ) ;
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 ( ) ;
547557 }
548558 runAll ( ) {
549559 let that = this ;
@@ -553,6 +563,57 @@ define([
553563 }
554564 } )
555565 }
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+ }
556617 viewDepthInfo ( ) {
557618 this . state . viewDepthNumber = ! this . state . viewDepthNumber ;
558619
0 commit comments