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/12/06 21:02]
stevegarman
sample_code:introspector [2015/03/28 20:01]
octazid [The code] Change Database to Open
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()       + .0005)   100); +var vers = Math.floor((app.GetVersion() 
-var  docfold   "/sdcard/sjgDocs/androidscript/" + vers; +      +.0005) * 100); 
-var  docfile   docfold  +  "/null.txt";+var docfold = "/sdcard/sjgDocs/androidscript/"+vers; 
 +var docfile = docfold + "/null.txt"; 
 +var evalsfile = docfold + "/evals.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,Database,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'); 
-    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"     +    prepareFunctionList();
-    menuView   app.CreateList( control_list -1, -1,  'fillxy');     +
-    menuView.SetOnTouch(menuView_OnTouch);     +
-    PageArea.AddChild(menuView);     +
-    menuView.SetVisibility('Hide');+
  
-         +    ListView.SetOnTouch(showAppFunction); 
-    ListView  =  app.CreateList("",  -1, -1,  'fillxy');     +    PageArea.AddChild(ListView);
-    prepareFunctionList();+
  
-         +  /**** prepare detail view ****/
-    ListView.SetOnTouch(showAppFunction);     +
-    PageArea.AddChild(ListView);+
  
-       /**** prepare detail view ****/+    FunctionView = app.CreateTextEdit('',-1,-1); 
 +//FunctionView = app.CreateTextEdit('',-1,-1,"nospell"); 
 +    PageArea.AddChild(FunctionView); 
 +    FunctionView.SetVisibility('Hide'); 
 +     
 +    //Add layout to app.     
 +    app.AddLayout( lay ); 
 +    showMenuView(); 
 +}//OnStart
  
-         +function add_top_bar (lyout, opts){ 
-    FunctionView  =  app.CreateTextEdit('');     +  //basic top bar layout 
-    PageArea.AddChild(FunctionView);     +  var lay_bar = app.CreateLayout"Linear", "Horizontal,Left, FillX" ); 
-    FunctionView.SetVisibility('Hide');         //Add layout to app.     +  lay_bar.SetBackGradient"#444444", "#888888" );
-         +
-    app.AddLayoutlay );     +
-    showMenuView(); +
-  } //OnStart+
  
-function  add_top_bar (lyout,  opts) +  //add app name if required - stolen for object/function name in this app 
-  {   //basic top bar layout +  main_header_txt = app.CreateTextlastMenu -1-1 ); 
-       +  main_header_txt.SetTextSize( 24 ); 
-    var  lay_bar  =  app.CreateLayout"Linear" "Horizontal,Left, FillX" );   +  main_header_txt.SetPadding0.010, 0.01, 0 ); 
-    lay_bar.SetBackGradient"#444444",  "#888888" );+  lay_bar.AddChild( main_header_txt );
  
-       //add app name if required - stolen for object/function name in this app +  var filterlabel = app.CreateText("Func filter:"); 
-       +  filterlabel.SetTextSize(18); 
-    main_header_txt   app.CreateText( lastMenu ,  -1,  -1 );   +  filterlabel.SetTextColor("#ff222222"); 
-    main_header_txt.SetTextSize24 );   +  lay_bar.AddChild( filterlabel ); 
-    main_header_txt.SetPadding( 0.01,  0,  0.01 0 );   +  edtFilter = app.CreateTextEdit("",0.3); 
-    lay_bar.AddChild( main_header_txt );+  edtFilter.SetBackColor("#ff222222"); 
 +  edtFilter.SetTextSize(18); 
 +  edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); 
 +  edtFilter.SetOnChange(edtFilterOnChange); 
 +  lay_bar.AddChild(edtFilter);
  
-       +  lyout.AddChild( lay_bar ); 
-    var  filterlabel  =  app.CreateText("Func filter:");   +}//add_top_bar
-    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){ 
-    lyout.AddChildlay_bar ); +  lastMenu = name; 
-  } //add_top_bar+  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 "Database": 
 +        myobj = app.OpenDatabase("MyData"); 
 +        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  menuView_OnTouch(name) +  function prepareFunctionList(){ 
-    +/**** 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; 
-function  prepareFunctionList() +    objFunctionList = []; 
-  +    var filter = edtFilter.GetText().trim().toLowerCase() 
-    /**** prepare list view ****/+    for (var Key in myobj) 
 +      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) { 
-    var  objFunctionList;     +    FunctionView.SetText(String(myobj[Name])); 
-    objFunctionList  =   [];     +    main_header_txt.SetText( lastMenu + "." + Name ); 
-    var  filter  =  edtFilter.GetText().trim().toLowerCase()     for  (var  Key  in  myobj)  +    ListView.SetVisibility('hide'); 
-          +    menuView.SetVisibility('hide'); 
-      var  keyword =  Key.toLowerCase()       if  ((filter  ==  "")  ||  (keyword.indexOf(filter)  >  -1)) +    FunctionView.SetVisibility('show'); 
-      {         +  }//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 () { 
-function  showAppFunction (Name +    ListView.SetVisibility('show'); 
-      +    FunctionView.SetVisibility('hide'); 
-    FunctionView.SetText(String(myobj[Name]));     +    menuView.SetVisibility('hide'); 
-    main_header_txt.SetTextlastMenu  +  "."  +  Name );     +    main_header_txt.SetTextlastMenu ); 
-    ListView.SetVisibility('hide');     +  }//showOverview 
-    menuView.SetVisibility('hide');     +  function edtFilterOnChange(){ 
-    FunctionView.SetVisibility('show');   +    if( ListView.GetVisibility() == "Show" ){ 
-  } //showAppFunction+      prepareFunctionList();  
 +    } 
 +  }//edtFilterOnChange
  
-   +  function OnBack(){ 
-function  showOverview ()  +    if (menuView.GetVisibility() == "Show") { 
-  {     +      var pasteOnExit = app.CreateYesNoDialog"Copy to clipboard and create text file?" ); 
-    ListView.SetVisibility('show');     +      pasteOnExit.SetOnTouchpasteOnExit_OnTouch ); 
-    FunctionView.SetVisibility('hide');     +    
-    menuView.SetVisibility('hide');     +    else if( ListView.GetVisibility() == "Show" ) showMenuView(); 
-    main_header_txt.SetTextlastMenu );   +    else showOverview(); 
-  //showOverview +  }//OnBack
-     +
-function  edtFilterOnChange() +
-  {     +
-    if ( ListView.GetVisibility()  ==  "Show" ) +
-    {       +
-      prepareFunctionList();      +
-    }   +
-  } //edtFilterOnChange+
  
-   +  function pasteOnExit_OnTouch( result ){ 
-function  OnBack() +    ifresult=="Yes" ){ 
-  {     +      app.SetClipboardText( pasteable ); 
-    if  (menuView.GetVisibility()  ==  "Show")  +      if( ! app.FolderExists( docfold ) ) 
-    {       +        app.MakeFolder ( docfold ); 
-      var  pasteOnExit   app.CreateYesNoDialog( "Copy to clipboard and create text file?" );       +      app.WriteFile( docfile, pasteable ); 
-      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch );     +    } 
-    }     +    app.Exit();  
-    else  if ListView.GetVisibility()  ==  "Show" )  showMenuView();     +  }//pasteOnExit 
-    else  showOverview();   +function showEval(){ 
-  } //OnBack+    dlg = app.CreateDialog("eval - use with care"); 
 +    var layDlg = app.CreateLayout"linear", "vertical,fillxy,left" ); 
 +    layDlg.SetPadding0.02, 0, 0.02, 0.02 )
 +    edtDlg app.CreateTextEdit('app.CreateText( "Hello" )',-1,-1,'NoSpell'); 
 +    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()); 
 +    if ((myobj !null) && (myobj.hasOwnProperty("GetType"))){ 
 +      lastMenu myobj.GetType(); 
 +      app.WriteFile(evalsfile, edtDlg.GetText()+"\n","append")
 +    } 
 +    else{ 
 +      lastMenu = "Eval"; 
 +    } 
 +    main_header_txt.SetTextlastMenu ); 
 +    prepareFunctionList(); 
 +    showOverview(); 
 +}//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>
  
 I have placed an spk of this app at [[http://hudl.sgarman.net/public/spk/SJGinspect.spk]] which should create a project in the DroidScript IDE for you. I have placed an spk of this app at [[http://hudl.sgarman.net/public/spk/SJGinspect.spk]] which should create a project in the DroidScript IDE for you.
  
-And for the sake of completeness, there is an apk at [[http://androidscript.sgarman.net/apk/SJGinspect.apk]] which you could download and install if your device is set up to allow apks that don't come from Google Play.+And for the sake of completeness, there is an apk at [[http://droidscript.sgarman.net/apk/SJGinspect.apk]] which you could download and install if your device is set up to allow apks that don't come from Google Play.
sample_code/introspector.txt · Last modified: 2015/03/29 05:06 (external edit)