Page 11 of 70
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 3:01 pm
by mastintin
cnavarro wrote:Manuel
Puedes compartir el metodo oSlide:GetValue()?
Aunque entiendo lo que deberia devolver, no puedo desarrollarlo ahora
LO siento , es un methodo del slider de fivemac . ¿ no tiene equivalente en windows ? algo como oSlide:nValue ?
.......... edito ..................
He mirado el código del slider y seria algo asi :
oSlider:nGetVal( oslider:nPos )
puede que con oSlider:nPos sea suficiente
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 3:18 pm
by cnavarro
Ya me he dado cuenta
Y he mirado el codigo fuente de FiveMac y ya se mas o menos por donde pueden ir los tiros, aunque ahora no tengo tiempo para pruebas
Nada, no hay manera, lo dejo por imposible, no me reconoce ni las datas ni los metodos cuando lo llamo, ya mirare por que: las variables bien definidas, son static, etc
"Message not found: nPos"
"Message not found: nGetVal"
etc.
Code: Select all | Expand
if !Empty( oBar )
@ 3, nRightPos BUTTON oSayZoom PROMPT "Zoom : 100%" OF oBar ;
SIZE 110, 16 PIXEL ;
ACTION oSayZoom:SetText("Zoom : "+ ;
AllTrim(str( ( ( oEditor:SetZoomBar( 0 )+10)*10 ) ) )+ "%" )
//oSayZoom:SetBezelStyle( 13 )
@ 3, nRightPos + 120 SLIDER oSlide SIZE 100,18 OF oBar PIXEL RANGE -9, 20 ;
MARKS 6 ON CHANGE ( oSayZoom:SetText("Zoom : "+ ;
RTrim(Str( ((oEditor:SetZoomBar( nValSlider() )+10)*10) ) )+ "%" ))
//RTrim(Str( ((oEditor:SetZoomBar( oSlide:nGetVal( oSlide:nPos ) )+10)*10) ) )+ "%" ))
//oSlide:SetMinMaxValue( -9, 20 )
//oSlide:bChange := {|| oSayZoom:SetText("Zoom : "+ ;
// AllTrim(Str( ((oEditor:SetZoomBar( oSlide:GetValue() )+10)*10) ) )+ "%" )}
..../....
Function nValSlider()
Local nPos
nPos := oSlide:nPos
nPos := oSlide:nGetVal( nPos )
Return nPos
endif
Qué opinas de la imagen del post anterior?
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 4:45 pm
by mastintin
cnavarro wrote:Ya me he dado cuenta
Y he mirado el codigo fuente de FiveMac y ya se mas o menos por donde pueden ir los tiros, aunque ahora no tengo tiempo para pruebas
Nada, no hay manera, lo dejo por imposible, no me reconoce ni las datas ni los metodos cuando lo llamo, ya mirare por que: las variables bien definidas, son static, etc
"Message not found: nPos"
"Message not found: nGetVal"
etc.
Code: Select all | Expand
if !Empty( oBar )
@ 3, nRightPos BUTTON oSayZoom PROMPT "Zoom : 100%" OF oBar ;
SIZE 110, 16 PIXEL ;
ACTION oSayZoom:SetText("Zoom : "+ ;
AllTrim(str( ( ( oEditor:SetZoomBar( 0 )+10)*10 ) ) )+ "%" )
//oSayZoom:SetBezelStyle( 13 )
@ 3, nRightPos + 120 SLIDER oSlide SIZE 100,18 OF oBar PIXEL RANGE -9, 20 ;
MARKS 6 ON CHANGE ( oSayZoom:SetText("Zoom : "+ ;
RTrim(Str( ((oEditor:SetZoomBar( nValSlider() )+10)*10) ) )+ "%" ))
//RTrim(Str( ((oEditor:SetZoomBar( oSlide:nGetVal( oSlide:nPos ) )+10)*10) ) )+ "%" ))
//oSlide:SetMinMaxValue( -9, 20 )
//oSlide:bChange := {|| oSayZoom:SetText("Zoom : "+ ;
// AllTrim(Str( ((oEditor:SetZoomBar( oSlide:GetValue() )+10)*10) ) )+ "%" )}
..../....
Function nValSlider()
Local nPos
nPos := oSlide:nPos
nPos := oSlide:nGetVal( nPos )
Return nPos
endif
Qué opinas de la imagen del post anterior?
Con el código que pones tendría que funcionar sin problema pues supongo que oslide es estática para que la vea la función en onchange
.
has probado pasando a la función nValSlider un oThis ? .LO miro en un ejemplo autocontenido y te digo algo .
Menudo arreón le has dado al scintilla
. Se ve superbien .
Como comentario , he investigado que eventos maneja scintilla y el botón derecho del raton parece que no lo notifica así que lo de poder tener menu contextual cuando estamos sobre el texto al menos en Mac no va a ser sencillo .
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 5:23 pm
by mastintin
cristobal lo tengo , este código funciona perfecto . Es auto contenido ...
Code: Select all | Expand
Function main()
local oDlg, oFont
local oSlide, oSayZoom
local n, nVar := 0
DEFINE FONT oFont NAME "Arial" SIZE 0, -30 BOLD
DEFINE DIALOG oDlg TITLE "Sliders dialog" ;
FROM 50, 50 TO 400, 500 PIXEL
@ 80, 20 BUTTON oSayZoom PROMPT "Zoom 100%" SIZE 150, 50 ;
FONT oFont PIXEL OF oDlg ;
ACTION ( oSlide:Set(0), ActualizaZoom( nVar, oSayZoom) )
@ 10, 20 SLIDER oSlide VAR nVar OF oDlg ;
RIGHT DIRECTION ;
RANGE -10, 20 ;
MARKS 10 ;
ON CHANGE ActualizaZoom( nVar, oSayZoom ) ;
SIZE 142, 20 PIXEL
ACTIVATE DIALOG oDlg
RELEASE FONT oFont
return nil
Function ActualizaZoom( nVar, oSay )
local nPorcent:= (nVar+10) *10
if( nPorcent == 0 , nPorcent:= 10 , )
oSay:setText("Zoom "+ alltrim(str( nPorcent))+"%" )
//oEditor:SetZoomBar( nVar ) // actualiza el zoom de scintilla
Return nil
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 5:25 pm
by Antonio Linares
Cristobal,
cnavarro wrote:Por cierto, para el tema de la lista de Funciones, etc. se me ha ocurrido esto (fijate en el oTree de la izquierda) a ver que os parece
Ya esta implementado con una DATA que permite activarlo/desactivarlo
Esta chulísimo
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 5:49 pm
by cnavarro
mastintin wrote:Menudo arreón le has dado al scintilla
. Se ve superbien .
Como comentario , he investigado que eventos maneja scintilla y el botón derecho del raton parece que no lo notifica así que lo de poder tener menu contextual cuando estamos sobre el texto al menos en Mac no va a ser sencillo .
En mi version de Windows no tengo problemas con el boton derecho del raton (he definido mi propio metodo RButton...) en mi clase e incluso como ya he comentado, he definido menus contextuales con opciones distintas dependiendo del margen en el que nos encontremos ( en el que estemos situados con el boton derecho ), y el que aparece dentro del texto es el normal (quiero modificarlo mas adelante)
Gracias por el ejemplo
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 6:09 pm
by cnavarro
mastintin wrote:cristobal lo tengo , este código funciona perfecto . Es auto contenido ...
Code: Select all | Expand
Function main()
local oDlg, oFont
local oSlide, oSayZoom
local n, nVar := 0
DEFINE FONT oFont NAME "Arial" SIZE 0, -30 BOLD
DEFINE DIALOG oDlg TITLE "Sliders dialog" ;
FROM 50, 50 TO 400, 500 PIXEL
@ 80, 20 BUTTON oSayZoom PROMPT "Zoom 100%" SIZE 150, 50 ;
FONT oFont PIXEL OF oDlg ;
ACTION ( oSlide:Set(0), ActualizaZoom( nVar, oSayZoom) )
@ 10, 20 SLIDER oSlide VAR nVar OF oDlg ;
RIGHT DIRECTION ;
RANGE -10, 20 ;
MARKS 10 ;
ON CHANGE ActualizaZoom( nVar, oSayZoom ) ;
SIZE 142, 20 PIXEL
ACTIVATE DIALOG oDlg
RELEASE FONT oFont
return nil
Function ActualizaZoom( nVar, oSay )
local nPorcent:= (nVar+10) *10
if( nPorcent == 0 , nPorcent:= 10 , )
oSay:setText("Zoom "+ alltrim(str( nPorcent))+"%" )
//oEditor:SetZoomBar( nVar ) // actualiza el zoom de scintilla
Return nil
Perfecto, el problema era la clausula ... VAR nVar ...
Re: Mejoras para scintilla
Posted: Sun Dec 28, 2014 9:09 pm
by cnavarro
mastintin wrote:Cristobal , he implementado lo del zoom en sciedit de fivemac, pero tu codigo de zoom no me funcionaba adecuadamente y lo he repensado ....
el codigo en la clase :
Code: Select all | Expand
METHOD SetZoom( nZ ) CLASS TScintilla
Local nZoomFactor := ::SendEdit( SCI_GETZOOM, 0, 0 )
DEFAULT nZ := 0
if nZ > -11 .and. nZ < 21
::SendEdit( SCI_SETZOOM, nZ, 0 )
endif
nZoomFactor := ::SendEdit( SCI_GETZOOM, 0, 0 )
Return nZoomFactor
Manuel, quizas habría que añadir:
Code: Select all | Expand
METHOD SetZoom( nZ ) CLASS TScintilla
Local nZoomFactor := ::SendEdit( SCI_GETZOOM, 0, 0 )
DEFAULT nZ := 0
if !empty( ::GetText() )
if nZ > -11 .and. nZ < 21
::SendEdit( SCI_SETZOOM, nZ, 0 )
endif
nZoomFactor := ::SendEdit( SCI_GETZOOM, 0, 0 )
endif
Return nZoomFactor
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 6:42 am
by mastintin
Para poder gestionar las "palabras claves" he creado estas dos funciones , a ver que os parecen .
Code: Select all | Expand
Function loadKeyworks2()
local cCad
local cJson
local hVar:= {=>}
local aVar
local cFile := path()+"/cadfunction.json"
if !File( cFile)
cCad:= cadComand()
aVar := hb_atokens(cCad," ")
hVar["cFun"]:= aVar
cJson = hb_JsonEncode(hVar)
hb_memowrit( cFile, cjson )
else
hb_jsondecode( memoread( cfile ), @hvar )
aVar:=hVar["cFun"]
cCad:= ""
for i =1 to len(aVar)
cCad += aVar[i]+" "
next
endif
Return cCad
//----------------------------------------------------------------------------//
Function loadKeyworks1()
local cCad
local cJson
local hVar:= {=>}
local aVar
local cFile := path()+"/cadcommad.json"
if !File( cFile)
cCad:= CadFunction()
aVar := hb_atokens(cCad," ")
hVar["cCad"]:= aVar
cJson = hb_JsonEncode(hVar)
hb_memowrit( cFile, cjson )
else
hb_jsondecode( memoread( cfile ), @hvar )
aVar:=hVar["cCad"]
cCad:= ""
for i =1 to len(aVar)
cCad += aVar[i]+" "
next
endif
Return cCad
Las he realizado como son por dos motivos . 1.- son soportados por harbour y son multi plataforma . 2.- las puedo recuperar muy fácilmente en un array y así usar xbrowse para su edición ( por ejemplo).
Ahora las pregunta . ¿ Lo meteremos en un solo archivo todo o lo hacemos en varios ( 1 por tipo ) ? ¿ como lo veis ? ¿ que nombre-nombres queréis para el archivo en caso de hacerlo así ?
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 7:54 am
by mastintin
Cristobal , he bajado el sciedit.exe del repositorio y al salir casca el programa .
El proceso es ... programa colocado en una carpeta en el escritorio con las dlls etc. lanzo programa y abro uno de los ejemplos de fw . salgo del programa con el boton de salir . Rompe . me genera un hb_out.log con esto :
Application Internal Error - C:\Users\marcos\Desktop\editor\SCIEDIT.exe
Terminated at: 2014-12-29 08:47:57
Unrecoverable error 6005: Exception error:
Exception Code:C0000005
Exception Address:61ABB280
EAX:61ABB280 EBX:00000000 ECX:00980D68 EDX:00000000
ESI:61ABB280 EDI:00000000 EBP:0018F77C
CS:EIP:0023:61ABB280 SS:ESP:002B:0018F754
DS:002B ES:002B FS:0053 GS:002B
Flags:00210206
CS:EIP:
SS:ESP: 773862FA 00060720 00000087 00000000 00000000 61ABB280 DCBAABCD 00000000 00000000 61ABB280 0018F7F4 77386D3A 61ABB280 00060720 00000087 00000000
C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
61ABB280 0018F77C 0018F7F4 77386D3A 61ABB280 00060720 00000087 00000000 00000000 91C7A754 00000087 61ABB280
77386D3A 0018F7F4 0018F82C 77390D27 00000000 61ABB280 00060720 00000087 00000000 00000000 00000000 00000000
77390D27 0018F82C 0018F84C 7739794A FFFF0849 00060720 00000087 00000000 00000000 00000001
7739794A 0018F84C 0018F874 005447A6 FFFF0849 00060720 00000087 00000000 00000000 00000000 00545774 00060720
005447A6 0018F874 0018F894 00545793 00060720 00000087 00000000 00000000 0000005A 00000000
00545793 0018F894 0018F8C0 773862FA 00060720 00000087 00000000 00000000 00545774 DCBAABCD 00000000 00000000
773862FA 0018F8C0 0018F938 77386D3A 00545774 00060720 00000087 00000000 00000000 91C7A998 00000087 00BF6890
77386D3A 0018F938 0018F97C 7738965E 00000000 00545774 00060720 00000087 00000000 00000000 00BF68B8 00000001
7738965E 0018F97C 0018F9A0 773896C5 00BF6890 00000000 00545774 00000000 00000000 00000000 00BF6890
773896C5 0018F9A0 0018F9B8 773B16AC 00060720 00000087 00000000 00000000
773B16AC 0018F9B8 0018F9EC 773ABE6A 00060720 00000000 7792E695 00000000 006F3714 0018FAE8 0069C3A3 00000000
773ABE6A 0018F9EC 0018FA0C 7739AFAC 00BF74B0 00000000 00000028 00060720 00000001 00000001
7739AFAC 0018FA0C 0018FA38 773862FA 00040792 00000028 00060720 00000001 7792E695 DCBAABCD 00000000 00000000
773862FA 0018FA38 0018FAB0 77386D3A 7792E695 00040792 00000028 00060720 00000001 91C7AA10 00000028 7792E695
77386D3A 0018FAB0 0018FAE8 77390D27 00000000 7792E695 00040792 00000028 00060720 00000001 00000000 00000000
77390D27 0018FAE8 0018FB08 7739794A 7792E695 00040792 00000028 00060720 00000001 00000001
7739794A 0018FB08 0018FB30 005447A6 7792E695 00040792 00000028 00060720 00000001 00000000 00545774 00040792
005447A6 0018FB30 0018FB50 00545793 00040792 00000028 00060720 00000001 00000027 00000000
00545793 0018FB50 0018FB7C 773862FA 00040792 00000028 00060720 00000001 00545774 DCBAABCD 00000000 00000000
773862FA 0018FB7C 0018FBF4 77386D3A 00545774 00040792 00000028 00060720 00000001 91C7AB54 0018FC80 0018FC78
Modules:
0x00400000 0x00328000 C:\Users\marcos\Desktop\editor\SCIEDIT.exe
0x778C0000 0x00180000 C:\Windows\SysWOW64\ntdll.dll
0x76C50000 0x00110000 C:\Windows\syswow64\kernel32.dll
0x77470000 0x00047000 C:\Windows\syswow64\KERNELBASE.dll
0x772D0000 0x000A0000 C:\Windows\syswow64\ADVAPI32.DLL
....
0x607A0000 0x0005C000 C:\Windows\System32\StructuredQuery.dll
0x60F60000 0x0004E000 C:\Windows\SysWOW64\actxprxy.dll
0x61F50000 0x00049000 C:\Program Files (x86)\Internet Explorer\ieproxy.
Called from WINRUN(0)
Called from TWINDOW:ACTIVATE(1050) in .\source\classes\WINDOW.PRG
Called from MAIN(165) in C:\Verce43\FiveUI\Source\sciedit.prg
------------------------------------------------------------------------
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 8:51 am
by cnavarro
Manuel, bajatelo de nuevo
Usa solo las acciones de los botones, las del menu aun no las tengo actualizadas
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 8:58 am
by cnavarro
mastintin wrote:Para poder gestionar las "palabras claves" he creado estas dos funciones , a ver que os parecen .
Code: Select all | Expand
Function loadKeyworks2()
local cCad
local cJson
local hVar:= {=>}
local aVar
local cFile := path()+"/cadfunction.json"
if !File( cFile)
cCad:= cadComand()
aVar := hb_atokens(cCad," ")
hVar["cFun"]:= aVar
cJson = hb_JsonEncode(hVar)
hb_memowrit( cFile, cjson )
else
hb_jsondecode( memoread( cfile ), @hvar )
aVar:=hVar["cFun"]
cCad:= ""
for i =1 to len(aVar)
cCad += aVar[i]+" "
next
endif
Return cCad
//----------------------------------------------------------------------------//
Function loadKeyworks1()
local cCad
local cJson
local hVar:= {=>}
local aVar
local cFile := path()+"/cadcommad.json"
if !File( cFile)
cCad:= CadFunction()
aVar := hb_atokens(cCad," ")
hVar["cCad"]:= aVar
cJson = hb_JsonEncode(hVar)
hb_memowrit( cFile, cjson )
else
hb_jsondecode( memoread( cfile ), @hvar )
aVar:=hVar["cCad"]
cCad:= ""
for i =1 to len(aVar)
cCad += aVar[i]+" "
next
endif
Return cCad
Las he realizado como son por dos motivos . 1.- son soportados por harbour y son multi plataforma . 2.- las puedo recuperar muy fácilmente en un array y así usar xbrowse para su edición ( por ejemplo).
Ahora las pregunta . ¿ Lo meteremos en un solo archivo todo o lo hacemos en varios ( 1 por tipo ) ? ¿ como lo veis ? ¿ que nombre-nombres queréis para el archivo en caso de hacerlo así ?
Hay que distinguir entre ficheros para coloreado y de definicion de sintaxis para la tooltip
Para el coloreado, puedes implementarlo como veas, aunque yo soy partidario de tenerlo todo en un solo fichero
Para las definiciones de funciones yo habia pensado en tres ficheros: Fw, harbour y xharbour (acualmente solo tengo hecho el de harbour -> FuncsHb1.ini ) ya que no encuentro todas las definiciones de Fw, y de xharbour no me he metido aun
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 9:03 am
by jmartial
Hola Cristobal,
¿Puedo bajarlo para probarlo y chequearlo?
Es que no he visto un enlace para descargarlo, sino uno que piden login.
Si no quieres, no pasa nada. Creo que estás haciendo un gran trabajo.
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 9:15 am
by cnavarro
Joaquin, gracias por tu interes
El repositorio volvera a ser publico
De todas formas puedes descargarlo de momento desde este enlace
https://www.dropbox.com/s/fpvjiim0uiq9z ... 1.zip?dl=0Espero comentarios, criticas, peticiones, etc
Hasta ahora no he tenido muchas
---------------------------------------------------------------------------------
Actualizado el enlace
Confirmadme por favor los que os descargueis la aplicacion que falla la primera vez y despues ya funciona correctamente
Re: Mejoras para scintilla
Posted: Mon Dec 29, 2014 9:16 am
by mastintin
Cristobal, sigue fallando ... he descargado de nuevo las dll por si a caso y nada.