Page 1 of 68

Mejoras para scintilla

Posted: Fri May 04, 2012 9:42 am
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.

Re: Mejoras para scintilla

Posted: Mon May 27, 2013 10:58 am
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

Re: Mejoras para scintilla

Posted: Tue May 28, 2013 5:29 pm
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

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 9:01 am
by cnavarro
Buenos dias
Alguna referencia o ejemplo un poco claro que me pueda servir para solucionarlo?
Gracias

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 10:33 am
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)

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 10:47 am
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

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 11:21 am
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

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 11:28 am
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

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 11:45 am
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... :-)

Re: Mejoras para scintilla

Posted: Thu Jun 13, 2013 5:25 pm
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

Re: Mejoras para scintilla

Posted: Fri Jun 14, 2013 6:58 am
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

Re: Mejoras para scintilla

Posted: Mon Jul 01, 2013 4:14 pm
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

Re: Mejoras para scintilla

Posted: Mon Dec 16, 2013 1:33 am
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?

Re: Mejoras para scintilla

Posted: Tue Dec 17, 2013 3:26 pm
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

Re: Mejoras para scintilla

Posted: Wed Jul 02, 2014 4:21 am
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.