├── version.txt ├── scripts └── SinNombre.sh ├── plink.exe ├── psftp.exe ├── Cambios.txt ├── TitoTerm.exe ├── _source ├── TTerm.ico ├── TTerm.res ├── FormAbrirRemoto.lrj ├── FormRemoteOpenDial.lrj ├── FormRemoteExplor.lrj ├── Principal.lfm ├── FormRemoteExplor.lfm ├── FrameTabEdits.lrj ├── FormConexRapida.lrj ├── FormQuickConnect.lrj ├── FrameTabSessions.lrj ├── TTerm.lpr ├── FormRemoteOpenDial.lfm ├── FormQuickConnect.lfm ├── FormQuickConnect.pas ├── Comandos.pas ├── FrameExpRemoto.lrj ├── FormRemoteOpenDial.pas ├── FormRemoteExplor.pas ├── FrameCfgSyntax.lfm ├── FrameCfgSynEdit.lrj ├── FormConfig.lrj ├── FormEditRemoto.lrj ├── FormRemoteEditor.lrj ├── FormEditMacros.lrj ├── FormPrincipal.lrj ├── FrameCfgSynEdit.lfm ├── FormConfig.lfm ├── TTerm.lpi ├── FrameCfgSynEdit.pas ├── FrameTabSession.lrj ├── FormConfig.pas └── FormEditMacros.pas ├── _screenshots ├── screen1.png ├── prompt_detec.png ├── cmd_connection.png └── connect_settings.png ├── Docs └── Manual de Usuario.pdf ├── macros ├── Ejemplos │ └── Ejemplo Otros CMD.ttm └── NoName.ttm ├── languages ├── Plain Text.xml ├── INI file.xml ├── Python.xml ├── XML.xml ├── C.xml ├── Awk.xml ├── Asm8086.xml ├── PreSQLOracle.xml ├── UnixShell.xml ├── Terminal Macro.xml ├── ObjectPascal.xml ├── DOS_shell.xml ├── bash.xml └── SQLOracle.xml ├── _libraries ├── SynFacilUtils-1.23 │ ├── FormSelFuente.pas │ └── FormSelFuente.lfm ├── SynFacilUtils-1.24 │ ├── FormSelFuente.pas │ └── FormSelFuente.lfm ├── MisUtils-0.6 │ └── README.md ├── Xpres-1.3.2 │ └── README.md └── MiConfig-0.4.2 │ ├── MiConfigUtils.pas │ ├── MiConfigINI.pas │ └── MiConfigXML.pas ├── TitoTerm.xml ├── LEEME.md └── README.md /version.txt: -------------------------------------------------------------------------------- 1 | VER_PROG = '0.8.4'; -------------------------------------------------------------------------------- /scripts/SinNombre.sh: -------------------------------------------------------------------------------- 1 | #Archivo de comandos 2 | 3 | -------------------------------------------------------------------------------- /plink.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/plink.exe -------------------------------------------------------------------------------- /psftp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/psftp.exe -------------------------------------------------------------------------------- /Cambios.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/Cambios.txt -------------------------------------------------------------------------------- /TitoTerm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/TitoTerm.exe -------------------------------------------------------------------------------- /_source/TTerm.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_source/TTerm.ico -------------------------------------------------------------------------------- /_source/TTerm.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_source/TTerm.res -------------------------------------------------------------------------------- /_screenshots/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_screenshots/screen1.png -------------------------------------------------------------------------------- /Docs/Manual de Usuario.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/Docs/Manual de Usuario.pdf -------------------------------------------------------------------------------- /_screenshots/prompt_detec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_screenshots/prompt_detec.png -------------------------------------------------------------------------------- /_screenshots/cmd_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_screenshots/cmd_connection.png -------------------------------------------------------------------------------- /_screenshots/connect_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/_screenshots/connect_settings.png -------------------------------------------------------------------------------- /macros/Ejemplos/Ejemplo Otros CMD.ttm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-edson/Tito-s-Terminal/HEAD/macros/Ejemplos/Ejemplo Otros CMD.ttm -------------------------------------------------------------------------------- /languages/Plain Text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /_source/FormAbrirRemoto.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":116450494,"name":"tfrmabrirremoto.caption","sourcebytes":[65,98,114,105,114,32,82,101,109,111,116,111,32,46,46,46],"value":"Abrir Remoto ..."} 3 | ]} 4 | -------------------------------------------------------------------------------- /_source/FormRemoteOpenDial.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":116450494,"name":"tfrmremoteopendial.caption","sourcebytes":[65,98,114,105,114,32,82,101,109,111,116,111,32,46,46,46],"value":"Abrir Remoto ..."} 3 | ]} 4 | -------------------------------------------------------------------------------- /_source/FormRemoteExplor.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":54618079,"name":"tfrmremoteexplor.caption","sourcebytes":[69,120,112,108,111,114,97,100,111,114,32,82,101,109,111,116,111],"value":"Explorador Remoto"} 3 | ]} 4 | -------------------------------------------------------------------------------- /_source/Principal.lfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 266 3 | Height = 240 4 | Top = 287 5 | Width = 320 6 | Caption = 'Form1' 7 | OnActivate = FormActivate 8 | OnCreate = FormCreate 9 | OnShow = FormShow 10 | LCLVersion = '1.2.0.3' 11 | end 12 | -------------------------------------------------------------------------------- /_source/FormRemoteExplor.lfm: -------------------------------------------------------------------------------- 1 | object frmRemoteExplor: TfrmRemoteExplor 2 | Left = 284 3 | Height = 470 4 | Top = 88 5 | Width = 662 6 | Caption = 'Explorador Remoto' 7 | DesignTimePPI = 120 8 | OnActivate = FormActivate 9 | OnCreate = FormCreate 10 | OnDestroy = FormDestroy 11 | OnShow = FormShow 12 | LCLVersion = '2.0.10.0' 13 | end 14 | -------------------------------------------------------------------------------- /macros/NoName.ttm: -------------------------------------------------------------------------------- 1 | // Sample of macro using Tito's Terminal 0.2b 2 | // Created: 20/10/2014 11:56:16 3 | disconnect //Disconnect first, in case there was another connection 4 | connect "192.168.1.1" //Connect to a new IP 5 | wait "login: " //Wait for this text 6 | sendln "usuario" //Send this text 7 | wait "password: " 8 | sendln "clave" 9 | pause 3 //Wait for 3 seconds 10 | sendln "cd /carpeta_de_trabajo" 11 | -------------------------------------------------------------------------------- /languages/INI file.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /_source/FrameTabEdits.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":151230590,"name":"tfratabedits.lblbackground.caption","sourcebytes":[60,60,78,111,32,102,105,108,101,115,62,62],"value":"<>"}, 3 | {"hash":177351,"name":"tfratabedits.mnnewtab.caption","sourcebytes":[38,78,101,119],"value":"&New"}, 4 | {"hash":44709525,"name":"tfratabedits.mnclosetab.caption","sourcebytes":[38,67,108,111,115,101],"value":"&Close"}, 5 | {"hash":158729548,"name":"tfratabedits.mncloseall.caption","sourcebytes":[67,108,111,115,101,32,38,65,108,108],"value":"Close &All"}, 6 | {"hash":22838259,"name":"tfratabedits.mncloseothers.caption","sourcebytes":[67,108,111,115,101,32,38,79,116,104,101,114,115],"value":"Close &Others"} 7 | ]} 8 | -------------------------------------------------------------------------------- /_source/FormConexRapida.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":225018270,"name":"tfrmconexrap.caption","sourcebytes":[81,117,105,99,107,32,99,111,110,110,101,99,116,105,111,110],"value":"Quick connection"}, 3 | {"hash":5204602,"name":"tfrmconexrap.label1.caption","sourcebytes":[72,111,115,116,58],"value":"Host:"}, 4 | {"hash":11067,"name":"tfrmconexrap.btnaceptar.caption","sourcebytes":[38,79,75],"value":"&OK"}, 5 | {"hash":177752476,"name":"tfrmconexrap.btncancelar.caption","sourcebytes":[38,67,97,110,99,101,108],"value":"&Cancel"}, 6 | {"hash":195835108,"name":"tfrmconexrap.opttelnet.caption","sourcebytes":[38,84,101,108,110,101,116],"value":"&Telnet"}, 7 | {"hash":22648,"name":"tfrmconexrap.optssh.caption","sourcebytes":[83,83,72],"value":"SSH"} 8 | ]} 9 | -------------------------------------------------------------------------------- /_source/FormQuickConnect.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":225018270,"name":"tfrmquickconnect.caption","sourcebytes":[81,117,105,99,107,32,99,111,110,110,101,99,116,105,111,110],"value":"Quick connection"}, 3 | {"hash":5204602,"name":"tfrmquickconnect.label1.caption","sourcebytes":[72,111,115,116,58],"value":"Host:"}, 4 | {"hash":11067,"name":"tfrmquickconnect.btnaceptar.caption","sourcebytes":[38,79,75],"value":"&OK"}, 5 | {"hash":177752476,"name":"tfrmquickconnect.btncancelar.caption","sourcebytes":[38,67,97,110,99,101,108],"value":"&Cancel"}, 6 | {"hash":195835108,"name":"tfrmquickconnect.opttelnet.caption","sourcebytes":[38,84,101,108,110,101,116],"value":"&Telnet"}, 7 | {"hash":22648,"name":"tfrmquickconnect.optssh.caption","sourcebytes":[83,83,72],"value":"SSH"} 8 | ]} 9 | -------------------------------------------------------------------------------- /languages/Python.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | and as assert break class continue def del elif else except exec 18 | False finally for from global if import in is lambda None not or 19 | pass print raise return triple True try while with yield 20 | 21 | 22 | -------------------------------------------------------------------------------- /languages/XML.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /_source/FrameTabSessions.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":123301726,"name":"tfratabsessions.lblnewsession.caption","sourcebytes":[62,38,78,101,119,32,83,101,115,115,105,111,110,32,46,46,46],"value":">&New Session ..."}, 3 | {"hash":202546526,"name":"tfratabsessions.lblopensession.caption","sourcebytes":[62,38,79,112,101,110,32,83,101,115,115,105,111,110,32,46,46,46],"value":">&Open Session ..."}, 4 | {"hash":90749811,"name":"tfratabsessions.lblrecents.caption","sourcebytes":[62,82,101,99,101,110,116,32,115,101,115,115,105,111,110,115],"value":">Recent sessions"}, 5 | {"hash":177351,"name":"tfratabsessions.mnnewtab.caption","sourcebytes":[38,78,101,119],"value":"&New"}, 6 | {"hash":44709525,"name":"tfratabsessions.mnclosetab.caption","sourcebytes":[38,67,108,111,115,101],"value":"&Close"}, 7 | {"hash":158729548,"name":"tfratabsessions.mncloseall.caption","sourcebytes":[67,108,111,115,101,32,38,65,108,108],"value":"Close &All"}, 8 | {"hash":22838259,"name":"tfratabsessions.mncloseothers.caption","sourcebytes":[67,108,111,115,101,32,38,79,116,104,101,114,115],"value":"Close &Others"} 9 | ]} 10 | -------------------------------------------------------------------------------- /_source/TTerm.lpr: -------------------------------------------------------------------------------- 1 | program TTerm; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX}{$IFDEF UseCThreads} 7 | cthreads, 8 | {$ENDIF}{$ENDIF} 9 | Interfaces, // this includes the LCL widgetset 10 | Forms, FormPrincipal, FormQuickConnect, FormConfig, globales, uResaltTerm, 11 | FormEditMacros, FormRemoteExplor, FormRemoteEditor, FormRemoteOpenDial, 12 | GenCod, FrameTabSession, FormSesProperty, Comandos, FrameCfgSyntax, Parser, 13 | RegExpr2; 14 | 15 | {$R *.res} 16 | 17 | begin 18 | RequireDerivedFormResource := True; 19 | Application.Initialize; 20 | Application.CreateForm(TfrmPrincipal, frmPrincipal); 21 | Application.CreateForm(TfrmQuickConnect, frmQuickConnect); 22 | Application.CreateForm(TConfig, Config); 23 | Application.CreateForm(TfrmRemoteExplor, frmRemoteExplor); 24 | Application.CreateForm(TfrmRemoteEditor, frmRemoteEditor); 25 | Application.CreateForm(TfrmRemoteOpenDial, frmRemoteOpenDial); 26 | Application.CreateForm(TfrmEditMacros, frmEditMacros); 27 | Application.CreateForm(TfrmSesProperty, frmSesProperty); 28 | Application.Run ; 29 | end. 30 | 31 | -------------------------------------------------------------------------------- /_source/FormRemoteOpenDial.lfm: -------------------------------------------------------------------------------- 1 | object frmRemoteOpenDial: TfrmRemoteOpenDial 2 | Left = 291 3 | Height = 352 4 | Top = 210 5 | Width = 540 6 | Caption = 'Abrir Remoto ...' 7 | ClientHeight = 352 8 | ClientWidth = 540 9 | DesignTimePPI = 120 10 | OnActivate = FormActivate 11 | OnCreate = FormCreate 12 | OnDestroy = FormDestroy 13 | OnShow = FormShow 14 | LCLVersion = '2.0.10.0' 15 | object Panel1: TPanel 16 | Left = 0 17 | Height = 64 18 | Top = 288 19 | Width = 540 20 | Align = alBottom 21 | ClientHeight = 64 22 | ClientWidth = 540 23 | ParentFont = False 24 | TabOrder = 0 25 | object butAceptar: TBitBtn 26 | Left = 20 27 | Height = 38 28 | Top = 10 29 | Width = 94 30 | Default = True 31 | DefaultCaption = True 32 | Kind = bkOK 33 | OnClick = butAceptarClick 34 | ParentFont = False 35 | TabOrder = 0 36 | end 37 | object butCancel: TBitBtn 38 | Left = 160 39 | Height = 38 40 | Top = 10 41 | Width = 94 42 | Cancel = True 43 | DefaultCaption = True 44 | Kind = bkCancel 45 | ModalResult = 2 46 | ParentFont = False 47 | TabOrder = 1 48 | end 49 | end 50 | end 51 | -------------------------------------------------------------------------------- /languages/C.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | "#include " 7 | "#include <assert.h>" 8 | "#include <alloc.h>" 9 | "#include <ctype.h>" 10 | "#include <dir.h>" 11 | "#include <errno.h>" 12 | "#include <float.h>" 13 | "#include <limits.h>" 14 | "#include <math.h>" 15 | "#include <setjmp.h>" 16 | "#include <signal.h>" 17 | "#include <stdarg.h>" 18 | "#include <stdef.h>" 19 | "#include <stdio.h>" 20 | "#include <stlib.h>" 21 | "#include <string.h>" 22 | "#include <time.h>" 23 | "void main(){ }" 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | if else switch case default break goto return for while do continue typedef sizeof NULL 39 | void struct union enum char short int long double float signed unsigned const static extern auto register volatile 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /_source/FormQuickConnect.lfm: -------------------------------------------------------------------------------- 1 | object frmQuickConnect: TfrmQuickConnect 2 | Left = 272 3 | Height = 154 4 | Top = 160 5 | Width = 350 6 | Caption = 'Quick connection' 7 | ClientHeight = 154 8 | ClientWidth = 350 9 | DesignTimePPI = 120 10 | OnShow = FormShow 11 | LCLVersion = '2.0.10.0' 12 | object Label1: TLabel 13 | Left = 40 14 | Height = 20 15 | Top = 22 16 | Width = 34 17 | Caption = 'Host:' 18 | ParentColor = False 19 | ParentFont = False 20 | end 21 | object btnAceptar: TBitBtn 22 | Left = 50 23 | Height = 38 24 | Top = 100 25 | Width = 94 26 | Caption = '&OK' 27 | Default = True 28 | Kind = bkOK 29 | ModalResult = 1 30 | OnClick = btnAceptarClick 31 | ParentFont = False 32 | TabOrder = 1 33 | end 34 | object btnCancelar: TBitBtn 35 | Left = 210 36 | Height = 38 37 | Top = 100 38 | Width = 94 39 | Cancel = True 40 | Caption = '&Cancel' 41 | Kind = bkCancel 42 | ModalResult = 2 43 | OnClick = btnCancelarClick 44 | ParentFont = False 45 | TabOrder = 2 46 | end 47 | object cmbHost: TComboBox 48 | Left = 108 49 | Height = 28 50 | Top = 16 51 | Width = 150 52 | ItemHeight = 20 53 | ParentFont = False 54 | TabOrder = 0 55 | end 56 | object optTelnet: TRadioButton 57 | Left = 40 58 | Height = 24 59 | Top = 60 60 | Width = 65 61 | Caption = '&Telnet' 62 | ParentFont = False 63 | TabOrder = 3 64 | end 65 | object optSSH: TRadioButton 66 | Left = 140 67 | Height = 24 68 | Top = 60 69 | Width = 51 70 | Caption = 'SSH' 71 | ParentFont = False 72 | TabOrder = 4 73 | end 74 | end 75 | -------------------------------------------------------------------------------- /_libraries/SynFacilUtils-1.23/FormSelFuente.pas: -------------------------------------------------------------------------------- 1 | unit FormSelFuente; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, StdCtrls, 9 | ButtonPanel; 10 | 11 | type 12 | 13 | TTipFuente = (tfTod, tfSel, tfLin); 14 | { TfrmSelFuente } 15 | 16 | TfrmSelFuente = class(TForm) 17 | ButtonPanel1: TButtonPanel; 18 | Label1: TLabel; 19 | optTod: TRadioButton; 20 | optSel: TRadioButton; 21 | optLin: TRadioButton; 22 | procedure CancelButtonClick(Sender: TObject); 23 | procedure OKButtonClick(Sender: TObject); 24 | private 25 | { private declarations } 26 | public 27 | cancelado: boolean; 28 | procedure SetLanguage(lang: string); 29 | end; 30 | 31 | var 32 | frmSelFuente: TfrmSelFuente; 33 | implementation 34 | 35 | {$R *.lfm} 36 | 37 | { TfrmSelFuente } 38 | 39 | procedure TfrmSelFuente.OKButtonClick(Sender: TObject); 40 | begin 41 | cancelado := false; 42 | frmSelFuente.Close; 43 | end; 44 | 45 | procedure TfrmSelFuente.CancelButtonClick(Sender: TObject); 46 | begin 47 | cancelado := true; 48 | frmSelFuente.Close; 49 | end; 50 | 51 | procedure TfrmSelFuente.SetLanguage(lang: string); 52 | begin 53 | case lowerCase(lang) of 54 | 'es': begin 55 | Caption := 'Seleccionar fuente'; 56 | Label1.Caption:='Seleccione fuente a procesar:'; 57 | optTod.Caption:='&Todo el texto'; 58 | optSel.Caption:='&Selección'; 59 | optLin.Caption:='&Línea actual'; 60 | end; 61 | 'en': begin 62 | Caption := 'Select Source'; 63 | Label1.Caption:='Select the source to process:'; 64 | optTod.Caption:='&All the text'; 65 | optSel.Caption:='&Selection'; 66 | optLin.Caption:='&Current Line'; 67 | end; 68 | end; 69 | end; 70 | 71 | 72 | end. 73 | 74 | -------------------------------------------------------------------------------- /_libraries/SynFacilUtils-1.24/FormSelFuente.pas: -------------------------------------------------------------------------------- 1 | unit FormSelFuente; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, StdCtrls, 9 | ButtonPanel; 10 | 11 | type 12 | 13 | TTipFuente = (tfTod, tfSel, tfLin); 14 | { TfrmSelFuente } 15 | 16 | TfrmSelFuente = class(TForm) 17 | ButtonPanel1: TButtonPanel; 18 | Label1: TLabel; 19 | optTod: TRadioButton; 20 | optSel: TRadioButton; 21 | optLin: TRadioButton; 22 | procedure CancelButtonClick(Sender: TObject); 23 | procedure OKButtonClick(Sender: TObject); 24 | private 25 | { private declarations } 26 | public 27 | cancelado: boolean; 28 | procedure SetLanguage(lang: string); 29 | end; 30 | 31 | var 32 | frmSelFuente: TfrmSelFuente; 33 | implementation 34 | 35 | {$R *.lfm} 36 | 37 | { TfrmSelFuente } 38 | 39 | procedure TfrmSelFuente.OKButtonClick(Sender: TObject); 40 | begin 41 | cancelado := false; 42 | frmSelFuente.Close; 43 | end; 44 | 45 | procedure TfrmSelFuente.CancelButtonClick(Sender: TObject); 46 | begin 47 | cancelado := true; 48 | frmSelFuente.Close; 49 | end; 50 | 51 | procedure TfrmSelFuente.SetLanguage(lang: string); 52 | begin 53 | case lowerCase(lang) of 54 | 'es': begin 55 | Caption := 'Seleccionar fuente'; 56 | Label1.Caption:='Seleccione fuente a procesar:'; 57 | optTod.Caption:='&Todo el texto'; 58 | optSel.Caption:='&Selección'; 59 | optLin.Caption:='&Línea actual'; 60 | end; 61 | 'en': begin 62 | Caption := 'Select Source'; 63 | Label1.Caption:='Select the source to process:'; 64 | optTod.Caption:='&All the text'; 65 | optSel.Caption:='&Selection'; 66 | optLin.Caption:='&Current Line'; 67 | end; 68 | end; 69 | end; 70 | 71 | 72 | end. 73 | 74 | -------------------------------------------------------------------------------- /_source/FormQuickConnect.pas: -------------------------------------------------------------------------------- 1 | unit FormQuickConnect; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 | Buttons, Globales; 10 | 11 | type 12 | 13 | { TfrmQuickConnect } 14 | 15 | TfrmQuickConnect = class(TForm) 16 | btnAceptar: TBitBtn; 17 | btnCancelar: TBitBtn; 18 | cmbHost: TComboBox; 19 | Label1: TLabel; 20 | optTelnet: TRadioButton; 21 | optSSH: TRadioButton; 22 | procedure btnAceptarClick(Sender: TObject); 23 | procedure btnCancelarClick(Sender: TObject); 24 | procedure FormShow(Sender: TObject); 25 | private 26 | { private declarations } 27 | public 28 | Cancel: boolean; 29 | //parámetros de conexión 30 | ip : string; //dirección IP 31 | tipo : TTipCon; //tipo de conexión 32 | end; 33 | 34 | var 35 | frmQuickConnect: TfrmQuickConnect; 36 | 37 | implementation 38 | 39 | {$R *.lfm} 40 | 41 | { TfrmQuickConnect } 42 | 43 | procedure TfrmQuickConnect.btnAceptarClick(Sender: TObject); 44 | begin 45 | //lee parámetros 46 | ip := cmbHost.Text; 47 | if optTelnet.Checked then tipo := TCON_TELNET; 48 | if optSSH.Checked then tipo := TCON_SSH; 49 | Cancel := false; 50 | Self.Hide; 51 | end; 52 | procedure TfrmQuickConnect.btnCancelarClick(Sender: TObject); 53 | begin 54 | ip := ''; 55 | Cancel := true; 56 | self.Hide; 57 | end; 58 | 59 | procedure TfrmQuickConnect.FormShow(Sender: TObject); 60 | begin 61 | Cancel := true; 62 | cmbHost.Clear; 63 | cmbHost.Text := '192.168.1.1'; 64 | optTelnet.Checked:=true; 65 | { if Config.ConRecientes.Count > 0 then begin 66 | cmbHost.Items.AddStrings(Config.ConRecientes); 67 | cmbHost.ItemIndex:=0; //selecciona al primero 68 | end;} 69 | end; 70 | 71 | end. 72 | 73 | -------------------------------------------------------------------------------- /languages/Awk.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | "BEGIN {}" 15 | 16 | "END {}" 17 | 18 | 19 | 20 | if else while do for in break continue delete 21 | next function func exit 22 | BEGIN END 23 | 24 | 25 | atan2 26 | close cos ctime 27 | exp 28 | getline gsub 29 | index int 30 | length log 31 | match 32 | print printf 33 | rand 34 | sin split sprintf sqrt srand sub substr system 35 | time tolower toupper 36 | 37 | 38 | ARGC ARGV 39 | FILENAME FS 40 | NF NR 41 | OFS ORS OFMT 42 | RLENGTH RS RSTART 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /_source/Comandos.pas: -------------------------------------------------------------------------------- 1 | {Unidad que implementa la ejecución de comandos de tipo: %EDIT, %EXPLORER, ...} 2 | unit Comandos; 3 | {$mode objfpc}{$H+} 4 | interface 5 | uses 6 | Classes, SysUtils, MisUtils, FrameTabSession, Globales, FrameTabSessions, 7 | process, Parser; 8 | 9 | const INI_COMM = '%'; //Initial character for commands 10 | 11 | function ExecSFTP(usr, pwd, ip, cmds: string): boolean; 12 | function ProcessCommand(lin: string; ses: TfraTabSession; tabSessions: TfraTabSessions): boolean; 13 | 14 | implementation 15 | function ExecSFTP(usr, pwd, ip, cmds: string): boolean; 16 | //Ejecuta el cliente SFTP. Devuelve FALSE si hubo error 17 | var 18 | p : TProcess; //el proceso a manejar 19 | begin 20 | Result := true; 21 | StringToFile(cmds, 'killme.tmp'); //Ceea archivo en blanco. 22 | p := TProcess.Create(nil); //Crea proceso 23 | p.Options:= p.Options + [poNoConsole, poWaitOnExit]; 24 | p.Executable:='psftp.exe'; 25 | p.Parameters.Clear; 26 | p.Parameters.Add(usr+ '@' + ip); 27 | p.Parameters.Add('-pw'); 28 | p.Parameters.Add(pwd); 29 | p.Parameters.Add('-b'); 30 | p.Parameters.Add('killme.tmp'); 31 | try 32 | p.Execute; 33 | except 34 | Result := false; 35 | MsgBox('Fallo al iniciar aplicativo: '+ p.Executable);; 36 | end; 37 | p.Free; 38 | DeleteFile('killme.tmp'); //Limpia la casa 39 | end; 40 | 41 | function ProcessCommand(lin: string; ses: TfraTabSession; tabSessions: TfraTabSessions): boolean; 42 | {Procesa una línea que debe contener un comando. Si no encuentra un comando, devuelve 43 | FALSE.} 44 | var 45 | linCommand: TStringList; 46 | begin 47 | if copy(lin, 1, 1) = INI_COMM then begin //Es un comando. 48 | //Comando equivalente al lenguaje de macros 49 | linCommand := TStringList.Create; 50 | linCommand.Text := copy(lin, 2, length(lin)); 51 | cxp.Compilar('current file', linCommand); 52 | if cxp.HayError then begin 53 | cxp.ShowError; 54 | end; 55 | linCommand.Destroy; 56 | exit(true); 57 | end else begin //No se reconoce como comando. 58 | exit(false); 59 | end; 60 | end; 61 | 62 | 63 | end. 64 | 65 | -------------------------------------------------------------------------------- /_libraries/SynFacilUtils-1.23/FormSelFuente.lfm: -------------------------------------------------------------------------------- 1 | object frmSelFuente: TfrmSelFuente 2 | Left = 236 3 | Height = 144 4 | Top = 214 5 | Width = 330 6 | Caption = 'Seleccionar fuente' 7 | ClientHeight = 144 8 | ClientWidth = 330 9 | LCLVersion = '1.2.4.0' 10 | object optTod: TRadioButton 11 | Left = 16 12 | Height = 19 13 | Top = 56 14 | Width = 89 15 | Caption = '&Todo el texto' 16 | Font.CharSet = ANSI_CHARSET 17 | Font.Height = -12 18 | Font.Name = 'Arial' 19 | Font.Pitch = fpVariable 20 | Font.Quality = fqDraft 21 | ParentFont = False 22 | TabOrder = 0 23 | end 24 | object optSel: TRadioButton 25 | Left = 128 26 | Height = 19 27 | Top = 56 28 | Width = 74 29 | Caption = '&Selección' 30 | Font.CharSet = ANSI_CHARSET 31 | Font.Height = -12 32 | Font.Name = 'Arial' 33 | Font.Pitch = fpVariable 34 | Font.Quality = fqDraft 35 | ParentFont = False 36 | TabOrder = 1 37 | end 38 | object optLin: TRadioButton 39 | Left = 224 40 | Height = 19 41 | Top = 56 42 | Width = 87 43 | Caption = '&Línea actual' 44 | Font.CharSet = ANSI_CHARSET 45 | Font.Height = -12 46 | Font.Name = 'Arial' 47 | Font.Pitch = fpVariable 48 | Font.Quality = fqDraft 49 | ParentFont = False 50 | TabOrder = 2 51 | end 52 | object Label1: TLabel 53 | Left = 16 54 | Height = 15 55 | Top = 16 56 | Width = 163 57 | Caption = 'Seleccione fuente a procesar:' 58 | Font.CharSet = ANSI_CHARSET 59 | Font.Height = -12 60 | Font.Name = 'Arial' 61 | Font.Pitch = fpVariable 62 | Font.Quality = fqDraft 63 | ParentColor = False 64 | ParentFont = False 65 | end 66 | object ButtonPanel1: TButtonPanel 67 | Left = 6 68 | Height = 34 69 | Top = 104 70 | Width = 318 71 | OKButton.Name = 'OKButton' 72 | OKButton.DefaultCaption = True 73 | OKButton.OnClick = OKButtonClick 74 | HelpButton.Name = 'HelpButton' 75 | HelpButton.DefaultCaption = True 76 | CloseButton.Name = 'CloseButton' 77 | CloseButton.DefaultCaption = True 78 | CancelButton.Name = 'CancelButton' 79 | CancelButton.DefaultCaption = True 80 | CancelButton.OnClick = CancelButtonClick 81 | TabOrder = 3 82 | ShowButtons = [pbOK, pbCancel] 83 | end 84 | end 85 | -------------------------------------------------------------------------------- /_libraries/SynFacilUtils-1.24/FormSelFuente.lfm: -------------------------------------------------------------------------------- 1 | object frmSelFuente: TfrmSelFuente 2 | Left = 236 3 | Height = 144 4 | Top = 214 5 | Width = 330 6 | Caption = 'Seleccionar fuente' 7 | ClientHeight = 144 8 | ClientWidth = 330 9 | LCLVersion = '1.2.4.0' 10 | object optTod: TRadioButton 11 | Left = 16 12 | Height = 19 13 | Top = 56 14 | Width = 89 15 | Caption = '&Todo el texto' 16 | Font.CharSet = ANSI_CHARSET 17 | Font.Height = -12 18 | Font.Name = 'Arial' 19 | Font.Pitch = fpVariable 20 | Font.Quality = fqDraft 21 | ParentFont = False 22 | TabOrder = 0 23 | end 24 | object optSel: TRadioButton 25 | Left = 128 26 | Height = 19 27 | Top = 56 28 | Width = 74 29 | Caption = '&Selección' 30 | Font.CharSet = ANSI_CHARSET 31 | Font.Height = -12 32 | Font.Name = 'Arial' 33 | Font.Pitch = fpVariable 34 | Font.Quality = fqDraft 35 | ParentFont = False 36 | TabOrder = 1 37 | end 38 | object optLin: TRadioButton 39 | Left = 224 40 | Height = 19 41 | Top = 56 42 | Width = 87 43 | Caption = '&Línea actual' 44 | Font.CharSet = ANSI_CHARSET 45 | Font.Height = -12 46 | Font.Name = 'Arial' 47 | Font.Pitch = fpVariable 48 | Font.Quality = fqDraft 49 | ParentFont = False 50 | TabOrder = 2 51 | end 52 | object Label1: TLabel 53 | Left = 16 54 | Height = 15 55 | Top = 16 56 | Width = 163 57 | Caption = 'Seleccione fuente a procesar:' 58 | Font.CharSet = ANSI_CHARSET 59 | Font.Height = -12 60 | Font.Name = 'Arial' 61 | Font.Pitch = fpVariable 62 | Font.Quality = fqDraft 63 | ParentColor = False 64 | ParentFont = False 65 | end 66 | object ButtonPanel1: TButtonPanel 67 | Left = 6 68 | Height = 34 69 | Top = 104 70 | Width = 318 71 | OKButton.Name = 'OKButton' 72 | OKButton.DefaultCaption = True 73 | OKButton.OnClick = OKButtonClick 74 | HelpButton.Name = 'HelpButton' 75 | HelpButton.DefaultCaption = True 76 | CloseButton.Name = 'CloseButton' 77 | CloseButton.DefaultCaption = True 78 | CancelButton.Name = 'CancelButton' 79 | CancelButton.DefaultCaption = True 80 | CancelButton.OnClick = CancelButtonClick 81 | TabOrder = 3 82 | ShowButtons = [pbOK, pbCancel] 83 | end 84 | end 85 | -------------------------------------------------------------------------------- /languages/Asm8086.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | aaa aad aam aas adc add and call cbw clc cld cli cmc cmp cmps cmpsb cmpsw cwd 7 | daa das dec div esc hlt idiv imul in inc int into iret 8 | ja jae jb jbe jc jcxz je jg jge jl jle jmp jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz lahf lds lea les lods lodsb lodsw loop loope loopew loopne loopnew loopnz loopnzw loopw loopz loopzw mov movs movsb movsw mul neg nop not or out pop popf push pushf rcl rcr ret retf retn rol ror sahf sal sar sbb scas scasb scasw shl shr stc std sti stos stosb stosw sub test wait xchg xlat xlatb xor bound enter ins insb insw leave outs outsb outsw popa pusha pushw arpl lar lsl sgdt sidt sldt smsw str verr verw clts lgdt lidt lldt lmsw ltr bsf bsr bt btc btr bts cdq cmpsd cwde insd iretd iretdf iretf jecxz lfs lgs lodsd loopd looped loopned loopnzd loopzd lss movsd movsx movzx outsd popad popfd pushad pushd pushfd scasd seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz shld shrd stosd bswap cmpxchg invd invlpg wbinvd xadd lock rep repe repne repnz repz cflush cpuid emms femms cmovo cmovno cmovb cmovc cmovnae cmovae cmovnb cmovnc cmove cmovz cmovne cmovnz cmovbe cmovna cmova cmovnbe cmovs cmovns cmovp cmovpe cmovnp cmovpo cmovl cmovnge cmovge cmovnl cmovle cmovng cmovg cmovnle cmpxchg486 cmpxchg8b loadall loadall286 ibts icebp int1 int3 int01 int03 iretw popaw popfw pushaw pushfw rdmsr rdpmc rdshr rdtsc rsdc rsldt rsm rsts salc smi smint smintold svdc svldt svts syscall sysenter sysexit sysret ud0 ud1 ud2 umov xbts wrmsr wrshr 9 | segment ends end 10 | 11 | ah al ax bh bl bp bx ch cl cr0 cr2 cr3 cr4 cs cx dh di dl dr0 dr1 dr2 dr3 dr6 dr7 ds dx eax ebp ebx ecx edi edx es esi esp fs gs si sp ss st tr3 tr4 tr5 tr6 tr7 st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 12 | 13 | 14 | 15 | 16 | 17 | 18 | SEGMENT 19 | ENDS 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /_source/FrameExpRemoto.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":89536901,"name":"tfraexpremoto.listview1.columns[0].caption","sourcebytes":[78,111,109,98,114,101],"value":"Nombre"}, 3 | {"hash":5028321,"name":"tfraexpremoto.listview1.columns[1].caption","sourcebytes":[70,101,99,104,97],"value":"Fecha"}, 4 | {"hash":176414255,"name":"tfraexpremoto.listview1.columns[2].caption","sourcebytes":[84,97,109,97,195,177,111],"value":"Tama\u00F1o"}, 5 | {"hash":213845674,"name":"tfraexpremoto.label1.caption","sourcebytes":[67,117,114,114,101,110,116,32,112,97,116,104,58],"value":"Current path:"}, 6 | {"hash":263489025,"name":"tfraexpremoto.menuitem4.hint","sourcebytes":[82,101,102,114,101,115,99,97,32,108,97,32,108,105,115,116,97],"value":"Refresca la lista"}, 7 | {"hash":211215717,"name":"tfraexpremoto.acfilnewfile.caption","sourcebytes":[38,78,101,119,32,102,105,108,101],"value":"&New file"}, 8 | {"hash":101534559,"name":"tfraexpremoto.acfilnewfile.hint","sourcebytes":[67,114,101,97,32,117,110,32,110,117,101,118,111,32,97,114,99,104,105,118,111],"value":"Crea un nuevo archivo"}, 9 | {"hash":114386514,"name":"tfraexpremoto.acfilnewfold.caption","sourcebytes":[78,101,119,32,102,111,108,100,101,114],"value":"New folder"}, 10 | {"hash":193742869,"name":"tfraexpremoto.acfilrename.caption","sourcebytes":[38,82,101,110,97,109,101],"value":"&Rename"}, 11 | {"hash":44849858,"name":"tfraexpremoto.acfileaccess.caption","sourcebytes":[38,69,110,116,101,114],"value":"&Enter"}, 12 | {"hash":2800388,"name":"tfraexpremoto.acededit.caption","sourcebytes":[38,69,100,105,116],"value":"&Edit"}, 13 | {"hash":179055749,"name":"tfraexpremoto.aceddelete.caption","sourcebytes":[38,68,101,108,101,116,101],"value":"&Delete"}, 14 | {"hash":237173676,"name":"tfraexpremoto.acverrefres.caption","sourcebytes":[38,82,101,102,114,101,115,104,32,65,108,108],"value":"&Refresh All"}, 15 | {"hash":263489025,"name":"tfraexpremoto.acverrefres.hint","sourcebytes":[82,101,102,114,101,115,99,97,32,108,97,32,108,105,115,116,97],"value":"Refresca la lista"}, 16 | {"hash":233547989,"name":"tfraexpremoto.acherejec.caption","sourcebytes":[69,38,120,101,99,117,116,101],"value":"E&xecute"}, 17 | {"hash":213577587,"name":"tfraexpremoto.acconfig.caption","sourcebytes":[38,83,101,116,116,105,110,103,115],"value":"&Settings"}, 18 | {"hash":81818466,"name":"tfraexpremoto.acconfig.hint","sourcebytes":[67,111,110,102,105,103,117,114,97,114,32,101,108,32,101,120,112,108,111,114,97,100,111,114],"value":"Configurar el explorador"} 19 | ]} 20 | -------------------------------------------------------------------------------- /_source/FormRemoteOpenDial.pas: -------------------------------------------------------------------------------- 1 | unit FormRemoteOpenDial; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons, 9 | ExtCtrls, FrameExpRemoto, MisUtils; 10 | 11 | type 12 | 13 | { TfrmRemoteOpenDial } 14 | 15 | TfrmRemoteOpenDial = class(TForm) 16 | butAceptar: TBitBtn; 17 | butCancel: TBitBtn; 18 | Panel1: TPanel; 19 | procedure butAceptarClick(Sender: TObject); 20 | procedure explorDblClickArch; 21 | procedure FormActivate(Sender: TObject); 22 | procedure FormCreate(Sender: TObject); 23 | procedure FormDestroy(Sender: TObject); 24 | procedure FormShow(Sender: TObject); 25 | private 26 | explor: TfraExpRemoto; 27 | // actualizar: boolean; 28 | public 29 | archivo : string; 30 | end; 31 | 32 | var 33 | frmRemoteOpenDial: TfrmRemoteOpenDial; 34 | 35 | implementation 36 | 37 | {$R *.lfm} 38 | 39 | { TfrmRemoteOpenDial } 40 | 41 | procedure TfrmRemoteOpenDial.FormCreate(Sender: TObject); 42 | begin 43 | explor:= TfraExpRemoto.Create(self); 44 | explor.Parent := self; 45 | explor.Align:=alClient; 46 | explor.StatusBar1.Visible:=false; 47 | explor.OnDblClickArch:=@explorDblClickArch; 48 | end; 49 | 50 | procedure TfrmRemoteOpenDial.FormDestroy(Sender: TObject); 51 | begin 52 | explor.Destroy; 53 | end; 54 | 55 | procedure TfrmRemoteOpenDial.FormShow(Sender: TObject); 56 | begin 57 | archivo := ''; 58 | // actualizar := true; 59 | explor.Actualizar; //lee archivos 60 | Caption := 'Open Remote ...'; 61 | end; 62 | 63 | procedure TfrmRemoteOpenDial.FormActivate(Sender: TObject); 64 | begin 65 | { if actualizar then begin 66 | explor.Actualizar; //lee archivos 67 | actualizar := false; 68 | end;} 69 | end; 70 | 71 | procedure TfrmRemoteOpenDial.butAceptarClick(Sender: TObject); 72 | begin 73 | if explor.ItemSeleccionado = nil then begin 74 | msgexc('You must select a file.'); 75 | exit; 76 | end; 77 | if explor.ItemSeleccionado.ImageIndex = IMG_CARPETA then begin 78 | msgexc('You must select a file.'); 79 | exit; 80 | end; 81 | //se supone que se ha seleccionado un archivo 82 | archivo := explor.ItemSeleccionado.Caption; 83 | self.Close; 84 | end; 85 | 86 | procedure TfrmRemoteOpenDial.explorDblClickArch; 87 | //DOble click en explorador 88 | begin 89 | //se supone que se ha seleccionado un archivo 90 | archivo := explor.ItemSeleccionado.Caption; 91 | self.Close; 92 | end; 93 | 94 | end. 95 | 96 | -------------------------------------------------------------------------------- /_source/FormRemoteExplor.pas: -------------------------------------------------------------------------------- 1 | unit FormRemoteExplor; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 | FrameExpRemoto, strutils, FormRemoteEditor, FrameTabSession, MisUtils; 10 | 11 | type 12 | 13 | { TfrmRemoteExplor } 14 | 15 | TfrmRemoteExplor = class(TForm) 16 | procedure explorDblClickArch; 17 | procedure explorEnter(Sender: TObject); 18 | procedure FormActivate(Sender: TObject); 19 | procedure FormCreate(Sender: TObject); 20 | procedure FormDestroy(Sender: TObject); 21 | procedure FormShow(Sender: TObject); 22 | private 23 | ses: TfraTabSession; 24 | explor: TfraExpRemoto; 25 | actualizar: boolean; 26 | public 27 | procedure Init(ses0: TfraTabSession); 28 | end; 29 | 30 | var 31 | frmRemoteExplor: TfrmRemoteExplor; 32 | 33 | implementation 34 | {$R *.lfm} 35 | 36 | { TfrmRemoteExplor } 37 | 38 | procedure TfrmRemoteExplor.FormCreate(Sender: TObject); 39 | begin 40 | explor:= TfraExpRemoto.Create(self); 41 | explor.Parent := self; 42 | explor.Align:=alClient; 43 | explor.OnDblClickArch:=@explorDblClickArch; 44 | // explor.OnEnter:=@explorEnter; 45 | end; 46 | procedure TfrmRemoteExplor.FormDestroy(Sender: TObject); 47 | begin 48 | explor.Destroy; 49 | end; 50 | 51 | procedure TfrmRemoteExplor.FormShow(Sender: TObject); 52 | begin 53 | Caption:= 'Remote Explorer'; 54 | actualizar := true; 55 | end; 56 | 57 | procedure TfrmRemoteExplor.explorEnter(Sender: TObject); 58 | begin 59 | msgbox('Enter'); 60 | end; 61 | 62 | procedure TfrmRemoteExplor.explorDblClickArch; 63 | var 64 | it: TListItem; 65 | begin 66 | it := explor.ItemSeleccionado; 67 | if it = nil then exit; 68 | if AnsiEndsText('.txt',it.Caption) 69 | or AnsiEndsText('.sql',it.Caption) 70 | or AnsiEndsText('.sh',it.Caption) 71 | or AnsiEndsText('.py',it.Caption) 72 | or AnsiEndsText('.pas',it.Caption) 73 | then 74 | begin 75 | //Los tipos conocidos, se editan. 76 | //Se abre el editor en el modo definido en la sesión. 77 | frmRemoteEditor.Init(ses); 78 | frmRemoteEditor.Open(it.Caption); 79 | end; 80 | end; 81 | 82 | procedure TfrmRemoteExplor.FormActivate(Sender: TObject); 83 | begin 84 | if actualizar then begin 85 | explor.Actualizar; //lee archivos 86 | actualizar := false; 87 | end; 88 | end; 89 | 90 | procedure TfrmRemoteExplor.Init(ses0: TfraTabSession); 91 | begin 92 | ses := ses0; 93 | end; 94 | 95 | end. 96 | 97 | -------------------------------------------------------------------------------- /TitoTerm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /_source/FrameCfgSyntax.lfm: -------------------------------------------------------------------------------- 1 | object fraCfgSyntax: TfraCfgSyntax 2 | Left = 0 3 | Height = 252 4 | Top = 0 5 | Width = 386 6 | ClientHeight = 252 7 | ClientWidth = 386 8 | TabOrder = 0 9 | DesignLeft = 340 10 | DesignTop = 445 11 | object ComboBox1: TComboBox 12 | Left = 80 13 | Height = 23 14 | Top = 16 15 | Width = 100 16 | ItemHeight = 15 17 | OnChange = ComboBox1Change 18 | TabOrder = 0 19 | Text = 'ComboBox1' 20 | end 21 | object ListBox1: TListBox 22 | Left = 8 23 | Height = 144 24 | Top = 88 25 | Width = 80 26 | ItemHeight = 0 27 | OnClick = ListBox1Click 28 | ScrollWidth = 78 29 | TabOrder = 1 30 | end 31 | object Label1: TLabel 32 | Left = 8 33 | Height = 15 34 | Top = 64 35 | Width = 62 36 | Caption = 'Token type:' 37 | ParentColor = False 38 | end 39 | object colTextCol: TColorButton 40 | Left = 120 41 | Height = 25 42 | Top = 88 43 | Width = 75 44 | BorderWidth = 2 45 | ButtonColorSize = 16 46 | ButtonColor = clBlack 47 | OnColorChanged = colTextColColorChanged 48 | end 49 | object Label2: TLabel 50 | Left = 120 51 | Height = 15 52 | Top = 72 53 | Width = 60 54 | Caption = 'Text Color: ' 55 | ParentColor = False 56 | end 57 | object Label3: TLabel 58 | Left = 8 59 | Height = 15 60 | Top = 20 61 | Width = 55 62 | Caption = 'Language:' 63 | ParentColor = False 64 | end 65 | object chkAutoComp: TCheckBox 66 | Left = 232 67 | Height = 19 68 | Top = 20 69 | Width = 112 70 | Caption = 'Auto Completion' 71 | OnChange = chkAutoCompChange 72 | TabOrder = 2 73 | end 74 | object Label4: TLabel 75 | Left = 120 76 | Height = 15 77 | Top = 128 78 | Width = 63 79 | Caption = 'Back Color: ' 80 | ParentColor = False 81 | end 82 | object colBackCol: TColorButton 83 | Left = 120 84 | Height = 25 85 | Top = 144 86 | Width = 75 87 | BorderWidth = 2 88 | ButtonColorSize = 16 89 | ButtonColor = clBlack 90 | end 91 | object chkBold: TCheckBox 92 | Left = 240 93 | Height = 19 94 | Top = 72 95 | Width = 44 96 | Caption = 'Bold' 97 | OnChange = chkBoldChange 98 | TabOrder = 3 99 | end 100 | object chkItalic: TCheckBox 101 | Left = 240 102 | Height = 19 103 | Top = 108 104 | Width = 45 105 | Caption = 'Italic' 106 | OnChange = chkItalicChange 107 | TabOrder = 4 108 | end 109 | object chkUnder: TCheckBox 110 | Left = 240 111 | Height = 19 112 | Top = 144 113 | Width = 71 114 | Caption = 'Underline' 115 | OnChange = chkUnderChange 116 | TabOrder = 5 117 | end 118 | end 119 | -------------------------------------------------------------------------------- /languages/PreSQLOracle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ACCESS ADD ALL ALTER AND ANY AS ASC AUDIT 13 | BEGIN BETWEEN BY 14 | CHAR CHECK CLUSTERS CLUSTER COLAUTH COLUMN CRASH COMMENT COMPRESS CONNECT CREATE CURRENT 15 | DATE DECIMAL DECLARE DEFAULT DELETE DESC DISTINCT DROP 16 | ELSE END EXCEPTION EXCLUSIVE EXISTS 17 | FILE FLOAT FOR FROM FUNCTION 18 | GOTO GRANT GROUP 19 | HAVING 20 | IDENTIFIED IF IMMEDIATE IN INCREMENT INDEXES INDEX INITIAL INSERT INTEGER INTERSECT INTO IS 21 | LEVEL LIKE LOCK LONG 22 | MAXEXTENTS MINUS MLSLABEL MODE MODIFY 23 | NOAUDIT NOCOMPRESS NOT NOWAIT NULL NUMBER 24 | OF OFFLINE ON OR ONLINE OPTION OFF ORDER OVERLAPS 25 | PCTFREE PRIOR PROCEDURE PRIVILEGES PUBLIC 26 | RANGE RAW RECORD RENAME RESOURCE REVOKE ROW ROWID ROWNUM ROWS 27 | SELECT SESSION SET SYSDATE SPOOL SHARE SIZE SMALLINT SQL START SUBTYPE SUCCESSFUL SYNONYM 28 | TABAUTH TABLE THEN TO TRIGGER TYPE 29 | UID UNION UNIQUE UPDATE USE USER 30 | VALIDATE VALUES VARCHAR VARCHAR2 VIEW VIEWS 31 | WHEN WHENEVER WHERE WITH 32 | 33 | 34 | $DEFINIR 35 | $REDEF 36 | $INCLUIR 37 | $PARA 38 | $CONSULTAR 39 | CON 40 | COMO 41 | EN 42 | FINPARA 43 | FINDEFINIR 44 | HACER 45 | $dir_actual 46 | $nom_actual 47 | $fecha_actual 48 | $formato 49 | $intervalo_semana 50 | $psql_reinic 51 | $expr 52 | $horas 53 | $meses 54 | $infotabla 55 | $infovista 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | / 69 |
70 |
71 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
80 | -------------------------------------------------------------------------------- /_source/FrameCfgSynEdit.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":78001754,"name":"tfracfgsynedit.label1.caption","sourcebytes":[67,111,108,111,114,58],"value":"Color:"}, 3 | {"hash":82734986,"name":"tfracfgsynedit.label8.caption","sourcebytes":[66,97,99,107,32,67,111,108,111,114,58],"value":"Back Color:"}, 4 | {"hash":81852730,"name":"tfracfgsynedit.label9.caption","sourcebytes":[84,101,120,116,32,67,111,108,111,114,58],"value":"Text Color:"}, 5 | {"hash":8736,"name":"tfracfgsynedit.groupbox1.caption","sourcebytes":[32,32,32],"value":" "}, 6 | {"hash":82623170,"name":"tfracfgsynedit.chkverpanver.caption","sourcebytes":[71,117,116,116,101,114],"value":"Gutter"}, 7 | {"hash":82734986,"name":"tfracfgsynedit.label2.caption","sourcebytes":[66,97,99,107,32,67,111,108,111,114,58],"value":"Back Color:"}, 8 | {"hash":81852730,"name":"tfracfgsynedit.label3.caption","sourcebytes":[84,101,120,116,32,67,111,108,111,114,58],"value":"Text Color:"}, 9 | {"hash":42986018,"name":"tfracfgsynedit.chkvernumlin.caption","sourcebytes":[83,104,111,119,32,108,195,173,110,101,32,110,117,109,98,101,114],"value":"Show l\u00EDne number"}, 10 | {"hash":63852547,"name":"tfracfgsynedit.chkvermarple.caption","sourcebytes":[83,104,111,119,32,102,111,108,100,105,110,103,32,109,97,114,107,115],"value":"Show folding marks"}, 11 | {"hash":544,"name":"tfracfgsynedit.groupbox2.caption","sourcebytes":[32,32,32,32,32,32,32,32,32,32,32,32,32,32],"value":" "}, 12 | {"hash":216043156,"name":"tfracfgsynedit.chkhighcurword.caption","sourcebytes":[72,105,103,104,108,105,103,104,116,32,99,117,114,114,101,110,116,32,119,111,114,100],"value":"Highlight current word"}, 13 | {"hash":116289418,"name":"tfracfgsynedit.label10.caption","sourcebytes":[66,97,99,107,32,99,111,108,111,114,58],"value":"Back color:"}, 14 | {"hash":115407162,"name":"tfracfgsynedit.label11.caption","sourcebytes":[84,101,120,116,32,99,111,108,111,114,58],"value":"Text color:"}, 15 | {"hash":39761194,"name":"tfracfgsynedit.label12.caption","sourcebytes":[70,114,97,109,101,32,99,111,108,111,114,58],"value":"Frame color:"}, 16 | {"hash":48606020,"name":"tfracfgsynedit.chkfullword.caption","sourcebytes":[70,117,108,108,32,87,111,114,100],"value":"Full Word"}, 17 | {"hash":237536586,"name":"tfracfgsynedit.chkhighcurlin.caption","sourcebytes":[72,105,103,104,108,105,103,104,116,32,99,117,114,114,101,110,116,32,108,105,110,101,58],"value":"Highlight current line:"}, 18 | {"hash":200403954,"name":"tfracfgsynedit.chkverbardesv.caption","sourcebytes":[38,86,101,114,116,105,99,97,108,32,83,99,114,111,108,108,98,97,114],"value":"&Vertical Scrollbar"}, 19 | {"hash":97399170,"name":"tfracfgsynedit.chkverbardesh.caption","sourcebytes":[38,72,111,114,105,122,111,110,116,97,108,32,83,99,114,111,108,108,98,97,114],"value":"&Horizontal Scrollbar"}, 20 | {"hash":108049882,"name":"tfracfgsynedit.label6.caption","sourcebytes":[70,111,110,116,32,110,97,109,101,58],"value":"Font name:"}, 21 | {"hash":27373697,"name":"tfracfgsynedit.cmbtipoletra.text","sourcebytes":[99,109,98,84,105,112,111,76,101,116,114,97],"value":"cmbTipoLetra"}, 22 | {"hash":106882778,"name":"tfracfgsynedit.label7.caption","sourcebytes":[70,111,110,116,32,83,105,122,101,58],"value":"Font Size:"} 23 | ]} 24 | -------------------------------------------------------------------------------- /languages/UnixShell.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | "awk '{}'" 7 | "awk -F. '{print $1}'" 8 | "case $x in 9 | 1) echo ""uno"" 10 | ;; 11 | 2) echo ""dos"" 12 | ;; 13 | *) echo ""otro"" 14 | ;; 15 | esac" 16 | "cd .." 17 | "chmod 755" "chmod 777" 18 | "chown usuario directorio/archivo" 19 | "cp origen destino" 20 | "crontab -l" 21 | "crontab -l | grep " 22 | "date +%Y%m%d %H%M%S" 23 | "df -k" 24 | "df -k | grep " 25 | "du -k" 26 | "echo """"" 27 | "for variable in $lista do done" 28 | "if [ expresíon ]; then fi" 29 | "if [ expresíon ]; then else fi" 30 | "kill -9 " 31 | "ls -l" 32 | "mv origen destino" 33 | "nawk -F. ""{print $1}""" 34 | "passwd usuario" 35 | "ps -fu" 36 | "useradd usuario" 37 | "wc -l " 38 | "while [ exprsion ]; do done" 39 | 40 | 41 | 42 | 43 | 44 | 45 | alias ar asa 46 | banner basename bash bc bdiff break bunzip2 bzip2 47 | cal calendar caller case cat cc cd chmod cksum clear cmp col comm command compress continue cp cpio crontab crypt csplit ctags cut 48 | date dc dd declare deroff dev df diff diff3 dircmp dirname do done du 49 | echo ed egrep elif else env esac eval ex exec exit expand export expr 50 | false fc fgrep fi file find fmt fold for function functions 51 | getconf getopt getopts grep gres 52 | halt hash head help history hostname 53 | iconv id if in integer 54 | jobs join kill local logout 55 | lc let line ln logname look ls 56 | m4 mail mailx make man mkdir more mt mv 57 | newgrp nl nm nohup ntps od 58 | pack paste patch pathchk pax pcat perl pg pr print printf ps pwd 59 | read readonly reboot red return rev rm rmdir 60 | sed select seq set sh shift size sleep sort spell split start strings strip stty sum suspend sync 61 | tail tar tee test then time times touch tr trap true tsort tty type typeset 62 | ulimit umask unalias uname uncompress unexpand uniq unpack unset until uudecode uuencode 63 | vdir vi vim 64 | wait wc whatis whence whereis which while who whoami 65 | xargs zcat 66 | 67 | 68 | awk nawk 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /_libraries/MisUtils-0.6/README.md: -------------------------------------------------------------------------------- 1 | MisUtils 0.6 2 | ============ 3 | 4 | Useful routines for Lazarus, for showing messages and developing multilingual applications. 5 | 6 | Inside this unit, we have this functions for showing messages: 7 | 8 | * MsgBox() -> Shows a box with a message. Similar a ShowMessage. 9 | * MsgExc() -> Shows a box with a message and an Icon of Exclamation. 10 | * MsgErr() -> Shows a box with a message and an Icon of Error. 11 | 12 | * MsgYesNo() -> Prompt for a Yes/No answer. 13 | * MsgYesNoCancel() -> Prompt for a Yes/No answer, with a cancel option. 14 | 15 | Moreover, this unit includes a diccionary for translating messages. To use it, are declared the next functions: 16 | 17 | * TranslateMsgs -> Flag for to enable the translation of messages used with MsgBox(), MsgExc() and MsgErr(), MsgYesNo() and MsgYesNoCancel(). 18 | * dic() -> Translates one string using the internal dictionary. 19 | * dicSet() -> Adds or replace an entry of the internal dictionary. 20 | * dicDel() -> Cleans an entry of the internal dictionary. 21 | * dicClear() -> Removes all entries of the internal dictionary. 22 | 23 | The translation feature, for the source code, works in the following way: 24 | 25 | * There is an internal dictionary (called "dictionary") defined in the Unit "MisUtils". It is a public field, created in the "Initialization" section. 26 | * This dictionary contain several entries of the form (key -> value). 27 | * The "key" field of the dictionary is a string with a text in the language that the program is codified (like: cad := dic('hello'); ). 28 | * The "value" field of the dictionary is a string with a text that is the translation of the "key" text ( "hello" -> "hola"). 29 | * Thus, the dictionary contains the translation of all strings of the source (using the dictionary) for an unique language. 30 | * Every time, it's needed to change the language, the dictionary must be filled with new "value" strings for the new language. 31 | 32 | So, to have the translation working, the dictionary must be first filled. 33 | 34 | How to fill the dictionary? 35 | It's done using dicSet(). The recommended way is to use a procedure like this: 36 | 37 | ``` 38 | procedure TForm1.SetLanguage(lang: string); 39 | begin 40 | case lang of 41 | 'en': begin 42 | dicClear; //if it's yet in English 43 | end; 44 | 'es': begin 45 | dicSet('Hello','Hola'); 46 | dicSet('Bye','Adios'); 47 | end; 48 | ... 49 | end; 50 | end; 51 | ``` 52 | The text used in the first parameter of dicSet(), must correspond exactly to the text used on the other parts of the source code. 53 | 54 | After filled the dictionary, how do I put the text in my code? 55 | 56 | The formal way is to use dic(), for every string that need to be translated. So if you have in your code: 57 | 58 | ``` 59 | varStr := 'Hello'; 60 | ``` 61 | 62 | then you would need to change it, for: 63 | 64 | ``` 65 | varStr := dic('Hello'); //we asume that we already have translated 'Hello' with dicSet(). 66 | ``` 67 | 68 | dic() can work similar to Format() too, because have an overloaded version. 69 | 70 | To show messages, it's possible to use the special functions of "MisUtils" like MsgBox() or MsgExc() that perform the translation without using dic(). 71 | 72 | For more information, check the sample codes. -------------------------------------------------------------------------------- /languages/Terminal Macro.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | "IF \_expresion THEN ENDIF" 11 | "IF \_expresion THEN ELSE ENDIF" 12 | "WHILE expresion ENDWHILE" 13 | "timeout := 20" 14 | "CONNECT ""192.168.1.1""" 15 | "CONNECTSSH ""192.168.1.1""" 16 | "MESSAGEBOX ""\_""" 17 | "SENDLN ""text to send""" 18 | "WAIT ""text to wait""" 19 | "PAUSE \_1" 20 | "curIP := ""192.168.1.1""" 21 | "curTYPE := ""telnet""" 22 | "curTYPE := ""SSH""" 23 | "curTYPE := ""Other""" 24 | "curPORT := 23" 25 | "curENDLINE := ""LF""" 26 | "curENDLINE := ""CRLF""" 27 | "curAPP := ""cmd""" 28 | "promptDETECT := true" 29 | "promptSTART := ""$""" 30 | "promptEND := ""]""" 31 | "log \_1" 32 | "FILEOPEN n,"file.txt",0" 33 | "FILEWRITE n, ""hola""" 34 | "FILECLOSE n " 35 | IFA 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | fulano "el 44 | mengano" 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | ENDIF ELSE ELSEIF 56 | 57 | true false 58 | 59 | 60 | CLEAR CONNECT CONNECTSSH DISCONNECT SENDLN WAIT PAUSE STOP 61 | LOGOPEN LOGWRITE LOGCLOSE LOGPAUSE LOGSTART 62 | FILEOPEN FILECLOSE FILEWRITE 63 | MESSAGEBOX CAPTURE ENDCAPTURE EDIT DETECT_PROMPT 64 | 65 | 66 | IF 67 | 68 | THEN 69 | 70 | 71 | timeout 72 | curIP curTYPE curPORT curENDLINE curAPP 73 | promptDETECT promptSTART promptEND 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
86 | 87 |
88 | -------------------------------------------------------------------------------- /LEEME.md: -------------------------------------------------------------------------------- 1 | Tito-s-Terminal 0.5 2 | =================== 3 | 4 | Terminal con Interfaz gráfica, coloreado de sintaxis y automatización para telnet, y ssh. 5 | 6 | ![Tito's Terminal](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/1969/12/tterm1.png "Título de la imagen") 7 | 8 | Tito's Terminal empezó como una broma, pero ahora es una aplicación bastante completa y ha migrado recientemente a Lazarus. 9 | 10 | Este terminal puede hacer de cliente para Telnet, SSH, Serial y en general cualquier proceso que maneje consola. 11 | 12 | Para las conexiones Telnet y SSH, usa el conocido [PLink](http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter7.html), pero podría usarse cualquier otro cliente similar. 13 | 14 | Este terminal incluye un panel de texto, que se usa para enviar los comandos al terminal. No es conveniente enviarlos directamente, porque la consola no está preparada para la interacción directa con el usuario. 15 | 16 | La pantalla del terminal, responde de forma similar a un VT100, pero sin las opciones de resaltado (negrita y brillante). Sin embargo, el texto mostrado en el terminal, incluye coloreado de sintaxis (para el lenguaje del Shell de UNIX) y plegado de código. 17 | 18 | El ancho de la pantalla no está limitado por el tamaño del VT100 (que está por defecto en 80 caracteres), sino que puede extenderse hasta varios cientos de caracteres más. 19 | 20 | El terminal se puede configurar para reconocer la llegada del "prompt" del sistema. Además lo resalta con un color especial. 21 | 22 | La detección del prompt, es útil visualmente y también es necesaria para algunas herramientas adicionales que se incluyen en el programa como el Explorador Rremoto y el Editor Remoto. 23 | 24 | El explorador de archivos remoto, funciona interactuando con el terminal, mediante comandos, pero solo para las sesiones Telnet y SSH. De esta forma se puede emular un explorador de archivo en conexiones UNIX/Linux. 25 | 26 | ![Tito's Terminal](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/1969/12/tterm5.png "Título de la imagen") 27 | 28 | También se incluye un editor remoto, que interactuando, mediante comandos, con el "shell" permite realizar la edición de archivos pequeños, desde dentro del mismo "shell" UNIX/Linux. 29 | 30 | Los editores del programa incluyen resaltado de sintaxis (para diversos lenguajes), plegado de código y autocompletado de código. Estos editores se pueden configurar en su apariencia y se pueden agregar lenguajes nuevos o modificar los que ya existen, en cuanto a resaltado de sintaxis, plegado de código o autocompletado. 31 | 32 | Tito's Terminal también permite la automatización de las conexiones con un lenguaje de macros similar al usado para TeraTerm. Se incluye además, un editor de código preparado exclusivamente para escribir y probar las macros. 33 | 34 | ![Tito's Terminal](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/1969/12/tterm3.png "Título de la imagen") 35 | 36 | Las funciones de ejecución de macros, así como otras comunes, tienen un acceso directo desde el menú principal o contextual del aplicativo. 37 | 38 | El programa es fuertemente configurable, con innumerables opciones para la apariencia y el modo de trabajo. Para evitar tener que configurar constantemente el entorno, se incluye el manejo de sesiones, que pueden guardar toda la configuración en un solo archivo, y que puede luego recuperarse de forma sencilla, con un par de "Clicks". 39 | -------------------------------------------------------------------------------- /_source/FormConfig.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":213582195,"name":"tconfig.caption","sourcebytes":[83,101,116,116,105,110,103,115],"value":"Settings"}, 3 | {"hash":225639858,"name":"tconfig.bitaplicar.caption","sourcebytes":[65,38,112,108,105,99,97,114],"value":"A&plicar"}, 4 | {"hash":230780700,"name":"tconfig.tabgeneral.caption","sourcebytes":[84,97,98,71,101,110,101,114,97,108],"value":"TabGeneral"}, 5 | {"hash":140431220,"name":"tconfig.chkopenlast.caption","sourcebytes":[38,79,112,101,110,32,108,97,115,116,32,101,100,105,116,101,100,32,102,105,108,101,32,111,110,32,115,116,97,114,116],"value":"&Open last edited file on start"}, 6 | {"hash":7347832,"name":"tconfig.tabfilepath.caption","sourcebytes":[84,97,98,70,105,108,101,80,97,116,104],"value":"TabFilePath"}, 7 | {"hash":36817258,"name":"tconfig.lblrutscript.caption","sourcebytes":[38,84,101,109,112,111,114,97,108,32,112,97,116,104,58],"value":"&Temporal path:"}, 8 | {"hash":239150074,"name":"tconfig.lblrutmac.caption","sourcebytes":[38,77,97,99,114,111,115,32,112,97,116,104,58],"value":"&Macros path:"}, 9 | {"hash":27220154,"name":"tconfig.lblrutleng.caption","sourcebytes":[38,76,101,110,103,117,97,106,101,115,32,112,97,116,104,58],"value":"&Lenguajes path:"}, 10 | {"hash":58538948,"name":"tconfig.tabmacsett.caption","sourcebytes":[84,97,98,77,97,99,83,101,116,116],"value":"TabMacSett"}, 11 | {"hash":163005752,"name":"tconfig.edtpomax.text","sourcebytes":[101,100,84,112,111,77,97,120],"value":"edTpoMax"}, 12 | {"hash":42358953,"name":"tconfig.label1.caption","sourcebytes":[84,105,109,101,111,117,116,46,32,40,115,101,99,111,110,100,115,41],"value":"Timeout. (seconds)"}, 13 | {"hash":192462302,"name":"tconfig.chkmarlin.caption","sourcebytes":[72,105,103,104,108,105,103,104,116,32,108,105,110,101,32,116,104,97,116,32,105,115,32,114,117,110,110,105,110,103,46],"value":"Highlight line that is running."}, 14 | {"hash":57810548,"name":"tconfig.tabmacedit.caption","sourcebytes":[84,97,98,77,97,99,69,100,105,116],"value":"TabMacEdit"}, 15 | {"hash":69190596,"name":"tconfig.tabremededit.caption","sourcebytes":[84,97,98,82,101,109,69,100,69,100,105,116],"value":"TabRemEdEdit"}, 16 | {"hash":147089436,"name":"tconfig.tabremexpl.caption","sourcebytes":[84,97,98,82,101,109,69,120,112,108],"value":"TabRemExpl"}, 17 | {"hash":192172833,"name":"tconfig.edtpomax1.text","sourcebytes":[101,100,84,112,111,77,97,120,49],"value":"edTpoMax1"}, 18 | {"hash":252932458,"name":"tconfig.label2.caption","sourcebytes":[84,105,109,101,32,102,111,114,32,119,97,105,116,105,110,103,32,116,101,114,109,105,110,97,108,32,40,115,101,99,111,110,100,115,41,58],"value":"Time for waiting terminal (seconds):"}, 19 | {"hash":19811742,"name":"tconfig.chklistdet.caption","sourcebytes":[83,104,111,119,32,100,101,116,97,105,108,101,100,32,108,105,115,116,32,111,102,32,102,105,108,101,115,46],"value":"Show detailed list of files."}, 20 | {"hash":114999027,"name":"tconfig.chkmosocul.caption","sourcebytes":[83,104,111,119,32,104,105,100,100,101,110,32,102,105,108,101,115],"value":"Show hidden files"}, 21 | {"hash":227521230,"name":"tconfig.chkrefdesp.caption","sourcebytes":[82,101,102,114,101,115,104,32,108,105,115,116,44,32,97,102,116,101,114,32,97,110,121,32,111,112,101,114,97,116,105,111,110],"value":"Refresh list, after any operation"}, 22 | {"hash":86084504,"name":"tconfig.chkmosrut.caption","sourcebytes":[83,104,111,119,32,99,117,114,114,101,110,116,101,32,112,97,116,104],"value":"Show currente path"} 23 | ]} 24 | -------------------------------------------------------------------------------- /_libraries/Xpres-1.3.2/README.md: -------------------------------------------------------------------------------- 1 | t-Xpres 1.3.2 2 | ============= 3 | 4 | Marco de trabajo (framework) para implementar compiladores o intérpretes para lenguajes imperativos y tipados. 5 | 6 | Esta desarrollado con Free Pascal y Lazarus. 7 | 8 | Xpres no es solo una librería, es también una infraestructura que define normas y procedimientos en la creación de intérpretes o compiladores, usando Lazarus. Como ejemplo, se incluyen implementaciones simples de un intérprete y un compilador. 9 | 10 | El framework, incluye las siguientes dependencias: 11 | 12 | * Paquete SynEdit. Que viene incluido en Lazarus. Se requiere para poder usar la librería SynfacilSyn. No significa que debe usarse el componente SynEdit, sino que el resaltador SynfacilSyn, usa clases definidas en este paquete. 13 | * Librería SynFacilSyn https://github.com/t-edson/SynFacilSyn. Necesaria porque se usará al resaltador de sintaxis SynfacilSyn, como analizador léxico. Xpres no implementa un analizador léxico propio. 14 | * Librería MisUtils https://github.com/t-edson/MisUtils. Usada para permitir la traducción de los mensajes de error. 15 | 16 | Xpres está diseñado para trabajar con el paquete SynEdit de Lazarus. Esto implica que para implementar un intérprete/compilador, se debe usar el paquete SynEdit, siempre. La arquitectura planteada no implica el uso de SynEdit como editor, pero si se requiere de algunas clases definidas en el paquete SynEdit, para el analizador léxico. 17 | 18 | Además, al ser el analizador léxico, también un resaltador de sintaxis, se puede resaltar el código fuente con las mismas rutinas del analizador léxico, sin necesidad de implementar algún otro resaltador. De esta forma se garantiza una correspondencia al 100% entre los tokens del analizador léxico, y el coloreado que se puede lograr en pantalla. 19 | 20 | Hay que notar que de SynFacilSyn, solo se está usando su capacidad de lexer, más no de manejo de bloques de sintaxis. De momento los bloques de sintaxis en Xpres, los maneja internamente el analizador sintáctico. 21 | 22 | La librería Xpres, incluye a los siguientes archivos: 23 | 24 | * "XpresBas.pas". Unidad con rutinas básicas del framework. Incluye el métodos para el manejo del texto fuente y el procesamiento de errores. Por lo general no debería modificarse. Funciona como una capa que se coloca sobre el analizador léxico o "lexer". 25 | * "XpresTypes.pas". Unidad con las definiciones referidas a los tipos-operadores-operaciones. Es también una unidad básica del framework. 26 | * "XpresParser.pas". Unidad con rutinas principales del framework. Incluyen el analizador sintáctivo o "parser". Incluye el analizador de expresiones y de las estructuras del lenguaje. No debería cambiar si el lenguaje sigue la línea del lenguaje Xpres. 27 | * "XpresElements.pas". Unidad que define los elementos de la sintaxis, como constantes, variables, procedimientos y funciones. 28 | 29 | Para la implementación de un Intérprete o Generador de código. Se debe crear una unidad que incluya a "XpresParser.pas" y "XpresTypes.pas" y ahí definir a una clase (p. ej. TCompiler o TInterpreter) que descienda de la clase TCompilerBase. 30 | 31 | Los generadores de código pueden desarrollarse para generar código intermedio, como el bytecode de Java, o cualquier otro. Este proyecto no incluye ninguna máquina virtual. 32 | 33 | En los ejemplos se incluye un caso minimalista con intérprete y un ejemplo de compilador elemental para el intel 8086 en 16 bits. 34 | 35 | El ejemplo de compilador incluye también una IDE sencilla. Solo permite manejar variables, expresiones numéricas y de cadena. 36 | 37 | Xpres, puede ser usado también cuando se requiere implementar un lexer, un parser, un árbol de sintaxis, o un evaluador de expresiones. 38 | 39 | Para más información sobrfe Xpres, revisar la documentación técnica. 40 | -------------------------------------------------------------------------------- /languages/ObjectPascal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | "begin end;" 6 | "if expresion then begin end;" 7 | "if expresion then begin end else begin end;" 8 | "while expresion do begin end;" 9 | 10 | 11 | 12 | 13 | absolute and array asm as 14 | begin 15 | case const constructor class 16 | destructor div do downto dispose 17 | else end exit except exports 18 | for function file finalization finally 19 | goto 20 | if implementation in inherited inline interface initialization is 21 | library label 22 | mod 23 | not nil new 24 | or object of on operator out 25 | procedure property public private packed program 26 | repeat record reintroduce raise 27 | string self set shl shr 28 | then to try true type threadvar 29 | unit until uses 30 | var 31 | while with 32 | xor 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
44 |
45 | 46 |
47 |
48 | 49 | 50 |
51 |
52 |
53 | 54 | 55 |
56 |
57 |
58 |
59 | 60 |
61 | 62 | 63 |
64 |
65 |
66 |
67 | 68 | 69 | 70 | 71 | Repeat 72 | Until 73 | 74 | 75 | 76 | 77 |
78 |
79 |
80 | 81 | 82 |
83 |
84 |
85 |
86 | -------------------------------------------------------------------------------- /languages/DOS_shell.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | alias ar asa awk 5 | "awk '{}'" 6 | "awk -F. '{print $1}'" 7 | banner basename bash bc bdiff break bunzip2 bzip2 8 | "case" 9 | "case $x in 10 | 1) echo ""uno"" 11 | ;; 12 | 2) echo ""dos"" 13 | ;; 14 | *) echo ""otro"" 15 | ;; 16 | esac" 17 | "cat " "cd " "cd .." "chgrp " 18 | "chmod " "chmod 755" "chmod 777" 19 | "chown" 20 | "chown usuario directorio/archivo" 21 | "continue" 22 | "cp " 23 | "cp origen destino" 24 | "crontab " 25 | "crontab -l" 26 | "crontab -l | grep " 27 | "date" 28 | "date +%Y%m%d %H%M%S" 29 | "df" 30 | "df -k" 31 | "df -k | grep " 32 | "do" 33 | "done" 34 | "du" 35 | "du -k" 36 | "echo" 37 | "echo """"" 38 | "elif " 39 | "else" 40 | "esac" 41 | "exit" 42 | "expr" 43 | "fcopy" 44 | "fi" 45 | "for " 46 | "for variable in $lista do done" 47 | "format" 48 | "ftp " 49 | "grep " 50 | "head " 51 | "id " 52 | "if " 53 | "if [ expresíon ]; then fi" 54 | "if [ expresíon ]; then else fi" 55 | "in" 56 | "join " 57 | "kill" 58 | "kill -9 " 59 | "ln" 60 | "ls" 61 | "ls -l" 62 | "mail" 63 | "man" 64 | "mkdir" 65 | "mv " 66 | "mv origen destino" 67 | "nawk " 68 | "nawk -F. ""{print $1}""" 69 | "ping" 70 | "passwd" 71 | "passwd usuario" 72 | "pwd" 73 | "ps " 74 | "ps -fu" 75 | "rm " 76 | "rmdir " 77 | "sleep " 78 | "sort" 79 | "tail " 80 | "tar" 81 | "telnet" 82 | "then" 83 | "top " 84 | "tty " 85 | "uname" 86 | "uniq" 87 | "until" 88 | "useradd" 89 | "useradd usuario" 90 | "vi " 91 | "vmstat " 92 | "wc " 93 | "wc -l " 94 | "while " 95 | "while [ exprsion ]; do done" 96 | "who " 97 | "write " 98 | 99 | 100 | 101 | 102 | 103 | 104 | ANSI.SYS ATTRIB APPEND ASSIGN 105 | BACKUP BASIC BAT BREAK BUFFERS 106 | CHKDSK COPY CALL CD CHCP CHDIR CHKSTATE.SYS CHOICE CLS COMMAND CONFIG.SYS COUNTRY 107 | DIR DATE DBLSPACE DBLSPACE.SYS DEBUG DEFRAG DEL DELOLDOS DELTREE DEVICE DEVICEHIGH DISKCOMP DISKCOPY DISPLAY.SYS DOS DOSKEY DOSSHELL DRIVER.SYS DRIVPARM DRIVESPACE 108 | EDIT ECHO EMM386 EMM386.EXE ERASE ERROLEVEL EXE2BIN EXIT EXPAND 109 | FDISK FORMAT FASTHELP FASTOPEN FC FCBS FILES FIND FOR GOTO 110 | GRAFTABL GRAPHIC GWBASIC 111 | HELP HIMEM.SYS 112 | IF INCLUDE INTERLNK INTERLNK.EXE INTERSVR INSTALL 113 | JOIN 114 | KEYB 115 | LABEL LASTDRIVE LH LINK LOADFIX LOADHIGH 116 | MD MSCDEX MACROS MEM MEMMAKER MENUCOLOR MENUDEFAULT MENUITEM MIRROR MKDIR MODE MORE MOVE MSAV MSBACKUP MSD 117 | NLSFUNC NUMLOCK 118 | PATH PAUSE POWER POWER.EXE PRINT PRINTER.SYS PROMPT 119 | QBASIC 120 | RAMDRIVE RD RECOVER REM REN RENAME REPLACE RESTORE RMDIR 121 | SCANDISK SET SETVER SETVER.EXE SHARE SHELL SHIFT SHIPDISK SIZER.EXE SMARTDRV SMARTDRV.EXE SMARTMON SORT STACKS SUBMENU SUBST SWITCHES SYS 122 | TEMP TIME TREE TYPE 123 | UNDELETE UNFORMAT 124 | VDISK VER VERIFY VOL VSAFE 125 | XCOPY 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Tito-s-Terminal 0.8.4 2 | ===================== 3 | 4 | Terminal with graphical interface, syntax highlighting and automation for telnet, ssh, serial or any command line proccess. 5 | 6 | ![Tito's Terminal](https://github.com/t-edson/Tito-s-Terminal/blob/0.8/_screenshots/screen1.png "Pantalla de Tito's Terminal") 7 | 8 | For Telnet and SSH connections, use the well-known [PLink](http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter7.html), program but any other similar client could be used. 9 | 10 | The program is strongly configurable, with innumerable options for the appearance and the way of working. To avoid having to constantly configure the environment, session management is included, which can save all the configuration in a single file, and which can then be easily recovered, with a couple of "Clicks". 11 | 12 | ## Sessions 13 | 14 | Connections are managed using sessions. A session is a document that includes all parameters of a typical connection like a SSH, or TELNET sesion. 15 | 16 | Unlike other similar programs, here, the sessions include a text panel (Command Panel), and a Terminal windows. The Command panel is used to send the commands to the terminal. It is not convenient to send them directly, because the console is not prepared for direct interaction with the user. 17 | 18 | The terminal screen responds in a similar way to a VT100 console, but without the highlight options (color, bold and bright). However, the text displayed in the terminal includes syntax coloring (for the UNIX Shell language) and code folding. 19 | 20 | The width of the screen is not limited by the size of the VT100 (which defaults to 80 characters),. It can be extended up to several hundred more characters. 21 | 22 | ## Setting a connection 23 | 24 | When creating a new session, the settings form is shown to set the connection parameters. 25 | 26 | ![Tito's Terminal](https://github.com/t-edson/Tito-s-Terminal/blob/0.8.2/_screenshots/connect_settings.png "Connection settings") 27 | 28 | Here you can define the type of connection and the connection parameters. You can also define additional parameters, such as the appearance of the window or the behavior of the terminal. All these settings will be saved in the session. 29 | 30 | If you want to handle an external program by command line, you must select the option "Other". 31 | 32 | For example, if you want to interact with the Windows command interpreter, you must use the "cmd" program. 33 | 34 | ![Tito's Terminal](https://github.com/t-edson/Tito-s-Terminal/blob/0.8.2/_screenshots/cmd_connection.png "cmd control") 35 | 36 | ## Prompt Detection 37 | 38 | The terminal can be configured to recognize the arrival of the system prompt. It also highlights it with a special color. 39 | 40 | Prompt detection is visually useful and is also necessary for some additional tools that are included in the program such as Remote Explorer and Remote Editor. 41 | 42 | The prompt detection is not done directly. It must first be configured in the terminal. This is done from the "General> Prompt detection" option from the session properties window: 43 | 44 | ![Tito's Terminal](https://github.com/t-edson/Tito-s-Terminal/blob/0.8.2/_screenshots/prompt_detec.png "Prompt settings") 45 | 46 | 47 | Prompt detection is based on the fact that it is possible to completely identify the Prompt on a line, defining the initial and final characters that delimit it. 48 | 49 | In the figure shown, the characters "[" and "] $" have been defined for the prompt. In this way, the following prompts can be recognized: 50 | 51 | * [user @ host] $ 52 | * [user @ localhost ~] $ 53 | * [CMD] $ 54 | 55 | # Tools 56 | 57 | The remote file browser works by interacting with the terminal, through commands, but only for Telnet and SSH sessions. In this way a file browser can be emulated on UNIX / Linux connections. 58 | 59 | ![Tito's Terminal](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/1969/12/tterm5.png "Título de la imagen") 60 | 61 | A remote editor is also included, which interacting, through commands, with the "shell" allows editing of small files, from within the same "shell" UNIX / Linux. 62 | 63 | The remote editor includes syntax highlighting (for various languages), code folding, and code autocompletion. 64 | 65 | # Macros 66 | 67 | Tito's Terminal also allows the automation of connections with a macro language similar to that used for TeraTerm. It also includes a code editor prepared exclusively for writing and testing macros. 68 | 69 | ![Tito's Terminal](http://blog.pucp.edu.pe/blog/tito/wp-content/uploads/sites/610/1969/12/tterm3.png "Título de la imagen") 70 | 71 | The macro execution functions, have a direct access from the main menu. 72 | 73 | -------------------------------------------------------------------------------- /_source/FormEditRemoto.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":238850223,"name":"tfrmeditremoto.caption","sourcebytes":[69,100,105,116,111,114,32,82,101,109,111,116,111],"value":"Editor Remoto"}, 3 | {"hash":106991073,"name":"tfrmeditremoto.toolbar1.caption","sourcebytes":[84,111,111,108,66,97,114,49],"value":"ToolBar1"}, 4 | {"hash":160486421,"name":"tfrmeditremoto.toolbutton5.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,53],"value":"ToolButton5"}, 5 | {"hash":177351,"name":"tfrmeditremoto.acfilnew.caption","sourcebytes":[38,78,101,119],"value":"&New"}, 6 | {"hash":221594079,"name":"tfrmeditremoto.acfilnew.hint","sourcebytes":[78,117,101,118,111,32,65,114,99,104,105,118,111],"value":"Nuevo Archivo"}, 7 | {"hash":191283502,"name":"tfrmeditremoto.acfilopen.caption","sourcebytes":[38,79,112,101,110,46,46],"value":"&Open.."}, 8 | {"hash":252769487,"name":"tfrmeditremoto.acfilopen.hint","sourcebytes":[65,98,114,105,114,32,65,114,99,104,105,118,111],"value":"Abrir Archivo"}, 9 | {"hash":2857157,"name":"tfrmeditremoto.acfilsave.caption","sourcebytes":[38,83,97,118,101],"value":"&Save"}, 10 | {"hash":211519,"name":"tfrmeditremoto.acfilsave.hint","sourcebytes":[71,117,97,114,100,97,114,32,65,114,99,104,105,118,111],"value":"Guardar Archivo"}, 11 | {"hash":105773166,"name":"tfrmeditremoto.acfilsaveas.caption","sourcebytes":[83,97,118,101,32,97,38,115,32,46,46,46],"value":"Save a&s ..."}, 12 | {"hash":48950238,"name":"tfrmeditremoto.acfilsaveas.hint","sourcebytes":[71,117,97,114,100,97,114,32,99,111,109,111,46,46,46],"value":"Guardar como..."}, 13 | {"hash":2805508,"name":"tfrmeditremoto.acfilexit.caption","sourcebytes":[38,69,120,105,116],"value":"&Exit"}, 14 | {"hash":5866242,"name":"tfrmeditremoto.acfilexit.hint","sourcebytes":[83,97,108,105,114],"value":"Salir"}, 15 | {"hash":2868399,"name":"tfrmeditremoto.acediundo.caption","sourcebytes":[38,85,110,100,111],"value":"&Undo"}, 16 | {"hash":211713378,"name":"tfrmeditremoto.acediundo.hint","sourcebytes":[68,101,115,104,97,99,101,114],"value":"Deshacer"}, 17 | {"hash":2853807,"name":"tfrmeditremoto.acediredo.caption","sourcebytes":[38,82,101,100,111],"value":"&Redo"}, 18 | {"hash":146700690,"name":"tfrmeditremoto.acediredo.hint","sourcebytes":[82,101,104,97,99,101,114],"value":"Rehacer"}, 19 | {"hash":305108,"name":"tfrmeditremoto.acedicut.caption","sourcebytes":[67,117,38,116],"value":"Cu&t"}, 20 | {"hash":78027394,"name":"tfrmeditremoto.acedicut.hint","sourcebytes":[67,111,114,116,97,114],"value":"Cortar"}, 21 | {"hash":2795129,"name":"tfrmeditremoto.acedicopy.caption","sourcebytes":[38,67,111,112,121],"value":"&Copy"}, 22 | {"hash":78016386,"name":"tfrmeditremoto.acedicopy.hint","sourcebytes":[67,111,112,105,97,114],"value":"Copiar"}, 23 | {"hash":45517477,"name":"tfrmeditremoto.acedipaste.caption","sourcebytes":[38,80,97,115,116,101],"value":"&Paste"}, 24 | {"hash":5684610,"name":"tfrmeditremoto.acedipaste.hint","sourcebytes":[80,101,103,97,114],"value":"Pegar"}, 25 | {"hash":171665052,"name":"tfrmeditremoto.acediselecall.caption","sourcebytes":[83,101,108,101,99,116,32,38,65,108,108],"value":"Select &All"}, 26 | {"hash":157004287,"name":"tfrmeditremoto.acediselecall.hint","sourcebytes":[83,101,108,101,99,99,105,111,110,97,32,116,111,100,111,32,101,108,32,116,101,120,116,111],"value":"Selecciona todo el texto"}, 27 | {"hash":7110642,"name":"tfrmeditremoto.acviewlinnum.caption","sourcebytes":[76,105,110,101,32,38,78,117,109,98,101,114],"value":"Line &Number"}, 28 | {"hash":200196610,"name":"tfrmeditremoto.acviewstabar.caption","sourcebytes":[38,83,116,97,116,117,115,32,98,97,114],"value":"&Status bar"}, 29 | {"hash":143264446,"name":"tfrmeditremoto.acsrchsearch.caption","sourcebytes":[83,101,97,114,99,104,46,46,46],"value":"Search..."}, 30 | {"hash":263373924,"name":"tfrmeditremoto.acsrchsearchnext.caption","sourcebytes":[83,101,97,114,99,104,32,38,78,101,120,116],"value":"Search &Next"}, 31 | {"hash":87029806,"name":"tfrmeditremoto.acsrchreplace.caption","sourcebytes":[38,82,101,112,108,97,99,101,32,46,46,46],"value":"&Replace ..."}, 32 | {"hash":125621404,"name":"tfrmeditremoto.acviewfilpanel.caption","sourcebytes":[38,70,73,108,101,32,80,97,110,101,108],"value":"&FIle Panel"}, 33 | {"hash":230342035,"name":"tfrmeditremoto.actoolsettings.caption","sourcebytes":[83,101,38,116,116,105,110,103,115],"value":"Se&ttings"}, 34 | {"hash":44853633,"name":"tfrmeditremoto.actoolsettings.hint","sourcebytes":[67,111,110,102,105,103,117,114,97,114,32,108,97,32,101,100,105,99,105,195,179,110,32,114,101,109,111,116,97],"value":"Configurar la edici\u00F3n remota"}, 35 | {"hash":2805797,"name":"tfrmeditremoto.menuitem1.caption","sourcebytes":[38,70,105,108,101],"value":"&File"}, 36 | {"hash":146392547,"name":"tfrmeditremoto.mnrecents.caption","sourcebytes":[82,101,99,101,110,116,115],"value":"Recents"}, 37 | {"hash":2800388,"name":"tfrmeditremoto.menuitem2.caption","sourcebytes":[38,69,100,105,116],"value":"&Edit"}, 38 | {"hash":45835827,"name":"tfrmeditremoto.menuitem17.caption","sourcebytes":[38,84,111,111,108,115],"value":"&Tools"}, 39 | {"hash":139369717,"name":"tfrmeditremoto.mnlenguaje.caption","sourcebytes":[38,76,97,110,103,117,97,103,101],"value":"&Language"} 40 | ]} 41 | -------------------------------------------------------------------------------- /_source/FormRemoteEditor.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":79367010,"name":"tfrmremoteeditor.caption","sourcebytes":[69,100,105,116,111,114],"value":"Editor"}, 3 | {"hash":106991073,"name":"tfrmremoteeditor.toolbar1.caption","sourcebytes":[84,111,111,108,66,97,114,49],"value":"ToolBar1"}, 4 | {"hash":160486421,"name":"tfrmremoteeditor.toolbutton5.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,53],"value":"ToolButton5"}, 5 | {"hash":177351,"name":"tfrmremoteeditor.acfilnew.caption","sourcebytes":[38,78,101,119],"value":"&New"}, 6 | {"hash":221594079,"name":"tfrmremoteeditor.acfilnew.hint","sourcebytes":[78,117,101,118,111,32,65,114,99,104,105,118,111],"value":"Nuevo Archivo"}, 7 | {"hash":191283502,"name":"tfrmremoteeditor.acfilopen.caption","sourcebytes":[38,79,112,101,110,46,46],"value":"&Open.."}, 8 | {"hash":252769487,"name":"tfrmremoteeditor.acfilopen.hint","sourcebytes":[65,98,114,105,114,32,65,114,99,104,105,118,111],"value":"Abrir Archivo"}, 9 | {"hash":2857157,"name":"tfrmremoteeditor.acfilsave.caption","sourcebytes":[38,83,97,118,101],"value":"&Save"}, 10 | {"hash":211519,"name":"tfrmremoteeditor.acfilsave.hint","sourcebytes":[71,117,97,114,100,97,114,32,65,114,99,104,105,118,111],"value":"Guardar Archivo"}, 11 | {"hash":105773166,"name":"tfrmremoteeditor.acfilsaveas.caption","sourcebytes":[83,97,118,101,32,97,38,115,32,46,46,46],"value":"Save a&s ..."}, 12 | {"hash":48950238,"name":"tfrmremoteeditor.acfilsaveas.hint","sourcebytes":[71,117,97,114,100,97,114,32,99,111,109,111,46,46,46],"value":"Guardar como..."}, 13 | {"hash":2805508,"name":"tfrmremoteeditor.acfilexit.caption","sourcebytes":[38,69,120,105,116],"value":"&Exit"}, 14 | {"hash":5866242,"name":"tfrmremoteeditor.acfilexit.hint","sourcebytes":[83,97,108,105,114],"value":"Salir"}, 15 | {"hash":2868399,"name":"tfrmremoteeditor.acediundo.caption","sourcebytes":[38,85,110,100,111],"value":"&Undo"}, 16 | {"hash":211713378,"name":"tfrmremoteeditor.acediundo.hint","sourcebytes":[68,101,115,104,97,99,101,114],"value":"Deshacer"}, 17 | {"hash":2853807,"name":"tfrmremoteeditor.acediredo.caption","sourcebytes":[38,82,101,100,111],"value":"&Redo"}, 18 | {"hash":146700690,"name":"tfrmremoteeditor.acediredo.hint","sourcebytes":[82,101,104,97,99,101,114],"value":"Rehacer"}, 19 | {"hash":305108,"name":"tfrmremoteeditor.acedicut.caption","sourcebytes":[67,117,38,116],"value":"Cu&t"}, 20 | {"hash":78027394,"name":"tfrmremoteeditor.acedicut.hint","sourcebytes":[67,111,114,116,97,114],"value":"Cortar"}, 21 | {"hash":2795129,"name":"tfrmremoteeditor.acedicopy.caption","sourcebytes":[38,67,111,112,121],"value":"&Copy"}, 22 | {"hash":78016386,"name":"tfrmremoteeditor.acedicopy.hint","sourcebytes":[67,111,112,105,97,114],"value":"Copiar"}, 23 | {"hash":45517477,"name":"tfrmremoteeditor.acedipaste.caption","sourcebytes":[38,80,97,115,116,101],"value":"&Paste"}, 24 | {"hash":5684610,"name":"tfrmremoteeditor.acedipaste.hint","sourcebytes":[80,101,103,97,114],"value":"Pegar"}, 25 | {"hash":171665052,"name":"tfrmremoteeditor.acediselecall.caption","sourcebytes":[83,101,108,101,99,116,32,38,65,108,108],"value":"Select &All"}, 26 | {"hash":157004287,"name":"tfrmremoteeditor.acediselecall.hint","sourcebytes":[83,101,108,101,99,99,105,111,110,97,32,116,111,100,111,32,101,108,32,116,101,120,116,111],"value":"Selecciona todo el texto"}, 27 | {"hash":7110642,"name":"tfrmremoteeditor.acviewlinnum.caption","sourcebytes":[76,105,110,101,32,38,78,117,109,98,101,114],"value":"Line &Number"}, 28 | {"hash":200196610,"name":"tfrmremoteeditor.acviewstabar.caption","sourcebytes":[38,83,116,97,116,117,115,32,98,97,114],"value":"&Status bar"}, 29 | {"hash":143264446,"name":"tfrmremoteeditor.acsrchsearch.caption","sourcebytes":[83,101,97,114,99,104,46,46,46],"value":"Search..."}, 30 | {"hash":263373924,"name":"tfrmremoteeditor.acsrchsearchnext.caption","sourcebytes":[83,101,97,114,99,104,32,38,78,101,120,116],"value":"Search &Next"}, 31 | {"hash":87029806,"name":"tfrmremoteeditor.acsrchreplace.caption","sourcebytes":[38,82,101,112,108,97,99,101,32,46,46,46],"value":"&Replace ..."}, 32 | {"hash":125621404,"name":"tfrmremoteeditor.acviewfilpanel.caption","sourcebytes":[38,70,73,108,101,32,80,97,110,101,108],"value":"&FIle Panel"}, 33 | {"hash":230342035,"name":"tfrmremoteeditor.actoolsettings.caption","sourcebytes":[83,101,38,116,116,105,110,103,115],"value":"Se&ttings"}, 34 | {"hash":44853633,"name":"tfrmremoteeditor.actoolsettings.hint","sourcebytes":[67,111,110,102,105,103,117,114,97,114,32,108,97,32,101,100,105,99,105,195,179,110,32,114,101,109,111,116,97],"value":"Configurar la edici\u00F3n remota"}, 35 | {"hash":2805797,"name":"tfrmremoteeditor.menuitem1.caption","sourcebytes":[38,70,105,108,101],"value":"&File"}, 36 | {"hash":146392547,"name":"tfrmremoteeditor.mnrecents.caption","sourcebytes":[82,101,99,101,110,116,115],"value":"Recents"}, 37 | {"hash":2800388,"name":"tfrmremoteeditor.menuitem2.caption","sourcebytes":[38,69,100,105,116],"value":"&Edit"}, 38 | {"hash":45835827,"name":"tfrmremoteeditor.menuitem17.caption","sourcebytes":[38,84,111,111,108,115],"value":"&Tools"}, 39 | {"hash":139369717,"name":"tfrmremoteeditor.mnlenguaje.caption","sourcebytes":[38,76,97,110,103,117,97,103,101],"value":"&Language"} 40 | ]} 41 | -------------------------------------------------------------------------------- /_source/FormEditMacros.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":111547395,"name":"tfrmeditmacros.caption","sourcebytes":[102,114,109,69,100,105,116,77,97,99,114,111,115],"value":"frmEditMacros"}, 3 | {"hash":106991073,"name":"tfrmeditmacros.toolbar1.caption","sourcebytes":[84,111,111,108,66,97,114,49],"value":"ToolBar1"}, 4 | {"hash":160486421,"name":"tfrmeditmacros.toolbutton5.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,53],"value":"ToolButton5"}, 5 | {"hash":151863761,"name":"tfrmeditmacros.toolbutton11.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,49,49],"value":"ToolButton11"}, 6 | {"hash":177351,"name":"tfrmeditmacros.acfilnew.caption","sourcebytes":[38,78,101,119],"value":"&New"}, 7 | {"hash":221594079,"name":"tfrmeditmacros.acfilnew.hint","sourcebytes":[78,117,101,118,111,32,65,114,99,104,105,118,111],"value":"Nuevo Archivo"}, 8 | {"hash":107746238,"name":"tfrmeditmacros.acfilopen.caption","sourcebytes":[38,79,112,101,110,46,46,46],"value":"&Open..."}, 9 | {"hash":252769487,"name":"tfrmeditmacros.acfilopen.hint","sourcebytes":[65,98,114,105,114,32,65,114,99,104,105,118,111],"value":"Abrir Archivo"}, 10 | {"hash":2857157,"name":"tfrmeditmacros.acfilsave.caption","sourcebytes":[38,83,97,118,101],"value":"&Save"}, 11 | {"hash":211519,"name":"tfrmeditmacros.acfilsave.hint","sourcebytes":[71,117,97,114,100,97,114,32,65,114,99,104,105,118,111],"value":"Guardar Archivo"}, 12 | {"hash":73723262,"name":"tfrmeditmacros.acfilsaveas.caption","sourcebytes":[83,97,118,101,32,65,38,115,46,46,46],"value":"Save A&s..."}, 13 | {"hash":48950238,"name":"tfrmeditmacros.acfilsaveas.hint","sourcebytes":[71,117,97,114,100,97,114,32,99,111,109,111,46,46,46],"value":"Guardar como..."}, 14 | {"hash":4710148,"name":"tfrmeditmacros.acfilexit.caption","sourcebytes":[69,38,120,105,116],"value":"E&xit"}, 15 | {"hash":5866242,"name":"tfrmeditmacros.acfilexit.hint","sourcebytes":[83,97,108,105,114],"value":"Salir"}, 16 | {"hash":2868399,"name":"tfrmeditmacros.acediundo.caption","sourcebytes":[38,85,110,100,111],"value":"&Undo"}, 17 | {"hash":211713378,"name":"tfrmeditmacros.acediundo.hint","sourcebytes":[68,101,115,104,97,99,101,114],"value":"Deshacer"}, 18 | {"hash":2853807,"name":"tfrmeditmacros.acediredo.caption","sourcebytes":[38,82,101,100,111],"value":"&Redo"}, 19 | {"hash":146700690,"name":"tfrmeditmacros.acediredo.hint","sourcebytes":[82,101,104,97,99,101,114],"value":"Rehacer"}, 20 | {"hash":305108,"name":"tfrmeditmacros.acedicut.caption","sourcebytes":[67,117,38,116],"value":"Cu&t"}, 21 | {"hash":78027394,"name":"tfrmeditmacros.acedicut.hint","sourcebytes":[67,111,114,116,97,114],"value":"Cortar"}, 22 | {"hash":2795129,"name":"tfrmeditmacros.acedicopy.caption","sourcebytes":[38,67,111,112,121],"value":"&Copy"}, 23 | {"hash":78016386,"name":"tfrmeditmacros.acedicopy.hint","sourcebytes":[67,111,112,105,97,114],"value":"Copiar"}, 24 | {"hash":45517477,"name":"tfrmeditmacros.acedipaste.caption","sourcebytes":[38,80,97,115,116,101],"value":"&Paste"}, 25 | {"hash":5684610,"name":"tfrmeditmacros.acedipaste.hint","sourcebytes":[80,101,103,97,114],"value":"Pegar"}, 26 | {"hash":171665052,"name":"tfrmeditmacros.acediselecall.caption","sourcebytes":[83,101,108,101,99,116,32,38,65,108,108],"value":"Select &All"}, 27 | {"hash":157004287,"name":"tfrmeditmacros.acediselecall.hint","sourcebytes":[83,101,108,101,99,99,105,111,110,97,32,116,111,100,111,32,101,108,32,116,101,120,116,111],"value":"Selecciona todo el texto"}, 28 | {"hash":156299761,"name":"tfrmeditmacros.acvernumlin.caption","sourcebytes":[86,101,114,32,38,78,195,186,109,46,32,100,101,32,76,195,173,110,101,97],"value":"Ver &N\u00FAm. de L\u00EDnea"}, 29 | {"hash":246975967,"name":"tfrmeditmacros.acverbarest.caption","sourcebytes":[86,101,114,32,66,97,114,114,97,32,100,101,32,38,69,115,116,97,100,111],"value":"Ver Barra de &Estado"}, 30 | {"hash":143264446,"name":"tfrmeditmacros.acsrchsearch.caption","sourcebytes":[83,101,97,114,99,104,46,46,46],"value":"Search..."}, 31 | {"hash":263373924,"name":"tfrmeditmacros.acsrchsearchnext.caption","sourcebytes":[83,101,97,114,99,104,32,38,78,101,120,116],"value":"Search &Next"}, 32 | {"hash":38997374,"name":"tfrmeditmacros.acsrchreplace.caption","sourcebytes":[38,82,101,112,108,97,99,101,46,46,46],"value":"&Replace..."}, 33 | {"hash":189951491,"name":"tfrmeditmacros.acverpanarc.caption","sourcebytes":[80,97,110,101,108,32,100,101,32,38,65,114,99,104,105,118,111,115],"value":"Panel de &Archivos"}, 34 | {"hash":216772101,"name":"tfrmeditmacros.acherejec.caption","sourcebytes":[38,69,120,101,99,117,116,101],"value":"&Execute"}, 35 | {"hash":2861920,"name":"tfrmeditmacros.acherdeten.caption","sourcebytes":[38,83,116,111,112],"value":"&Stop"}, 36 | {"hash":206860878,"name":"tfrmeditmacros.acherdeten.hint","sourcebytes":[38,68,101,116,101,110,101,114,32,101,106,101,99,117,99,105,195,179,110],"value":"&Detener ejecuci\u00F3n"}, 37 | {"hash":193701540,"name":"tfrmeditmacros.achergrab.caption","sourcebytes":[38,82,101,99,111,114,100],"value":"&Record"}, 38 | {"hash":213577587,"name":"tfrmeditmacros.acherconfig.caption","sourcebytes":[38,83,101,116,116,105,110,103,115],"value":"&Settings"}, 39 | {"hash":2805797,"name":"tfrmeditmacros.mnarchivo.caption","sourcebytes":[38,70,105,108,101],"value":"&File"}, 40 | {"hash":146392835,"name":"tfrmeditmacros.mnrecientes.caption","sourcebytes":[38,82,101,99,101,110,116,115],"value":"&Recents"}, 41 | {"hash":2800388,"name":"tfrmeditmacros.mnedicion.caption","sourcebytes":[38,69,100,105,116],"value":"&Edit"}, 42 | {"hash":45835827,"name":"tfrmeditmacros.mnherram.caption","sourcebytes":[38,84,111,111,108,115],"value":"&Tools"} 43 | ]} 44 | -------------------------------------------------------------------------------- /_source/FormPrincipal.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":128846556,"name":"tfrmprincipal.caption","sourcebytes":[84,105,116,111,39,115,32,84,101,114,109,105,110,97,108],"value":"Tito's Terminal"}, 3 | {"hash":2805797,"name":"tfrmprincipal.mnfile.caption","sourcebytes":[38,70,105,108,101],"value":"&File"}, 4 | {"hash":170385011,"name":"tfrmprincipal.mnsesionesalm.caption","sourcebytes":[83,38,116,111,114,101,100,32,83,101,115,115,105,111,110,115],"value":"S&tored Sessions"}, 5 | {"hash":146392835,"name":"tfrmprincipal.mnrecents.caption","sourcebytes":[38,82,101,99,101,110,116,115],"value":"&Recents"}, 6 | {"hash":2871239,"name":"tfrmprincipal.mnview.caption","sourcebytes":[38,86,105,101,119],"value":"&View"}, 7 | {"hash":188197187,"name":"tfrmprincipal.mnmacros.caption","sourcebytes":[38,77,97,99,114,111,115],"value":"&Macros"}, 8 | {"hash":196662415,"name":"tfrmprincipal.mnejecmacro.caption","sourcebytes":[38,69,120,101,99,117,116,101,32,77,97,99,114,111],"value":"&Execute Macro"}, 9 | {"hash":7871567,"name":"tfrmprincipal.mnabrmacro.caption","sourcebytes":[38,79,112,101,110,32,77,97,99,114,111],"value":"&Open Macro"}, 10 | {"hash":45835827,"name":"tfrmprincipal.mntools.caption","sourcebytes":[38,84,111,111,108,115],"value":"&Tools"}, 11 | {"hash":2812976,"name":"tfrmprincipal.mnhelp.caption","sourcebytes":[38,72,101,108,112],"value":"&Help"}, 12 | {"hash":28145806,"name":"tfrmprincipal.acfilqckconnec.caption","sourcebytes":[38,81,117,105,99,107,32,99,111,110,110,101,99,116,105,111,110,32,46,46,46],"value":"&Quick connection ..."}, 13 | {"hash":137937646,"name":"tfrmprincipal.acfilqckconnec.hint","sourcebytes":[65,98,114,101,32,117,110,97,32,110,117,101,118,97,32,99,111,110,101,120,105,195,179,110],"value":"Abre una nueva conexi\u00F3n"}, 14 | {"hash":192829198,"name":"tfrmprincipal.acfilnewses.caption","sourcebytes":[38,78,101,119,32,83,101,115,115,105,111,110],"value":"&New Session"}, 15 | {"hash":3317102,"name":"tfrmprincipal.acfilopeses.caption","sourcebytes":[38,79,112,101,110,32,83,101,115,115,105,111,110,32,46,46,46],"value":"&Open Session ..."}, 16 | {"hash":231859870,"name":"tfrmprincipal.acfilopeses.hint","sourcebytes":[65,98,114,101,32,117,110,32,97,114,99,104,105,118,111,32,100,101,32,115,101,115,105,195,179,110],"value":"Abre un archivo de sesi\u00F3n"}, 17 | {"hash":38951214,"name":"tfrmprincipal.acfilsavses.caption","sourcebytes":[38,83,97,118,101,32,83,101,115,115,105,111,110],"value":"&Save Session"}, 18 | {"hash":224848972,"name":"tfrmprincipal.acfilsavses.hint","sourcebytes":[71,117,97,114,100,97,32,108,97,32,115,101,115,105,195,179,110,32,97,99,116,117,97,108],"value":"Guarda la sesi\u00F3n actual"}, 19 | {"hash":105752414,"name":"tfrmprincipal.acfilsavsesas.caption","sourcebytes":[83,97,118,101,32,83,101,115,105,115,195,179,110,32,65,115,32,46,46,46],"value":"Save Sesis\u00F3n As ..."}, 20 | {"hash":266067429,"name":"tfrmprincipal.acfilsavsesas.hint","sourcebytes":[71,117,97,114,100,97,114,32,115,101,115,105,195,179,110,32,105,110,100,105,99,97,110,100,111,32,117,110,32,110,111,109,98,114,101],"value":"Guardar sesi\u00F3n indicando un nombre"}, 21 | {"hash":138688974,"name":"tfrmprincipal.acfilnewwin.caption","sourcebytes":[78,101,119,32,38,87,105,110,100,111,119,46,46,46],"value":"New &Window..."}, 22 | {"hash":244932577,"name":"tfrmprincipal.acfilnewwin.hint","sourcebytes":[65,98,114,101,32,117,110,97,32,110,117,101,118,97,32,86,101,110,116,97,110,97],"value":"Abre una nueva Ventana"}, 23 | {"hash":4710148,"name":"tfrmprincipal.acfilexit.caption","sourcebytes":[69,38,120,105,116],"value":"E&xit"}, 24 | {"hash":5866242,"name":"tfrmprincipal.acfilexit.hint","sourcebytes":[83,97,108,105,114],"value":"Salir"}, 25 | {"hash":197190146,"name":"tfrmprincipal.acviewstatusbar.caption","sourcebytes":[83,116,97,116,117,115,32,66,97,114],"value":"Status Bar"}, 26 | {"hash":26051855,"name":"tfrmprincipal.acviewstatusbar.hint","sourcebytes":[86,101,114,32,66,97,114,114,97,32,100,101,32,69,115,116,97,100,111],"value":"Ver Barra de Estado"}, 27 | {"hash":227451986,"name":"tfrmprincipal.acmaceditor.caption","sourcebytes":[38,77,97,99,114,111,32,101,100,105,116,111,114],"value":"&Macro editor"}, 28 | {"hash":68617171,"name":"tfrmprincipal.acmaceditor.hint","sourcebytes":[86,101,114,32,69,100,105,116,111,114,32,100,101,32,77,97,99,114,111,115],"value":"Ver Editor de Macros"}, 29 | {"hash":117287362,"name":"tfrmprincipal.actoolremedit.caption","sourcebytes":[82,101,109,111,116,101,32,38,69,100,105,116,111,114],"value":"Remote &Editor"}, 30 | {"hash":159929519,"name":"tfrmprincipal.actoolremedit.hint","sourcebytes":[86,101,114,32,69,100,105,116,111,114,32,82,101,109,111,116,111],"value":"Ver Editor Remoto"}, 31 | {"hash":164733778,"name":"tfrmprincipal.actoolremexplor.caption","sourcebytes":[82,101,109,111,116,101,32,69,38,120,112,108,111,114,101,114],"value":"Remote E&xplorer"}, 32 | {"hash":121715487,"name":"tfrmprincipal.actoolremexplor.hint","sourcebytes":[86,101,114,32,69,120,112,108,111,114,97,100,111,114,32,82,101,109,111,116,111],"value":"Ver Explorador Remoto"}, 33 | {"hash":213577587,"name":"tfrmprincipal.actoolsett.caption","sourcebytes":[38,83,101,116,116,105,110,103,115],"value":"&Settings"}, 34 | {"hash":217738946,"name":"tfrmprincipal.actoolsett.hint","sourcebytes":[67,111,110,102,105,103,117,114,97,114],"value":"Configurar"}, 35 | {"hash":232315951,"name":"tfrmprincipal.acmacrecord.caption","sourcebytes":[38,82,101,99,111,114,100,32,77,97,99,114,111],"value":"&Record Macro"}, 36 | {"hash":2812976,"name":"tfrmprincipal.achlphelp.caption","sourcebytes":[38,72,101,108,112],"value":"&Help"}, 37 | {"hash":158096254,"name":"tfrmprincipal.achlpabout.caption","sourcebytes":[38,65,98,111,117,116,46,46,46],"value":"&About..."} 38 | ]} 39 | -------------------------------------------------------------------------------- /languages/bash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | $EDIT 21 | $EXPLORER 22 | 23 | 24 | %EDIT 25 | %EXPLORER 26 | %CLEAR 27 | %CONNECT 28 | %CONNECTSSH 29 | %DISCONNECT 30 | %SENDLN 31 | %WAIT 32 | %PAUSE 33 | %STOP 34 | %DETECT_PROMPT 35 | 36 | 37 | alias ar asa awk 38 | "awk '{}'" 39 | "awk -F. '{print $1}'" 40 | banner basename bash bc bdiff break bunzip2 bzip2 41 | "case" 42 | "case $x in 43 | 1) echo ""uno"" 44 | ;; 45 | 2) echo ""dos"" 46 | ;; 47 | *) echo ""otro"" 48 | ;; 49 | esac" 50 | "cat " "cd " "cd .." "chgrp " 51 | "chmod " "chmod 755" "chmod 777" 52 | "chown" 53 | "chown usuario directorio/archivo" 54 | "continue" 55 | "cp " 56 | "cp origen destino" 57 | "crontab " 58 | "crontab -l" 59 | "crontab -l | grep " 60 | "date" 61 | "date +%Y%m%d %H%M%S" 62 | "df" 63 | "df -k" 64 | "df -k | grep " 65 | "do" 66 | "done" 67 | "du" 68 | "du -k" 69 | "echo" 70 | "echo ""\_""" 71 | "elif " 72 | "else" 73 | "esac" 74 | "exit" 75 | "expr" 76 | "fcopy" 77 | "fi" 78 | "find" 79 | "find / -name somefile.txt" 80 | "find . -size 5k" 81 | "for " 82 | "for variable in $lista do done" 83 | "format" 84 | "ftp " 85 | "grep " 86 | "head " 87 | "id " 88 | "if " 89 | "if [ expresíon ]; then fi" 90 | "if [ expresíon ]; then else fi" 91 | "in" 92 | "join " 93 | "kill" 94 | "kill -9 " 95 | "ln" 96 | "ls" 97 | "ls -l" 98 | "mail" 99 | "man" 100 | "mkdir" 101 | "mv " 102 | "mv origen destino" 103 | "nawk " 104 | "nawk -F. ""{print $1}""" 105 | "ping" 106 | "passwd" 107 | "passwd usuario" 108 | "pwd" 109 | "ps " 110 | "ps -fu" 111 | "rm " 112 | "rmdir " 113 | "sleep " 114 | "sort" 115 | "tail " 116 | "tar" 117 | "telnet" 118 | "then" 119 | "top " 120 | "tty " 121 | "uname" 122 | "uniq" 123 | "until" 124 | "useradd" 125 | "useradd usuario" 126 | "vi " 127 | "vmstat " 128 | "wc " 129 | "wc -l " 130 | "while " 131 | "while [ exprsion ]; do done" 132 | "who " 133 | "write " 134 | 135 | 136 | 137 | 138 | alias ar asa 139 | banner basename bash bc bdiff break bunzip2 bzip2 140 | cal calendar caller case cat cc cd chmod cksum clear cmp col comm command compress continue cp cpio crontab crypt csplit ctags cut 141 | date dc dd declare deroff dev df diff diff3 dircmp dirname do done du 142 | echo ed egrep elif else env esac eval ex exec exit expand export expr 143 | false fc fgrep fi file find fmt fold for function functions 144 | getconf getopt getopts grep gres 145 | halt hash head help history hostname 146 | iconv id if in integer 147 | jobs join kill local logout 148 | lc let line ln logname look ls 149 | m4 mail mailx make man mkdir more mt mv 150 | newgrp nl nm nohup ntps od 151 | pack paste patch pathchk pax pcat perl pg pr print printf ps pwd 152 | read readonly reboot red return rev rm rmdir 153 | sed select seq set sh shift size sleep sort spell split start strings strip stty sum suspend sync 154 | tail tar tee test then time times touch tr trap true tsort tty type typeset 155 | ulimit umask unalias uname uncompress unexpand uniq unpack unset until uudecode uuencode 156 | vdir vi vim 157 | wait wc whatis whence whereis which while who whoami 158 | xargs zcat 159 | 160 | 161 | awk nawk 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /_source/FrameCfgSynEdit.lfm: -------------------------------------------------------------------------------- 1 | object fraCfgSynEdit: TfraCfgSynEdit 2 | Left = 0 3 | Height = 404 4 | Top = 0 5 | Width = 468 6 | ClientHeight = 404 7 | ClientWidth = 468 8 | DesignTimePPI = 120 9 | ParentFont = False 10 | TabOrder = 0 11 | DesignLeft = 234 12 | DesignTop = 426 13 | object cbutLinAct: TColorButton 14 | Left = 344 15 | Height = 31 16 | Top = 120 17 | Width = 80 18 | BorderWidth = 2 19 | ButtonColorSize = 16 20 | ButtonColor = clBlack 21 | ParentFont = False 22 | end 23 | object Label1: TLabel 24 | Left = 280 25 | Height = 20 26 | Top = 125 27 | Width = 39 28 | Caption = 'Color:' 29 | ParentColor = False 30 | ParentFont = False 31 | end 32 | object Label8: TLabel 33 | Left = 10 34 | Height = 20 35 | Top = 50 36 | Width = 74 37 | Caption = 'Back Color:' 38 | ParentColor = False 39 | ParentFont = False 40 | end 41 | object cbutBackCol: TColorButton 42 | Left = 130 43 | Height = 31 44 | Top = 42 45 | Width = 80 46 | BorderWidth = 2 47 | ButtonColorSize = 16 48 | ButtonColor = clBlack 49 | ParentFont = False 50 | end 51 | object Label9: TLabel 52 | Left = 254 53 | Height = 20 54 | Top = 50 55 | Width = 71 56 | Caption = 'Text Color:' 57 | ParentColor = False 58 | ParentFont = False 59 | end 60 | object cbutTextCol: TColorButton 61 | Left = 344 62 | Height = 31 63 | Top = 40 64 | Width = 80 65 | BorderWidth = 2 66 | ButtonColorSize = 16 67 | ButtonColor = clBlack 68 | ParentFont = False 69 | end 70 | object GroupBox1: TGroupBox 71 | Left = 10 72 | Height = 103 73 | Top = 280 74 | Width = 452 75 | Caption = ' ' 76 | ClientHeight = 78 77 | ClientWidth = 448 78 | ParentFont = False 79 | TabOrder = 0 80 | object chkVerPanVer: TCheckBox 81 | Left = 20 82 | Height = 24 83 | Top = -22 84 | Width = 65 85 | Caption = 'Gutter' 86 | OnChange = chkVerPanVerChange 87 | ParentFont = False 88 | TabOrder = 0 89 | end 90 | object cbutFonPan: TColorButton 91 | Left = 330 92 | Height = 31 93 | Top = 0 94 | Width = 80 95 | BorderWidth = 2 96 | ButtonColorSize = 16 97 | ButtonColor = clBlack 98 | ParentFont = False 99 | end 100 | object Label2: TLabel 101 | Left = 210 102 | Height = 20 103 | Top = 10 104 | Width = 74 105 | Caption = 'Back Color:' 106 | ParentColor = False 107 | ParentFont = False 108 | end 109 | object Label3: TLabel 110 | Left = 210 111 | Height = 20 112 | Top = 45 113 | Width = 71 114 | Caption = 'Text Color:' 115 | ParentColor = False 116 | ParentFont = False 117 | end 118 | object cbutTxtPan: TColorButton 119 | Left = 330 120 | Height = 31 121 | Top = 35 122 | Width = 80 123 | BorderWidth = 2 124 | ButtonColorSize = 16 125 | ButtonColor = clBlack 126 | ParentFont = False 127 | end 128 | object chkVerNumLin: TCheckBox 129 | Left = 5 130 | Height = 24 131 | Top = 10 132 | Width = 143 133 | Caption = 'Show líne number' 134 | ParentFont = False 135 | TabOrder = 1 136 | end 137 | object chkVerMarPle: TCheckBox 138 | Left = 5 139 | Height = 24 140 | Top = 40 141 | Width = 155 142 | Caption = 'Show folding marks' 143 | ParentFont = False 144 | TabOrder = 2 145 | end 146 | end 147 | object GroupBox2: TGroupBox 148 | Left = 10 149 | Height = 110 150 | Top = 160 151 | Width = 438 152 | Caption = ' ' 153 | ClientHeight = 85 154 | ClientWidth = 434 155 | ParentFont = False 156 | TabOrder = 1 157 | object chkHighCurWord: TCheckBox 158 | Left = 20 159 | Height = 24 160 | Top = -22 161 | Width = 174 162 | Caption = 'Highlight current word' 163 | OnChange = chkHighCurWordChange 164 | ParentFont = False 165 | TabOrder = 0 166 | end 167 | object Label10: TLabel 168 | Left = 8 169 | Height = 20 170 | Top = 15 171 | Width = 72 172 | Caption = 'Back color:' 173 | ParentColor = False 174 | ParentFont = False 175 | end 176 | object cbutResPalCFon: TColorButton 177 | Left = 120 178 | Height = 31 179 | Top = 8 180 | Width = 80 181 | BorderWidth = 2 182 | ButtonColorSize = 16 183 | ButtonColor = clBlack 184 | ParentFont = False 185 | end 186 | object Label11: TLabel 187 | Left = 230 188 | Height = 20 189 | Top = 15 190 | Width = 69 191 | Caption = 'Text color:' 192 | ParentColor = False 193 | ParentFont = False 194 | end 195 | object cbutResPalCTxt: TColorButton 196 | Left = 330 197 | Height = 31 198 | Top = 8 199 | Width = 80 200 | BorderWidth = 2 201 | ButtonColorSize = 16 202 | ButtonColor = clBlack 203 | ParentFont = False 204 | end 205 | object Label12: TLabel 206 | Left = 8 207 | Height = 20 208 | Top = 55 209 | Width = 82 210 | Caption = 'Frame color:' 211 | ParentColor = False 212 | ParentFont = False 213 | end 214 | object cbutResPalCBor: TColorButton 215 | Left = 120 216 | Height = 31 217 | Top = 48 218 | Width = 80 219 | BorderWidth = 2 220 | ButtonColorSize = 16 221 | ButtonColor = clBlack 222 | ParentFont = False 223 | end 224 | object chkFullWord: TCheckBox 225 | Left = 230 226 | Height = 24 227 | Top = 50 228 | Width = 88 229 | Caption = 'Full Word' 230 | ParentFont = False 231 | TabOrder = 1 232 | end 233 | end 234 | object chkHighCurLin: TCheckBox 235 | Left = 10 236 | Height = 24 237 | Top = 125 238 | Width = 167 239 | Caption = 'Highlight current line:' 240 | OnChange = chkHighCurLinChange 241 | ParentFont = False 242 | TabOrder = 2 243 | end 244 | object chkVerBarDesV: TCheckBox 245 | Left = 10 246 | Height = 24 247 | Top = 88 248 | Width = 137 249 | Caption = '&Vertical Scrollbar' 250 | TabOrder = 3 251 | end 252 | object chkVerBarDesH: TCheckBox 253 | Left = 264 254 | Height = 24 255 | Top = 88 256 | Width = 157 257 | Caption = '&Horizontal Scrollbar' 258 | TabOrder = 4 259 | end 260 | object Label6: TLabel 261 | Left = 10 262 | Height = 20 263 | Top = 17 264 | Width = 73 265 | Caption = 'Font name:' 266 | ParentColor = False 267 | end 268 | object cmbTipoLetra: TComboBox 269 | Left = 106 270 | Height = 28 271 | Top = 10 272 | Width = 100 273 | ItemHeight = 20 274 | TabOrder = 5 275 | Text = 'cmbTipoLetra' 276 | end 277 | object Label7: TLabel 278 | Left = 256 279 | Height = 20 280 | Top = 17 281 | Width = 63 282 | Caption = 'Font Size:' 283 | ParentColor = False 284 | end 285 | object spTam: TSpinEdit 286 | Left = 371 287 | Height = 28 288 | Top = 10 289 | Width = 50 290 | MaxValue = 20 291 | MinValue = 5 292 | TabOrder = 6 293 | Value = 5 294 | end 295 | end 296 | -------------------------------------------------------------------------------- /_libraries/MiConfig-0.4.2/MiConfigUtils.pas: -------------------------------------------------------------------------------- 1 | { 2 | MiConfigUtils 3 | =========== 4 | Por Tito Hinostroza 20/12/2016 5 | 6 | Descripción 7 | =========== 8 | Unidad con rutinas útiles para implementar las ventanas de configuración. 9 | } 10 | unit MiConfigUtils; 11 | {$mode objfpc}{$H+} 12 | interface 13 | uses 14 | Classes, SysUtils, Graphics, Forms, ComCtrls; 15 | 16 | type 17 | TlistFrames = array of TFrame; 18 | 19 | //Utilidades para el uso de Frames con "MiCOnfig" 20 | procedure HideAllFrames(form: TForm); 21 | procedure ShowFramePos(frm: TFrame; x, y: integer); 22 | //Utilidades para el uso de TTreeView con Frames con "MiCOnfig" 23 | function IdFromTTreeNode(node: TTreeNode): string; 24 | function TTreeNodeFromId(Id: string; tree: TTreeView): TTreeNode; 25 | function AddNodeToTreeView(tree: TTreeView; id, Caption: string): TTreeNode; 26 | function LinkFrameToTreeView(tree: TTreeView; id, Caption: string; 27 | frame: TFrame = nil): TTreeNode; 28 | function ShowFrameOfNode(form: Tform; node: TTreeNode; x, y: integer): boolean; 29 | 30 | implementation 31 | 32 | function ListOfFrames(form: TForm): TlistFrames; 33 | //Devuelve la lista de frames del tipo TCfgFrame declarado aquí 34 | var 35 | i: Integer; 36 | n : integer; 37 | f: TFrame; 38 | begin 39 | SetLength(Result,0); 40 | for i:= 0 to form.ComponentCount-1 do begin 41 | if form.Components[i] is TFrame then begin 42 | f:=TFrame(form.Components[i]); //obtiene referencia 43 | n := high(Result)+1; //número de elementos 44 | setlength(Result, n+1); //hace espacio 45 | Result[n] := f; //agrega 46 | end; 47 | end; 48 | end; 49 | procedure HideAllFrames(form: TForm); 50 | //Oculta todos los frames de un formulario 51 | var 52 | f: TFrame; 53 | begin 54 | for f in ListOfFrames(form) do 55 | f.visible := false; 56 | end; 57 | procedure ShowFramePos(frm: TFrame; x, y: integer); 58 | //Muestra el frame en la posición indicada 59 | begin 60 | frm.left:= x; 61 | frm.Top := y; 62 | frm.Visible:=true; 63 | end; 64 | function IdFromTTreeNode(node: TTreeNode): string; 65 | //Returns an ID with indication of the position of a TTreeNode'. 66 | //It has the form: 1, 1.1, 2.1.3. Only works for 3 levels. 67 | var 68 | nivel: Integer; 69 | begin 70 | nivel := node.Level; 71 | case nivel of 72 | 0: Result := IntToStr(node.Index+1); //de un nivel 73 | 1: Result := IntToStr(node.Parent.Index+1) + '.' + 74 | IntToStr(node.Index+1); 75 | 2: Result := IntToStr(node.Parent.Parent.Index+1) + '.' + 76 | IntToStr(node.Parent.Index+1) + '.' + 77 | IntToStr(node.Index+1) 78 | else //de un nivel 79 | Result := ''; 80 | end; 81 | end; 82 | function TTreeNodeFromId(Id: string; tree: TTreeView): TTreeNode; 83 | //Returns a TreeNode, given the ID position. If not found, returns NIL. 84 | //Only works for 3 levels. 85 | var 86 | node: TTreeNode; 87 | begin 88 | for node in tree.Items do begin 89 | if IdFromTTreeNode(node) = Id then exit(node); 90 | end; 91 | exit(nil); 92 | end; 93 | function AddNodeToTreeView(tree: TTreeView; id, Caption: string): TTreeNode; 94 | {Agrega un Frame a TTreeNode, de forma simbólica. Lo que se agrega en realidad, 95 | es un nodo, con el nombre indicado. 96 | El campo ID, determina la ubicación del nodo en el árbol, y es de la forma: 97 | .. ... } 98 | function ChildCount(tv: TTreeView; nod: TTreeNode): integer; 99 | {Devuelve la cantidad de nodos hijos (solo en el primer nivel) de un nodo.} 100 | var 101 | node: TTreeNode; 102 | levChild: Integer; 103 | begin 104 | Result := 0; 105 | if nod = nil then levChild := 0 else levChild := nod.Level+1; 106 | for node in tv.Items do begin 107 | if (node.Level = levChild) and (node.Parent = nod) then inc(Result); 108 | end; 109 | end; 110 | function ChildByNumber(tv: TTreeView; nod: TTreeNode; num: integer): TTreeNode; 111 | {Devuelve el nodo hijo número "n" (empieza en 1) de Nod. Debe asegurarse que hay 112 | al menos "n" nodos hijos en el nodo indicado. De otra forma, se puede generar error.} 113 | var 114 | node: TTreeNode; 115 | levChild, nChild: Integer; 116 | begin 117 | nChild := 0; 118 | if nod = nil then levChild := 0 else levChild := nod.Level+1; 119 | for node in tv.Items do begin 120 | if (node.Level = levChild) and (node.Parent = nod) then begin 121 | inc(nChild); 122 | if nChild=num then exit(node); 123 | end; 124 | end; 125 | //No se encontró 126 | exit(nil); 127 | end; 128 | function BuscarNodoN(tv: TTreeView; raiz: TTreeNode; nNod: string): TTreeNode; 129 | {Busca el nodo de orden "nNod". Asegura que el nodo raiz tenga los nodos, indicados. Si no los tiene, los 130 | crea.} 131 | var 132 | n: LongInt; 133 | begin 134 | n := StrToInt(nNod); 135 | if n<=ChildCount(tv, raiz) then begin 136 | //No hay problema, el nodo ya existe 137 | Result := ChildByNumber(tv, raiz, n); 138 | exit; 139 | end else begin 140 | //No hay nodos hijo suficientes, hay que agregar nodos. 141 | while ChildCount(tv, raiz)nil then //para hacer al nodo visible 168 | nod.Parent.Expanded:=true; 169 | Result := nod; 170 | end; 171 | 172 | function LinkFrameToTreeView(tree: TTreeView; id, Caption: string; 173 | frame: TFrame = nil): TTreeNode; 174 | {Crea un nodo en el TreeView y lo asocias a un Frame de configuración (Ver documentación 175 | de MiConfig). Debe llamarse, después de crear el Frame. 176 | El "id", debe ser único y es de la forma: "1", "2.1" o "3.2.1". 177 | Si se indica el Frame en NIL, no se crea configura el Frame,solo se agrega el ítem} 178 | begin 179 | Result := AddNodeToTreeView(tree, id, Caption); //Crea el ítem el el TreeView 180 | if frame<>nil then begin 181 | //Agrega el ID en la etiqueta, para indicar que está asociado a ese nodo 182 | frame.Hint := frame.Hint + id + '|'; 183 | end; 184 | end; 185 | function ShowFrameOfNode(form: Tform; node: TTreeNode; x, y: integer): boolean; 186 | {Muestra el frame correspondiente a un nodo. La correspondencia Frame-nodo, debe 187 | haberse indicado con LinkFrameToTreeView(). 188 | Si no encuentra el frame para mostrar, devuelve FALSE.} 189 | var 190 | id: String; 191 | f: TFrame; 192 | begin 193 | HideAllFrames(form); 194 | id := IdFromTTreeNode(node); 195 | //Ubica al Frame 196 | for f in ListOfFrames(form) do begin 197 | if pos(id+'|', f.Hint)<>0 then begin 198 | ShowFramePos(f, x, y); //muestra 199 | exit(true); 200 | end; 201 | end; 202 | //No encontró 203 | exit(false) 204 | end; 205 | 206 | end. 207 | 208 | -------------------------------------------------------------------------------- /_source/FormConfig.lfm: -------------------------------------------------------------------------------- 1 | object Config: TConfig 2 | Left = 357 3 | Height = 448 4 | Top = 181 5 | Width = 605 6 | BorderStyle = bsDialog 7 | Caption = 'Settings' 8 | ClientHeight = 448 9 | ClientWidth = 605 10 | DesignTimePPI = 120 11 | OnCreate = FormCreate 12 | OnDestroy = FormDestroy 13 | OnShow = FormShow 14 | LCLVersion = '2.0.10.0' 15 | object TreeView1: TTreeView 16 | Left = 0 17 | Height = 385 18 | Top = 0 19 | Width = 170 20 | Align = alLeft 21 | Font.CharSet = ANSI_CHARSET 22 | Font.Height = -17 23 | Font.Name = 'Calibri' 24 | Font.Pitch = fpVariable 25 | Font.Quality = fqDraft 26 | ParentFont = False 27 | ReadOnly = True 28 | TabOrder = 0 29 | OnClick = TreeView1Click 30 | Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] 31 | Items.Data = { 32 | F9FFFFFF020004000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020000000000 33 | 0000010700000047656E6572616CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 34 | 000000000000000700000047656E6572616CFFFFFFFFFFFFFFFFFFFFFFFFFFFF 35 | FFFF0000000000000000000B00000050617468732F46696C6573FFFFFFFFFFFF 36 | FFFFFFFFFFFFFFFFFFFF020000000000000001060000004D6163726F73FFFFFF 37 | FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000800000053657474696E 38 | 6773FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000600000045 39 | 6469746F72FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0100000000000000010D00 40 | 000052656D6F746520456469746F72FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 41 | 000000000000000006000000456469746F72FFFFFFFFFFFFFFFFFFFFFFFFFFFF 42 | FFFF0000000000000000000F00000052656D6F7465204578706C6F726572 43 | } 44 | end 45 | object Panel1: TPanel 46 | Left = 0 47 | Height = 63 48 | Top = 385 49 | Width = 605 50 | Align = alBottom 51 | ClientHeight = 63 52 | ClientWidth = 605 53 | TabOrder = 1 54 | object bitAceptar: TBitBtn 55 | Left = 210 56 | Height = 38 57 | Top = 12 58 | Width = 94 59 | Default = True 60 | DefaultCaption = True 61 | Kind = bkOK 62 | OnClick = bitAceptarClick 63 | ParentFont = False 64 | TabOrder = 0 65 | end 66 | object bitAplicar: TBitBtn 67 | Left = 330 68 | Height = 38 69 | Top = 12 70 | Width = 100 71 | Caption = 'A&plicar' 72 | Kind = bkYes 73 | OnClick = bitAplicarClick 74 | ParentFont = False 75 | TabOrder = 1 76 | end 77 | object bitCancel: TBitBtn 78 | Left = 460 79 | Height = 38 80 | Top = 12 81 | Width = 94 82 | Cancel = True 83 | DefaultCaption = True 84 | Kind = bkCancel 85 | ModalResult = 2 86 | OnClick = bitCancelClick 87 | ParentFont = False 88 | TabOrder = 2 89 | end 90 | end 91 | object PageControl1: TPageControl 92 | Left = 170 93 | Height = 385 94 | Top = 0 95 | Width = 435 96 | ActivePage = TabRemExpl 97 | Align = alClient 98 | TabIndex = 5 99 | TabOrder = 2 100 | object TabGeneral: TTabSheet 101 | Caption = 'TabGeneral' 102 | ClientHeight = 352 103 | ClientWidth = 427 104 | object chkOpenLast: TCheckBox 105 | Left = 16 106 | Height = 24 107 | Top = 24 108 | Width = 213 109 | Caption = '&Open last edited file on start' 110 | TabOrder = 0 111 | end 112 | end 113 | object TabFilePath: TTabSheet 114 | Caption = 'TabFilePath' 115 | ClientHeight = 352 116 | ClientWidth = 427 117 | object lblRutScript: TLabel 118 | Left = 24 119 | Height = 20 120 | Top = 24 121 | Width = 101 122 | Caption = '&Temporal path:' 123 | ParentColor = False 124 | end 125 | object DirectoryEdit1: TDirectoryEdit 126 | Left = 24 127 | Height = 28 128 | Top = 48 129 | Width = 336 130 | ShowHidden = False 131 | ButtonWidth = 23 132 | NumGlyphs = 1 133 | MaxLength = 0 134 | TabOrder = 0 135 | end 136 | object lblRutMac: TLabel 137 | Left = 24 138 | Height = 20 139 | Top = 80 140 | Width = 85 141 | Caption = '&Macros path:' 142 | ParentColor = False 143 | end 144 | object DirectoryEdit2: TDirectoryEdit 145 | Left = 24 146 | Height = 28 147 | Top = 104 148 | Width = 336 149 | ShowHidden = False 150 | ButtonWidth = 23 151 | NumGlyphs = 1 152 | MaxLength = 0 153 | TabOrder = 1 154 | end 155 | object lblRutLeng: TLabel 156 | Left = 24 157 | Height = 20 158 | Top = 136 159 | Width = 103 160 | Caption = '&Lenguajes path:' 161 | Enabled = False 162 | ParentColor = False 163 | end 164 | object DirectoryEdit3: TDirectoryEdit 165 | Left = 24 166 | Height = 28 167 | Top = 160 168 | Width = 336 169 | ShowHidden = False 170 | ButtonWidth = 23 171 | NumGlyphs = 1 172 | Enabled = False 173 | MaxLength = 0 174 | TabOrder = 2 175 | end 176 | end 177 | object TabMacSett: TTabSheet 178 | Caption = 'TabMacSett' 179 | ClientHeight = 294 180 | ClientWidth = 403 181 | object edTpoMax: TEdit 182 | Left = 216 183 | Height = 28 184 | Top = 72 185 | Width = 56 186 | Alignment = taRightJustify 187 | TabOrder = 0 188 | Text = 'edTpoMax' 189 | end 190 | object Label1: TLabel 191 | Left = 32 192 | Height = 20 193 | Top = 76 194 | Width = 125 195 | Caption = 'Timeout. (seconds)' 196 | ParentColor = False 197 | end 198 | object chkMarLin: TCheckBox 199 | Left = 32 200 | Height = 24 201 | Top = 32 202 | Width = 215 203 | Caption = 'Highlight line that is running.' 204 | Enabled = False 205 | TabOrder = 1 206 | end 207 | end 208 | object TabMacEdit: TTabSheet 209 | Caption = 'TabMacEdit' 210 | end 211 | object TabRemEdEdit: TTabSheet 212 | Caption = 'TabRemEdEdit' 213 | end 214 | object TabRemExpl: TTabSheet 215 | Caption = 'TabRemExpl' 216 | ClientHeight = 352 217 | ClientWidth = 427 218 | object edTpoMax1: TEdit 219 | Left = 256 220 | Height = 28 221 | Top = 32 222 | Width = 56 223 | Alignment = taRightJustify 224 | TabOrder = 0 225 | Text = 'edTpoMax1' 226 | end 227 | object Label2: TLabel 228 | Left = 32 229 | Height = 40 230 | Top = 24 231 | Width = 160 232 | AutoSize = False 233 | Caption = 'Time for waiting terminal (seconds):' 234 | ParentColor = False 235 | WordWrap = True 236 | end 237 | object chkListDet: TCheckBox 238 | Left = 32 239 | Height = 24 240 | Top = 120 241 | Width = 194 242 | Caption = 'Show detailed list of files.' 243 | TabOrder = 1 244 | end 245 | object chkMosOcul: TCheckBox 246 | Left = 32 247 | Height = 24 248 | Top = 152 249 | Width = 141 250 | Caption = 'Show hidden files' 251 | TabOrder = 2 252 | end 253 | object chkRefDesp: TCheckBox 254 | Left = 32 255 | Height = 24 256 | Top = 184 257 | Width = 230 258 | Caption = 'Refresh list, after any operation' 259 | TabOrder = 3 260 | end 261 | object chkMosRut: TCheckBox 262 | Left = 32 263 | Height = 24 264 | Top = 88 265 | Width = 152 266 | Caption = 'Show currente path' 267 | TabOrder = 4 268 | end 269 | end 270 | end 271 | end 272 | -------------------------------------------------------------------------------- /_source/TTerm.lpi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | <ResourceType Value="res"/> 13 | <UseXPManifest Value="True"/> 14 | <Icon Value="0"/> 15 | </General> 16 | <i18n> 17 | <EnableI18N Value="True"/> 18 | <OutDir Value="languages"/> 19 | </i18n> 20 | <BuildModes Count="2"> 21 | <Item1 Name="Debug" Default="True"/> 22 | <Item2 Name="Release"> 23 | <CompilerOptions> 24 | <Version Value="11"/> 25 | <PathDelim Value="\"/> 26 | <Target> 27 | <Filename Value="..\TitoTerm"/> 28 | </Target> 29 | <SearchPaths> 30 | <IncludeFiles Value="$(ProjOutDir)"/> 31 | <OtherUnitFiles Value="..\_libraries\MiConfig-0.4.2;..\_libraries\Xpres-1.3.2;..\_libraries\MisUtils-0.6;..\_libraries\UnTerminal-1.0;..\_libraries\SynFacilUtils-1.24;..\_libraries\PreSQL 2.4"/> 32 | <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> 33 | </SearchPaths> 34 | <CodeGeneration> 35 | <SmartLinkUnit Value="True"/> 36 | </CodeGeneration> 37 | <Linking> 38 | <Debugging> 39 | <GenerateDebugInfo Value="False"/> 40 | <DebugInfoType Value="dsDwarf2Set"/> 41 | </Debugging> 42 | <LinkSmart Value="True"/> 43 | <Options> 44 | <Win32> 45 | <GraphicApplication Value="True"/> 46 | </Win32> 47 | </Options> 48 | </Linking> 49 | <Other> 50 | <CompilerMessages> 51 | <IgnoredMessages idx5057="True" idx5024="True"/> 52 | </CompilerMessages> 53 | </Other> 54 | </CompilerOptions> 55 | </Item2> 56 | </BuildModes> 57 | <PublishOptions> 58 | <Version Value="2"/> 59 | </PublishOptions> 60 | <RunParams> 61 | <FormatVersion Value="2"/> 62 | <Modes Count="1"> 63 | <Mode0 Name="default"/> 64 | </Modes> 65 | </RunParams> 66 | <RequiredPackages Count="3"> 67 | <Item1> 68 | <PackageName Value="IDEIntf"/> 69 | </Item1> 70 | <Item2> 71 | <PackageName Value="SynEdit"/> 72 | </Item2> 73 | <Item3> 74 | <PackageName Value="LCL"/> 75 | </Item3> 76 | </RequiredPackages> 77 | <Units Count="20"> 78 | <Unit0> 79 | <Filename Value="TTerm.lpr"/> 80 | <IsPartOfProject Value="True"/> 81 | </Unit0> 82 | <Unit1> 83 | <Filename Value="FormPrincipal.pas"/> 84 | <IsPartOfProject Value="True"/> 85 | <ComponentName Value="frmPrincipal"/> 86 | <HasResources Value="True"/> 87 | <ResourceBaseClass Value="Form"/> 88 | </Unit1> 89 | <Unit2> 90 | <Filename Value="FormQuickConnect.pas"/> 91 | <IsPartOfProject Value="True"/> 92 | <ComponentName Value="frmQuickConnect"/> 93 | <HasResources Value="True"/> 94 | <ResourceBaseClass Value="Form"/> 95 | </Unit2> 96 | <Unit3> 97 | <Filename Value="FormConfig.pas"/> 98 | <IsPartOfProject Value="True"/> 99 | <ComponentName Value="Config"/> 100 | <HasResources Value="True"/> 101 | <ResourceBaseClass Value="Form"/> 102 | </Unit3> 103 | <Unit4> 104 | <Filename Value="globales.pas"/> 105 | <IsPartOfProject Value="True"/> 106 | <UnitName Value="Globales"/> 107 | </Unit4> 108 | <Unit5> 109 | <Filename Value="uResaltTerm.pas"/> 110 | <IsPartOfProject Value="True"/> 111 | </Unit5> 112 | <Unit6> 113 | <Filename Value="FormEditMacros.pas"/> 114 | <IsPartOfProject Value="True"/> 115 | <ComponentName Value="frmEditMacros"/> 116 | <HasResources Value="True"/> 117 | <ResourceBaseClass Value="Form"/> 118 | </Unit6> 119 | <Unit7> 120 | <Filename Value="FrameExpRemoto.pas"/> 121 | <IsPartOfProject Value="True"/> 122 | <ComponentName Value="fraExpRemoto"/> 123 | <HasResources Value="True"/> 124 | <ResourceBaseClass Value="Frame"/> 125 | </Unit7> 126 | <Unit8> 127 | <Filename Value="FormRemoteExplor.pas"/> 128 | <IsPartOfProject Value="True"/> 129 | <ComponentName Value="frmRemoteExplor"/> 130 | <HasResources Value="True"/> 131 | <ResourceBaseClass Value="Form"/> 132 | </Unit8> 133 | <Unit9> 134 | <Filename Value="FormRemoteEditor.pas"/> 135 | <IsPartOfProject Value="True"/> 136 | <ComponentName Value="frmRemoteEditor"/> 137 | <HasResources Value="True"/> 138 | <ResourceBaseClass Value="Form"/> 139 | </Unit9> 140 | <Unit10> 141 | <Filename Value="FormRemoteOpenDial.pas"/> 142 | <IsPartOfProject Value="True"/> 143 | <ComponentName Value="frmRemoteOpenDial"/> 144 | <HasResources Value="True"/> 145 | <ResourceBaseClass Value="Form"/> 146 | </Unit10> 147 | <Unit11> 148 | <Filename Value="GenCod.pas"/> 149 | <IsPartOfProject Value="True"/> 150 | </Unit11> 151 | <Unit12> 152 | <Filename Value="FrameTabSessions.pas"/> 153 | <IsPartOfProject Value="True"/> 154 | <ComponentName Value="fraTabSessions"/> 155 | <HasResources Value="True"/> 156 | <ResourceBaseClass Value="Frame"/> 157 | </Unit12> 158 | <Unit13> 159 | <Filename Value="FrameTabSession.pas"/> 160 | <IsPartOfProject Value="True"/> 161 | <ComponentName Value="fraTabSession"/> 162 | <HasResources Value="True"/> 163 | <ResourceBaseClass Value="Frame"/> 164 | </Unit13> 165 | <Unit14> 166 | <Filename Value="FormSesProperty.pas"/> 167 | <IsPartOfProject Value="True"/> 168 | <ComponentName Value="frmSesProperty"/> 169 | <HasResources Value="True"/> 170 | <ResourceBaseClass Value="Form"/> 171 | </Unit14> 172 | <Unit15> 173 | <Filename Value="FrameCfgSynEdit.pas"/> 174 | <IsPartOfProject Value="True"/> 175 | <ComponentName Value="fraCfgSynEdit"/> 176 | <HasResources Value="True"/> 177 | <ResourceBaseClass Value="Frame"/> 178 | </Unit15> 179 | <Unit16> 180 | <Filename Value="Comandos.pas"/> 181 | <IsPartOfProject Value="True"/> 182 | </Unit16> 183 | <Unit17> 184 | <Filename Value="parser.pas"/> 185 | <IsPartOfProject Value="True"/> 186 | <UnitName Value="Parser"/> 187 | </Unit17> 188 | <Unit18> 189 | <Filename Value="FrameCfgSyntax.pas"/> 190 | <IsPartOfProject Value="True"/> 191 | <ComponentName Value="fraCfgSyntax"/> 192 | <ResourceBaseClass Value="Frame"/> 193 | </Unit18> 194 | <Unit19> 195 | <Filename Value="RegExpr2.pas"/> 196 | <IsPartOfProject Value="True"/> 197 | </Unit19> 198 | </Units> 199 | </ProjectOptions> 200 | <CompilerOptions> 201 | <Version Value="11"/> 202 | <PathDelim Value="\"/> 203 | <Target> 204 | <Filename Value="..\TitoTerm"/> 205 | </Target> 206 | <SearchPaths> 207 | <IncludeFiles Value="$(ProjOutDir)"/> 208 | <OtherUnitFiles Value="..\_libraries\MiConfig-0.4.2;..\_libraries\Xpres-1.3.2;..\_libraries\MisUtils-0.6;..\_libraries\UnTerminal-1.0;..\_libraries\SynFacilUtils-1.24;..\_libraries\PreSQL 2.4"/> 209 | <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> 210 | </SearchPaths> 211 | <Parsing> 212 | <SyntaxOptions> 213 | <IncludeAssertionCode Value="True"/> 214 | </SyntaxOptions> 215 | </Parsing> 216 | <CodeGeneration> 217 | <Checks> 218 | <IOChecks Value="True"/> 219 | <RangeChecks Value="True"/> 220 | <OverflowChecks Value="True"/> 221 | <StackChecks Value="True"/> 222 | </Checks> 223 | </CodeGeneration> 224 | <Linking> 225 | <Debugging> 226 | <DebugInfoType Value="dsDwarf2"/> 227 | <UseHeaptrc Value="True"/> 228 | <UseExternalDbgSyms Value="True"/> 229 | </Debugging> 230 | </Linking> 231 | <Other> 232 | <CompilerMessages> 233 | <IgnoredMessages idx5057="True" idx5024="True"/> 234 | </CompilerMessages> 235 | </Other> 236 | </CompilerOptions> 237 | <Debugging> 238 | <Exceptions Count="3"> 239 | <Item1> 240 | <Name Value="EAbort"/> 241 | </Item1> 242 | <Item2> 243 | <Name Value="ECodetoolError"/> 244 | </Item2> 245 | <Item3> 246 | <Name Value="EFOpenError"/> 247 | </Item3> 248 | </Exceptions> 249 | </Debugging> 250 | </CONFIG> 251 | -------------------------------------------------------------------------------- /_source/FrameCfgSynEdit.pas: -------------------------------------------------------------------------------- 1 | {Unidad con frame para almacenar y configurar las propiedades de un editor 2 | SynEdit. Las propiedades que se manejan son con respecto al coloreado. 3 | El frame definido, está pensado para usarse en una ventana de configuración. 4 | También incluye una lista para almacenamiento de los archivos recientes 5 | Por Tito Hinostroza 23/11/2013 6 | } 7 | unit FrameCfgSynEdit; 8 | {$mode objfpc}{$H+} 9 | interface 10 | uses 11 | Classes, SysUtils, Forms, StdCtrls, Dialogs, SynEdit, Graphics, Spin, LCLType, 12 | Globales, MiConfigXML, MiConfigBasic, SynEditMarkupHighAll, SynEditMarkup, 13 | SynPluginSyncroEdit, SynPluginMultiCaret; 14 | type 15 | 16 | { TfraCfgSynEdit } 17 | TfraCfgSynEdit = class(TFrame) 18 | cbutFonPan: TColorButton; 19 | cbutResPalCFon: TColorButton; 20 | cbutResPalCTxt: TColorButton; 21 | cbutResPalCBor: TColorButton; 22 | cbutTxtPan: TColorButton; 23 | chkFullWord: TCheckBox; 24 | chkHighCurWord: TCheckBox; 25 | chkVerBarDesH: TCheckBox; 26 | chkVerBarDesV: TCheckBox; 27 | chkVerPanVer: TCheckBox; 28 | chkHighCurLin: TCheckBox; 29 | cbutLinAct: TColorButton; 30 | chkVerNumLin: TCheckBox; 31 | chkVerMarPle: TCheckBox; 32 | cbutBackCol: TColorButton; 33 | cbutTextCol: TColorButton; 34 | cmbTipoLetra: TComboBox; 35 | GroupBox1: TGroupBox; 36 | GroupBox2: TGroupBox; 37 | Label1: TLabel; 38 | Label10: TLabel; 39 | Label11: TLabel; 40 | Label12: TLabel; 41 | Label2: TLabel; 42 | Label3: TLabel; 43 | Label6: TLabel; 44 | Label7: TLabel; 45 | Label8: TLabel; 46 | Label9: TLabel; 47 | spTam: TSpinEdit; 48 | procedure chkHighCurLinChange(Sender: TObject); 49 | procedure chkHighCurWordChange(Sender: TObject); 50 | procedure chkVerPanVerChange(Sender: TObject); 51 | public 52 | //Configuración del editor 53 | TipLet : string; //Tipo de letra 54 | TamLet : integer; //Tamaño de letra 55 | showVertSB : boolean; //Mostrar barra de desplazamiento vertical. 56 | showHoriSB : boolean; //Mostrar barra de desplazamiento horizontal. 57 | MarLinAct : boolean; //marcar línea actual 58 | Autoindent : boolean; //Autotabulación 59 | ResPalAct : boolean; //Resaltar palabra actual 60 | ResPalCFon : TColor; //Color de fondo de la palabra actual 61 | ResPalCTxt : TColor; //Color de texto de la palabra actual 62 | ResPalCBor : TColor; //Color de borde de la palabra actual 63 | ResPalFWord: Boolean; //Activa "palabra completa" 64 | 65 | cTxtNor : TColor; //color de texto normal 66 | cFonEdi : TColor; //Color de fondo del control de edición 67 | cFonSel : TColor; //color del fondo de la selección 68 | cTxtSel : TColor; //color del texto de la selección 69 | cLinAct : TColor; //color de la línea actual 70 | //Panel vertical 71 | VerPanVer : boolean; //ver pánel vertical 72 | VerNumLin : boolean; //ver número de línea 73 | VerMarPle : boolean; //ver marcas de plegado 74 | cFonPan : TColor; //color de fondo del panel vertical 75 | cTxtPan : TColor; //color de texto del panel vertical 76 | ArcRecientes: TStringList; //Lista de archivos recientes 77 | 78 | procedure PropToWindow; 79 | procedure Iniciar(section: string; cfgFile: TMiConfigXML; colFonDef: TColor = 80 | clWhite); //Inicia el frame 81 | procedure ConfigEditor(ed: TSynEdit); 82 | public 83 | //Genera constructor y destructor 84 | constructor Create(AOwner: TComponent) ; override; 85 | destructor Destroy; override; 86 | end; 87 | 88 | implementation 89 | {$R *.lfm} 90 | //const 91 | // MAX_ARC_REC = 5; //si se cambia, actualizar ActualMenusReciente() 92 | 93 | procedure TfraCfgSynEdit.Iniciar(section: string; cfgFile: TMiConfigXML; 94 | colFonDef: TColor = clWhite); 95 | var 96 | s: TParElem; 97 | begin 98 | //Asigna referencia necesarias 99 | //Crea las relaciones variable-control 100 | 101 | s:=cfgFile.Asoc_Str(section+ '/TipLet' , @TipLet, cmbTipoLetra, 'Courier New'); 102 | s:=cfgFile.Asoc_Int(section+ '/TamLet' , @TamLet, spTam, 10); 103 | 104 | s:=cfgFile.Asoc_Bol(section+ '/showVertSB', @showVertSB, chkVerBarDesV, true); 105 | s:=cfgFile.Asoc_Bol(section+ '/showHoriSB', @showHoriSB, chkVerBarDesH, true); 106 | 107 | s:=cfgFile.Asoc_TCol(section+ '/cTxtNor', @cTxtNor, cbutTextCol, clBlack); 108 | s.categ := 1; //marca como propiedad de tipo "Tema" 109 | s:=cfgFile.Asoc_TCol(section+ '/cFonEdi', @cFonEdi, cbutBackCol, colFonDef); 110 | s.categ := 1; //marca como propiedad de tipo "Tema" 111 | s:=cfgFile.Asoc_TCol(section+ '/cLinAct', @cLinAct, cbutLinAct, clYellow); 112 | s.categ := 1; //marca como propiedad de tipo "Tema" 113 | 114 | s:=cfgFile.Asoc_Bol(section+ '/MarLinAct' , @MarLinAct , chkHighCurLin , false); 115 | 116 | s:=cfgFile.Asoc_Bol(section+ '/ResPalCur' , @ResPalAct , chkHighCurWord , true); 117 | s.categ := 1; 118 | s:=cfgFile.Asoc_TCol(section+ '/ResPalCFon',@ResPalCFon, cbutResPalCFon, clSkyBlue); 119 | s.categ := 1; 120 | s:=cfgFile.Asoc_TCol(section+ '/ResPalCTxt',@ResPalCTxt, cbutResPalCTxt, clBlack); 121 | s.categ := 1; 122 | s:=cfgFile.Asoc_TCol(section+ '/ResPalCBor',@ResPalCBor, cbutResPalCBor, clSkyBlue); 123 | s.categ := 1; 124 | s:=cfgFile.Asoc_Bol(section+ '/ResPalFWord',@ResPalFWord, chkFullWord, false); 125 | 126 | s:=cfgFile.Asoc_Bol(section+ '/VerPanVer', @VerPanVer, chkVerPanVer, true); 127 | s:=cfgFile.Asoc_Bol(section+ '/VerNumLin', @VerNumLin, chkVerNumLin, false); 128 | s:=cfgFile.Asoc_Bol(section+ '/VerMarPle', @VerMarPle, chkVerMarPle, true); 129 | s:=cfgFile.Asoc_TCol(section+ '/cFonPan' , @cFonPan , cbutFonPan , clWhite); 130 | s.categ := 1; //marca como propiedad de tipo "Tema" 131 | s:=cfgFile.Asoc_TCol(section+ '/cTxtPan' , @cTxtPan , cbutTxtPan , clBlack); 132 | s.categ := 1; //marca como propiedad de tipo "Tema" 133 | 134 | cfgFile.Asoc_StrList(section+ '/recient', @ArcRecientes); 135 | end; 136 | 137 | procedure TfraCfgSynEdit.chkVerPanVerChange(Sender: TObject); 138 | begin 139 | chkVerNumLin.Enabled:=chkVerPanVer.Checked; 140 | chkVerMarPle.Enabled:=chkVerPanVer.Checked; 141 | cbutFonPan.Enabled:=chkVerPanVer.Checked; 142 | cbutTxtPan.Enabled:=chkVerPanVer.Checked; 143 | label2.Enabled:=chkVerPanVer.Checked; 144 | label3.Enabled:=chkVerPanVer.Checked; 145 | end; 146 | procedure TfraCfgSynEdit.chkHighCurLinChange(Sender: TObject); 147 | begin 148 | label1.Enabled:=chkHighCurLin.Checked; 149 | cbutLinAct.Enabled:=chkHighCurLin.Checked; 150 | end; 151 | procedure TfraCfgSynEdit.chkHighCurWordChange(Sender: TObject); 152 | begin 153 | label10.Enabled:=chkHighCurWord.Checked; 154 | cbutResPalCFon.Enabled:=chkHighCurWord.Checked; 155 | end; 156 | procedure TfraCfgSynEdit.PropToWindow; 157 | begin 158 | inherited; 159 | chkHighCurLinChange(self); //para actualizar 160 | chkVerPanVerChange(self); //para actualizar 161 | end; 162 | constructor TfraCfgSynEdit.Create(AOwner: TComponent); 163 | begin 164 | inherited Create(AOwner); 165 | ArcRecientes := TStringList.Create; //crea lista 166 | cmbTipoLetra.Items.Clear; 167 | cmbTipoLetra.Items.Add('Courier New'); 168 | cmbTipoLetra.Items.Add('Fixedsys'); 169 | cmbTipoLetra.Items.Add('Lucida Console'); 170 | cmbTipoLetra.Items.Add('Consolas'); 171 | cmbTipoLetra.Items.Add('Cambria'); 172 | end; 173 | destructor TfraCfgSynEdit.Destroy; 174 | begin 175 | FreeAndNil(ArcRecientes); 176 | inherited Destroy; 177 | end; 178 | procedure TfraCfgSynEdit.ConfigEditor(ed: TSynEdit); 179 | {Configura el editor con las propiedades almacenadas} 180 | var 181 | marc: TSynEditMarkup; 182 | fSynchro: TSynPluginSyncroEdit; 183 | fMultiCaret: TSynPluginMultiCaret; 184 | begin 185 | if ed = nil then exit; //protección 186 | 187 | //Tipo de texto 188 | if TipLet <> '' then ed.Font.Name:=TipLet; 189 | if (TamLet > 6) and (TamLet < 32) then ed.Font.Size:=Round(TamLet); 190 | //Colores 191 | ed.Font.Color:=cTxtNor; //color de texto normal 192 | ed.Color:=cFonEdi; //color de fondo 193 | //Resaltado de línea actual 194 | if MarLinAct then 195 | ed.LineHighlightColor.Background:=cLinAct 196 | else 197 | ed.LineHighlightColor.Background:=clNone; 198 | //Configura panel vertical 199 | ed.Gutter.Visible:=VerPanVer; //muestra panel vertical 200 | ed.Gutter.Parts[1].Visible:=VerNumLin; //Número de línea 201 | if ed.Gutter.Parts.Count>4 then 202 | ed.Gutter.Parts[4].Visible:=VerMarPle; //marcas de plegado 203 | ed.Gutter.Color:=cFonPan; //color de fondo del panel 204 | ed.Gutter.Parts[1].MarkupInfo.Background:=cFonPan; //fondo del núemro de línea 205 | ed.Gutter.Parts[1].MarkupInfo.Foreground:=cTxtPan; //texto del núemro de línea 206 | 207 | if showVertSB and showHoriSB then //barras de desplazamiento 208 | ed.ScrollBars:= ssBoth 209 | else if showVertSB and not showHoriSB then 210 | ed.ScrollBars:= ssVertical 211 | else if not showVertSB and showHoriSB then 212 | ed.ScrollBars:= ssHorizontal 213 | else 214 | ed.ScrollBars := ssNone; 215 | 216 | ////////Configura el resaltado de la palabra actual ////////// 217 | marc := ed.MarkupByClass[TSynEditMarkupHighlightAllCaret]; 218 | if marc<>nil then begin //hay marcador 219 | marc.Enabled:=ResPalAct; //configura 220 | marc.MarkupInfo.Background := ResPalCFon; 221 | marc.MarkupInfo.FrameColor := ResPalCBor; 222 | marc.MarkupInfo.Foreground := ResPalCTxt; 223 | TSynEditMarkupHighlightAllCaret(marc).FullWord := ResPalFWord; 224 | end; 225 | ///////fija color de delimitadores () {} [] /////////// 226 | ed.BracketMatchColor.Foreground := clRed; 227 | 228 | //Crea un "plugin" de edición síncrona 229 | fSynchro := TSynPluginSyncroEdit.Create(self); 230 | fSynchro.Editor := ed; 231 | 232 | //Configura múltiples cursores 233 | fMultiCaret := TSynPluginMultiCaret.Create(self); 234 | with fMultiCaret do begin 235 | Editor := ed; 236 | with KeyStrokes do begin 237 | Add.Command := ecPluginMultiCaretSetCaret; 238 | Add.Key := VK_INSERT; 239 | Add.Shift := [ssShift, ssCtrl]; 240 | Add.ShiftMask := [ssShift,ssCtrl,ssAlt]; 241 | // Add.Command := ecPluginMultiCaretUnsetCaret; 242 | // Add.Key := VK_DELETE; 243 | // Add.Shift := [ssShift, ssCtrl]; 244 | // Add.ShiftMask := [ssShift,ssCtrl,ssAlt]; 245 | end; 246 | end; 247 | 248 | end; 249 | 250 | end. 251 | 252 | -------------------------------------------------------------------------------- /_libraries/MiConfig-0.4.2/MiConfigINI.pas: -------------------------------------------------------------------------------- 1 | { 2 | MiConfigIni 0.1b 3 | ============= 4 | Por Tito Hinostroza 29/07/2016 5 | 6 | Descripción 7 | =========== 8 | Unidad con rutinas de lectura/escritura de propiedades en archivos INI. Permite crear 9 | fácilmente, una ventana de configuración, con las opciones: ACEPTAR y CANCELAR. 10 | Está basado en la librería ConfigFrame, pero a diferencia de esta, aquí las propiedades 11 | no se separan en "frames", sino que todas las propiedades se manejan en un mismo objeto. 12 | Para alamacenar las propiedades, se debe crear un objeto TMiConfigINI. Sin embargo, 13 | la unidad crea por defecto, una isntancia de TMiConfigINI, llamada "cfgFile", que toma 14 | como nombre <nombre del proyecto>.ini 15 | Tiene como dependencia a la librería MisUtils. 16 | 17 | Por Tito Hinostroza 29/07/2016 18 | } 19 | unit MiConfigINI; 20 | {$mode objfpc}{$H+} 21 | interface 22 | uses 23 | Classes, SysUtils, Graphics, Forms, LCLType, IniFiles, MiConfigBasic; 24 | type 25 | { TMiConfigINI } 26 | {Clase base que es usada para manejar los campos de configuración.} 27 | TMiConfigINI = class(TMiConfigBasic) 28 | protected 29 | fileName : string; //archivo XML 30 | function DefaultFileName: string; 31 | procedure FileProperty(iniCfg: TIniFile; const r: TParElem; FileToProp: boolean); 32 | function LoadINIFile(filName: string; out iniCfg: TIniFile): boolean; 33 | public 34 | secINI: string; //sección donde se guardarán los datos en un archivo INI 35 | procedure VerifyFile; 36 | function FileToProperties: boolean; virtual; 37 | function PropertiesToFile: boolean; virtual; 38 | function GetFileName: string; 39 | procedure SetFileName(AValue: string); 40 | public //Constructor y Destructor 41 | constructor Create(INIfile0: string); 42 | destructor Destroy; override; 43 | end; 44 | 45 | var 46 | cfgFile : TMiConfigINI; //Default INI Config file 47 | 48 | implementation 49 | //Funciones de uso interno 50 | function CodeStr(s:string): string; 51 | {Protege a una cadena para que no pierda los espacios laterales si es que los tiene, 52 | porque el el archivo INI se pierden. Además codifica el caracter "=", porque es 53 | reservado en el archvio INI} 54 | begin 55 | Result := '.'+s+'.'; 56 | Result := StringReplace(Result, '=', #25, [rfReplaceAll]); //protege caracter 57 | Result := StringReplace(Result, LineEnding, #26, [rfReplaceAll]); //protege caracter 58 | end; 59 | function DecodeStr(s:string): string; 60 | {Quita la protección a una cadena que ha sido guardada en un archivo INI} 61 | begin 62 | Result:=copy(s,2,length(s)-2); 63 | Result := StringReplace(Result, #25, '=', [rfReplaceAll]); //protege caracter 64 | Result := StringReplace(Result, #26, LineEnding, [rfReplaceAll]); //protege caracter 65 | end; 66 | { TMiConfigINI } 67 | function TMiConfigINI.LoadINIFile(filName: string; out iniCfg: TIniFile): boolean; 68 | {Carga el archivo "filName" en iniCfg. Si hay error, actualiza "MsjError" y 69 | devuelve FALSE. Función creada para uso interno de la clase.} 70 | begin 71 | msjErr := ''; 72 | Result := true; 73 | if not FileExists(filName) then begin 74 | ctlErr := nil; 75 | MsjErr := 'INI file does not exist.'; //error 76 | exit(false); //para que no intente leer 77 | end; 78 | try 79 | iniCfg := TIniFile.Create(filName); 80 | 81 | except 82 | ctlErr := nil; 83 | MsjErr := Format('Error reading INI file: %s', [filName]); 84 | iniCfg.Free; 85 | exit(false); 86 | end; 87 | end; 88 | function TMiConfigINI.DefaultFileName: string; 89 | {Devuelve el nombre pro defecto del archvio de configuración} 90 | begin 91 | Result := ChangeFileExt(Application.ExeName,'.ini'); 92 | end; 93 | procedure TMiConfigINI.VerifyFile; 94 | //Verifica si el archivo INI "FileName" existe. Si no, muestra un mensaje y lo crea. 95 | var 96 | F: textfile; 97 | begin 98 | if not FileExists(fileName) then begin 99 | Application.MessageBox( 100 | Pchar(Format('No INI file found: %s', [fileName])), 101 | '', MB_ICONERROR); 102 | //Crea uno vacío para leer las opciones por defecto 103 | AssignFile(F, fileName); 104 | Rewrite(F); 105 | CloseFile(F); 106 | end; 107 | end; 108 | procedure TMiConfigINI.FileProperty(iniCfg: TIniFile; const r: TParElem; FileToProp: boolean); 109 | {Permite leer o escribir una propiedad en el archivo XML} 110 | var 111 | n, j: Integer; 112 | list: TStringList; 113 | strlst: TStringList; 114 | c: TColor; 115 | begin 116 | if r.varRef = nil then exit; //se inició con NIL 117 | case r.asType of 118 | tp_Int, tp_Int_TEdit, tp_Int_TSpinEdit, tp_Int_TRadioGroup: 119 | if FileToProp then begin //lee entero 120 | r.AsInteger := iniCfg.ReadInteger(secINI, r.asLabel, r.defInt); 121 | end else begin 122 | iniCfg.WriteInteger(secINI, r.asLabel, r.AsInteger); 123 | end; 124 | //--------------------------------------------------------------------- 125 | tp_Dbl, tp_Dbl_TEdit, tp_Dbl_TFloatSpinEdit: 126 | if FileToProp then begin 127 | r.AsDouble := iniCfg.ReadFloat(secINI, r.asLabel, r.defDbl); 128 | end else begin 129 | iniCfg.WriteFloat(secINI, r.asLabel, r.AsDouble); 130 | end; 131 | //--------------------------------------------------------------------- 132 | tp_Str, tp_Str_TEdit, tp_Str_TEditButton, tp_Str_TCmbBox: 133 | if FileToProp then begin //lee cadena 134 | r.AsString := DecodeStr(iniCfg.ReadString(secINI, r.asLabel, '.'+r.defStr+'.')); 135 | end else begin 136 | iniCfg.WriteString(secINI, r.asLabel, CodeStr(r.AsString)); 137 | end; 138 | //--------------------------------------------------------------------- 139 | tp_Bol, tp_Bol_TCheckBox, tp_Bol_TRadBut: 140 | if FileToProp then begin //lee booleano 141 | r.AsBoolean := iniCfg.ReadBool(secINI, r.asLabel, r.defBol); 142 | end else begin 143 | iniCfg.WriteBool(secINI, r.asLabel, r.AsBoolean); 144 | end; 145 | //--------------------------------------------------------------------- 146 | tp_Enum, tp_Enum_TRadBut, tp_Enum_TRadGroup: 147 | if FileToProp then begin //lee enumerado como entero 148 | if r.varSiz = 4 then begin //tamaño común de las variable enumeradas 149 | r.AsInt32 := iniCfg.ReadInteger(secINI, r.asLabel, r.defInt); 150 | end else begin //tamaño no implementado 151 | msjErr := 'Enumerated type no handled.'; 152 | exit; 153 | end; 154 | end else begin 155 | if r.varSiz = 4 then begin 156 | iniCfg.WriteInteger(secINI, r.asLabel, r.AsInt32); //como entero de 4 bytes 157 | end else begin //tamaño no implementado 158 | msjErr := 'Enumerated type no handled.'; 159 | exit; 160 | end; 161 | end; 162 | //--------------------------------------------------------------------- 163 | tp_TCol_TColBut, tp_TCol_TColBox: 164 | if FileToProp then begin //lee TColor 165 | r.AsTColor := iniCfg.ReadInteger(secINI, r.asLabel, r.defCol); 166 | end else begin 167 | c := r.AsTColor; 168 | iniCfg.WriteInteger(secINI, r.asLabel, c); 169 | end; 170 | tp_StrList, tp_StrList_TListBox: 171 | if FileToProp then begin //lee TStringList 172 | list := TStringList(r.varRef^); 173 | iniCfg.ReadSection(secINI+'_'+r.asLabel, list); 174 | //decodifica cadena 175 | for n:=0 to list.Count-1 do list[n] := DecodeStr(list[n]); 176 | end else begin 177 | strlst := TStringList(r.varRef^); 178 | iniCfg.EraseSection(secINI+'_'+r.asLabel); 179 | for j:= 0 to strlst.Count-1 do begin 180 | iniCfg.WriteString(secINI+'_'+r.asLabel, 181 | CodeStr(strlst[j]),''); 182 | end; 183 | end; 184 | else //no se ha implementado bien 185 | msjErr := 'Design error.'; 186 | exit; 187 | end; 188 | end; 189 | 190 | function TMiConfigINI.FileToProperties: boolean; 191 | {Lee de disco las propiedades registradas 192 | Si encuentra error devuelve FALSE, y el mensaje de error en "MsjErr", y el elemento 193 | con error en "ctlErr".} 194 | var 195 | r: TParElem; 196 | iniCfg: TIniFile; 197 | begin 198 | if not LoadINIFile(fileName, iniCfg) then exit(false); 199 | for r in listParElem do begin 200 | FileProperty(iniCfg, r, true); 201 | if msjErr<>'' then begin 202 | ctlErr := r; //elemento que produjo el error 203 | iniCfg.Free; //libera 204 | exit(false); //sale con error 205 | end; 206 | if r.OnFileToProperty<>nil then r.OnFileToProperty; 207 | end; 208 | //Terminó con éxito. Actualiza los cambios 209 | if OnPropertiesChanges<>nil then OnPropertiesChanges; 210 | ctlErr := nil; 211 | iniCfg.Free; //libera 212 | exit(true); //sale sin error 213 | end; 214 | function TMiConfigINI.PropertiesToFile: boolean; 215 | {Guarda en disco las propiedades registradas 216 | Si encuentra error devuelve FALSE, y el mensaje de error en "MsjErr", y el elemento 217 | con error en "ctlErr".} 218 | var 219 | r: TParElem; 220 | iniCfg: TIniFile; // 221 | begin 222 | if FileExists(fileName) then begin //ve si existe 223 | if FileIsReadOnly(fileName) then begin 224 | ctlErr := nil; 225 | MsjErr := 'INI file is only read.'; 226 | exit(false); 227 | end; 228 | end; 229 | try 230 | iniCfg := TIniFile.Create(fileName); 231 | except 232 | ctlErr := nil; 233 | MsjErr := Format('Error writing INI file: %s', [fileName]); 234 | exit(false); 235 | end; 236 | msjErr := ''; 237 | for r in listParElem do begin 238 | if r.OnPropertyToFile<>nil then r.OnPropertyToFile; //se ejecuta antes 239 | FileProperty(iniCfg, r, false); 240 | if msjErr<>'' then begin 241 | ctlErr := r; //elemento que produjo el error 242 | iniCfg.Free; //libera 243 | exit(false); //sale con error 244 | end; 245 | end; 246 | ctlErr := nil; 247 | iniCfg.Free; //libera 248 | exit(true); //sin error 249 | end; 250 | 251 | function TMiConfigINI.GetFileName: string; 252 | begin 253 | Result := fileName; 254 | end; 255 | 256 | procedure TMiConfigINI.SetFileName(AValue: string); 257 | begin 258 | fileName := AValue; 259 | end; 260 | //Constructor y Destructor 261 | constructor TMiConfigINI.Create(INIfile0: string); 262 | begin 263 | inherited Create; 264 | fileName := INIfile0; 265 | secINI := 'config'; //sección por defecto en archivo INI 266 | end; 267 | destructor TMiConfigINI.Destroy; 268 | begin 269 | inherited Destroy; 270 | end; 271 | 272 | initialization 273 | cfgFile := TMiConfigINI.Create(cfgFile.DefaultFileName); 274 | 275 | finalization 276 | cfgFile.Destroy; 277 | end. 278 | 279 | -------------------------------------------------------------------------------- /_source/FrameTabSession.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":106991073,"name":"tfratabsession.toolbar1.caption","sourcebytes":[84,111,111,108,66,97,114,49],"value":"ToolBar1"}, 3 | {"hash":160486419,"name":"tfratabsession.toolbutton3.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,51],"value":"ToolButton3"}, 4 | {"hash":160486425,"name":"tfratabsession.toolbutton9.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,57],"value":"ToolButton9"}, 5 | {"hash":151863763,"name":"tfratabsession.toolbutton13.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,49,51],"value":"ToolButton13"}, 6 | {"hash":151863744,"name":"tfratabsession.toolbutton20.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,50,48],"value":"ToolButton20"}, 7 | {"hash":151863748,"name":"tfratabsession.toolbutton24.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,50,52],"value":"ToolButton24"}, 8 | {"hash":192829198,"name":"tfratabsession.acfilnewses.caption","sourcebytes":[38,78,101,119,32,83,101,115,115,105,111,110],"value":"&New Session"}, 9 | {"hash":161371918,"name":"tfratabsession.acfilnewses.hint","sourcebytes":[78,101,119,32,83,101,115,115,105,111,110],"value":"New Session"}, 10 | {"hash":3317102,"name":"tfratabsession.acfilopeses.caption","sourcebytes":[38,79,112,101,110,32,83,101,115,115,105,111,110,32,46,46,46],"value":"&Open Session ..."}, 11 | {"hash":212623374,"name":"tfratabsession.acfilopeses.hint","sourcebytes":[79,112,101,110,32,83,101,115,115,105,111,110],"value":"Open Session"}, 12 | {"hash":38951214,"name":"tfratabsession.acfilsavses.caption","sourcebytes":[38,83,97,118,101,32,83,101,115,115,105,111,110],"value":"&Save Session"}, 13 | {"hash":366789,"name":"tfratabsession.acfilsavses.hint","sourcebytes":[83,97,118,101],"value":"Save"}, 14 | {"hash":152860883,"name":"tfratabsession.acfilsavsesas.caption","sourcebytes":[83,97,118,101,32,83,101,115,115,105,111,110,32,38,65,115],"value":"Save Session &As"}, 15 | {"hash":160199891,"name":"tfratabsession.acfilsavsesas.hint","sourcebytes":[83,97,118,101,32,65,115],"value":"Save As"}, 16 | {"hash":78913630,"name":"tfratabsession.acfilstarlog.caption","sourcebytes":[38,83,116,97,114,116,32,76,111,103,103,105,110,103,46,46,46],"value":"&Start Logging..."}, 17 | {"hash":167070311,"name":"tfratabsession.acfilstarlog.hint","sourcebytes":[83,116,97,114,116,32,76,111,103,103,105,110,103],"value":"Start Logging"}, 18 | {"hash":143048295,"name":"tfratabsession.acfilstoplog.caption","sourcebytes":[83,38,116,111,112,32,76,111,103,103,105,110,103],"value":"S&top Logging"}, 19 | {"hash":150388247,"name":"tfratabsession.acfilstoplog.hint","sourcebytes":[83,116,111,112,32,76,111,103,103,105,110,103],"value":"Stop Logging"}, 20 | {"hash":2868399,"name":"tfratabsession.acedundo.caption","sourcebytes":[38,85,110,100,111],"value":"&Undo"}, 21 | {"hash":378031,"name":"tfratabsession.acedundo.hint","sourcebytes":[85,110,100,111],"value":"Undo"}, 22 | {"hash":2853807,"name":"tfratabsession.acedredo.caption","sourcebytes":[38,82,101,100,111],"value":"&Redo"}, 23 | {"hash":363439,"name":"tfratabsession.acedredo.hint","sourcebytes":[82,101,100,111],"value":"Redo"}, 24 | {"hash":286148,"name":"tfratabsession.acedcut.caption","sourcebytes":[67,38,117,116],"value":"C&ut"}, 25 | {"hash":19140,"name":"tfratabsession.acedcut.hint","sourcebytes":[67,117,116],"value":"Cut"}, 26 | {"hash":2795129,"name":"tfratabsession.acedcopy.caption","sourcebytes":[38,67,111,112,121],"value":"&Copy"}, 27 | {"hash":304761,"name":"tfratabsession.acedcopy.hint","sourcebytes":[67,111,112,121],"value":"Copy"}, 28 | {"hash":45517477,"name":"tfratabsession.acedpaste.caption","sourcebytes":[38,80,97,115,116,101],"value":"&Paste"}, 29 | {"hash":5671589,"name":"tfratabsession.acedpaste.hint","sourcebytes":[80,97,115,116,101],"value":"Paste"}, 30 | {"hash":195288076,"name":"tfratabsession.acedselecall.caption","sourcebytes":[83,101,108,101,99,116,32,65,108,108],"value":"Select All"}, 31 | {"hash":195288076,"name":"tfratabsession.acedselecall.hint","sourcebytes":[83,101,108,101,99,116,32,65,108,108],"value":"Select All"}, 32 | {"hash":103855109,"name":"tfratabsession.acpcmsendlin.caption","sourcebytes":[83,101,110,100,32,38,76,105,110,101],"value":"Send &Line"}, 33 | {"hash":43621806,"name":"tfratabsession.acpcmsendlin.hint","sourcebytes":[83,101,110,100,32,99,117,114,114,101,110,116,32,108,105,110,101,32,111,114,32,115,101,108,101,99,116,105,111,110],"value":"Send current line or selection"}, 34 | {"hash":73596908,"name":"tfratabsession.acpcmsendall.caption","sourcebytes":[83,101,110,100,32,38,65,108,108],"value":"Send &All"}, 35 | {"hash":132283182,"name":"tfratabsession.acpcmsendall.hint","sourcebytes":[83,101,110,100,32,97,108,108,32,116,101,120,116,32,111,114,32,115,101,108,101,99,116,105,111,110],"value":"Send all text or selection"}, 36 | {"hash":267503795,"name":"tfratabsession.acpcmsendctrc.caption","sourcebytes":[83,101,110,100,32,67,116,38,114,108,43,67],"value":"Send Ct&rl+C"}, 37 | {"hash":82987667,"name":"tfratabsession.acpcmsendctrc.hint","sourcebytes":[83,101,110,100,32,67,116,114,108,43,67],"value":"Send Ctrl+C"}, 38 | {"hash":95173330,"name":"tfratabsession.acpcmhide.caption","sourcebytes":[79,99,117,108,116,97,114],"value":"Ocultar"}, 39 | {"hash":195585123,"name":"tfratabsession.acpcmhide.hint","sourcebytes":[79,99,117,108,116,97,114,32,80,97,110,101,108,32,100,101,32,99,111,109,97,110,100,111,115],"value":"Ocultar Panel de comandos"}, 40 | {"hash":104179838,"name":"tfratabsession.acpcmchgpos.caption","sourcebytes":[67,97,109,98,105,97,114,32,112,111,115,105,99,105,195,179,110],"value":"Cambiar posici\u00F3n"}, 41 | {"hash":42166563,"name":"tfratabsession.acpcmchgpos.hint","sourcebytes":[67,97,109,98,105,97,32,108,97,32,112,111,115,105,99,105,195,179,110,32,100,101,108,32,80,97,110,101,108,32,100,101,32,99,111,109,97,110,100,111,115],"value":"Cambia la posici\u00F3n del Panel de comandos"}, 42 | {"hash":174409988,"name":"tfratabsession.acterconec.caption","sourcebytes":[38,67,111,110,110,101,99,116],"value":"&Connect"}, 43 | {"hash":174410724,"name":"tfratabsession.acterconec.hint","sourcebytes":[67,111,110,110,101,99,116],"value":"Connect"}, 44 | {"hash":177208116,"name":"tfratabsession.acterdescon.caption","sourcebytes":[38,68,105,115,99,111,110,110,101,99,116],"value":"&Disconnect"}, 45 | {"hash":174193460,"name":"tfratabsession.acterdescon.hint","sourcebytes":[68,105,115,99,111,110,110,101,99,116],"value":"Disconnect"}, 46 | {"hash":238646498,"name":"tfratabsession.acterlimbuf.caption","sourcebytes":[38,67,108,101,97,110,32,66,117,102,102,101,114],"value":"&Clean Buffer"}, 47 | {"hash":251900978,"name":"tfratabsession.acterlimbuf.hint","sourcebytes":[67,108,101,97,110,32,116,104,101,32,115,99,114,101,101,110,32,98,117,102,102,101,114],"value":"Clean the screen buffer"}, 48 | {"hash":131401460,"name":"tfratabsession.acterdetprm.caption","sourcebytes":[68,101,116,101,99,116,32,38,80,114,111,109,112,116],"value":"Detect &Prompt"}, 49 | {"hash":229899860,"name":"tfratabsession.acterdetprm.hint","sourcebytes":[68,101,116,101,99,116,32,112,114,111,109,112,116],"value":"Detect prompt"}, 50 | {"hash":11264482,"name":"tfratabsession.acterverbher.caption","sourcebytes":[86,105,101,119,32,84,111,111,108,98,97,114],"value":"View Toolbar"}, 51 | {"hash":11461090,"name":"tfratabsession.acterverbher.hint","sourcebytes":[86,105,101,119,32,84,111,108,108,98,97,114],"value":"View Tollbar"}, 52 | {"hash":10714836,"name":"tfratabsession.acterprmarr.caption","sourcebytes":[71,111,32,116,111,32,38,80,114,101,118,105,111,117,115,32,112,114,111,109,112,116],"value":"Go to &Previous prompt"}, 53 | {"hash":201855412,"name":"tfratabsession.acterprmarr.hint","sourcebytes":[71,111,32,116,111,32,112,114,101,118,105,111,117,115,32,112,114,111,109,112,116],"value":"Go to previous prompt"}, 54 | {"hash":19853316,"name":"tfratabsession.acterprmaba.caption","sourcebytes":[71,111,32,116,111,32,38,78,101,120,116,32,112,114,111,109,112,116],"value":"Go to &Next prompt"}, 55 | {"hash":105094308,"name":"tfratabsession.acterprmaba.hint","sourcebytes":[71,111,32,116,111,32,110,101,120,116,32,112,114,111,109,112,116],"value":"Go to next prompt"}, 56 | {"hash":230342035,"name":"tfratabsession.achercfg.caption","sourcebytes":[83,101,38,116,116,105,110,103,115],"value":"Se&ttings"}, 57 | {"hash":88896291,"name":"tfratabsession.achercfg.hint","sourcebytes":[83,104,111,119,32,115,101,116,116,105,110,103,115],"value":"Show settings"}, 58 | {"hash":232315951,"name":"tfratabsession.achergramac.caption","sourcebytes":[38,82,101,99,111,114,100,32,77,97,99,114,111],"value":"&Record Macro"}, 59 | {"hash":64543759,"name":"tfratabsession.achergramac.hint","sourcebytes":[82,101,99,111,114,100,32,77,97,99,114,111],"value":"Record Macro"}, 60 | {"hash":194742456,"name":"tfratabsession.acfindfind.caption","sourcebytes":[38,83,101,97,114,99,104],"value":"&Search"}, 61 | {"hash":315460,"name":"tfratabsession.acfindfind.hint","sourcebytes":[70,105,110,100],"value":"Find"}, 62 | {"hash":73728500,"name":"tfratabsession.acfindnext.caption","sourcebytes":[70,105,110,100,32,78,101,120,116],"value":"Find Next"}, 63 | {"hash":73728500,"name":"tfratabsession.acfindnext.hint","sourcebytes":[70,105,110,100,32,78,101,120,116],"value":"Find Next"}, 64 | {"hash":56396339,"name":"tfratabsession.acfindprev.caption","sourcebytes":[70,105,110,100,32,80,114,101,118,105,111,115],"value":"Find Previos"}, 65 | {"hash":97035251,"name":"tfratabsession.acfindprev.hint","sourcebytes":[70,105,110,100,32,80,114,101,118,105,111,117,115],"value":"Find Previous"}, 66 | {"hash":147269573,"name":"tfratabsession.acfindreplace.caption","sourcebytes":[82,101,112,108,97,99,101],"value":"Replace"}, 67 | {"hash":147269573,"name":"tfratabsession.acfindreplace.hint","sourcebytes":[82,101,112,108,97,99,101],"value":"Replace"}, 68 | {"hash":106975938,"name":"tfratabsession.actersendchar.caption","sourcebytes":[83,101,110,100,32,99,38,104,97,114],"value":"Send c&har"}, 69 | {"hash":49520290,"name":"tfratabsession.actersendenter.caption","sourcebytes":[83,101,110,100,32,38,69,110,116,101,114],"value":"Send &Enter"}, 70 | {"hash":205926162,"name":"tfratabsession.actersendcr.caption","sourcebytes":[83,101,110,100,32,38,67,82],"value":"Send &CR"}, 71 | {"hash":81600358,"name":"tfratabsession.actersendcrlf.caption","sourcebytes":[83,101,110,100,32,67,82,43,38,76,70],"value":"Send CR+&LF"}, 72 | {"hash":163865942,"name":"tfratabsession.actersendlf.caption","sourcebytes":[83,101,110,100,32,76,70],"value":"Send LF"}, 73 | {"hash":187662580,"name":"tfratabsession.actercoppal.caption","sourcebytes":[67,111,112,121,32,38,87,111,114,100],"value":"Copy &Word"}, 74 | {"hash":68035157,"name":"tfratabsession.actercopnom.caption","sourcebytes":[38,67,111,112,121,32,70,105,108,101,32,110,97,109,101],"value":"&Copy File name"}, 75 | {"hash":189931704,"name":"tfratabsession.actercoprut.caption","sourcebytes":[67,111,112,121,32,80,97,116,38,104],"value":"Copy Pat&h"}, 76 | {"hash":75523480,"name":"tfratabsession.actercopnomrut.caption","sourcebytes":[67,111,112,121,32,78,97,109,101,32,97,110,100,32,80,97,116,104],"value":"Copy Name and Path"}, 77 | {"hash":82431811,"name":"tfratabsession.mnpopleng.caption","sourcebytes":[38,76,97,110,103,117,97,103,101,115],"value":"&Languages"}, 78 | {"hash":73124687,"name":"tfratabsession.menuitem82.caption","sourcebytes":[67,111,112,105,97,114,32,69,108,101,109,101,110,116,111],"value":"Copiar Elemento"}, 79 | {"hash":180735906,"name":"tfratabsession.menuitem72.caption","sourcebytes":[38,69,110,118,105,97,114],"value":"&Enviar"} 80 | ]} 81 | -------------------------------------------------------------------------------- /_source/FormConfig.pas: -------------------------------------------------------------------------------- 1 | {Unidad con formulario de configuración para manejar las propiedades de 2 | una aplicación. Está pensado para usarse con frames de la clase Tframe, 3 | definida en la unidad "PropertyFrame". 4 | } 5 | unit FormConfig; 6 | 7 | {$mode objfpc}{$H+} 8 | 9 | interface 10 | 11 | uses 12 | SysUtils, Classes, Forms, Graphics, SynEdit, Buttons, ComCtrls, ExtCtrls, 13 | StdCtrls, EditBtn, Controls, MisUtils, FrameCfgSynEdit, Globales, MiConfigXML; 14 | 15 | type 16 | TEvCambiaProp = procedure of object; //evento para indicar que hay cambio 17 | 18 | { TConfig } 19 | 20 | TConfig = class(TForm) 21 | bitAceptar: TBitBtn; 22 | bitAplicar: TBitBtn; 23 | bitCancel: TBitBtn; 24 | chkListDet: TCheckBox; 25 | chkMarLin: TCheckBox; 26 | chkMosOcul: TCheckBox; 27 | chkMosRut: TCheckBox; 28 | chkOpenLast: TCheckBox; 29 | chkRefDesp: TCheckBox; 30 | DirectoryEdit1: TDirectoryEdit; 31 | DirectoryEdit2: TDirectoryEdit; 32 | DirectoryEdit3: TDirectoryEdit; 33 | edTpoMax: TEdit; 34 | edTpoMax1: TEdit; 35 | Label1: TLabel; 36 | Label2: TLabel; 37 | lblRutLeng: TLabel; 38 | lblRutMac: TLabel; 39 | lblRutScript: TLabel; 40 | PageControl1: TPageControl; 41 | Panel1: TPanel; 42 | TabGeneral: TTabSheet; 43 | TabFilePath: TTabSheet; 44 | TabMacSett: TTabSheet; 45 | TabMacEdit: TTabSheet; 46 | TabRemEdEdit: TTabSheet; 47 | TabRemExpl: TTabSheet; 48 | TreeView1: TTreeView; 49 | procedure bitAceptarClick(Sender: TObject); 50 | procedure bitAplicarClick(Sender: TObject); 51 | procedure bitCancelClick(Sender: TObject); 52 | procedure FormCreate(Sender: TObject); 53 | procedure FormDestroy(Sender: TObject); 54 | procedure FormShow(Sender: TObject); 55 | procedure TreeView1Click(Sender: TObject); 56 | private 57 | function GetTabFromId(id: string): TTabSheet; 58 | function ActivateControl(ctlRef: TComponent): boolean; 59 | procedure MostEnVentana; 60 | { private declarations } 61 | public 62 | //msjError: string; 63 | edMacr : TSynEdit; //Referencia al editor panel de comando 64 | edRemo : TSynEdit; //Referencia al editor remoto 65 | //Frames de configuración 66 | fcEdMacr : TfraCfgSynEdit; //Editor de macros 67 | fcEdRemo : TfraCfgSynEdit; //Editor remoto 68 | //Evento 69 | OnPropertiesChanged: procedure of object; //Evento de cambio de propiedades 70 | public //Propiedades generales 71 | VerPanCom : boolean; //Panel de comandos 72 | VerBHerPcom : boolean; //Barra de herramientas 73 | VerBHerTerm : boolean; //Barra de herramientas 74 | VerBarEst : boolean; //Barra de estado 75 | TipAlineam : integer; //Tipo de alineamiento de pantalla 76 | RecentFiles : TStringList; //Lista de archivos recientes 77 | AbrirUltScr : boolean; 78 | public //Propiedades de rutas de archivos 79 | UltScript : string; //Último script editado 80 | foldTemp : string; { TODO : ¿Realmente conviene personalizar estas rutas? ¿Por qué no las dejamos fijas en las rutas que se definen en la unidad "Globales"? } 81 | foldMacros : string; 82 | foldLenguajes : string; 83 | public //Configuraciones de Macros 84 | TpoMax : integer; 85 | marLin : boolean; 86 | public //Configuraciones del explorador remoto 87 | TpoMax2: integer; //Tiempo máximo de espera 88 | MosRut : boolean; //muestra la ruta actual 89 | ListDet: boolean; 90 | MosOcul: boolean; 91 | RefDesp: boolean; 92 | public 93 | procedure Iniciar(); 94 | procedure ReadFromFile(iniFile: string=''); 95 | procedure SaveToFile(iniFile: string=''); 96 | procedure Configurar(Id: string=''); 97 | end; 98 | 99 | var 100 | Config: TConfig; 101 | 102 | implementation 103 | {$R *.lfm} 104 | 105 | { TConfig } 106 | 107 | procedure TConfig.FormCreate(Sender: TObject); 108 | begin 109 | RecentFiles := TStringList.Create; 110 | //Crea frames de configuración de SynEdit 111 | fcEdMacr:= TfraCfgSynEdit.Create(Self); 112 | fcEdMacr.Name := 'emac'; //Para que no de error de nombre 113 | fcEdMacr.parent := TabMacEdit; 114 | 115 | fcEdRemo:= TfraCfgSynEdit.Create(Self); 116 | fcEdRemo.Name := 'erem'; //Para que no de error de nombre 117 | fcEdRemo.parent := TabRemEdEdit; 118 | 119 | //Prepara página y Selecciona primera opción 120 | PageControl1.ShowTabs := false; 121 | TreeView1.Items[0].Selected:=true; 122 | TreeView1Click(self); 123 | 124 | cfgFile.VerifyFile; 125 | end; 126 | procedure TConfig.FormDestroy(Sender: TObject); 127 | begin 128 | RecentFiles.Destroy 129 | end; 130 | procedure TConfig.FormShow(Sender: TObject); 131 | begin 132 | MostEnVentana; //carga las propiedades en el frame 133 | end; 134 | procedure TConfig.Iniciar(); 135 | //Inicia el formulario de configuración. Debe llamarse antes de usar el formulario y 136 | //después de haber cargado todos los frames. 137 | begin 138 | //Configuraciones generales 139 | cfgFile.Asoc_Bol('VerPanCom' , @VerPanCom , true); 140 | cfgFile.Asoc_Bol('VerBHerPcom', @VerBHerPcom, true); 141 | cfgFile.Asoc_Bol('VerBHerTerm', @VerBHerTerm, true); 142 | cfgFile.Asoc_Bol('VerBarEst' , @VerBarEst , true); 143 | cfgFile.Asoc_Int('TipAlineam' , @TipAlineam , 0); 144 | cfgFile.Asoc_StrList('Recents_ses', @RecentFiles); 145 | //Propiedades de rutas de archivos 146 | cfgFile.Asoc_Str('UltScript' , @UltScript ,''); 147 | cfgFile.Asoc_Bol('AbrirUltScr', @AbrirUltScr, chkOpenLast , true); 148 | cfgFile.Asoc_Str('foldTemp' , @foldTemp , DirectoryEdit1, patTemp); 149 | cfgFile.Asoc_Str('Macros' , @foldMacros , DirectoryEdit2, patMacros); 150 | cfgFile.Asoc_Str('Lenguajes' , @foldLenguajes , DirectoryEdit3, patSyntax); 151 | //Configuraciones de foldMacros 152 | cfgFile.Asoc_Int('TpoMax' , @TpoMax, edTpoMax , 10, 1, 180); 153 | cfgFile.Asoc_Bol('MarLin' , @marLin, chkMarLin, false); 154 | //Configuración de editor de foldMacros 155 | fcEdMacr.Iniciar('edMacros', cfgFile, $E8FFE8); 156 | //Configuración de editor remoto 157 | fcEdRemo.Iniciar('edRemoto', cfgFile); 158 | //Configuraciones del explorador remoto 159 | cfgFile.Asoc_Int('TpoMax2' , @TpoMax2, edTpoMax1 , 10, 1, 180); 160 | cfgFile.Asoc_Bol('MosRut' , @MosRut , chkMosRut , true); 161 | cfgFile.Asoc_Bol('ListDet' , @ListDet, chkListDet, true); 162 | cfgFile.Asoc_Bol('MosOcul' , @MosOcul, chkMosOcul, false); 163 | cfgFile.Asoc_Bol('RefDesp' , @RefDesp, chkRefDesp, true); 164 | 165 | //lee parámetros del archivo de configuración. 166 | ReadFromFile; 167 | end; 168 | function TConfig.GetTabFromId(id: string): TTabSheet; 169 | {Retorna una página del PageControl, de acuerdo al ID indicado.} 170 | begin 171 | case id of 172 | '1', 173 | '1.1' : exit(TabGeneral); 174 | '1.2' : exit(TabFilePath); 175 | '2', 176 | '2.1' : exit(TabMacSett); 177 | '2.2' : exit(TabMacEdit); 178 | '3', 179 | '3.1' : exit(TabRemEdEdit); 180 | '4' : exit(TabRemExpl); 181 | else 182 | exit(nil); 183 | end; 184 | end; 185 | procedure TConfig.TreeView1Click(Sender: TObject); 186 | var 187 | id: String; 188 | begin 189 | if TreeView1.Selected = nil then exit; 190 | //hay ítem seleccionado 191 | id := IdFromTTreeNode(TreeView1.Selected); 192 | if GetTabFromId(id) <> nil then GetTabFromId(id).Show; 193 | end; 194 | function TConfig.ActivateControl(ctlRef: TComponent): boolean; 195 | {Intenta seleccionar un control de la ventana de la configuración, a partir de una 196 | referencia "TComponente". Si logra la identifiación, devuelve en: 197 | "ctl" -> El control como un TWinControl. 198 | "tab" -> El contenedor como un TTabSheet. 199 | } 200 | var 201 | pag: TComponent; 202 | tab: TTabSheet; 203 | it: TTreeNode; 204 | id: String; 205 | ctl: TWinControl; 206 | begin 207 | if ctlRef=nil then exit(false); 208 | //Busca al contenedor 209 | pag := ctlRef.GetParentComponent; 210 | if pag.ClassName = 'TTabSheet' then begin 211 | //Lo contiene un TTabSheet. Lo activamos. 212 | tab := TTabSheet(pag); 213 | //tab.Show; Esto activaría la página, pero no actualizaría el TreeView1 214 | //Busca el ítem del árbol que activa esa página 215 | for it in TreeView1.Items do begin 216 | id := IdFromTTreeNode(it); //Obtiene ID 217 | if GetTabFromId(id)=nil then continue; 218 | if GetTabFromId(id) = tab then begin 219 | //Encontramos el id que selecciona al "tab2. 220 | it.Selected := true; //Selecciona en el TreeView1 221 | TreeView1Click(self); //Activa el "tab". 222 | //Intenta seleccionar al control 223 | if ctlRef is TWinControl then begin 224 | ctl := TWinControl(ctlRef); 225 | if (it.Visible=true) and (ctl.Visible = true) and ctl.CanFocus then begin 226 | ctl.SetFocus; 227 | end; 228 | end; 229 | exit(true); //Se ubicó 230 | end; 231 | end; 232 | //No se encontró al ítem que selecciona a este "tab". 233 | exit(false); 234 | end else begin 235 | //No se conoce al contenedor 236 | exit(false); 237 | end; 238 | end; 239 | procedure TConfig.bitAceptarClick(Sender: TObject); 240 | begin 241 | bitAplicarClick(Self); 242 | if cfgFile.MsjErr<>'' then exit; //hubo error 243 | self.Close; //porque es modal 244 | end; 245 | procedure TConfig.bitAplicarClick(Sender: TObject); 246 | begin 247 | if not cfgFile.WindowToProperties then begin 248 | //Se produjo un error 249 | //Trata de seleccionar al control con error. 250 | ActivateControl(cfgFile.ctlErr.ctlRef); 251 | MsgErr(cfgFile.MsjErr); 252 | exit; 253 | end; 254 | //Valida las rutas leidas 255 | if not DirectoryExists(foldTemp) then begin 256 | MsgExc('Folder not found: %s',[foldTemp]); 257 | foldTemp := patTemp; 258 | end; 259 | if not DirectoryExists(foldMacros) then begin 260 | MsgExc('Folder not found: %s', [foldMacros]); 261 | foldMacros := patMacros; 262 | end; 263 | if not DirectoryExists(foldLenguajes) then begin 264 | MsgExc('Folder not found: %s', [foldLenguajes]); 265 | foldLenguajes := patSyntax; 266 | end; 267 | if OnPropertiesChanged<>nil then OnPropertiesChanged(); 268 | SaveToFile; //Guarda propiedades en disco 269 | end; 270 | procedure TConfig.bitCancelClick(Sender: TObject); 271 | begin 272 | self.Hide; 273 | end; 274 | procedure TConfig.Configurar(Id: string=''); 275 | //Muestra el formulario, de modo que permita configurar la sesión actual 276 | var 277 | it: TTreeNode; 278 | begin 279 | if Id<> '' then begin /////se pide mostrar un Id en especial 280 | //oculta los demás 281 | it := TTreeNodeFromId(Id,TreeView1); 282 | if it <> nil then it.Selected:=true; 283 | TreeView1Click(self); 284 | end else begin ////////muestra todos 285 | for it in TreeView1.Items do begin 286 | it.Visible:=true; 287 | end; 288 | end; 289 | Showmodal; 290 | end; 291 | 292 | procedure TConfig.MostEnVentana; 293 | //Muestra las propiedades en la ventana de configuración. 294 | begin 295 | if not cfgFile.PropertiesToWindow then begin 296 | MsgErr(cfgFile.MsjErr); 297 | end; 298 | end; 299 | procedure TConfig.ReadFromFile(iniFile: string = ''); 300 | begin 301 | if not cfgFile.FileToProperties then begin 302 | MsgErr(cfgFile.MsjErr); 303 | end; 304 | if OnPropertiesChanged<>nil then OnPropertiesChanged(); 305 | end; 306 | procedure TConfig.SaveToFile(iniFile: string=''); 307 | //Escribe el archivo de configuración 308 | begin 309 | if not cfgFile.PropertiesToFile then begin 310 | MsgErr(cfgFile.MsjErr); 311 | end; 312 | end; 313 | 314 | end. 315 | 316 | -------------------------------------------------------------------------------- /languages/SQLOracle.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | <Language name="SQL Oracle" ext="sql" ColorBlock="Block"> 3 | <Completion> 4 | <Include Attribute="Keyword"></Include> 5 | <List Name="plantillas"> 6 | "ALTER SESSION SET " 7 | "BEGIN END;" 8 | "COMMIT;" 9 | "CREATE OR REPLACE " 10 | "CREATE TABLE nombre( 11 | campo1 tipo1, campo2 tipo2);" 12 | "CREATE INDEX " 13 | "CREATE UNIQUE INDEX nombre ON tabla(campos)" 14 | "CREATE SEQUENCE " 15 | "CREATE SEQUENCE nombre MINVALUE valor START WITH valor INCREMENT BY valor;" 16 | "CREATE SYNONYM " 17 | "CREATE VIEW " 18 | "CURSOR nombre IS consulta;" 19 | "dbms_output.enable(" 20 | "dbms_output.put_line(" 21 | "DECLARE variables BEGIN cuerpo END;" 22 | "DELETE FROM" 23 | "DELETE FROM nombre WHERE condición;" 24 | "DROP INDEX " 25 | "DROP TABLE " 26 | "END IF;" 27 | "END;" 28 | "EXCEPTION WHEN OTHERS THEN NULL;" 29 | "EXECUTE INMEDIATE " 30 | "FOR i IN 1..n LOOP END LOOP;" 31 | "FOR i IN nombre_de_cursor LOOP END LOOP;" 32 | "FOREIGN KEY" 33 | "FORMAT " 34 | "FORMAT A9" 35 | "FORMAT 99.99" 36 | "FUNCTION nombre(parámetros) RETURN tipo IS BEGIN END;" 37 | "GROUP BY " 38 | "IF THEN ELSE END IF;" 39 | "IF THEN ELSIF END IF;" 40 | "IF NOT " 41 | "INCREMENT BY " 42 | "INDEX " 43 | "INSERT " 44 | "INSERT INTO tabla VALUES(valores_separados_por_comas);" 45 | "LOCK TABLE tabla IN EXCLUSIVE MODE;" 46 | "ORDER BY " 47 | "PROCEDURE nombre(parámetros) IS BEGIN END;" 48 | "PROMPT mensaje" 49 | "RENAME nombre TO nuevo_nombre;" 50 | "ROLLBACK;" 51 | "ROWNUM < 10" 52 | "SELECT * FROM " 53 | "SELECT count( *) FROM " 54 | "SELECT table_name FROM tabs WHERE table_name LIKE '%%';" 55 | "SELECT campos FROM tabla WHERE condición ORDER BY campos;" 56 | "SET LINESIZE 1000" 57 | "SET PAGESIZE 5000" 58 | "SPOOL OFF" 59 | "SPOOL c:\aaa.txt" 60 | "TRUNCATE TABLE" 61 | "UNION ALL" 62 | "UPDATE tabla SET campo=valor, ... WHERE condicion;" 63 | "WHILE condicion LOOP END LOOP;" 64 | </List> 65 | <List Name="presql"> 66 | "PRIMERO " 67 | "EN " 68 | "fecha " 69 | "FINCONSULTAR" 70 | "FINDEFINIR" 71 | "FINPARA" 72 | "HACER " 73 | 74 | "$COLUMNAS()" 75 | "$COLUMNAS(""tabla"")" 76 | "$CONSULTAR " 77 | "$CONSULTAR FINCONSULTAR" 78 | "$DEFINIR " 79 | "$DEFINIR nombre COMO cuerpo FINDEFINIR" 80 | "$DEFINIR nombre = valor" 81 | "$DIR_ACTUAL" 82 | "$DIR_ACTUAL()" 83 | "$EXPR(" 84 | "$EXPR(1+1)" 85 | "$FECHA_ACTUAL(" 86 | "$FECHA_ACTUAL(0,""dd/mm/yyyy"")" 87 | "$FECHA_ACTUAL(-1,""yyyy/mm/dd"")" 88 | "$FORMATO(" 89 | "$FORMATO(fecha ,""ddd dd/mm/yyyy"")" 90 | "$FORMATO(5,""0000"")" 91 | "$HORAS" 92 | "$INCLUIR " 93 | "$INCLUIR D:\aaa.txt" 94 | "$INDICES()" 95 | "$INDICES(""tabla"")" 96 | "$INFOTABLA()" 97 | "$INFOTABLA(""tabla"")" 98 | "$INFOVISTA()" 99 | "$INFOVISTA(""vista"")" 100 | "$LEE_CADENA()" 101 | "$LEE_FECHA()" 102 | "$LEE_NUMERO()" 103 | "$MESES" 104 | "$NOM_ACTUAL" 105 | "$NOM_ACTUAL()" 106 | "$PARA " 107 | "$PARA EN HACER FINPARA" 108 | "$PARA x EN 1 2 3 HACER FINPARA" 109 | "$PSQL_REINIC" 110 | "$REDEF " 111 | "$REDEF nombre COMO cuerpo FINDEFINIR" 112 | "%ROWTYPE" 113 | "%TYPE" 114 | </List> 115 | <List Name="Alter" AfterIdentif="Alter"> 116 | "SESSION SET" 117 | "TABLE " 118 | "TABLE tabla ADD columna tipo;" 119 | "TABLE tabla MODIFY columna tipo;" 120 | "TABLE tabla DROP columna;" 121 | "INDEX " 122 | "INDEX índice REBUILD;" 123 | "INDEX índice RENAME TO índice;" 124 | "INDEX índice STORAGE (PCTINCREASE 50);" 125 | "INDEX VISIBLE;" 126 | </List> 127 | <List Name="from" AfterIdentif="from"> 128 | DUAL 129 | USER_TABLES 130 | USER_VIEWS 131 | ALL_TABLES 132 | ALL_VIEWS 133 | TABS 134 | </List> 135 | <List Name="Set" AfterIdentif="Set"> 136 | APPINFO 137 | ARRAYSIZE 138 | AUTOCOMMIT 139 | AUTOPRINT 140 | AUTORECOVERY 141 | AUTOTRACE 142 | BLOCKTERMINATOR 143 | BTITLE 144 | CMDSEP 145 | COLSEP 146 | COMPATIBILITY 147 | CONCAT 148 | COPYCOMMIT 149 | COPYTYPECHECK 150 | DEFINE 151 | DESCRIBE 152 | MARKUP 153 | ECHO 154 | EDITFILE 155 | EMBEDDED 156 | ESCAPE 157 | FEEDBACK 158 | FLAGGER 159 | FLUSH 160 | HEADING 161 | HEADSEP 162 | INSTANCE 163 | LINESIZE 164 | "LINESIZE 500" 165 | LNO 166 | LOBOFFSET 167 | LOGSOURCE 168 | LONG 169 | LONGCHUNKSIZE 170 | NEWPAGE 171 | NLS_DATE_FORMAT 172 | "NLS_DATE_FORMAT = 'DD/MM/YYYY';" 173 | "NLS_DATE_FORMAT = 'YYYY/MM/DD';" 174 | "NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';" 175 | NULL 176 | NUMFORMAT 177 | NUMWIDTH 178 | PAGESIZE 179 | "PAGESIZE 5000" 180 | PAUSE 181 | PNO 182 | RECSEP 183 | RECSEPCHAR 184 | RELEASE 185 | REPFOOTER 186 | REPHEADER 187 | SERVEROUTPUT 188 | SHIFTINOUT 189 | SHOWMODE 190 | SPOOL 191 | SQLBLANKLINES 192 | SQLCASE 193 | SQLCODE 194 | SQLCONTINUE 195 | SQLNUMBER 196 | SQLPREFIX 197 | SQLPROMPT 198 | SQLTERMINATOR 199 | SUFFIX 200 | TAB 201 | TERMOUT 202 | TIME 203 | TIMING 204 | TRIMOUT 205 | TRIMSPOOL 206 | TTITLE 207 | UNDERLINE 208 | USER 209 | VERIFY 210 | WRAP 211 | </List> 212 | </Completion> 213 | 214 | <Attribute Name="Keyword" ForeCol="Blue" Bold="true"></Attribute> 215 | <Attribute Name="Comment" ForeCol="#00A000"></Attribute> 216 | <Attribute Name="String" ForeCol="#FF00FF"></Attribute> 217 | <Attribute Name="Number" ForeCol="#FE642E"></Attribute> 218 | <Attribute Name="presql" ForeCol="Red" Bold="true"></Attribute> 219 | <Identifiers CharsStart= "A..Za..z_$" Content = "A..Za..z0..9_$"> 220 | <Keyword> 221 | ACCESS ACCOUNT ACTIVATE ADD ADMIN ADVISE AFTER ALL ALL_ROWS ALLOCATE ALTER ANALYZE AND ANY 222 | ARCHIVE ARCHIVELOG ARRAY AS ASC AT AUDIT AUTHENTICATED AUTHORIZATION AUTOEXTEND AUTOMATIC 223 | BACKUP BECOME BEFORE BEGIN BETWEEN BFILE BITMAP BLOB BLOCK BODY BY 224 | COLAUTH CLUSTERS COL CRASH 225 | CACHE CACHE_INSTANCES CANCEL CASCADE CAST CFILE CHAINED CHANGE CHAR CHAR_CS CHARACTER CHECK CHECKPOINT 226 | CHOOSE CHUNK CLEAR CLOB CLONE CLOSE CLOSE_CACHED_OPEN_CURSORS CLUSTER COALESCE COLUMN COLUMNS 227 | COMMENT COMMIT COMMITTED COMPATIBILITY COMPILE COMPLETE COMPOSITE_LIMIT COMPRESS COMPUTE CONNECT 228 | CONNECT_TIME CONSTRAINT CONSTRAINTS CONTENTS CONTINUE CONTROLFILE CONVERT COST CPU_PER_CALL 229 | CPU_PER_SESSION CREATE CURRENT CURRENT_SCHEMA CURREN_USER CURSOR CYCLE 230 | DEFINE DESCRIBE 231 | DANGLING DATABASE DATAFILE DATAFILES DATAOBJNO DATE DBA DBHIGH DBLOW DBMAC DEALLOCATE DEBUG 232 | DEC DECIMAL DECLARE DEFAULT DEFERRABLE DEFERRED DEGREE DELETE DEREF DESC DIRECTORY DISABLE DISCONNECT 233 | DISMOUNT DISTINCT DISTRIBUTED DML DOUBLE DROP DUMP 234 | ELSIF EXCEPTION EXEC EXIT 235 | EACH ELSE ENABLE END ENFORCE ENTRY ESCAPE EXCEPT EXCEPTIONS EXCHANGE EXCLUDING EXCLUSIVE EXECUTE 236 | EXISTS EXPIRE EXPLAIN EXTENT EXTENTS EXTERNALLY 237 | FORMAT 238 | FROM FAILED_LOGIN_ATTEMPTS FALSE FAST FILE FIRST_ROWS FLAGGER FLOAT FLOB FLUSH FOR FORCE FOREIGN FREELIST 239 | FREELISTS FULL FUNCTION 240 | GOTO 241 | GLOBAL GLOBALLY GLOBAL_NAME GRANT GROUP GROUPS 242 | HASH HASHKEYS HAVING HEADER HEAP 243 | IDENTIFIED IDGENERATORS IDLE_TIME IF IMMEDIATE IN INCLUDING INCREMENT INDEX INDEXED INDEXES INDICATOR 244 | IND_PARTITION INITIAL INITIALLY INITRANS INSERT INSTANCE INSTANCES INSTEAD INT INTEGER INTERMEDIATE 245 | INTERSECT INTO IS ISOLATION ISOLATION_LEVEL 246 | KEEP KEY KILL 247 | LOOP 248 | LABEL LAYER LESS LEVEL LIBRARY LIKE LIMIT LINK LIST LOB LOCAL LOCK LOCKED LOG LOGFILE LOGGING 249 | LOGICAL_READS_PER_CALL LOGICAL_READS_PER_SESSION LONG 250 | MANAGE MASTER MAX MAXARCHLOGS MAXDATAFILES MAXEXTENTS MAXINSTANCES MAXLOGFILES MAXLOGHISTORY 251 | MAXLOGMEMBERS MAXSIZE MAXTRANS MAXVALUE MIN MEMBER MINIMUM MINEXTENTS MINUS MINVALUE MLSLABEL 252 | MLS_LABEL_FORMAT MODE MODIFY MOUNT MOVE MTS_DISPATCHERS MULTISET 253 | NATIONAL NCHAR NCHAR_CS NCLOB NEEDED NESTED NETWORK NEW NEXT NOARCHIVELOG NOAUDIT NOCACHE 254 | NOCOMPRESS NOCYCLE NOFORCE NOLOGGING NOMAXVALUE NOMINVALUE NONE NOORDER NOOVERRIDE 255 | NOPARALLEL NOREVERSE NORMAL NOSORT NOT NOTHING NOWAIT NULL NUMBER NUMERIC NVARCHAR2 256 | OVERLAPS ORDER 257 | OBJECT OBJNO OBJNO_REUSE OF OFF OFFLINE OID OIDINDEX OLD ON ONLINE ONLY OPCODE OPEN OPTIMAL 258 | OPTIMIZER_GOAL OPTION OR ORGANIZATION OSLABEL OVERFLOW OWN 259 | PROMPT 260 | PACKAGE PARALLEL PARTITION PASSWORD PASSWORD_GRACE_TIME PASSWORD_LIFE_TIME PASSWORD_LOCK_TIME 261 | PASSWORD_REUSE_MAX PASSWORD_REUSE_TIME PASSWORD_VERIFY_FUNCTION PCTFREE PCTINCREASE PCTTHRESHOLD 262 | PCTUSED PCTVERSION PERCENT PERMANENT PLAN PLSQL_DEBUG POST_TRANSACTION PRECISION PRESERVE 263 | PRIMARY PRIOR PRIVATE PRIVATE_SGA PRIVILEGE PRIVILEGES PROCEDURE PROFILE PUBLIC PURGE 264 | QUEUE QUOTA 265 | RECORD 266 | RANGE RAW RBA READ READUP REAL REBUILD RECOVER RECOVERABLE RECOVERY REF REFERENCES REFERENCING 267 | REFRESH RENAME REPLACE RESET RESETLOGS RESIZE RESOURCE RESTRICTED RETURN RETURNING REUSE REVERSE 268 | REVOKE ROLE ROLES ROLLBACK ROW ROWID ROWNUM ROWS RULE 269 | SPOOL SQL SUBTYPE 270 | SELECT 271 | SAMPLE SAVEPOINT SB4 SCAN_INSTANCES SCHEMA SCN SCOPE SD_ALL SD_INHIBIT SD_SHOW SEGMENT SEG_BLOCK 272 | SEG_FILE SEQUENCE SERIALIZABLE SESSION SESSION_CACHED_CURSORS SESSIONS_PER_USER SET SHARE 273 | SHARED SHARED_POOL SHRINK SIZE SKIP SKIP_UNUSABLE_INDEXES SMALLINT SNAPSHOT SOME SORT SPECIFICATION 274 | SPLIT SQL_TRACE STANDBY START STATEMENT_ID STATISTICS STOP STORAGE STORE STRUCTURE SUCCESSFUL 275 | SWITCH SYS_OP_ENFORCE_NOT_NULL$ SYS_OP_NTCIMG$ SYNONYM SYSDATE SYSDBA SYSOPER SYSTEM 276 | TABAUTH TTITLE 277 | TABLE TABLES TABLESPACE TABLESPACE_NO TABNO TEMPORARY THAN THE THEN THREAD TIMESTAMP TIME TO 278 | TOPLEVEL TRACE TRACING TRANSACTION TRANSITIONAL TRIGGER TRIGGERS TRUE TRUNCATE TX TYPE 279 | UB2 UBA UID UNARCHIVED UNDO UNION UNIQUE UNLIMITED UNLOCK UNRECOVERABLE UNTIL UNUSABLE 280 | UNUSED UPDATABLE UPDATE USAGE USE USER USING 281 | VIEWS 282 | VALIDATE VALIDATION VALUE VALUES VARCHAR VARCHAR2 VARYING VIEW 283 | WHERE WHEN WHENEVER WITH WITHOUT WORK WRITE WRITEDOWN WRITEUP XID YEAR ZONE 284 | </Keyword> 285 | <presql> 286 | $DEFINIR 287 | $REDEF 288 | $INCLUIR 289 | $PARA 290 | $CONSULTAR 291 | CON 292 | COMO 293 | EN 294 | FINPARA 295 | FINDEFINIR 296 | HACER 297 | $dir_actual 298 | $nom_actual 299 | $fecha_actual 300 | $formato 301 | $intervalo_semana 302 | $psql_reinic 303 | $expr 304 | $horas 305 | $meses 306 | $infotabla 307 | $infovista 308 | </presql> 309 | </Identifiers> 310 | <Token CharsStart="0..9" Content = '0..9' Attribute="NUMBER"> </Token> 311 | <String Start="'" End="'"></String> 312 | <String Start=""" End="""></String> 313 | <Comment Start="--" ></Comment> 314 | <Comment Start="/*" End="*/" Multiline="true" Folding="True"></Comment> 315 | 316 | <Block Start="$PARA" End="FINPARA" Folding="True" Parent="Main" Name="blq_PARA"></Block> 317 | <Block Start="COMO" End="FINDEFINIR"></Block> 318 | 319 | <Block Start="SELECT" End=";" BackCol="#F2F5A9" Folding="False" Name="blo_SELECT"> 320 | <End TokPos="1">/</End> 321 | <Section Start="SELECT" FirstSec="True" BackCol="#CEF6CE" Name="sec_SELECT"> </Section> 322 | <Section Start="FROM" BackCol="#F2F5A9" Name="sec_FROM"> </Section> 323 | </Block> 324 | <Block Start="BEGIN" End="END" Folding="True"></Block> 325 | <Block Start="THEN" End="END" Folding="True"></Block> 326 | <Block Start="FOR" End="END" Folding="True"></Block> 327 | <Block Start="INSERT" End=";" BackCol="#F6D5D5" Name="blo_INSERT"></Block> 328 | <Block Start="UPDATE" End=";" BackCol="#F6D5D5" Name="blo_UPDATE"></Block> 329 | <Block Start="DELETE" End=";" BackCol="#F6D5D5" Name="blo_DELETE"></Block> 330 | 331 | </Language> 332 | -------------------------------------------------------------------------------- /_libraries/MiConfig-0.4.2/MiConfigXML.pas: -------------------------------------------------------------------------------- 1 | { 2 | MiConfigXml 3 | =========== 4 | Por Tito Hinostroza 29/07/2016 5 | 6 | Descripción 7 | =========== 8 | Unidad con rutinas de lectura/escritura de propiedades en archivos XML. Permite crear 9 | fácilmente, una ventana de configuración, con las opciones: ACEPTAR y CANCELAR. 10 | Es similar a MiConfigINI, pero trabaja con archivos XML. 11 | 12 | Para alamacenar las propiedades, se debe crear un objeto TMiConfigXML. Sin embargo, 13 | la unidad crea por defecto, una instancia de TMiConfigXML, llamada "cfgFile", que toma 14 | como nombre <nombre del proyecto>.xml 15 | Tiene como dependencia a la librería MisUtils. 16 | 17 | Por Tito Hinostroza 29/07/2016 18 | } 19 | unit MiConfigXML; 20 | {$mode objfpc}{$H+} 21 | interface 22 | uses 23 | Classes, SysUtils, Graphics, Forms, LCLType, Laz2_XMLCfg, MiConfigBasic; 24 | type 25 | { TMiConfigXML } 26 | {Clase base que es usada para manejar los campos de configuración.} 27 | TMiConfigXML = class(TMiConfigBasic) 28 | protected 29 | fileName : string; //archivo XML 30 | function DefaultFileName: string; 31 | procedure FileProperty(xmlCfg: TXMLConfig; const r: TParElem; FileToProp: boolean); 32 | function LoadXMLFile(filName: string; out xmlCfg: TXMLConfig): boolean; 33 | public 34 | secINI: string; //sección donde se guardarán los datos en un archivo INI 35 | procedure VerifyFile; 36 | function FileToProperties: boolean; virtual; 37 | function FileToPropertiesCat(xmlFil: string; cat: integer): boolean; 38 | function PropertiesToWindowCat(cat: integer): boolean; 39 | function PropertiesToFile: boolean; virtual; 40 | function GetFileName: string; 41 | procedure SetFileName(AValue: string); 42 | public //Constructor y Destructor 43 | constructor Create(XMLfile0: string); 44 | destructor Destroy; override; 45 | end; 46 | 47 | var 48 | cfgFile: TMiConfigXML; //Default XML Config file 49 | 50 | implementation 51 | 52 | 53 | 54 | { TMiConfigXML } 55 | function TMiConfigXML.LoadXMLFile(filName: string; out xmlCfg: TXMLConfig): boolean; 56 | {Carga el archivo "filName" en xmlCfg. Si hay error, actualiza "MsjError" y 57 | devuelve FALSE. Función creada para uso interno de la clase.} 58 | begin 59 | msjErr := ''; 60 | Result := true; 61 | if not FileExists(filName) then begin 62 | ctlErr := nil; 63 | MsjErr := 'XML file does not exist.'; //errro 64 | exit(false); //para que no intente leer 65 | end; 66 | try 67 | xmlCfg := TXMLConfig.Create(nil); 68 | xmlCfg.Filename := filName; //lee archivo XML, al asignar propiedad 69 | except 70 | ctlErr := nil; 71 | MsjErr := Format('Error reading XML file: %s', [filName]); 72 | xmlCfg.Free; 73 | exit(false); 74 | end; 75 | end; 76 | function TMiConfigXML.DefaultFileName: string; 77 | {Devuelve el nombre por defecto del archvio de configuración} 78 | begin 79 | Result := ChangeFileExt(Application.ExeName,'.xml'); 80 | end; 81 | procedure TMiConfigXML.VerifyFile; 82 | //Verifica si el archivo XML "FileName" existe. Si no, muestra un mensaje y lo crea. 83 | var 84 | F: textfile; 85 | begin 86 | if not FileExists(fileName) then begin 87 | Application.MessageBox( 88 | Pchar(Format('No XML file found: %s', [fileName])), 89 | '', MB_ICONERROR); 90 | //Crea uno vacío para leer las opciones por defecto 91 | AssignFile(F, fileName); 92 | Rewrite(F); 93 | writeln(F, '<?xml version="1.0" encoding="utf-8"?>'); 94 | writeln(F, '<CONFIG>'); 95 | writeln(F, '</CONFIG>'); 96 | CloseFile(F); 97 | end; 98 | end; 99 | procedure TMiConfigXML.FileProperty(xmlCfg: TXMLConfig; const r: TParElem; FileToProp: boolean); 100 | {Permite leer o escribir una propiedad en el archivo XML} 101 | var 102 | s, defStr: String; 103 | c: TColor; 104 | list: TStringList; 105 | begin 106 | if r.varRef = nil then exit; //se inició con NIL 107 | case r.asType of 108 | tp_Int, tp_Int_TEdit, tp_Int_TSpinEdit, tp_Int_TRadioGroup: 109 | if FileToProp then begin //lee entero 110 | r.AsInteger := xmlCfg.GetValue(r.asLabel + '/Val', r.defInt) 111 | end else begin 112 | xmlCfg.SetValue(r.asLabel + '/Val', r.AsInteger) ; 113 | end; 114 | //--------------------------------------------------------------------- 115 | tp_Dbl, tp_Dbl_TEdit, tp_Dbl_TFloatSpinEdit: 116 | //No hay métodos para leer/escribir números flotantes. Se usarán cadena 117 | if FileToProp then begin 118 | defStr := FloatToStr(r.defDbl); 119 | s := xmlCfg.GetValue(r.asLabel + '/Val', defStr); //lee como cadena 120 | r.AsDouble := StrToFloat(s); 121 | end else begin 122 | s := FloatToStr(r.AsDouble); 123 | xmlCfg.SetValue(r.asLabel + '/Val', s) ; 124 | end; 125 | //--------------------------------------------------------------------- 126 | tp_Str, tp_Str_TEdit, tp_Str_TEditButton, tp_Str_TCmbBox: 127 | if FileToProp then begin //lee cadena 128 | r.AsString := xmlCfg.GetValue(r.asLabel + '/Val', r.defStr); 129 | end else begin 130 | xmlCfg.SetValue(r.asLabel + '/Val', r.AsString) ; 131 | end; 132 | //--------------------------------------------------------------------- 133 | tp_Bol, tp_Bol_TCheckBox, tp_Bol_TRadBut: 134 | if FileToProp then begin //lee booleano 135 | r.AsBoolean := xmlCfg.GetValue(r.asLabel + '/Val', r.defBol); 136 | end else begin 137 | xmlCfg.SetValue(r.asLabel + '/Val', r.AsBoolean); 138 | end; 139 | //--------------------------------------------------------------------- 140 | tp_Enum, tp_Enum_TRadBut, tp_Enum_TRadGroup: 141 | if FileToProp then begin //lee enumerado como entero 142 | if r.varSiz = 4 then begin //tamaño común de las variable enumeradas 143 | r.AsInt32 := xmlCfg.GetValue(r.asLabel + '/Val', r.defInt); 144 | end else begin //tamaño no implementado 145 | msjErr := 'Enumerated type no handled.'; 146 | exit; 147 | end; 148 | end else begin 149 | if r.varSiz = 4 then begin 150 | xmlCfg.SetValue(r.asLabel + '/Val', r.AsInt32) ; 151 | end else begin //tamaño no implementado 152 | msjErr := 'Enumerated type no handled.'; 153 | exit; 154 | end; 155 | end; 156 | //--------------------------------------------------------------------- 157 | tp_TCol_TColBut, tp_TCol_TColBox: 158 | if FileToProp then begin //lee TColor 159 | r.AsTColor := xmlCfg.GetValue(r.asLabel + '/Val', r.defCol); //lee como entero 160 | end else begin 161 | c := r.AsTColor; 162 | xmlCfg.SetValue(r.asLabel + '/Val', c) ; //escribe como entero 163 | end; 164 | tp_StrList, tp_StrList_TListBox: 165 | if FileToProp then begin //lee TStringList 166 | list := TStringList(r.varRef^); 167 | list.Text := xmlCfg.GetValue(r.asLabel + '/Val', ''); //lee como texto 168 | end else begin 169 | list := TStringList(r.varRef^); 170 | xmlCfg.SetValue(r.asLabel + '/Val', list.Text); //escribe como texto 171 | end; 172 | else //no se ha implementado bien 173 | msjErr := 'Design error.'; 174 | exit; 175 | end; 176 | end; 177 | function TMiConfigXML.FileToProperties: boolean; 178 | {Lee de disco las propiedades registradas 179 | Si encuentra error devuelve FALSE, y el mensaje de error en "MsjErr", y el elemento 180 | con error en "ctlErr".} 181 | var 182 | r: TParElem; 183 | xmlCfg: TXMLConfig; 184 | begin 185 | if not LoadXMLFile(fileName, xmlCfg) then exit(false); 186 | for r in listParElem do begin 187 | FileProperty(xmlCfg, r, true); 188 | if msjErr<>'' then begin 189 | ctlErr := r; //elemento que produjo el error 190 | xmlCfg.Free; //libera 191 | exit(false); //sale con error 192 | end; 193 | if r.OnFileToProperty<>nil then r.OnFileToProperty; 194 | end; 195 | //Terminó con éxito. Actualiza los cambios 196 | if OnPropertiesChanges<>nil then OnPropertiesChanges; 197 | ctlErr := nil; 198 | xmlCfg.Free; //libera 199 | exit(true); //sale sin error 200 | end; 201 | function TMiConfigXML.FileToPropertiesCat(xmlFil: string; cat: integer): boolean; 202 | {Lee de disco las propiedades registradas con una categoría específica. 203 | Si encuentra error devuelve FALSE, y el mensaje de error en "MsjErr", y el elemento 204 | con error en "ctlErr". 205 | Es similar a FileToProperties(), pero no genera eventos. Se creó pensando usarse 206 | en casos como una rutina independiente para cargar solo ciertas propiedades de un 207 | archivo de configuración, como cuando se manejan configuraciones de colores (temas)} 208 | var 209 | r: TParElem; 210 | xmlCfg: TXMLConfig; 211 | begin 212 | if not LoadXMLFile(xmlFil, xmlCfg) then exit(false); 213 | for r in listParElem do begin 214 | if r.categ<>cat then continue; //ignora los de otra categoría 215 | FileProperty(xmlCfg, r, true); 216 | if msjErr<>'' then begin 217 | ctlErr := r; //elemento que produjo el error 218 | xmlCfg.Free; //libera 219 | exit(false); //sale con error 220 | end; 221 | end; 222 | //Terminó con éxito. Actualiza los cambios 223 | ctlErr := nil; 224 | xmlCfg.Free; //libera 225 | exit(true); //sale sin error 226 | end; 227 | function TMiConfigXML.PropertiesToWindowCat(cat: integer): boolean; 228 | {Versión de PropertiesToWindow, que solo trabaja con una categoría, y no genera 229 | eventos.} 230 | var 231 | r: TParElem; 232 | begin 233 | msjErr := ''; 234 | for r in listParElem do begin 235 | if r.categ<>cat then continue; //ignora los de otra categoría 236 | PropertyWindow(r, true); 237 | if msjErr<>'' then begin 238 | ctlErr := r; //guarda la referencia al elemento, en caso de que haya error 239 | end; 240 | end; 241 | Result := (msjErr=''); 242 | end; 243 | function TMiConfigXML.PropertiesToFile: boolean; 244 | {Guarda en disco las propiedades registradas 245 | Si encuentra error devuelve FALSE, y el mensaje de error en "MsjErr", y el elemento 246 | con error en "ctlErr".} 247 | var 248 | r: TParElem; 249 | xmlCfg: TXMLConfig; 250 | begin 251 | if FileExists(fileName) then begin //ve si existe 252 | if FileIsReadOnly(fileName) then begin 253 | ctlErr := nil; 254 | MsjErr := 'XML file is only read.'; 255 | exit(false); 256 | end; 257 | end; 258 | try 259 | xmlCfg := TXMLConfig.Create(nil); 260 | xmlCfg.Filename := fileName; //lee archivo XML 261 | xmlCfg.Clear; 262 | except 263 | ctlErr := nil; 264 | MsjErr := Format('Error writing XML file: %s', [fileName]); 265 | xmlCfg.Free; 266 | exit(false); 267 | end; 268 | msjErr := ''; 269 | for r in listParElem do begin 270 | if r.OnPropertyToFile<>nil then r.OnPropertyToFile; //se ejecuta antes 271 | FileProperty(xmlCfg, r, false); 272 | if msjErr<>'' then begin 273 | ctlErr := r; //elemento que produjo el error 274 | xmlCfg.Free; //libera 275 | exit(false); //sale con error 276 | end; 277 | end; 278 | xmlCfg.Flush; 279 | ctlErr := nil; 280 | xmlCfg.Free; 281 | exit(true); //sin error 282 | end; 283 | function TMiConfigXML.GetFileName: string; 284 | begin 285 | Result := fileName; 286 | end; 287 | 288 | procedure TMiConfigXML.SetFileName(AValue: string); 289 | begin 290 | fileName := AValue; 291 | end; 292 | 293 | //Constructor y Destructor 294 | constructor TMiConfigXML.Create(XMLfile0: string); 295 | begin 296 | inherited Create; 297 | fileName := XMLfile0; 298 | end; 299 | destructor TMiConfigXML.Destroy; 300 | begin 301 | inherited Destroy; 302 | end; 303 | 304 | initialization 305 | cfgFile := TMiConfigXML.Create(cfgFile.DefaultFileName); 306 | 307 | finalization 308 | cfgFile.Destroy; 309 | end. 310 | 311 | -------------------------------------------------------------------------------- /_source/FormEditMacros.pas: -------------------------------------------------------------------------------- 1 | unit FormEditMacros; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, FileUtil, SynEdit, Forms, Controls, Graphics, Dialogs, 9 | LCLProc, Menus, ComCtrls, ActnList, StdActns, MisUtils, SynFacilUtils, 10 | UnTerminal, Parser, Globales, FrameTabSessions; 11 | 12 | type 13 | 14 | { TfrmEditMacros } 15 | 16 | TfrmEditMacros = class(TForm) 17 | published 18 | acFilOpen: TAction; 19 | acFilSaveAs: TAction; 20 | acFilSave: TAction; 21 | acFilNew: TAction; 22 | acFilExit: TAction; 23 | acSrchSearch: TAction; 24 | acSrchSearchNext: TAction; 25 | acSrchReplace: TAction; 26 | acEdiCopy: TEditCopy; 27 | acEdiCut: TEditCut; 28 | acEdiPaste: TEditPaste; 29 | acEdiRedo: TAction; 30 | acEdiSelecAll: TAction; 31 | acEdiUndo: TAction; 32 | AcHerConfig: TAction; 33 | AcHerEjec: TAction; 34 | AcHerDeten: TAction; 35 | AcHerGrab: TAction; 36 | ActionList: TActionList; 37 | acVerPanArc: TAction; 38 | ImageList1: TImageList; 39 | MainMenu1: TMainMenu; 40 | mnArchivo: TMenuItem; 41 | MenuItem10: TMenuItem; 42 | MenuItem11: TMenuItem; 43 | MenuItem12: TMenuItem; 44 | MenuItem13: TMenuItem; 45 | MenuItem14: TMenuItem; 46 | MenuItem15: TMenuItem; 47 | MenuItem16: TMenuItem; 48 | MenuItem18: TMenuItem; 49 | MenuItem19: TMenuItem; 50 | MenuItem20: TMenuItem; 51 | MenuItem21: TMenuItem; 52 | MenuItem22: TMenuItem; 53 | MenuItem24: TMenuItem; 54 | MenuItem25: TMenuItem; 55 | MenuItem26: TMenuItem; 56 | MenuItem27: TMenuItem; 57 | MenuItem28: TMenuItem; 58 | mnRecientes: TMenuItem; 59 | mnHerram: TMenuItem; 60 | mnEdicion: TMenuItem; 61 | MenuItem23: TMenuItem; 62 | MenuItem3: TMenuItem; 63 | MenuItem4: TMenuItem; 64 | MenuItem5: TMenuItem; 65 | MenuItem6: TMenuItem; 66 | MenuItem7: TMenuItem; 67 | MenuItem8: TMenuItem; 68 | MenuItem9: TMenuItem; 69 | OpenDialog1: TOpenDialog; 70 | PopupMenu1: TPopupMenu; 71 | SaveDialog1: TSaveDialog; 72 | StatusBar1: TStatusBar; 73 | ed: TSynEdit; 74 | ToolBar1: TToolBar; 75 | ToolButton1: TToolButton; 76 | ToolButton10: TToolButton; 77 | ToolButton11: TToolButton; 78 | ToolButton12: TToolButton; 79 | ToolButton13: TToolButton; 80 | ToolButton14: TToolButton; 81 | ToolButton2: TToolButton; 82 | ToolButton3: TToolButton; 83 | ToolButton4: TToolButton; 84 | ToolButton5: TToolButton; 85 | ToolButton6: TToolButton; 86 | ToolButton7: TToolButton; 87 | ToolButton8: TToolButton; 88 | ToolButton9: TToolButton; 89 | acVerBarEst: TAction; 90 | acVerNumLin: TAction; 91 | procedure acFilOpenExecute(Sender: TObject); 92 | procedure acFilSaveAsExecute(Sender: TObject); 93 | procedure acFilSaveExecute(Sender: TObject); 94 | procedure acFilNewExecute(Sender: TObject); 95 | procedure acFilExitExecute(Sender: TObject); 96 | procedure acEdiRedoExecute(Sender: TObject); 97 | procedure acEdiSelecAllExecute(Sender: TObject); 98 | procedure acEdiUndoExecute(Sender: TObject); 99 | procedure AcHerConfigExecute(Sender: TObject); 100 | procedure AcHerDetenExecute(Sender: TObject); 101 | procedure AcHerEjecExecute(Sender: TObject); 102 | procedure AcHerGrabExecute(Sender: TObject); 103 | procedure ChangeEditorState; 104 | procedure editChangeFileInform; 105 | procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); 106 | procedure FormCreate(Sender: TObject); 107 | procedure FormDestroy(Sender: TObject); 108 | procedure FormDropFiles(Sender: TObject; const FileNames: array of String); 109 | private 110 | edit: TSynFacilEditor; 111 | procedure MarcarError(nLin, nCol: integer); 112 | public 113 | sessions: TfraTabSessions; 114 | procedure Ejecutar(arc: string); 115 | procedure DetenerEjec; 116 | procedure Abrir(arc: string); 117 | procedure Init(sessions0: TfraTabSessions); 118 | end; 119 | 120 | var 121 | frmEditMacros: TfrmEditMacros; 122 | 123 | implementation 124 | uses FormConfig; 125 | {$R *.lfm} 126 | 127 | { TfrmEditMacros } 128 | 129 | procedure TfrmEditMacros.FormCreate(Sender: TObject); 130 | begin 131 | edit := TSynFacilEditor.Create(ed,'SinNombre', 'ttm'); 132 | edit.OnChangeEditorState:=@ChangeEditorState; 133 | edit.OnChangeFileInform:=@editChangeFileInform; 134 | //define paneles 135 | edit.PanFileSaved := StatusBar1.Panels[0]; //panel para mensaje "Guardado" 136 | edit.PanCursorPos := StatusBar1.Panels[1]; //panel para la posición del cursor 137 | // edit.PanForEndLin := StatusBar1.Panels[2]; //panel para el tipo de delimitador de línea 138 | edit.PanCodifFile := StatusBar1.Panels[3]; //panel para la codificación del archivo 139 | edit.NewFile; 140 | edit.LoadSyntaxFromFile(patSyntax+DirectorySeparator+'Terminal Macro.xml'); 141 | edit.InitMenuRecents(mnRecientes, nil); //inicia el menú "Recientes" 142 | InicEditorC1(ed); //inicia editor con configuraciones por defecto 143 | end; 144 | 145 | procedure TfrmEditMacros.FormCloseQuery(Sender: TObject; var CanClose: boolean); 146 | begin 147 | if edit.SaveQuery then CanClose := false; //cancela 148 | end; 149 | 150 | procedure TfrmEditMacros.FormDestroy(Sender: TObject); 151 | begin 152 | edit.Free; 153 | end; 154 | 155 | procedure TfrmEditMacros.FormDropFiles(Sender: TObject; const FileNames: array of String); 156 | begin 157 | //Carga archivo arrastrados 158 | if edit.SaveQuery then Exit; //Verifica cambios 159 | edit.LoadFile(FileNames[0]); 160 | end; 161 | 162 | procedure TfrmEditMacros.ChangeEditorState; 163 | begin 164 | acFilSave.Enabled:=edit.Modified; 165 | acEdiUndo.Enabled:=edit.CanUndo; 166 | acEdiRedo.Enabled:=edit.CanRedo; 167 | //Para estas acciones no es necesario controlarlas, porque son acciones pre-determinadas 168 | // acEdiCortar.Enabled := edit.canCopy; 169 | // acEdiCopiar.Enabled := edit.canCopy; 170 | // acEdiPegar.Enabled:= edit.CanPaste; 171 | end; 172 | 173 | procedure TfrmEditMacros.editChangeFileInform; 174 | begin 175 | //actualiza nombre de archivo 176 | Caption := 'Editor de Macros - ' + edit.FileName; 177 | end; 178 | 179 | /////////////////// Acciones de Archivo ///////////////////// 180 | procedure TfrmEditMacros.acFilNewExecute(Sender: TObject); 181 | begin 182 | edit.NewFile; 183 | ed.Lines[0] := '// Sample of macro for '+NOM_PROG; 184 | ed.Lines.Add(dic('// Created: ') + DateTimeToStr(Now) ); 185 | ed.Lines.Add('disconnect '+ '//Disconnect if it''s connected'); 186 | ed.Lines.Add('connect "192.168.1.1" '+'//Connect to a new IP'); 187 | ed.Lines.Add('wait "login: "'); 188 | ed.Lines.Add('sendln "usuario"'); 189 | ed.Lines.Add('wait "password: "'); 190 | ed.Lines.Add('sendln "clave"'); 191 | ed.Lines.Add('pause 3 '+'//wait for 3 seconds'); 192 | ed.Lines.Add('sendln "cd /folder"'); 193 | end; 194 | procedure TfrmEditMacros.acFilOpenExecute(Sender: TObject); 195 | begin 196 | OpenDialog1.Filter:='Tito''s Telnet Macro |*.ttm|Todos los archivos|*.*'; 197 | OpenDialog1.InitialDir:=config.foldMacros; //busca aquí por defecto 198 | edit.OpenDialog(OpenDialog1); 199 | end; 200 | procedure TfrmEditMacros.acFilSaveExecute(Sender: TObject); 201 | begin 202 | edit.SaveFile; 203 | end; 204 | procedure TfrmEditMacros.acFilSaveAsExecute(Sender: TObject); 205 | begin 206 | SaveDialog1.InitialDir:=config.foldMacros; //busca aquí por defecto 207 | edit.SaveAsDialog(SaveDialog1); 208 | end; 209 | procedure TfrmEditMacros.acFilExitExecute(Sender: TObject); 210 | begin 211 | frmEditMacros.Close; 212 | end; 213 | procedure TfrmEditMacros.MarcarError(nLin, nCol: integer); 214 | begin 215 | //posiciona curosr 216 | // ed.CaretX := nCol; 217 | // ed.CaretY := nLin; 218 | ed.LogicalCaretXY:=Point(nCol,nLin); 219 | edit.RefreshPanCursor; //Para actualizar la información del cursor en el panel 220 | //define línea con error 221 | edit.linErr := nLin; 222 | ed.Invalidate; //refresca 223 | end; 224 | 225 | //////////// Acciones de Edición //////////////// 226 | procedure TfrmEditMacros.acEdiUndoExecute(Sender: TObject); 227 | begin 228 | edit.Undo; 229 | end; 230 | procedure TfrmEditMacros.acEdiRedoExecute(Sender: TObject); 231 | begin 232 | edit.Redo; 233 | end; 234 | procedure TfrmEditMacros.acEdiSelecAllExecute(Sender: TObject); 235 | begin 236 | ed.SelectAll; 237 | end; 238 | //////////// Acciones de Herramientas //////////////// 239 | procedure TfrmEditMacros.AcHerEjecExecute(Sender: TObject); 240 | begin 241 | cxp.Compilar(edit.FileName, ed.Lines); 242 | if cxp.HayError then begin 243 | MarcarError(cxp.ErrorLine, cxp.ErrorCol); 244 | cxp.ShowError; 245 | end; 246 | end; 247 | procedure TfrmEditMacros.AcHerGrabExecute(Sender: TObject); 248 | //Graba la onexión actual 249 | begin 250 | //Inicialización 251 | ed.ClearAll; 252 | ed.Lines.Add(dic('// Macro generated for ')+NOM_PROG); 253 | ed.Lines.Add(dic('// Date: ') + DateTimeToStr(Now) ); 254 | ed.Lines.Add('DISCONNECT '+'//Disconnect if it''s connected'); 255 | ed.Lines.Add('CLEAR '+'//Clear the terminal'); 256 | //lee parámetros de la configuración actual 257 | if sessions.TabIndex = -1 then exit; 258 | case sessions.ActivePage.cType of 259 | TCON_TELNET: begin 260 | ed.Lines.Add('curTYPE := "Telnet"'); 261 | end; 262 | TCON_SSH : begin 263 | ed.Lines.Add('curTYPE := "SSH"'); 264 | end; 265 | TCON_SERIAL: begin 266 | ed.Lines.Add('curTYPE := "Serial"'); 267 | end; 268 | TCON_OTHER : begin 269 | ed.Lines.Add('curTYPE := "Other" //Este es el tipo para otros procesos'); 270 | ed.Lines.Add('curAPP := "'+ sessions.ActivePage.Other +'" //El proceso que vamoa a lanzar'); 271 | end; 272 | end; 273 | case sessions.ActivePage.LineDelimSend of 274 | LDS_CRLF: 275 | ed.Lines.Add('curENDLINE := "CRLF" //El tipo de salto de línea a enviar'); 276 | LDS_CR: 277 | ed.Lines.Add('curENDLINE := "CR" //El tipo de salto de línea a enviar'); 278 | LDS_LF: 279 | ed.Lines.Add('curENDLINE := "LF" //El tipo de salto de línea a enviar'); 280 | end; 281 | //conecta 282 | ed.Lines.Add('CONNECT '+'//Start connection'); 283 | // PAUSE 3 //Espera unos segundos 284 | // DETECT_PROMPT //Configura la línea actual como el prompt 285 | 286 | end; 287 | procedure TfrmEditMacros.AcHerDetenExecute(Sender: TObject); 288 | begin 289 | DetenerEjec; 290 | end; 291 | procedure TfrmEditMacros.AcHerConfigExecute(Sender: TObject); 292 | begin 293 | config.Configurar('2'); 294 | end; 295 | procedure TfrmEditMacros.DetenerEjec; 296 | //Detiene la ejecución de la macro en curso 297 | begin 298 | if not cxp.ejecProg then exit; 299 | cxp.stop := true; //manda mensaje para detener la macro 300 | end; 301 | procedure TfrmEditMacros.Ejecutar(arc: string); 302 | //Permite ejecutar una macro almacenada en un archivo externo 303 | var 304 | larc: TStringList; 305 | begin 306 | larc := Tstringlist.Create; 307 | larc.LoadFromFile(arc); 308 | cxp.Compilar(arc, larc); 309 | if cxp.HayError then begin 310 | self.Show; //por si no estaba visible 311 | //muestra error en el editor 312 | if edit.FileName= arc then begin 313 | //lo tiene en el editor 314 | MarcarError(cxp.ErrorLine,cxp.ErrorCol); 315 | cxp.ShowError; 316 | end else begin 317 | //no está abierto 318 | Abrir(arc); //lo abre 319 | MarcarError(cxp.ErrorLine,cxp.ErrorCol); 320 | cxp.ShowError; 321 | end; 322 | end; 323 | larc.Free; 324 | end; 325 | procedure TfrmEditMacros.Abrir(arc: string); 326 | //Permite editar una macro almacenada en un archivo externo 327 | begin 328 | if edit.SaveQuery then Exit; //Verifica cambios 329 | edit.LoadFile(arc); 330 | end; 331 | 332 | procedure TfrmEditMacros.Init(sessions0: TfraTabSessions); 333 | begin 334 | //Guarda referencia a las sesiones para controlarlas. 335 | sessions := sessions0; 336 | end; 337 | 338 | end. 339 | 340 | --------------------------------------------------------------------------------