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
sample_code:introspector [2014/12/06 21:02]
stevegarman
sample_code:introspector [2015/03/29 05:06] (current)
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 +  
-var  myobj   app; +//Global variables 
-var  ListView,  menuView,  FunctionView +var myobj = app; 
-var  main_header_txt,  edtFilter,  dlg,  edtDlg; +var ListView, menuView, FunctionView 
-var  lastMenu   "app"; +var main_header_txt, edtFilter, dlg, edtDlg; 
-var  pasteable   "null"; +var lastMenu = "app"; 
-var  vers   Math.floor((app.GetVersion()       + .0005)   100); +var pasteable = "null"; 
-var  docfold   "/sdcard/sjgDocs/androidscript/" + vers; +var vers = Math.floor((app.GetVersion()+.0005) * 100); 
-var  docfile   docfold   "/null.txt"; +var docfold = "/sdcard/sjgDocs/androidscript/"+vers; 
- +var docfile docfold + "/null.txt"; 
-//Called when application is started+var evalsfile = docfold + "/evals.txt" 
-function  OnStart() +  
-      +//Called when application is started
-    app.EnableBackKey( false );         //Create a layout with objects vertically centered. +function OnStart(){ 
-         +    app.EnableBackKey( false ); 
-    var  lay   app.CreateLayout( "linear",  "Vertical,FillXY" );       +     
-    add_top_bar( lay );  +    //Create a layout with objects vertically centered
-    /**** prepare page area ****/ +    var lay = app.CreateLayout( "linear", "Vertical,FillXY" );   
-         +    add_top_bar( lay ); 
-    var  PageArea   app.CreateLayout('frame', 'fillxy');    +  
 +/**** prepare page area ****/ 
 +    var PageArea = app.CreateLayout('frame','fillxy');
     lay.AddChild(PageArea);     lay.AddChild(PageArea);
- +  
-         +    var control_list = "app,layout,Manually entered code,BluetoothList,BluetoothSerial,Button,CameraView,CheckBox" 
-    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"     +      +",Crypt,Database,Dialog,Email,Image,List,Locator,Notification,NXT,NxtRemote,Odroid,SeekBar" 
-    menuView   app.CreateList( control_list,  -1, -1,  'fillxy');     +      +",Sensor,SMS,Spinner,Tabs,Text,TextEdit,ToggleButton"  
-    menuView.SetOnTouch(menuView_OnTouch);     +      +",WebView,WebServer,YesNoDialog"
-    PageArea.AddChild(menuView);    +       
 +    menuView = app.CreateList( control_list, -1,-1, 'fillxy'); 
 +    menuView.SetOnTouch(menuView_OnTouch); 
 +    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('',-1,-1); 
-    FunctionView   app.CreateTextEdit('');     +//FunctionView = app.CreateTextEdit('',-1,-1,"nospell"); 
-    PageArea.AddChild(FunctionView);     +    PageArea.AddChild(FunctionView); 
-    FunctionView.SetVisibility('Hide');         //Add layout to app    +    FunctionView.SetVisibility('Hide'); 
-         +     
-    app.AddLayout( lay );    +    //Add layout to app    
 +    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.SetTextSize( 24 ); 
-    main_header_txt   app.CreateText( lastMenu  -1,  -);   +  main_header_txt.SetPadding( 0.01, 0, 0.01, ); 
-    main_header_txt.SetTextSize( 24 );   +  lay_bar.AddChild( main_header_txt ); 
-    main_header_txt.SetPadding( 0.01,  0,  0.01,  0 );   +  
-    lay_bar.AddChild( main_header_txt ); +  var filterlabel = app.CreateText("Func filter:"); 
- +  filterlabel.SetTextSize(18); 
-       +  filterlabel.SetTextColor("#ff222222"); 
-    var  filterlabel   app.CreateText("Func filter:");   +  lay_bar.AddChild( filterlabel ); 
-    filterlabel.SetTextSize(18);   +  edtFilter = app.CreateTextEdit("",0.3); 
-    filterlabel.SetTextColor("#ff222222");   +  edtFilter.SetBackColor("#ff222222"); 
-    lay_bar.AddChild( filterlabel );   +  edtFilter.SetTextSize(18); 
-    edtFilter   app.CreateTextEdit("", 0.3);   +  edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); 
-    edtFilter.SetBackColor("#ff222222");   +  edtFilter.SetOnChange(edtFilterOnChange); 
-    edtFilter.SetTextSize(18);   +  lay_bar.AddChild(edtFilter); 
-    edtFilter.SetPadding( 0.01,  0,  0,  0.001 );   +  
-    edtFilter.SetOnChange(edtFilterOnChange);   +  lyout.AddChild( lay_bar ); 
-    lay_bar.AddChild(edtFilter); +}//add_top_bar 
- +  
-       +function menuView_OnTouch(name){ 
-    lyout.AddChild( lay_bar ); +  lastMenu = name; 
-  } //add_top_bar +  switch(name) { 
- +    case "layout": 
-function  menuView_OnTouch(name) +        myobj = app.CreateLayout( "linear" ) ; 
-  {   +        break; 
-    lastMenu   name;   +    case  "BluetoothList": 
-    switch (name)  +        myobj = app.CreateBluetoothList();         
-        +        break;     
-      case  "layout": +    case  "BluetoothSerial": 
-                myobj   app.CreateLayout( "linear" ) ;         +        myobj app.CreateBluetoothSerial()        
-        break;     +        break;     
-      case  "Button": +    case "Button": 
-                myobj   app.CreateButton("x");         +        myobj = app.CreateButton("x"); 
-        break;     +        break; 
-      case  "Text": +    case "CameraView": 
-                myobj   main_header_txt        +        myobj = app.CreateCameraView0.8,0.8 ); 
-        break;     +        break; 
-      case  "Image": +    case "CheckBox": 
-                myobj   app.CreateImage( "/Sys/Img/Hello.png" );         +        myobj = app.CreateCheckBox( "x" ); 
-        break;     +        break; 
-      case  "Notification": +    case "Crypt": 
-                myobj   app.CreateNotification() ;         +        myobj = app.CreateCrypt(); 
-        break;     +        break; 
-      case  "CheckBox": +    case "Database": 
-                myobj   app.CreateCheckBox( "x" );         +        myobj = app.OpenDatabase("MyData"); 
-        break;     +        break; 
-      case  "Crypt": +    case "Dialog": 
-                myobj   app.CreateCrypt();         +        myobj = app.CreateDialog(""); 
-        break;     +        break; 
-      case  "Dialog": +    case "Email": 
-                myobj   app.CreateDialog("");         +      myobj = app.CreateEmail( "mymail@gmail.com", "MyPass" ); 
-        break;     +      break; 
-      case  "ToggleButton": +    case "Image": 
-                myobj   app.CreateToggle( "x" );         +        myobj = app.CreateImage( "/Sys/Img/Hello.png" ); 
-        break;     +        break; 
-      case  "SeekBar": +    case "List": 
-                myobj   app.CreateSeekBar( "x" );         +        myobj = ListView; 
-        break;     +        break; 
-      case  "List": +    case "Locator": 
-                myobj   ListView;         +       myobj app.CreateLocator( "GPS,Network" ); 
-        break;     +       break; 
-      case  "TextEdit": +    case "Notification": 
-                myobj   FunctionView        +        myobj = app.CreateNotification() 
-        break;     +        break; 
-      case  "WebView": +    case "NXT": 
-                myobj   app.CreateWebView0.8, 0.8 );         +        myobj = app.CreateNxt(); 
-        break;     +        break;     
-      case  "WebServer": +    case "NxtRemote": 
-                myobj   app.CreateWebServer8080 "Upload,ListDir" );         +        myobj  =  app.CreateNxtRemote(); 
-        break;     +        break;     
-      case  "CameraView": +    case "Odroid": 
-                myobj   app.CreateCameraView0.8, 0.8 );         +        myobj   app.Odroid"a", "b""c" ); 
-        break;     +        break;     
-      case  "Sensor": +    case "SeekBar": 
-               myobj   app.CreateSensor( "Accelerometer" );        +        myobj = app.CreateSeekBar"x" ); 
-        break;     +        break; 
-      case  "Email": +    case "Sensor": 
-              myobj   app.CreateEmail( "mymail@gmail.com",  "MyPass" );       +       myobj = app.CreateSensor( "Accelerometer" ); 
-        break;     +       break; 
-      case  "Locator": +    case "SMS": 
-               myobj   app.CreateLocator( "GPS,Network" );        +       myobj = app.CreateSMS(); 
-        break;     +       break; 
-      case  "Spinner": +    case "Spinner": 
-               myobj =  app.CreateSpinner("1,2");        +       myobj= app.CreateSpinner("1,2"); 
-        break;     +       break; 
-      case  "SMS": +    case "Tabs": 
-               myobj   app.CreateSMS();        +        myobj = app.CreateTabs( "tab1,tab2"); 
-        break;     +        break; 
-      case  "YesNoDialog": +    case "Text": 
-                myobj   app.CreateYesNoDialog("");         +        myobj = main_header_txt; 
-        break;     +        break; 
-      case ("Manually entered code"): +    case "TextEdit": 
-                showEval();         +        myobj = FunctionView; 
-        return;     +        break; 
-      default: +    case "ToggleButton": 
-                myobj = app;         +        myobj = app.CreateToggle( "x" ); 
-        lastMenu   "app";     +        break; 
-    }      +    case "WebView": 
-    prepareFunctionList();   +        myobj = app.CreateWebView0.8,0.8 ); 
-    showOverview();   +        break; 
-    main_header_txt.SetText( lastMenu ); +    case "WebServer": 
-  } //menuView_OnTouch +        myobj = app.CreateWebServer( 8080, "Upload,ListDir" ); 
- +        break; 
-   +    case "YesNoDialog": 
-function  prepareFunctionList() +        myobj = app.CreateYesNoDialog(""); 
-  +        break; 
-    /**** prepare list view ****/ +    case("Manually entered code"): 
- +        showEval(); 
-         +        return; 
-    var  objFunctionList;     +    default: 
-    objFunctionList    [];     +        myobj=app; 
-    var  filter   edtFilter.GetText().trim().toLowerCase()     for  (var  Key  in  myobj)  +        lastMenu = "app"; 
-          +    } 
-      var  keyword =  Key.toLowerCase()       if  ((filter  ==  "" ||  (keyword.indexOf(filter)   -1)) +  prepareFunctionList(); 
-              +  showOverview(); 
-        if  (myobj.hasOwnProperty(Key)  &&  (typeof  myobj[Key]  ===  'function'))  +  main_header_txt.SetText( lastMenu ); 
-                  +}//menuView_OnTouch 
-          objFunctionList.push(Key);         +  
-        };       +  function prepareFunctionList(){ 
-      }     +/**** prepare list view ****/ 
-    };     +  
-    objFunctionList.sort();     +    var objFunctionList; 
-    ListView.SetList( objFunctionList.join(','),  ","    if (filter  !=  "" )  filter   "Filtered ["   filter   "]\n";     +    objFunctionList = []; 
-    pasteable   filter   lastMenu   ".";     +    var filter = edtFilter.GetText().trim().toLowerCase() 
-    var  copyDelim   "\n"   lastMenu   ".";     +    for (var Key in myobj) { 
-    pasteable  +=  objFunctionList.join( copyDelim     docfile   docfold   "/"   lastMenu   ".txt";   +      var keyword= Key.toLowerCase() 
-  } //prepareFunctionList +      if ((filter == "") || (keyword.indexOf(filter) > -1)){ 
-     +        if (myobj.hasOwnProperty(Key) && (typeof myobj[Key] === 'function')) { 
-function  showMenuView() +          objFunctionList.push(Key); 
-      +        }; 
-    ListView.SetVisibility('hide');     +      } 
-    FunctionView.SetVisibility('hide');     +    }; 
-    menuView.SetVisibility('show');     +    objFunctionList.sort(); 
-    main_header_txt.SetText( "Choose Control" );   +    ListView.SetList( objFunctionList.join(','), ",") 
-  } //showMenuView +    if(filter != ""filter = "Filtered [" + filter + "]\n"; 
- +    pasteable filter lastMenu + "."; 
-   +    var copyDelim = "\n"lastMenu + "."; 
-function  showAppFunction (Name)  +    pasteable += objFunctionList.join( copyDelim ) 
-      +    docfile docfold + "/"lastMenu + ".txt"; 
-    FunctionView.SetText(String(myobj[Name]));     +  }//prepareFunctionList 
-    main_header_txt.SetText( lastMenu   "."   Name );     +  function showMenuView(){ 
-    ListView.SetVisibility('hide');     +    ListView.SetVisibility('hide'); 
-    menuView.SetVisibility('hide');     +    FunctionView.SetVisibility('hide'); 
-    FunctionView.SetVisibility('show');   +    menuView.SetVisibility('show'); 
-  } //showAppFunction +    main_header_txt.SetText( "Choose Control" ); 
- +  }//showMenuView 
-   +  
-function  showOverview ()  +  function showAppFunction (Name) { 
-      +    FunctionView.SetText(String(myobj[Name])); 
-    ListView.SetVisibility('show');     +    main_header_txt.SetText( lastMenu + "."Name ); 
-    FunctionView.SetVisibility('hide');     +    ListView.SetVisibility('hide'); 
-    menuView.SetVisibility('hide');     +    menuView.SetVisibility('hide'); 
-    main_header_txt.SetText( lastMenu );   +    FunctionView.SetVisibility('show'); 
-  } //showOverview +  }//showAppFunction 
-     +  
-function  edtFilterOnChange() +  function showOverview () { 
-      +    ListView.SetVisibility('show'); 
-    if ( ListView.GetVisibility()  ==  "Show" ) +    FunctionView.SetVisibility('hide'); 
-          +    menuView.SetVisibility('hide'); 
-      prepareFunctionList();      +    main_header_txt.SetText( lastMenu ); 
-    }   +  }//showOverview 
-  } //edtFilterOnChange +  function edtFilterOnChange(){ 
- +    if( ListView.GetVisibility() == "Show" ){ 
-   +      prepareFunctionList();  
-function  OnBack() +    } 
-      +  }//edtFilterOnChange 
-    if  (menuView.GetVisibility()  ==  "Show" +  
-          +  function OnBack(){ 
-      var  pasteOnExit   app.CreateYesNoDialog( "Copy to clipboard and create text file?" );       +    if (menuView.GetVisibility() == "Show") { 
-      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch );     +      var pasteOnExit = app.CreateYesNoDialog( "Copy to clipboard and create text file?" ); 
-    }     +      pasteOnExit.SetOnTouch( pasteOnExit_OnTouch ); 
-    else  if ( ListView.GetVisibility()  ==  "Show" )  showMenuView();     +    } 
-    else  showOverview();   +    else if( ListView.GetVisibility() == "Show" ) showMenuView(); 
-  } //OnBack +    else showOverview(); 
- +  }//OnBack 
-   +  
-function  pasteOnExit_OnTouch( result ) +  function pasteOnExit_OnTouch( result ){ 
-      +    if( result=="Yes" ){ 
-    if ( result == "Yes" ) +      app.SetClipboardText( pasteable ); 
-          +      if( ! app.FolderExists( docfold ) ) 
-      app.SetClipboardText( pasteable );       +        app.MakeFolder docfold ); 
-      if ( ! app.FolderExists( 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"); 
-      +    var layDlg = app.CreateLayout( "linear", "vertical,fillxy,left" ); 
-    dlg   app.CreateDialog("eval use with care");     +    layDlg.SetPadding( 0.02, 0, 0.02, 0.02 ); 
-    var  layDlg   app.CreateLayout( "linear",  "vertical,fillxy,left" );     +    edtDlg = app.CreateTextEdit('app.CreateText( "Hello" )',-1,-1,'NoSpell'); 
-    layDlg.SetPadding( 0.02,  0,  0.02,  0.02 );     +    edtDlg.SetCursorPos(edtDlg.GetText().length); 
-    edtDlg   app.CreateTextEdit('app.CreateText( "Hello" )');     +    layDlg.AddChild(edtDlg); 
-    edtDlg.SetCursorPos(edtDlg.GetText().length);     +    dlg.AddLayout( layDlg ); 
-    layDlg.AddChild(edtDlg);     +    var horiz = app.CreateLayout("linear", "horizontal,fillxy"); 
-    dlg.AddLayout( layDlg );     +    horiz.SetPadding( 0.02, 0.02, 0.02, ); 
-    var  horiz   app.CreateLayout("linear",  "horizontal,fillxy");     +    var btn = app.CreateButton("Ok", 0.2); 
-    horiz.SetPadding( 0.02,  0.02,  0.02,  0 );     +    btn.SetOnTouch(dlg_ok); 
-    var  btn   app.CreateButton("Ok",  0.2);     +    horiz.AddChild(btn); 
-    btn.SetOnTouch(dlg_ok);     +    btn = app.CreateButton("Cancel",0.2); 
-    horiz.AddChild(btn);     +    btn.SetOnTouch(dlg_canc); 
-    btn   app.CreateButton("Cancel", 0.2);     +    horiz.AddChild(btn); 
-    btn.SetOnTouch(dlg_canc);     +    layDlg.AddChild(horiz);
-    horiz.AddChild(btn);     +
-    layDlg.AddChild(horiz);    +
     dlg.Show();     dlg.Show();
-  } //showEval +}//showEval 
-function  dlg_ok() +function dlg_ok(){ 
-  {     +    app.HideKeyboard();
-    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.Dismiss();
-  } //dlg_canc +    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.SetText( lastMenu ); 
 +    prepareFunctionList(); 
 +    showOverview(); 
 +}//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.1417899726.txt.gz · Last modified: 2014/12/07 05:02 (external edit)