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 Both sides next revision
sample_code:introspector [2014/10/13 16:02]
stevegarman
sample_code:introspector [2014/12/06 21:02]
stevegarman
Line 14: Line 14:
 // 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" +
-      +",Crypt,Dialog,Email,Image,List,Locator,Notification,SeekBar" +
-      +",Sensor,SMS,Spinner,Text,TextEdit,ToggleButton" +
-      +",WebServer,WebView,YesNoDialog" +
-    menuView = app.CreateList( control_list, -1,-1, 'fillxy'); +
-    menuView.SetOnTouch(menuView_OnTouch); +
-    PageArea.AddChild(menuView); +
-    menuView.SetVisibility('Hide');+
  
-    ListView = app.CreateList("", -1,-1, 'fillxy'); +         
-    prepareFunctionList();+    var  control_list  =  "app,layout,Manually entered code,Button,CameraView,CheckBox"       + ",Crypt,Dialog,Email,Image,List,Locator,Notification,SeekBar"       + ",Sensor,SMS,Spinner,Text,TextEdit,ToggleButton"       + ",WebServer,WebView,YesNoDialog"     
 +    menuView   app.CreateList( control_list -1, -1,  'fillxy');     
 +    menuView.SetOnTouch(menuView_OnTouch);     
 +    PageArea.AddChild(menuView);     
 +    menuView.SetVisibility('Hide');
  
-    ListView.SetOnTouch(showAppFunction); +         
-    PageArea.AddChild(ListView);+    ListView  =  app.CreateList("",  -1, -1,  'fillxy');     
 +    prepareFunctionList();
  
-  /**** prepare detail view ****/+         
 +    ListView.SetOnTouch(showAppFunction);     
 +    PageArea.AddChild(ListView);
  
-    FunctionView = app.CreateTextEdit(''); +       /**** prepare detail view ****/
-    PageArea.AddChild(FunctionView); +
-    FunctionView.SetVisibility('Hide'); +
-     +
-    //Add layout to app.     +
-    app.AddLayout( lay ); +
-    showMenuView(); +
-}//OnStart+
  
-function add_top_bar (lyout, opts){ +         
-  //basic top bar layout +    FunctionView  =  app.CreateTextEdit('');     
-  var lay_bar = app.CreateLayout"Linear", "Horizontal,Left, FillX" ); +    PageArea.AddChild(FunctionView);     
-  lay_bar.SetBackGradient"#444444", "#888888" );+    FunctionView.SetVisibility('Hide');         //Add layout to app.     
 +         
 +    app.AddLayoutlay );     
 +    showMenuView(); 
 +  } //OnStart
  
-  //add app name if required - stolen for object/function name in this app +function  add_top_bar (lyout,  opts) 
-  main_header_txt = app.CreateTextlastMenu -1-1 ); +  {   //basic top bar layout 
-  main_header_txt.SetTextSize( 24 ); +       
-  main_header_txt.SetPadding0.010, 0.01, 0 ); +    var  lay_bar  =  app.CreateLayout"Linear" "Horizontal,Left, FillX" );   
-  lay_bar.AddChild( main_header_txt );+    lay_bar.SetBackGradient"#444444",  "#888888" );
  
-  var filterlabel = app.CreateText("Func filter:"); +       //add app name if required - stolen for object/function name in this app 
-  filterlabel.SetTextSize(18); +       
-  filterlabel.SetTextColor("#ff222222"); +    main_header_txt   app.CreateText( lastMenu ,  -1,  -1 );   
-  lay_bar.AddChild( filterlabel ); +    main_header_txt.SetTextSize24 );   
-  edtFilter = app.CreateTextEdit("",0.3); +    main_header_txt.SetPadding( 0.01,  0,  0.01 0 );   
-  edtFilter.SetBackColor("#ff222222"); +    lay_bar.AddChild( main_header_txt );
-  edtFilter.SetTextSize(18); +
-  edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); +
-  edtFilter.SetOnChange(edtFilterOnChange); +
-  lay_bar.AddChild(edtFilter);+
  
-  lyout.AddChild( lay_bar ); +       
-}//add_top_bar+    var  filterlabel  =  app.CreateText("Func filter:");   
 +    filterlabel.SetTextSize(18);   
 +    filterlabel.SetTextColor("#ff222222");   
 +    lay_bar.AddChild( filterlabel );   
 +    edtFilter  =  app.CreateTextEdit("", 0.3);   
 +    edtFilter.SetBackColor("#ff222222");   
 +    edtFilter.SetTextSize(18);   
 +    edtFilter.SetPadding( 0.01,  0,  0,  0.001 );   
 +    edtFilter.SetOnChange(edtFilterOnChange);   
 +    lay_bar.AddChild(edtFilter);
  
-function menuView_OnTouch(name){ +       
-  lastMenu = name; +    lyout.AddChildlay_bar ); 
-  switch(name) { +  } //add_top_bar
-    case "layout": +
-        myobj = app.CreateLayout( "linear" ) ; +
-        break; +
-    case "Button": +
-        myobj = app.CreateButton("x"); +
-        break; +
-    case "Text": +
-        myobj = main_header_txt; +
-        break; +
-    case "Image": +
-        myobj = app.CreateImage( "/Sys/Img/Hello.png" ); +
-        break; +
-    case "Notification": +
-        myobj = app.CreateNotification() ; +
-        break; +
-    case "CheckBox": +
-        myobj = app.CreateCheckBox( "x" ); +
-        break; +
-    case "Crypt": +
-        myobj = app.CreateCrypt(); +
-        break; +
-    case "Dialog": +
-        myobj = app.CreateDialog(""); +
-        break; +
-    case "ToggleButton": +
-        myobj = app.CreateToggle( "x" ); +
-        break; +
-    case "SeekBar": +
-        myobj = app.CreateSeekBar( "x" ); +
-        break; +
-    case "List": +
-        myobj = ListView; +
-        break; +
-    case "TextEdit": +
-        myobj = FunctionView; +
-        break; +
-    case "WebView": +
-        myobj = app.CreateWebView( 0.8,0.8 ); +
-        break; +
-    case "WebServer": +
-        myobj = app.CreateWebServer( 8080, "Upload,ListDir" ); +
-        break; +
-    case "CameraView": +
-        myobj = app.CreateCameraView( 0.8,0.8 ); +
-        break; +
-    case "Sensor": +
-       myobj = app.CreateSensor( "Accelerometer" ); +
-       break; +
-    case "Email": +
-      myobj = app.CreateEmail( "mymail@gmail.com", "MyPass" ); +
-      break; +
-    case "Locator": +
-       myobj = app.CreateLocator( "GPS,Network" ); +
-       break; +
-    case "Spinner": +
-       myobj= app.CreateSpinner("1,2"); +
-       break; +
-    case "SMS": +
-       myobj = app.CreateSMS(); +
-       break; +
-    case "YesNoDialog": +
-        myobj = app.CreateYesNoDialog(""); +
-        break; +
-    case("Manually entered code"): +
-        showEval(); +
-        return; +
-    default: +
-        myobj=app; +
-        lastMenu = "app"; +
-    }    +
-  prepareFunctionList(); +
-  showOverview(); +
-  main_header_txt.SetTextlastMenu ); +
-}//menuView_OnTouch+
  
-  function prepareFunctionList(){ +function  menuView_OnTouch(name) 
-/**** prepare list view ****/+    
 +    lastMenu  =  name;   
 +    switch (name)  
 +    {     
 +      case  "layout": 
 +                myobj  =  app.CreateLayout( "linear" ) ;         
 +        break;     
 +      case  "Button": 
 +                myobj  =  app.CreateButton("x");         
 +        break;     
 +      case  "Text": 
 +                myobj  =  main_header_txt;         
 +        break;     
 +      case  "Image": 
 +                myobj  =  app.CreateImage( "/Sys/Img/Hello.png" );         
 +        break;     
 +      case  "Notification": 
 +                myobj  =  app.CreateNotification() ;         
 +        break;     
 +      case  "CheckBox": 
 +                myobj  =  app.CreateCheckBox( "x" );         
 +        break;     
 +      case  "Crypt": 
 +                myobj  =  app.CreateCrypt();         
 +        break;     
 +      case  "Dialog": 
 +                myobj  =  app.CreateDialog("");         
 +        break;     
 +      case  "ToggleButton": 
 +                myobj  =  app.CreateToggle( "x" );         
 +        break;     
 +      case  "SeekBar": 
 +                myobj  =  app.CreateSeekBar( "x" );         
 +        break;     
 +      case  "List": 
 +                myobj  =  ListView;         
 +        break;     
 +      case  "TextEdit": 
 +                myobj  =  FunctionView;         
 +        break;     
 +      case  "WebView": 
 +                myobj  =  app.CreateWebView( 0.8, 0.8 );         
 +        break;     
 +      case  "WebServer": 
 +                myobj  =  app.CreateWebServer( 8080,  "Upload,ListDir" );         
 +        break;     
 +      case  "CameraView": 
 +                myobj  =  app.CreateCameraView( 0.8, 0.8 );         
 +        break;     
 +      case  "Sensor": 
 +               myobj  =  app.CreateSensor( "Accelerometer" );        
 +        break;     
 +      case  "Email": 
 +              myobj  =  app.CreateEmail( "mymail@gmail.com",  "MyPass" );       
 +        break;     
 +      case  "Locator": 
 +               myobj  =  app.CreateLocator( "GPS,Network" );        
 +        break;     
 +      case  "Spinner": 
 +               myobj =  app.CreateSpinner("1,2");        
 +        break;     
 +      case  "SMS": 
 +               myobj  =  app.CreateSMS();        
 +        break;     
 +      case  "YesNoDialog": 
 +                myobj  =  app.CreateYesNoDialog("");         
 +        break;     
 +      case ("Manually entered code"): 
 +                showEval();         
 +        return;     
 +      default: 
 +                myobj = app;         
 +        lastMenu  =  "app";     
 +    }      
 +    prepareFunctionList();   
 +    showOverview();   
 +    main_header_txt.SetText( lastMenu ); 
 +  //menuView_OnTouch
  
-    var objFunctionList; +   
-    objFunctionList = []; +function  prepareFunctionList() 
-    var filter = edtFilter.GetText().trim().toLowerCase() +  
-    for (var Key in myobj) +    /**** prepare list view ****/
-      var keyword= Key.toLowerCase() +
-      if ((filter == "") || (keyword.indexOf(filter) > -1)){ +
-        if (myobj.hasOwnProperty(Key) && (typeof myobj[Key] === 'function')) { +
-          objFunctionList.push(Key); +
-        }; +
-      } +
-    }; +
-    objFunctionList.sort(); +
-    ListView.SetList( objFunctionList.join(','), ","+
-    if(filter != "" ) filter = "Filtered [" + filter + "]\n"; +
-    pasteable = filter + lastMenu + "."; +
-    var copyDelim = "\n" + lastMenu + "."; +
-    pasteable += objFunctionList.join( copyDelim ) +
-    docfile = docfold + "/" + lastMenu + ".txt"; +
-  }//prepareFunctionList +
-  function showMenuView(){ +
-    ListView.SetVisibility('hide'); +
-    FunctionView.SetVisibility('hide'); +
-    menuView.SetVisibility('show'); +
-    main_header_txt.SetText( "Choose Control" ); +
-  }//showMenuView+
  
-  function showAppFunction (Name) { +         
-    FunctionView.SetText(String(myobj[Name])); +    var  objFunctionList;     
-    main_header_txt.SetText( lastMenu + "." + Name ); +    objFunctionList  =   [];     
-    ListView.SetVisibility('hide'); +    var  filter  =  edtFilter.GetText().trim().toLowerCase()     for  (var  Key  in  myobj)  
-    menuView.SetVisibility('hide'); +          
-    FunctionView.SetVisibility('show'); +      var  keyword =  Key.toLowerCase()       if  ((filter  ==  "")  ||  (keyword.indexOf(filter)  >  -1)) 
-  }//showAppFunction+      {         
 +        if  (myobj.hasOwnProperty(Key)  &&  (typeof  myobj[Key ===  'function'))  
 +        {           
 +          objFunctionList.push(Key);         
 +        };       
 +      }     
 +    };     
 +    objFunctionList.sort();     
 +    ListView.SetList( objFunctionList.join(','),  ",")     if (filter  !=  "" )  filter  =  "Filtered ["  +  filter  +  "]\n";     
 +    pasteable  =  filter  +  lastMenu  +  ".";     
 +    var  copyDelim  =  "\n"   lastMenu  +  ".";     
 +    pasteable  +=  objFunctionList.join( copyDelim     docfile  =  docfold  +  "/"  +  lastMenu  +  ".txt"  
 +  } //prepareFunctionList 
 +     
 +function  showMenuView() 
 +  {     
 +    ListView.SetVisibility('hide');     
 +    FunctionView.SetVisibility('hide');     
 +    menuView.SetVisibility('show');     
 +    main_header_txt.SetText( "Choose Control" );   
 +  } //showMenuView
  
-  function showOverview () { +   
-    ListView.SetVisibility('show'); +function  showAppFunction (Name 
-    FunctionView.SetVisibility('hide'); +      
-    menuView.SetVisibility('hide'); +    FunctionView.SetText(String(myobj[Name]));     
-    main_header_txt.SetTextlastMenu ); +    main_header_txt.SetTextlastMenu  +  "."  +  Name );     
-  }//showOverview +    ListView.SetVisibility('hide');     
-  function edtFilterOnChange(){ +    menuView.SetVisibility('hide');     
-    if( ListView.GetVisibility() == "Show" ){ +    FunctionView.SetVisibility('show');   
-      prepareFunctionList();  +  } //showAppFunction
-    } +
-  }//edtFilterOnChange+
  
-  function OnBack(){ +   
-    if (menuView.GetVisibility() == "Show") { +function  showOverview ()  
-      var pasteOnExit = app.CreateYesNoDialog"Copy to clipboard and create text file?" ); +  {     
-      pasteOnExit.SetOnTouchpasteOnExit_OnTouch ); +    ListView.SetVisibility('show');     
-    +    FunctionView.SetVisibility('hide');     
-    else if( ListView.GetVisibility() == "Show" ) showMenuView(); +    menuView.SetVisibility('hide');     
-    else showOverview(); +    main_header_txt.SetTextlastMenu );   
-  }//OnBack+  //showOverview 
 +     
 +function  edtFilterOnChange() 
 +  {     
 +    if ( ListView.GetVisibility()  ==  "Show" ) 
 +    {       
 +      prepareFunctionList();      
 +    }   
 +  } //edtFilterOnChange
  
-  function pasteOnExit_OnTouch( result ){ +   
-    ifresult=="Yes" ){ +function  OnBack() 
-      app.SetClipboardText( pasteable ); +  {     
-      if( ! app.FolderExists( docfold ) ) +    if  (menuView.GetVisibility()  ==  "Show")  
-        app.MakeFolder ( docfold ); +    {       
-      app.WriteFile( docfile, pasteable ); +      var  pasteOnExit   app.CreateYesNoDialog( "Copy to clipboard and create text file?" );       
-    } +      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch );     
-    app.Exit();  +    }     
-  }//pasteOnExit +    else  if ListView.GetVisibility()  ==  "Show" )  showMenuView();     
-function showEval(){ +    else  showOverview();   
-    dlg = app.CreateDialog("eval - use with care"); +  } //OnBack
-    var layDlg = app.CreateLayout"linear", "vertical,fillxy,left" ); +
-    layDlg.SetPadding0.02, 0, 0.02, 0.02 )+
-    edtDlg app.CreateTextEdit('app.CreateText( "Hello" )'); +
-    edtDlg.SetCursorPos(edtDlg.GetText().length); +
-    layDlg.AddChild(edtDlg); +
-    dlg.AddLayout( layDlg ); +
-    var horiz app.CreateLayout("linear", "horizontal,fillxy"); +
-    horiz.SetPadding( 0.02, 0.02, 0.02, 0 ); +
-    var btn = app.CreateButton("Ok", 0.2); +
-    btn.SetOnTouch(dlg_ok); +
-    horiz.AddChild(btn); +
-    btn = app.CreateButton("Cancel",0.2); +
-    btn.SetOnTouch(dlg_canc); +
-    horiz.AddChild(btn); +
-    layDlg.AddChild(horiz); +
-    dlg.Show(); +
-}//showEval +
-function dlg_ok(){ +
-    app.HideKeyboard(); +
-    dlg.Dismiss(); +
-    myobj = eval(edtDlg.GetText()); +
-    prepareFunctionList(); +
-    showOverview(); +
-    if ((myobj !null) && (myobj.hasOwnProperty("GetType"))) +
-      lastMenu = myobj.GetType(); +
-    else +
-      lastMenu = "Eval"; +
-    main_header_txt.SetText( lastMenu ); +
-}//dlg_ok +
-function dlg_canc(){ +
-    app.HideKeyboard(); +
-    dlg.Dismiss(); +
-}//dlg_canc+
  
 +  
 +function  pasteOnExit_OnTouch( result )
 +  {    
 +    if ( result == "Yes" )
 +    {      
 +      app.SetClipboardText( pasteable );      
 +      if ( ! app.FolderExists( docfold ) )         app.MakeFolder ( docfold );      
 +      app.WriteFile( docfile,  pasteable );    
 +    }    
 +    app.Exit();   
 +  } //pasteOnExit
 +function  showEval()
 +  {    
 +    dlg  =  app.CreateDialog("eval - use with care");    
 +    var  layDlg  =  app.CreateLayout( "linear",  "vertical,fillxy,left" );    
 +    layDlg.SetPadding( 0.02,  0,  0.02,  0.02 );    
 +    edtDlg  =  app.CreateTextEdit('app.CreateText( "Hello" )');    
 +    edtDlg.SetCursorPos(edtDlg.GetText().length);    
 +    layDlg.AddChild(edtDlg);    
 +    dlg.AddLayout( layDlg );    
 +    var  horiz  =  app.CreateLayout("linear",  "horizontal,fillxy");    
 +    horiz.SetPadding( 0.02,  0.02,  0.02,  0 );    
 +    var  btn  =  app.CreateButton("Ok",  0.2);    
 +    btn.SetOnTouch(dlg_ok);    
 +    horiz.AddChild(btn);    
 +    btn  =  app.CreateButton("Cancel", 0.2);    
 +    btn.SetOnTouch(dlg_canc);    
 +    horiz.AddChild(btn);    
 +    layDlg.AddChild(horiz);    
 +    dlg.Show();
 +  } //showEval
 +function  dlg_ok()
 +  {    
 +    app.HideKeyboard();    
 +    dlg.Dismiss();    
 +    myobj  =  eval(edtDlg.GetText());    
 +    prepareFunctionList();    
 +    showOverview();    
 +    if  ((myobj  !=  null)  &&  (myobj.hasOwnProperty("GetType")))       lastMenu  =  myobj.GetType();    
 +    else       lastMenu  =  "Eval";    
 +    main_header_txt.SetText( lastMenu );
 +  } //dlg_ok
 +function  dlg_canc()
 +  {    
 +    app.HideKeyboard();    
 +    dlg.Dismiss();
 +  } //dlg_canc
 +  
 </code> </code>
  
sample_code/introspector.txt · Last modified: 2015/03/29 05:06 (external edit)