User Tools

Site Tools


sample_code:introspector

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
sample_code:introspector [2014/10/09 20:16]
stevegarman [Acknowledgement]
sample_code:introspector [2014/10/11 06:24]
stevegarman
Line 12: Line 12:
 ===== The code ===== ===== The code =====
 <code javascript introspector.js> <code javascript introspector.js>
-// Introspection lite tool for home use by Steve Garman +// Introspection lite tool for home use by Steve Garman 
-// Main code stolen from AppInspector by Andreas Rozek +// Main code stolen from AppInspector by Andreas Rozek 
  
-//Global variables +//Global variables 
-var myobj = app; +var myobj = app; 
-var ListView, menuView, FunctionView +var ListView, menuView, FunctionView 
-var main_header_txt, edtFilter, dlg, edtDlg; +var main_header_txt, edtFilter, dlg, edtDlg; 
-var lastMenu = "app"; +var lastMenu = "app"; 
-var pasteable = "null"; +var pasteable = "null"; 
-var vers = Math.floor((app.GetVersion() +var vers = Math.floor((app.GetVersion() 
-      +.0005) * 100); +      +.0005) * 100); 
-var docfold = "/sdcard/sjgDocs/androidscript/"+vers; +var docfold = "/sdcard/sjgDocs/androidscript/"+vers; 
-var docfile docfold + "/null.txt";+var docfile docfold + "/null.txt";
  
-//Called when application is started+//Called when application is started
-function OnStart(){ +function OnStart(){ 
-    app.EnableBackKey( false ); +    app.EnableBackKey( false ); 
-     +     
-    //Create a layout with objects vertically centered+    //Create a layout with objects vertically centered
-    var lay = app.CreateLayout( "linear", "Vertical,FillXY" );   +    var lay = app.CreateLayout( "linear", "Vertical,FillXY" );   
-    add_top_bar( lay ); +    add_top_bar( lay ); 
-  +  
-/**** prepare page area ****/ +/**** prepare page area ****/ 
-    var PageArea = app.CreateLayout('frame','fillxy'); +    var PageArea = app.CreateLayout('frame','fillxy'); 
-    lay.AddChild(PageArea);+    lay.AddChild(PageArea);
  
-    var control_list = "app,layout,Manually entered code,Button,CameraView,CheckBox" +    var control_list = "app,layout,Manually entered code,Button,CameraView,CheckBox" 
-      +",Crypt,Dialog,Email,Image,List,Locator,Notification,SeekBar" +      +",Crypt,Dialog,Email,Image,List,Locator,Notification,SeekBar" 
-      +",Sensor,SMS,Spinner,Text,TextEdit,ToggleButton" +      +",Sensor,SMS,Spinner,Text,TextEdit,ToggleButton" 
-      +",WebServer,WebView,YesNoDialog" +      +",WebServer,WebView,YesNoDialog" 
-    menuView = app.CreateList( control_list, -1,-1, 'fillxy'); +    menuView = app.CreateList( control_list, -1,-1, 'fillxy'); 
-    menuView.SetOnTouch(menuView_OnTouch); +    menuView.SetOnTouch(menuView_OnTouch); 
-    PageArea.AddChild(menuView); +    PageArea.AddChild(menuView); 
-    menuView.SetVisibility('Hide');+    menuView.SetVisibility('Hide');
  
-    ListView = app.CreateList("", -1,-1, 'fillxy'); +    ListView = app.CreateList("", -1,-1, 'fillxy'); 
-    prepareFunctionList();+    prepareFunctionList();
  
-    ListView.SetOnTouch(showAppFunction); +    ListView.SetOnTouch(showAppFunction); 
-    PageArea.AddChild(ListView);+    PageArea.AddChild(ListView);
  
-  /**** prepare detail view ****/+  /**** prepare detail view ****/
  
-    FunctionView = app.CreateTextEdit(''); +    FunctionView = app.CreateTextEdit(''); 
-    PageArea.AddChild(FunctionView); +    PageArea.AddChild(FunctionView); 
-    FunctionView.SetVisibility('Hide'); +    FunctionView.SetVisibility('Hide'); 
-     +     
-    //Add layout to app    +    //Add layout to app    
-    app.AddLayout( lay ); +    app.AddLayout( lay ); 
-    showMenuView();+    showMenuView();
 }//OnStart }//OnStart
  
-function add_top_bar (lyout, opts){ +function add_top_bar (lyout, opts){ 
-  //basic top bar layout +  //basic top bar layout 
-  var lay_bar = app.CreateLayout( "Linear", "Horizontal,Left, FillX" ); +  var lay_bar = app.CreateLayout( "Linear", "Horizontal,Left, FillX" ); 
-  lay_bar.SetBackGradient( "#444444", "#888888" );+  lay_bar.SetBackGradient( "#444444", "#888888" );
  
-  //add app name if required stolen for object/function name in this app +  //add app name if required stolen for object/function name in this app 
-  main_header_txt = app.CreateText( lastMenu , -1, -); +  main_header_txt = app.CreateText( lastMenu , -1, -); 
-  main_header_txt.SetTextSize( 24 ); +  main_header_txt.SetTextSize( 24 ); 
-  main_header_txt.SetPadding( 0.01, 0, 0.01, ); +  main_header_txt.SetPadding( 0.01, 0, 0.01, ); 
-  lay_bar.AddChild( main_header_txt );+  lay_bar.AddChild( main_header_txt );
  
-  var filterlabel = app.CreateText("Func filter:"); +  var filterlabel = app.CreateText("Func filter:"); 
-  filterlabel.SetTextSize(18); +  filterlabel.SetTextSize(18); 
-  filterlabel.SetTextColor("#ff222222"); +  filterlabel.SetTextColor("#ff222222"); 
-  lay_bar.AddChild( filterlabel ); +  lay_bar.AddChild( filterlabel ); 
-  edtFilter = app.CreateTextEdit("",0.3); +  edtFilter = app.CreateTextEdit("",0.3); 
-  edtFilter.SetBackColor("#ff222222"); +  edtFilter.SetBackColor("#ff222222"); 
-  edtFilter.SetTextSize(18); +  edtFilter.SetTextSize(18); 
-  edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); +  edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); 
-  edtFilter.SetOnChange(edtFilterOnChange); +  edtFilter.SetOnChange(edtFilterOnChange); 
-  lay_bar.AddChild(edtFilter);+  lay_bar.AddChild(edtFilter);
  
-  lyout.AddChild( lay_bar );+  lyout.AddChild( lay_bar );
 }//add_top_bar }//add_top_bar
  
-function menuView_OnTouch(name){ +function menuView_OnTouch(name){ 
-  lastMenu = name; +  lastMenu = name; 
-  switch(name) { +  switch(name) { 
-    case "layout": +    case "layout": 
-        myobj = app.CreateLayout( "linear" ) ; +        myobj = app.CreateLayout( "linear" ) ; 
-        break; +        break; 
-    case "Button": +    case "Button": 
-        myobj = app.CreateButton("x"); +        myobj = app.CreateButton("x"); 
-        break; +        break; 
-    case "Text": +    case "Text": 
-        myobj = main_header_txt; +        myobj = main_header_txt; 
-        break; +        break; 
-    case "Image": +    case "Image": 
-        myobj = app.CreateImage( "/Sys/Img/Hello.png" ); +        myobj = app.CreateImage( "/Sys/Img/Hello.png" ); 
-        break; +        break; 
-    case "Notification": +    case "Notification": 
-        myobj = app.CreateNotification() ; +        myobj = app.CreateNotification() ; 
-        break; +        break; 
-    case "CheckBox": +    case "CheckBox": 
-        myobj = app.CreateCheckBox( "x" ); +        myobj = app.CreateCheckBox( "x" ); 
-        break; +        break; 
-    case "Crypt": +    case "Crypt": 
-        myobj = app.CreateCrypt(); +        myobj = app.CreateCrypt(); 
-        break; +        break; 
-    case "Dialog": +    case "Dialog": 
-        myobj = app.CreateDialog(""); +        myobj = app.CreateDialog(""); 
-        break; +        break; 
-    case "ToggleButton": +    case "ToggleButton": 
-        myobj = app.CreateToggle( "x" ); +        myobj = app.CreateToggle( "x" ); 
-        break; +        break; 
-    case "SeekBar": +    case "SeekBar": 
-        myobj = app.CreateSeekBar( "x" ); +        myobj = app.CreateSeekBar( "x" ); 
-        break; +        break; 
-    case "List": +    case "List": 
-        myobj = ListView; +        myobj = ListView; 
-        break; +        break; 
-    case "TextEdit": +    case "TextEdit": 
-        myobj = FunctionView; +        myobj = FunctionView; 
-        break; +        break; 
-    case "WebView": +    case "WebView": 
-        myobj = app.CreateWebView( 0.8,0.); +        myobj = app.CreateWebView( 0.8,0.); 
-        break; +        break; 
-    case "WebServer": +    case "WebServer": 
-        myobj = app.CreateWebServer( 8080, "Upload,ListDir" ); +        myobj = app.CreateWebServer( 8080, "Upload,ListDir" ); 
-        break; +        break; 
-    case "CameraView": +    case "CameraView": 
-        myobj = app.CreateCameraView( 0.8,0.); +        myobj = app.CreateCameraView( 0.8,0.); 
-        break; +        break; 
-    case "Sensor": +    case "Sensor": 
-       myobj = app.CreateSensor( "Accelerometer" ); +       myobj = app.CreateSensor( "Accelerometer" ); 
-       break; +       break; 
-    case "Email": +    case "Email": 
-      myobj = app.CreateEmail( "mymail@gmail.com", "MyPass" ); +      myobj = app.CreateEmail( "mymail@gmail.com", "MyPass" ); 
-      break; +      break; 
-    case "Locator": +    case "Locator": 
-       myobj = app.CreateLocator( "GPS,Network" ); +       myobj = app.CreateLocator( "GPS,Network" ); 
-       break; +       break; 
-    case "Spinner": +    case "Spinner": 
-       myobj= app.CreateSpinner("1,2"); +       myobj= app.CreateSpinner("1,2"); 
-       break; +       break; 
-    case "SMS": +    case "SMS": 
-       myobj = app.CreateSMS(); +       myobj = app.CreateSMS(); 
-       break; +       break; 
-    case "YesNoDialog": +    case "YesNoDialog": 
-        myobj = app.CreateYesNoDialog(""); +        myobj = app.CreateYesNoDialog(""); 
-        break; +        break; 
-    case("Manually entered code"): +    case("Manually entered code"): 
-        showEval(); +        showEval(); 
-        return; +        return; 
-    default: +    default: 
-        myobj=app; +        myobj=app; 
-        lastMenu = "app"; +        lastMenu = "app"; 
-       +       
-  prepareFunctionList(); +  prepareFunctionList(); 
-  showOverview(); +  showOverview(); 
-  main_header_txt.SetText( lastMenu );+  main_header_txt.SetText( lastMenu );
 }//menuView_OnTouch }//menuView_OnTouch
  
-  function prepareFunctionList(){ +  function prepareFunctionList(){ 
-/**** prepare list view ****/+/**** prepare list view ****/
  
-    var objFunctionList+    var objFunctionList
-    objFunctionList = []; +    objFunctionList = []; 
-    var filter = edtFilter.GetText().trim().toLowerCase() +    var filter = edtFilter.GetText().trim().toLowerCase() 
-    for (var Key in myobj) { +    for (var Key in myobj) { 
-      var keyword= Key.toLowerCase() +      var keyword= Key.toLowerCase() 
-      if ((filter == "") || (keyword.indexOf(filter) > -1)){ +      if ((filter == "") || (keyword.indexOf(filter) > -1)){ 
-        if (myobj.hasOwnProperty(Key) && (typeof myobj[Key] === 'function')) { +        if (myobj.hasOwnProperty(Key) && (typeof myobj[Key] === 'function')) { 
-          objFunctionList.push(Key); +          objFunctionList.push(Key); 
-        }; +        }; 
-      +      
-    }; +    }; 
-    objFunctionList.sort(); +    objFunctionList.sort(); 
-    ListView.SetList( objFunctionList.join(','), ","+    ListView.SetList( objFunctionList.join(','), ","
-    if(filter != ""filter = "Filtered [" + filter + "]\n"; +    if(filter != "" ) filter = "Filtered [" + filter + "]\n"; 
-    pasteable filter lastMenu + "."; +    pasteable filter lastMenu + "."; 
-    var copyDelim = "\n"lastMenu + "."; +    var copyDelim = "\n" + lastMenu + "."; 
-    pasteable += objFunctionList.join( copyDelim +    pasteable += objFunctionList.join( copyDelim 
-    docfile docfold + "/"lastMenu + ".txt"; +    docfile docfold + "/" + lastMenu + ".txt"; 
-  }//prepareFunctionList +  }//prepareFunctionList 
-  function showMenuView(){ +  function showMenuView(){ 
-    ListView.SetVisibility('hide'); +    ListView.SetVisibility('hide'); 
-    FunctionView.SetVisibility('hide'); +    FunctionView.SetVisibility('hide'); 
-    menuView.SetVisibility('show'); +    menuView.SetVisibility('show'); 
-    main_header_txt.SetText( "Choose Control" ); +    main_header_txt.SetText( "Choose Control" ); 
-  }//showMenuView+  }//showMenuView
  
-  function showAppFunction (Name) { +  function showAppFunction (Name) { 
-    FunctionView.SetText(String(myobj[Name])); +    FunctionView.SetText(String(myobj[Name])); 
-    main_header_txt.SetText( lastMenu + "."Name ); +    main_header_txt.SetText( lastMenu + "." + Name ); 
-    ListView.SetVisibility('hide'); +    ListView.SetVisibility('hide'); 
-    menuView.SetVisibility('hide'); +    menuView.SetVisibility('hide'); 
-    FunctionView.SetVisibility('show'); +    FunctionView.SetVisibility('show'); 
-  }//showAppFunction+  }//showAppFunction
  
-  function showOverview () { +  function showOverview () { 
-    ListView.SetVisibility('show'); +    ListView.SetVisibility('show'); 
-    FunctionView.SetVisibility('hide'); +    FunctionView.SetVisibility('hide'); 
-    menuView.SetVisibility('hide'); +    menuView.SetVisibility('hide'); 
-    main_header_txt.SetText( lastMenu ); +    main_header_txt.SetText( lastMenu ); 
-  }//showOverview +  }//showOverview 
-  function edtFilterOnChange(){ +  function edtFilterOnChange(){ 
-    if( ListView.GetVisibility() == "Show" ){ +    if( ListView.GetVisibility() == "Show" ){ 
-      prepareFunctionList();  +      prepareFunctionList();  
-    +    
-  }//edtFilterOnChange+  }//edtFilterOnChange
  
-  function OnBack(){ +  function OnBack(){ 
-    if (menuView.GetVisibility() == "Show") { +    if (menuView.GetVisibility() == "Show") { 
-      var pasteOnExit = app.CreateYesNoDialog( "Copy to clipboard and create text file?" ); +      var pasteOnExit = app.CreateYesNoDialog( "Copy to clipboard and create text file?" ); 
-      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch ); +      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch ); 
-    +    
-    else if( ListView.GetVisibility() == "Show" ) showMenuView(); +    else if( ListView.GetVisibility() == "Show" ) showMenuView(); 
-    else showOverview(); +    else showOverview(); 
-  }//OnBack+  }//OnBack
  
-  function pasteOnExit_OnTouchresult ){ +  function pasteOnExit_OnTouchresult ){ 
-    if( result=="Yes" ){ +    if( result=="Yes" ){ 
-      app.SetClipboardText( pasteable ); +      app.SetClipboardText( pasteable ); 
-      if( ! app.FolderExists( docfold ) ) +      if( ! app.FolderExists( docfold ) ) 
-        app.MakeFolder docfold ); +        app.MakeFolder docfold ); 
-      app.WriteFile( docfile, pasteable ); +      app.WriteFile( docfile, pasteable ); 
-    +    
-    app.Exit();  +    app.Exit();  
-  }//pasteOnExit +  }//pasteOnExit 
-function showEval(){ +function showEval(){ 
-    dlg = app.CreateDialog("eval use with care"); +    dlg = app.CreateDialog("eval use with care"); 
-    var layDlg = app.CreateLayout( "linear", "vertical,fillxy,left" ); +    var layDlg = app.CreateLayout( "linear", "vertical,fillxy,left" ); 
-    layDlg.SetPadding( 0.02, 0, 0.02, 0.02 ); +    layDlg.SetPadding( 0.02, 0, 0.02, 0.02 ); 
-    edtDlg = app.CreateTextEdit('app.CreateText( "Hello" )'); +    edtDlg = app.CreateTextEdit('app.CreateText( "Hello" )'); 
-    edtDlg.SetCursorPos(edtDlg.GetText().length); +    edtDlg.SetCursorPos(edtDlg.GetText().length); 
-    layDlg.AddChild(edtDlg); +    layDlg.AddChild(edtDlg); 
-    dlg.AddLayout( layDlg ); +    dlg.AddLayout( layDlg ); 
-    var horiz = app.CreateLayout("linear", "horizontal,fillxy"); +    var horiz = app.CreateLayout("linear", "horizontal,fillxy"); 
-    horiz.SetPadding( 0.02, 0.02, 0.02, ); +    horiz.SetPadding( 0.02, 0.02, 0.02, ); 
-    var btn = app.CreateButton("Ok", 0.2); +    var btn = app.CreateButton("Ok", 0.2); 
-    btn.SetOnTouch(dlg_ok); +    btn.SetOnTouch(dlg_ok); 
-    horiz.AddChild(btn); +    horiz.AddChild(btn); 
-    btn = app.CreateButton("Cancel",0.2); +    btn = app.CreateButton("Cancel",0.2); 
-    btn.SetOnTouch(dlg_canc); +    btn.SetOnTouch(dlg_canc); 
-    horiz.AddChild(btn); +    horiz.AddChild(btn); 
-    layDlg.AddChild(horiz); +    layDlg.AddChild(horiz); 
-    dlg.Show();+    dlg.Show();
 }//showEval }//showEval
-function dlg_ok(){ +function dlg_ok(){ 
-    app.HideKeyboard(); +    app.HideKeyboard(); 
-    dlg.Dismiss(); +    dlg.Dismiss(); 
-    myobj = eval(edtDlg.GetText()); +    myobj = eval(edtDlg.GetText()); 
-    prepareFunctionList(); +    prepareFunctionList(); 
-    showOverview(); +    showOverview(); 
-    if ((myobj != null) && (myobj.hasOwnProperty("GetType"))) +    if ((myobj != null) && (myobj.hasOwnProperty("GetType"))) 
-      lastMenu = myobj.GetType(); +      lastMenu = myobj.GetType(); 
-    else +    else 
-      lastMenu = "Eval"; +      lastMenu = "Eval"; 
-    main_header_txt.SetText( lastMenu );+    main_header_txt.SetText( lastMenu );
 }//dlg_ok }//dlg_ok
-function dlg_canc(){ +function dlg_canc(){ 
-    app.HideKeyboard(); +    app.HideKeyboard(); 
-    dlg.Dismiss();+    dlg.Dismiss();
 }//dlg_canc }//dlg_canc
 +
 </code> </code>
  
sample_code/introspector.txt · Last modified: 2015/03/29 05:06 (external edit)