Mejoras para scintilla

Post Reply
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Mejoras para scintilla

Post by mastintin »

Añadidos a scintila.prg para ir implementando folding ...( ojo solo primeros pasos)

en el metodo Setup()

Code: Select all

 ::Send( SCI_SETMARGINMASKN, 2, SC_MASK_FOLDERS )
   
  ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_CIRCLEMINUS)
  ::Send( SCI_MARKERDEFINE,SC_MARKNUM_FOLDER ,SC_MARK_CIRCLEPLUS )  
  ::Send( SCI_MARKERDEFINE,SC_MARKNUM_FOLDERSUB , SC_MARK_VLINE)  
  ::Send(SCI_MARKERDEFINE ,SC_MARKNUM_FOLDERTAIL ,SC_MARK_LCORNERCURVE )  
  ::Send(SCI_MARKERDEFINE ,SC_MARKNUM_FOLDEREND ,SC_MARK_CIRCLEPLUSCONNECTED )  
  ::Send( SCI_MARKERDEFINE,SC_MARKNUM_FOLDEROPENMID ,SC_MARK_CIRCLEMINUSCONNECTED )       
  ::Send(SCI_MARKERDEFINE ,SC_MARKNUM_FOLDERMIDTAIL ,SC_MARK_TCORNERCURVE )   
  ::Send(SCI_SETMARGINSENSITIVEN , 0 ,1 )  
  ::Send(SCI_SETMARGINSENSITIVEN , 2 ,1 ) 

 
En el Methodo NotiFy cambiar:

Code: Select all

  case nCode == SCN_MARGINCLICK
           nPos = GetPosHdr( nPtrNMHDR )
           nLine = ::Send( SCI_LINEFROMPOSITION, nPos, 0 )
           if GETMARGHDR(nPtrNMHDR) == 2
              ::Send(SCI_TOGGLEFOLD, nLine)             
           endif
           if GETMARGHDR(nPtrNMHDR) == 0
              ::SetToggle()   
            //  ::MarkerAdd( nLine, 1 )          
           endif
        //   ::MarkerAdd( nLine, 1 )    

      case nCode == SCN_DOUBLECLICK   
         
          // ::SetToggle()    
            
 
Añadir en la parte #pragma BEGINDUMP

Code: Select all

static int GetMarHdr( LPARAM lParam )
{
   struct SCNotification * pMsg = ( struct SCNotification * )lParam;
       
   return ( pMsg->margin );
}

HB_FUNC( GETMARGHDR )
{
   hb_retni( GetMarHdr( hb_parnl( 1 ) ));
}

 
Saludos.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Buenos dias
Estoy intentando hacer un pequeño editor de codigo.
Tengo definidos los márgenes, nº de lineas, resaltado de palabras, lista de funciones (y que salte a la funcion cuando se hace click en ella), pero no consigo de ninguna manera que me salgan los marcadores (folder, creo que los llama), cómo definir los comienzos y final de estructuras y los símbolos a utilizar en ellos. Me he mirado la documentación y el codigo de Notepad++ pero no consigo aclararme como hacerlo.
Tampoco he conseguido cambiar el color de las lineas de comentarios ni como definir los símbolos que indican que esas lineas son comentarios. El resto de sintaxis si me aparecen coloreados, más o menos.
Si alguien puede echarme una manilla, lo agradezco, ya que estoy "atorado" con este tema desde hace dias.
Saludos
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Este es el Setup que tengo

Code: Select all

   ::SendEditor( SCI_SETLEXER , SCLEX_FLAGSHIP )
   ::SendEditor( SCI_SETSTYLEBITS, 8)   
   //? ::SendEditor( SCI_GETLEXER )

   //::Send( SCI_STYLESETBACK , STYLE_DEFAULT , CLR_GRAY )  //CLR_WHITE

   ::SendEditor( SCI_SETKEYWORDS, 0, cCad0+" "+cCad1 )

   //::SendEditor( SCI_SETKEYWORDS, 2, cCad1 )

   ::Send( SCI_STYLESETFONT, STYLE_DEFAULT, oFontEdt:cFaceName )
   ::Send( SCI_STYLESETSIZE, STYLE_DEFAULT, abs(oFontEdt:nHeight) )
    ::Send( SCI_STYLESETFORE, STYLE_DEFAULT, CLR_BLUE )
    ::Send( SCI_STYLESETBACK, STYLE_DEFAULT, CLR_WHITE ) //RGB( 240, 240, 240 ) )

   ::SendEditor( SCI_STYLECLEARALL, 0 , 0 )

   ::Send( SCI_SETMARGINWIDTHN, 0, 50 )
   ::Send( SCI_STYLESETBACK , STYLE_LINENUMBER , RGB( 118, 148, 168 ) )//RGB( 0, 128, 128 )   )  //nRgb( 051, 051, 051 )) //nRgb( 240, 240, 240 ))
   ::Send( SCI_STYLESETFORE , STYLE_LINENUMBER , CLR_WHITE            )
   ::Send( SCI_STYLESETFONT , STYLE_LINENUMBER , oFontEdt:cFaceName   )
   ::Send( SCI_STYLESETSIZE , STYLE_LINENUMBER , abs(oFontEdt:nHeight)) // - 2 )

   //::SendEditor( SCI_STYLECLEARALL, 0 , 0 )
   //::Send( SCI_SETMARGINWIDTHN, 1, 20 )

   ::SendEditor( SCI_SETMARGINTYPEN, 1, SC_MARGIN_SYMBOL )
   ::SendEditor( SCI_SETMARGINWIDTHN, 1, 30 )
   //::SendEditor( SCI_STYLESETBACK , 1 , RGB( 0, 128, 128 )   )
   //::SendEditor( SCI_SETMARGINMASKN , 1 , SC_MASK_FOLDERS )
   ::SendEditor( SCI_SETMARGINSENSITIVEN, 1, 1)

   //::SendEditor( SCI_SETFOLDMARGINCOLOUR ,
   //::Send( SCI_MARKERDEFINE, 1, SC_MARK_BOXPLUS )



   ::SendEditor( SCI_SETMARGINTYPEN, 2, SC_MASK_FOLDERS ) //SC_MARGIN_SYMBOL )
   ::SendEditor( SCI_SETMARGINWIDTHN, 2, 30 )
   ::SendEditor( SCI_SETMARGINMASKN , 2 , SC_MASK_FOLDERS )
 
  ::SendEditor( SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_CIRCLEMINUS)
  ::SendEditor( SCI_MARKERDEFINE,SC_MARKNUM_FOLDER ,SC_MARK_CIRCLEPLUS )
  ::SendEditor( SCI_MARKERDEFINE,SC_MARKNUM_FOLDERSUB , SC_MARK_VLINE)
  ::SendEditor( SCI_MARKERDEFINE ,SC_MARKNUM_FOLDERTAIL ,SC_MARK_LCORNERCURVE )
  ::SendEditor( SCI_MARKERDEFINE ,SC_MARKNUM_FOLDEREND ,SC_MARK_CIRCLEPLUSCONNECTED )
  ::SendEditor( SCI_MARKERDEFINE,SC_MARKNUM_FOLDEROPENMID ,SC_MARK_CIRCLEMINUSCONNECTED )
  ::SendEditor( SCI_MARKERDEFINE ,SC_MARKNUM_FOLDERMIDTAIL ,SC_MARK_TCORNERCURVE )
  ::SendEditor( SCI_SETMARGINSENSITIVEN, 2, 1)



  //::SendEditor(SCI_SETPROPERTY, "fold", "1")
  //::SendEditor(SCI_SETPROPERTY, "fold.compact", "0")

 //::Send(SCI_SETMARGINSENSITIVEN , 0 ,1 )
  //::Send(SCI_SETMARGINSENSITIVEN , 2 ,1 )




 /*
   ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_BOXMINUS)
   ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDER, SC_MARK_BOXPLUS )
   ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDERSUB, SC_MARK_VLINE)
   ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDEREND, SC_MARK_BOXPLUSCONNECTED)
   ::Send( SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPENMID, SC_MARK_BOXMINUSCONNECTED)
 */

   ::SendEditor( SCI_SETINDENTATIONGUIDES, 1, 0)
   ::SendEditor( SCI_SETHIGHLIGHTGUIDE, 30, 0)

     ::SetAStyle( SCE_FS_COMMENTLINE, CLR_GRAY )
     ::SetAStyle( SCE_FS_OPERATOR, CLR_HRED )    //CLR_HRED
     ::SetAStyle( SCE_FS_STRING, CLR_RED )
     ::SetAStyle( SCE_FS_PREPROCESSOR, CLR_GREEN )
     ::SetAStyle( SCE_FS_NUMBER, CLR_RED )
     ::SetAStyle( SCE_FS_KEYWORD, CLR_BLUE )
     ::SetAStyle( SCE_FS_KEYWORD2, CLR_BLUE)  //CLR_HCYAN )
    ::SetAStyle( SCE_FS_IDENTIFIER , CLR_CYAN )


   //::SetFixedFont()
   ::SetSavePoint()

 
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Buenos dias
Alguna referencia o ejemplo un poco claro que me pueda servir para solucionarlo?
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Mejoras para scintilla

Post by Antonio Linares »

Cristobal,

Aun no he usado los marcadores en scintilla. Desarrollé la clase, la hemos ido probando Manuel y yo, y Manuel tambien ayuda en su desarrollo, pero no tiene implementado todo eso aún. Y como nadie parece usarla, pues no le dedicamos más tiempo (de momento).

Tienes planeado hacer tu IDE open source ? Seria bueno combinar esfuerzos y tener un IDE al agrado de todos :-) (aunque creo que esto es lo verdaderamente dificil)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Antonio
Esa es la idea inicial.
Si no he publicado aun es porque necesito un poco mas de tiempo para ir puliendo algunos detalles.
Tenia que empezar un proyecto para ir poniendome al dia de todos los controles y novedades desde que lo dejé y me pareció muy buena idea realizar un pequeño proyecto de este tipo intentando recopilar las utilidades que se van publicando, estudiarlas y "mejorarlas" si puedo.
Pero este tipo de proyectos siempre me ha llamado mucho la atencion.
Un saludo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Antonio
Lo que estoy usando esta basado en la clase que venia con mi version FWH 12.03
Como siempre, hago clases heredadas de las originales.
En cuanto las funcionalidades básicas de los iconos que aparecen en la pantalla esten al 100% las publicaré para que valores qué puede ser "aprovechable".
De momento funciona el editor bien y cuando pinchas en la lista de METHOD y FUNCIONES se va a la linea de codigo donde esta ubicada.
Todo lo que realizo es porque siempre (desde clipper, y tu primera version) he sido un fanático de la programacion y sobre todo de "Fivewin" pero desde hace mucho tiempo no me dedico profesionalmente al tema, y para mantener y actualizar algunas aplicaciones que hice y que utilizo yo.

Te adjunto imagenes de algunas pantallas mas

Image

Image

Image

Image

Image


Un saludo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Antonio Linares wrote:Cristobal,

Aun no he usado los marcadores en scintilla. Desarrollé la clase, la hemos ido probando Manuel y yo, y Manuel tambien ayuda en su desarrollo, pero no tiene implementado todo eso aún. Y como nadie parece usarla, pues no le dedicamos más tiempo (de momento).

Tienes planeado hacer tu IDE open source ? Seria bueno combinar esfuerzos y tener un IDE al agrado de todos :-) (aunque creo que esto es lo verdaderamente dificil)
Antonio, he estado mirando bastantes editores, entre ellos XEdit, y seguro que si le dedicamos entre todos un poco de esfuerzo lo conseguiremos.
Soy consciente que es un proyecto muy ambicioso y que ya hay aplicaciones muy buenas.
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Mejoras para scintilla

Post by Antonio Linares »

Cristobal,

Si revisas FWH\samples\sciedit.prg veras que es un IDE construido con FWH y usa scintilla.

Ahi está y es gratuito, pero si te fijas, casi nadie ha hablado nada de él :-) Le faltan cosas. Por otra parte el peligro de los IDEs (es algo que veo en el tuyo) es caer en la tentación de añadirle de todo, pero no ofrecer lo básico, lo que de verdad hace falta. A mi tambien me ha pasado muchas veces: me pierdo en los detalles :-) Tambien le pasó al IDE del chinito (lo digo cariñosamente pues no recuerdo su nombre ahora).

Para mi la respuesta es sencilla: a estas alturas cada uno tiene su editor de código favorito, sus makes, batchs, etc... :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Antonio, totalmente de acuerdo contigo
Del ejemplo que viene en mi Fw de Scintilla es de donde nacio la idea.
Mis objetivos son precisamente esos, ir a cosas sencillas que se puedan utilizar facilmente (siguiendo tus consejos).
Como he comentado, voy a seguir desarrollando el proyecto, a ver qué soy capaz de desarrollar y espero que en el foro siga consiguiendo los consejos y ayuda (que seguro necesito) para lo que espero contar con tu inestimable opinion.
Un saludo y gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

Antonio Linares wrote:Cristobal,

Aun no he usado los marcadores en scintilla. Desarrollé la clase, la hemos ido probando Manuel y yo, y Manuel tambien ayuda en su desarrollo, pero no tiene implementado todo eso aún. Y como nadie parece usarla, pues no le dedicamos más tiempo (de momento).

Tienes planeado hacer tu IDE open source ? Seria bueno combinar esfuerzos y tener un IDE al agrado de todos :-) (aunque creo que esto es lo verdaderamente dificil)
Antonio, Manuel
Me podéis echar una manilla en este tema para poner las marcas de inicio y fin de funcion y estructura, o alguna indicacion de por donde empezar?
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mejoras para scintilla

Post by benjiben143 »

hola buenos, dias

yo lo toy usando esta clase en proyecto personal y no si me puedan indicar como le podria hacer que x lineas del editor no se puedan hacer modificaciones

saludos
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Mejoras para scintilla

Post by cnavarro »

benjiben143 wrote:hola buenos, dias

yo lo toy usando esta clase en proyecto personal y no si me puedan indicar como le podria hacer que x lineas del editor no se puedan hacer modificaciones

saludos
Pudiste solucionarlo?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mejoras para scintilla

Post by benjiben143 »

hola navarro buenos días
por lo pronto lo tengo detenido, espero entrando el año le sigo ya que estoy haciendo uno modulo de cheques para la empresa donde trabajo



saludos
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Mejoras para scintilla

Post by Manuel Valdenebro »

Parece que este tema quedo en stand by.

Desde hace años, uso el xEdit y me resulta muy cómodo. Gracias a él, la compilación de mi primera aplicación de xHarbour a Harbour, ha sido muy rápida. Creo que algunos usamos xEdit, pero, por lo menos a mi, me da un poco de corte hablar de las bondades de un producto de la competencia directa a FW y yo soy fiwenero desde 1995.

¿El xEdit de X-ailer y el de xHarbour son el mismo o diferentes?

En mi personal uso, al xEdit gratuito, solo le falta una cosa básica. Que el editor de recursos, solo te muestra los bitmap e iconos, pero no los diálogos. Eso lo muestra, me imagino, X-ailer. Pero X-ailer no me interesa, porque no quiero cambiar la forma de programar. Quiero seguir programando al modo de FiveWin que en cierta medida es el modo de Clipper.

Si fuera posible hacer un xEdit basado en Scintilla, exclusivo para FWH+Harbour, con un editor de recursos que pudiera funcionar como un WS, para mi, sería un bombazo. Sería tener en una sola herramienta, casi todo lo que ahora necesito para compilar. Si a eso se le une el Easy report, ya sería el acabose.

¿Visual Studio? Quizás sería es una herramienta estupenda, pero los que estamos acostumbrados a trabajar de una manera, nos cuesta hacer un cambio global, sobre todo, cuando lo que tenemos funciona sin problemas.

Desconozco si xEdit es capaz de compilar a 64 bit.
Un saludo

Manuel
Post Reply