Jump to content
gil900

SciTE Console: _cin _cout for SciTE Console [ConsoleIn (!!) , ConsoleOut , ConsoleClean ..]

Recommended Posts

gil900

Hello,
This udf open for you the ability to not only write in the console (in SciTE),
It allows you to write inputs in the console.

In other words:
It is exactly like the cin function
in C++ (in namespace std) and it works on SciTE and it is better.


Example 1:
output_Eou0tV.gif.e12ce5d33a6bf29350de02

Example 2:

output_mxi55n.gif.5255187e01295a62e7f80f

 

 

Example 1 code:

#include 'SciTE Console.au3'


HotKeySet('{ESC}','Exit1')


_ConsoleClean()


Local $sTitle = 'Hello World!'
Local $sText = 'Hello!'&@CRLF&'This is some saved text...'&@CRLF&'You can change me if you want!'

_cout('Hello! what do you want to do now?')
_cout('1 = print/edit variables , 2 = change console settings , 3 = clean the console , 4 = exit')

While 1


    ;
    Switch Number(_cin(1))
        Case 1
            _cout(' -> print/edit variables:',1)
            While 1
                _cout('Enter 1.1 to show variables, 1.2 to edit them, 1.3 to exit this mode:')
                Switch Number(_cin())
                    Case 1.1
                        _cout('The string value of $sTitle is: '&$sTitle,2)
                        _cout('The string value of $sText is:')
                        _cout($sText,2)

                    Case 1.2
                        _cout('Enter some text for $sTitle: ',0)
                        $sTitle = _cin()
                        _cout('The text of $sTitle is: '&$sTitle)

                        _cout('Enter some text for $sText. Write "@@@" to finish (you can use enter now). :')
                        $sText = _cin(1,'@@@')
                        _cout('')
                        MsgBox(0,'The text is',$sText)

                    Case 1.3
                        _cout('Exited')
                        ExitLoop

                    Case Else
                        _cout('You must enter only 1.1-1.3')
                EndSwitch

            WEnd

        Case 2
            _cout(' -> Do you want to always show the line number? select y for yes, n for no: ',0)
            If _cin(1) = 'y' Then
                $gg_sc_bPrintLine = True
            Else
                $gg_sc_bPrintLine = False
            EndIf

            _cout('')

            _cout("Enter the writing speed (10 is recommended!). use 0 for instantaneous speed. WARNING: don't use big number!! : ",0)
            $gg_sc_iWriteSpeed = Int(Number(_cin()))
            _cout('Write speed set to '&$gg_sc_iWriteSpeed)
            _cin('Settings saved.')

        Case 3
            ;~          Sleep(100)
            _ConsoleClean()
        Case 4
            _cout(' -> Are you sure? Select y/Y for yes, n/N for no: ',0)
            While 1
                Switch _cin(1)
                    Case 'y','Y'
                        _cout(' -> Exiting...')
                        Sleep(500)
                        Exit
                    Case 'n','N'
                        _cout('',1,@CRLF)
                        ExitLoop
                    Case Else
                        _cout(@CRLF&' -> You must enter y/Y or n/N. Select y/Y for yes, n/N for no: ',0)
                EndSwitch
            WEnd
        Case Else
            _cout(@CRLF&'You can enter only 1-4')
    EndSwitch
WEnd












Func Exit1()
    Exit
EndFunc

 

Example 2 code (Ported from _GUIConsole) :

#include 'SciTE Console.au3'


HotKeySet('{ESC}','Exit1')

; Clean the console
_ConsoleClean()


$gg_sc_iWriteSpeed = 15 ; Set the write speed to 15 (Read more in "ARIABLES FOR THE USER" in SciTE Console.au3)

; Print some text
_cout('Some text 1 ...');,$iAddLines = 1,$sAddChar = @CRLF)

Sleep(500)
; Print some text
_cout('Some text 2 ...')

Sleep(500)

_cout('After this text there is 3 @CRLF',3)

Sleep(500)

_cout('See?')

Sleep(1000)

_cout('After this text there is 3 @TAB',3,@TAB)

Sleep(500)

_cout('See?',2)

Sleep(1000)

_cout('Now I will clean this console and write some new text...')

Sleep(1500)

; Clean the Console
_ConsoleClean()

Sleep(500)

; Create the Console GUI
; Print some text
_cout('Some text 1 ...');,$iAddLines = 1,$sAddChar = @CRLF)

Sleep(500)
; Print some text
_cout('Some text 2 ...')


While Sleep(100)
WEnd



#Region functions
Func Exit1()
    Exit
EndFunc

#EndRegion

 

UDF Download:
SciTE Console v1 (by gil900).rar

 

 

 

Edited by gil900
  • Like 2

Share this post


Link to post
Share on other sites
gil900

Updated: added example for _cout (ported example from _GUIConsole)

Edited by gil900

Share this post


Link to post
Share on other sites
gil900

I developed a more modular way  of how to create each console "dialog"
I try to think of an concept that make it easy to implement under the Autoit limitation that is it is missing multi thread option.

There is good way to handle and create multiple GUIs, in one While loop.. but how you do it with console like this (in one While loop) ?  That's what I'm trying to solve.

 

this is what i come with:

Example:

#include 'SciTE Console.au3'
#include 'Console.au3'

HotKeySet('{ESC}','Exit1')





_ConsoleClean()





;~ Exit

Local $sTitle = 'Hello World!'
Local $sText = 'Hello!'&@CRLF&'This is some saved text...'&@CRLF&'You can change me if you want!'

;~ _cout('Hello! what do you want to do now?')
;~ _cout('1 = print/edit variables , 2 = change console settings , 3 = clean the console , 4 = exit')



HomeOptions()


Func HomeOptions()
    _cout('1 = print/edit variables , 2 = change console settings'); , 3 = clean the console , 4 = exit')

    _Console_UnRegisterAllInputs()

    _Console_RegisterInput('1',HomeOptions_PrintOrEditVars)
    _Console_RegisterInput('2',HomeOptions_ChangeConsoleSettings)


EndFunc

#Region HomeOptions_PrintOrEditVars_*

    Func HomeOptions_PrintOrEditVars()
        _cout(' -> print/edit variables:',1)
        _cout('Enter 1.1 to show variables, 1.2 to edit them, 1.3 to exit this mode:')

        _Console_UnRegisterAllInputs()

        _Console_RegisterInput('1.1',HomeOptions_PrintOrEditVars_Option_1d1)
        _Console_RegisterInput('1.2',HomeOptions_PrintOrEditVars_Option_1d2)
        _Console_RegisterInput('1.3',HomeOptions_PrintOrEditVars_Option_1d3)

    EndFunc

    ; OPTIONS:
        Func HomeOptions_PrintOrEditVars_Option_1d1()
            _cout('The string value of $sTitle is: '&$sTitle,2)
            _cout('The string value of $sText is:')
            _cout($sText,2)
        EndFunc


        Func HomeOptions_PrintOrEditVars_Option_1d2()
            _cout('Enter some text for $sTitle: ',0)
            $sTitle = _cin()
            _cout('The text of $sTitle is: '&$sTitle)

            _cout('Enter some text for $sText. Write "@@@" to finish (you can use enter now). :')
            $sText = _cin(1,'@@@')
            _cout('')
            MsgBox(0,'The text is',$sText)

        EndFunc


        Func HomeOptions_PrintOrEditVars_Option_1d3()
            _cout('Exited')
            HomeOptions()


        EndFunc

#EndRegion


#Region ChangeConsoleSettings_*
    Func HomeOptions_ChangeConsoleSettings()
        _Console_UnRegisterAllInputs()
        _cout('HomeOptions_ChangeConsoleSettings.',1)
        _cout('q = exit',1)
        _Console_RegisterInput('q',HomeOptions_ChangeConsoleSettings_exit)

    EndFunc

    Func HomeOptions_ChangeConsoleSettings_exit()
        HomeOptions()
    EndFunc
#EndRegion





While Sleep(10)

    _Console_ProcessRegisteredInputs(_cin(1))


WEnd



#cs OLD CODE

While 1


    ;
    Switch Number(_cin(1))
        Case 1
            _cout(' -> print/edit variables:',1)
            While 1
                _cout('Enter 1.1 to show variables, 1.2 to edit them, 1.3 to exit this mode:')
                Switch Number(_cin())
                    Case 1.1
                        _cout('The string value of $sTitle is: '&$sTitle,2)
                        _cout('The string value of $sText is:')
                        _cout($sText,2)

                    Case 1.2
                        _cout('Enter some text for $sTitle: ',0)
                        $sTitle = _cin()
                        _cout('The text of $sTitle is: '&$sTitle)

                        _cout('Enter some text for $sText. Write "@@@" to finish (you can use enter now). :')
                        $sText = _cin(1,'@@@')
                        _cout('')
                        MsgBox(0,'The text is',$sText)

                    Case 1.3
                        _cout('Exited')
                        ExitLoop

                    Case Else
                        _cout('You must enter only 1.1-1.3')
                EndSwitch

            WEnd

        Case 2
            _cout(' -> Do you want to always show the line number? select y for yes, n for no: ',0)
            If _cin(1) = 'y' Then
                $gg_sc_bPrintLine = True
            Else
                $gg_sc_bPrintLine = False
            EndIf

            _cout('')

            _cout("Enter the writing speed (10 is recommended!). use 0 for instantaneous speed. WARNING: don't use big number!! : ",0)
            $gg_sc_iWriteSpeed = Int(Number(_cin()))
            _cout('Write speed set to '&$gg_sc_iWriteSpeed)
            _cin('Settings saved.')

        Case 3
            ;~          Sleep(100)
            _ConsoleClean()
        Case 4
            _cout(' -> Are you sure? Select y/Y for yes, n/N for no: ',0)
            While 1
                Switch _cin(1)
                    Case 'y','Y'
                        _cout(' -> Exiting...')
                        Sleep(500)
                        Exit
                    Case 'n','N'
                        _cout('',1,@CRLF)
                        ExitLoop
                    Case Else
                        _cout(@CRLF&' -> You must enter y/Y or n/N. Select y/Y for yes, n/N for no: ',0)
                EndSwitch
            WEnd
        Case Else
            _cout(@CRLF&'You can enter only 1-4')
    EndSwitch
WEnd

#ce










Func Exit1()
    Exit
EndFunc

 

And the new UDF I just made - Console.au3. I have no idea how to call it.

Global Enum _
    $__Console_aInputs_idx2_sHotString, _
    $__Console_aInputs_idx2_Func, _
    $__Console_aInputs_idx2max

Global $__Console_aInputs[1][$__Console_aInputs_idx2max]







Func _Console_RegisterInput($sHotString,$Function)
    ; Look for the function index
    Local $iFuncIndex
    For $a = 1 To $__Console_aInputs[0][0]
        If $__Console_aInputs[$a][$__Console_aInputs_idx2_Func] <> $Function Then ContinueLoop
        $iFuncIndex = $a
    Next

    If Not $iFuncIndex Then
        $__Console_aInputs[0][0] += 1
        ReDim $__Console_aInputs[$__Console_aInputs[0][0]+1][$__Console_aInputs_idx2max]
        $iFuncIndex = $__Console_aInputs[0][0]
    EndIf

    $__Console_aInputs[$iFuncIndex][$__Console_aInputs_idx2_sHotString] = $sHotString
    $__Console_aInputs[$iFuncIndex][$__Console_aInputs_idx2_Func] = $Function

EndFunc

Func _Console_ProcessRegisteredInputs(ByRef $sInput)
    ;If Not $__Console_aInputs[0][0] Then Return

    For $a = 1 To $__Console_aInputs[0][0]
        If $sInput <> $__Console_aInputs[$a][$__Console_aInputs_idx2_sHotString] Then ContinueLoop
        Return $__Console_aInputs[$a][$__Console_aInputs_idx2_Func]()
    Next

EndFunc



Func _Console_UnRegisterAllInputs()
    ReDim $__Console_aInputs[1][$__Console_aInputs_idx2max]
    $__Console_aInputs[0][0] = 0
EndFunc

 

Edited by gil900

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Jos
      By Jos
      1/02/2018: Uploaded a new SciTe4AutoIt3.exe v19.102.1901.0 installer.
      This version contains the bugfix release for SciTE 4.1.2.
      There has been a major update for Tidy allowing now inline comments without them being shifted to the left by default.
      See this thread for the total story about the new behavior and the added options
      ==> SciTE4AutoIt3 v19.102.1901.0
      Enjoy,
      Jos

      Addition/Changes/Fixes in the current installer:

      -------------------------------------------------------------------------------------------------- 2-1-2019 *** Merged the SciTE v 4.1.2 by Neil Hodgson with our own version of SciTE. (Jos)     - Fixed regex issue for Alt+F in AutoItTools.lua     - Fixed another regex issue for several functions in AutoItTools.lua     - Fixed Header parameters now showing None when none are     - Fixed jump to function to also jump to the right Column again.     - Restored AutoItTools:Copy_BookMarks() functionality *** Updated AutoIt3Wrapper v19.102.1901.0 (Jos)     - 18.703.1808.1 renamed "#AutoIt3Wrapper_Au3Stripper_Stop_OnError" to "#AutoIt3Wrapper_Au3Stripper_OnError" with now as options S,C,F,Stop,Continue,ForceUse     - 18.708.1148.1 Added #include <WinAPIFiles.au3> back in the included file list to ensure backward compatibility.     - 18.708.1148.2 Added "Tidy_Stop_OnError" support to the AutoIt3Wrapper.INI file.                     Changed HiDPI settings for Win 10 compatibility.     - 18.708.1148.4 Added logic to be able to display Console Output of script that have #RequireAdmin while SciTE runs at normal level.     - 18.708.1148.5 Added support to allow to Stop Execution or Restart for scripts with #RequireAdmin while SciTE runs at normal level.                     It won't hang anymore when you reply No on the UAC and detect the elevated process didn;t start.     - 18.708.1148.6 Reverted HiDPI changes made in 18.708.1148.2 as problems are reported. needs investigation.     - 18.708.1148.7 Changed check for RequireAdmin AutoIt3Wrapper startup.     - 18.708.1148.8 Added #include <APIResConstants.au3> for backwards compatibility with AutoIt3 v3.3.14.x. *** Updated Au3Stripper v19.102.1901.0 (Jos)     - 18.708.1148.1 Fixed issue finding variable names on multiline statements     - 18.708.1148.2 Added check for ending \ in the AutoIt3Dir, and remove it when there, to avoid duplication of includes.     - recompiled with PellesC 6 to make it compatible with WinXP again. *** Updated SciTEConfig v19.102.1901.0 (Jos)     - 18.708.1148.1 Update to allow comments in *.SciTEConfig file lines. (JPM)                     This update includes the updated shemes to allow changing between them. *** Updated Tidy v19.102.1901.0 (Jos)     - 18.708.1148.1: Fix bug handling Directivelines ending with continuation character     - 18.708.1148.2: Fixed indentation when a "None breaking space"(C2A0) character is used in a UTF file.     - 18.708.1148.3: Fix bug when a continuation line starts with +x, where is would add a space between +- and number.     - 18.708.9999.x: Rewrite of some internal code to allow inlinecomments to remain at their current position.                       Details can be found in this post: https://www.autoitscript.com/forum/topic/196221-tidy-major-update-27-10-requesting-help-with-testing/     - 18.708.9999.22: Released to Beta.     - 18.708.9999.23: Added option to totally skip commentblocks so now the options are:                         #Tidy_Parameters=/tcb=0         =>only indent the whole commentblock  (default)                                          /tcb or /tcb=1 =>Tidy inside commentblock                                          /tcb=-1        =>leave whole commentbock alone                        Tidy.INI:#--> Tidy commentblock 0=only indent the whole commentblock  (default=0)                                 #                      1=Tidy inside commentblock                                 #                     -1=leave whole commentbock alone                                 Tidy_commentblock=0     - 18.708.9999.24: Added check for ending \ in the AutoIt3Dir and remove it when there.     - recompiled with PellesC 6 to make it compatible with WinXP again. --------------------------------------------------------------------------------------------------
      ==> ScitillaHistory page containing all SciTE-Scintilla updates.
      ==> Visit the SciTE4AutoIt3 Download page for the latest versions
      ==> Check the online documentation for an overview of all extra's you get with this installer.
    • timmy2
      By timmy2
      I've noticed in several YouTube tutorials about AutoIt that every time the instructor types EndFunc a comment "<==(function name)" is automatically added. I understand that Tidy will do this after the fact but what I'm writing about happens in real time. Where's the setting for this?  Thank you.
    • ademon
      By ademon
      Hi. I can open the editor with out problems but I can not compile because it is placed on another partition diferent from C.
      Can you provide an update of this bug?


    • Myicq
      By Myicq
      This may be a dumb question.. but my vertical screen space is fairly limited. I don't need (always) to see all the debug output from autoIT compiler, wrapper etc.
      Can I turn this part off: (optionally)
      >"D:\AutoIt3\SciTE\..\AutoIt3.exe" "D:\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\temp\xx.au3" +>11:35:44 Starting AutoIt3Wrapper v.15.920.938.0 SciTE v.3.6.0.0 Keyboard:00000406 OS:WIN_7/Service Pack 1 CPU:X64 OS:X86 Environment(Language:0406) +> SciTEDir => D:\AutoIt3\SciTE UserDir => C:\Users\XXX\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\XXX\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.12.0) from:D:\AutoIt3 input:D:\temp\XX.au3 +>11:35:44 AU3Check ended.rc:0 >Running:(3.3.12.0):D:\AutoIt3\autoit3.exe "D:\temp\xx.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop  
    • BugFix
      By BugFix
      This lua script gives you the ability, to search for selected text or word from cursor in an search engine or on an search site of your choice.You can select the engine/site from a list, that you have defined in your user properties.
      To get the right call for your search engine, open the engine and search for one word. You need the url without the searched word. Write to your properties an display name for this engine and, separated by a comma, the url. See my example in the script header.
      For the list with  search sites, you need display name and site address (without http://).
      It will searched for the full selected text or, if none selection exists, for the word touched by the cursor. You can allow in the properties, that also will recognized words with dots (like objVar.Property).
      The script uses the shell.dll. But if you don't have installed it, the browser will opened with an command line call. Thats why the command window will pop up for a short moment.
      You'll find details for installation and key bindings inside the script. Look for free command numbers in SciTE. By default installation, the numbers must be greater than 35 (max. 49).
      -- TIME_STAMP 2018-09-02 09:22:03 --[[ This script publicates two functions - InetSearch.Engine() You can search for the selected/touched text in SciTE and can select a search engine of your choice. - InetSearch.Site() You can search for the selected/touched text in SciTE with a defined search engine and can select a search site of your choice. Copy this script in your Lua scripts folder. Load this file in the Lua startup: dofile("Full\\Path\\InetSearch.lua") Add in "SciTEUser.properties" the following properties with search engines and search sites of your choice: #~ Inet Search Settings #~ List of engines. "display-name,search-url" (if not set: google.com will used) #~ If only one entry exists, the selection box will not shown. Inet.Search.Engines= \ Google,https://www.google.de/search?q=| \ MetaGer,https://metager.de/meta/meta.ger3?focus=web&eingabe=| \ Bing,https://www.bing.com/search?q=| \ Ask,https://de.ask.com/web?q=| \ Yandex,https://www.yandex.com/search/?text= #~ Engine for site based search #~ Use display name from engines list (if not set: google.com will used) Inet.Search.SearchOnSite.Engine=Google #~ List of sites for site based search. "display-name,site-url" #~ If not set, it searches without a special site. #~ If only one entry exists, the selection box will not shown. Inet.Search.SearchOnSite.Sites= \ AutoIt DE,autoit.de| \ AutoIt EN,autoitscript.com| \ MSDN,msdn.microsoft.com #~ By default, words will detected without dots. (0) #~ You can allow dots, to detect object variables with properties or methods too. Inet.Search.Allow.Punctuation=1 #~ Search commands #~ Search word from cursor with engine selection command.name.9.*=Search with engine selection command.9.*=dostring InetSearch.Engine() command.mode.9.*=subsystem:lua,savebefore:no command.shortcut.9.*=Ctrl+Shift+F8 #~ Search word from cursor with search site selection command.name.5.*=Search with site selection command.5.*=dostring InetSearch.Site() command.mode.5.*=subsystem:lua,savebefore:no command.shortcut.5.*=Ctrl+Shift+F9 --]] InetSearch = {} InetSearch.Handler = EventClass:new(Common) do ------------------------------------------------------------------------------------------------ local engineFallback = "Google,https://www.google.com/search?q=" -- default search engine: "display-name,search-url" local search_type = nil local engine_url = nil local search_item = nil local search_site = nil local tableSelection = nil local list_type = 16 ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------- Load library protected local require_protected = function(_lib) local loaded_lib if pcall(function() loaded_lib = require(_lib) end) then return loaded_lib else return nil end end --> require_protected ------------------------------------------------------------------------------------------------ local shell = require_protected("shell") -- loads the shell library if exists ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Starts the search local RunSearch = function(_item, _url, _site) local sSite = '' if _site ~= nil then sSite = "%20site:".._site end local sCmd = _url.._item..sSite if shell then shell.exec(sCmd) else os.execute('start "" "'..sCmd..'"') end end --> RunSearch ------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------- Show the user list local ShowSelectionList = function() -- create the selection list (display names from engines or sites) local sep, list = '_', tableSelection[1][1] for i = 2, #tableSelection do list = list..sep..tableSelection[i][1] end local sep_tmp = editor.AutoCSeparator editor.AutoCSeparator = string.byte(sep) editor:UserListShow(list_type, list) editor.AutoCSeparator = sep_tmp end --> ShowSelectionList ------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------- Select the user list function InetSearch.Handler:OnUserListSelection(_tp, _sel) if _tp == list_type then local url for i = 1, #tableSelection do if tableSelection[i][1] == _sel then url = tableSelection[i][2] break end end if search_type == 'site' then search_site = url else search_site = nil engine_url = url end RunSearch(search_item, engine_url, search_site) end end ------------------------------------------------------------------------------------------------ --------------------------------------------------------- List of search engines from properties local GetEngines = function() local sEngines = props['Inet.Search.Engines'] -- without settings, the default search engine will used if sEngines == '' then sEngines = engineFallback end local tEngines = {} for entry in sEngines:gmatch('([^|]+)|-') do for name, url in entry:gmatch('([^,]+),(.+)') do table.insert(tEngines, {name, url}) end end return tEngines end --> GetEngines ------------------------------------------------------------------------------------------------ ----------------------------------------------------------- List of search sites from properties local GetSearchSites = function() local sSites = props['Inet.Search.SearchOnSite.Sites'] if sSites == '' then return nil end local tSites = {} for entry in sSites:gmatch('([^|]+)|-') do for name, url in entry:gmatch('([^,]+),(.+)') do table.insert(tSites, {name, url}) end end return tSites end --> GetSearchSites ------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------- Get search item local GetSearchItem = function() local sSelect = editor:GetSelText() if sSelect ~= '' then return sSelect end local allowDots = false if props['Inet.Search.Allow.Punctuation'] == '1' then allowDots = true end local caret = editor.CurrentPos local iLine = editor:LineFromPosition(caret) local iZero = editor:PositionFromLine(iLine) editor:LineEnd() local iLineEnd = editor.CurrentPos editor.CurrentPos = caret editor:SetSelection(caret,caret) local iStart = editor:WordStartPosition(caret) if allowDots then while iStart > iZero and editor:textrange(iStart -1, iStart) == '.' do iStart = editor:WordStartPosition(iStart -1) end end local iEnd = editor:WordEndPosition(caret) if allowDots then while iEnd < iLineEnd and editor:textrange(iEnd, iEnd +1) == '.' do iEnd = editor:WordEndPosition(iEnd +1) end end sSelect = editor:textrange(iStart, iEnd):gsub('^([^%w]+)', ''):gsub('([^%w]+)$', '') return sSelect end --> GetSearchItem ------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- Search with engine selection local SearchEngineBased = function() search_type = 'engine' search_item = GetSearchItem() if search_item == '' then return nil end tableSelection = GetEngines() -- only one entry: selection box will not shown if #tableSelection == 1 then RunSearch(search_item, tableSelection[1][2], nil) else ShowSelectionList() end end --> SearchEngineBased ------------------------------------------------------------------------------------------------ -------------------------------------------------------------- Search with search site selection local SearchSiteBased = function() search_type = 'site' search_item = GetSearchItem() if search_item == '' then return nil end -- get the default engine for site based searching for _, url in engineFallback:gmatch('([^,]+),(.+)') do engine_url = url end -- if is set, use search engine from properties local sEngine = props['Inet.Search.SearchOnSite.Engine'] if sEngine ~= '' then local tEngines = GetEngines() for i = 1, #tEngines do if tEngines[i][1] == sEngine then engine_url = tEngines[i][2] break end end end tableSelection = GetSearchSites() -- if none entries for search sites, use simple search if tableSelection == nil then RunSearch(search_item, engine_url, nil) else -- only one entry: selection box will not shown if #tableSelection == 1 then RunSearch(search_item, engine_url, tableSelection[1][2]) else ShowSelectionList() end end end --> SearchSiteBased ------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------- Publicate functions InetSearch.Engine = SearchEngineBased InetSearch.Site = SearchSiteBased ------------------------------------------------------------------------------------------------ end ----------------------------------------------------------------------------------------------------  
      InetSearch.lua
×