You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(31) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(6) |
Feb
|
Mar
(17) |
Apr
(17) |
May
(27) |
Jun
(67) |
Jul
(26) |
Aug
(15) |
Sep
(2) |
Oct
(24) |
Nov
(6) |
Dec
|
2007 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(28) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
(21) |
Feb
(45) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(3) |
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
1
(15) |
2
(7) |
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
(4) |
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
(4) |
22
(1) |
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
|
|
|
From: jw <jw...@us...> - 2005-11-01 12:31:22
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-AxWindow/Samples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15316/Samples Log Message: Directory /cvsroot/perl-win32-gui/Win32-GUI-AxWindow/Samples added to the repository |
From: jw <jw...@us...> - 2005-11-01 10:37:01
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-Scintilla In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23874 Added Files: Changes MANIFEST Makefile.PL Perl.pm README Scintilla.html Scintilla.pm Scintilla.pm.begin Scintilla.pm.end Scintilla.xs Typemap Log Message: Added to repository --- NEW FILE: Makefile.PL --- use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( 'NAME' => 'Win32::GUI::Scintilla', 'VERSION_FROM' => 'Scintilla.pm.begin', # finds $VERSION 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1 'PM' => { 'Scintilla.pm' => '$(INST_LIBDIR)/Scintilla.pm', 'Perl.pm' => '$(INST_LIBDIR)/Scintilla/Perl.pm', }, ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT => 'Add Scintilla control to Win32::GUI', AUTHOR => 'ROCHER Laurent (lr...@cp...)') : ()), 'LIBS' => [''], # e.g., '-lm' 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING' # Insert -I. if you add *.h files later: 'INC' => '', # e.g., '-I/usr/include/other' # Un-comment this if you add C files to link with later: # 'OBJECT' => '$(O_FILES)', # link all the C files too ); sub MY::postamble { return <<'MAKE_FRAG'; Scintilla.pm : Scintilla.pm.begin Scintilla.pm.end include/Scintilla.iface include/autogen.pl $(PERL) ./include/autogen.pl config :: $(INST_ARCHAUTODIR)/SciLexer.dll @$(NOOP) $(INST_ARCHAUTODIR)/SciLexer.dll : include/SciLexer.dll $(CP) ./include/SciLexer.dll $(INST_ARCHAUTODIR)/SciLexer.dll MAKE_FRAG } --- NEW FILE: Scintilla.pm.begin --- #------------------------------------------------------------------------ # Scintilla control for Win32::GUI # by Laurent ROCHER (lr...@cp...) #------------------------------------------------------------------------ #perl2exe_bundle 'SciLexer.dll' package Win32::GUI::Scintilla; use vars qw($ABSTRACT $VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); use Win32::GUI; use Config; require Exporter; require DynaLoader; require AutoLoader; @ISA = qw(Exporter DynaLoader Win32::GUI::Window); $VERSION = '1.7'; bootstrap Win32::GUI::Scintilla $VERSION; #------------------------------------------------------------------------ # Load Scintilla DLL from perl directory or standard LoadLibrary search my $SCILEXER_PATH = $Config{'installsitelib'} . '\auto\Win32\GUI\Scintilla\SciLexer.DLL'; my $SCINTILLA_DLL = Win32::GUI::LoadLibrary($SCILEXER_PATH) || Win32::GUI::LoadLibrary('SciLexer.DLL'); Win32::GUI::Scintilla::_Initialise(); END { # Free Scintilla DLL Win32::GUI::FreeLibrary($SCINTILLA_DLL); Win32::GUI::Scintilla::_UnInitialise(); } #------------------------------------------------------------------------ # # Notify event code # use constant SCN_STYLENEEDED => 2000; use constant SCN_CHARADDED => 2001; use constant SCN_SAVEPOINTREACHED => 2002; use constant SCN_SAVEPOINTLEFT => 2003; use constant SCN_MODIFYATTEMPTRO => 2004; use constant SCN_KEY => 2005; use constant SCN_DOUBLECLICK => 2006; use constant SCN_UPDATEUI => 2007; use constant SCN_MODIFIED => 2008; use constant SCN_MACRORECORD => 2009; use constant SCN_MARGINCLICK => 2010; use constant SCN_NEEDSHOWN => 2011; use constant SCN_PAINTED => 2013; use constant SCN_USERLISTSELECTION => 2014; use constant SCN_URIDROPPED => 2015; use constant SCN_DWELLSTART => 2016; use constant SCN_DWELLEND => 2017; use constant SCN_ZOOM => 2018; use constant SCN_HOTSPOTCLICK => 2019; use constant SCN_HOTSPOTDOUBLECLICK => 2020; use constant SCN_CALLTIPCLICK => 2021; #------------------------------------------------------------------------ # # New scintilla control # sub new { my $class = shift; my (%in) = @_; my %out; ### Filtering option for my $option qw( -name -parent -left -top -width -height -pos -size -pushstyle -addstyle -popstyle -remstyle -notstyle -negstyle -exstyle -pushexstyle -addexstyle -popexstyle -remexstyle -notexstyle ) { $out{$option} = $in{$option} if exists $in{$option}; } ### Default window my $constant = Win32::GUI::constant("WIN32__GUI__STATIC", 0); $out{-style} = WS_CLIPCHILDREN; $out{-class} = "Scintilla"; ### Window style $out{-style} |= WS_TABSTOP unless exists $in{-tabstop} && $in{-tabstop} == 0; #Default to -tabstop => 1 $out{-style} |= WS_VISIBLE unless exists $in{-visible} && $in{-visible} == 0; #Default to -visible => 1 $out{-style} |= WS_HSCROLL if exists $in{-hscroll} && $in{-hscroll} == 1; $out{-style} |= WS_VSCROLL if exists $in{-vscroll} && $in{-vscroll} == 1; my $self = Win32::GUI->_new($constant, $class, %out); if (defined ($self)) { # Option Text : $self->SetText($in{-text}) if exists $in{-text}; $self->SetReadOnly($in{-readonly}) if exists $in{-readonly}; } return $self; } # # Win32 shortcut # sub Win32::GUI::Window::AddScintilla { my $parent = shift; return Win32::GUI::Scintilla->new (-parent => $parent, @_); } #------------------------------------------------------------------------ # Miscolous function #------------------------------------------------------------------------ # # Clear Scintilla Text # sub NewFile { my $self = shift; $self->ClearAll(); $self->EmptyUndoBuffer(); $self->SetSavePoint(); } # # Load text file to Scintilla # sub LoadFile { my ($self, $file) = @_; $self->ClearAll(); $self->Cancel(); $self->SetUndoCollection(0); open F, "<$file" or return 0; while ( <F> ) { $self->AppendText($_); } close F; $self->SetUndoCollection(1); $self->EmptyUndoBuffer(); $self->SetSavePoint(); $self->GotoPos(0); return 1; } # # Save Scintilla text to file # sub SaveFile { my ($self, $file) = @_; open F, ">$file" or return 0; for my $i (0..$self->GetLineCount()) { print F $self->GetLine ($i); } close F; $self->SetSavePoint(); return 1; } # # Help routine for StyleSet # sub StyleSetSpec { my ($self, $style, $textstyle) = @_; foreach my $prop (split (/,/, $textstyle)) { my ($key, $value) = split (/:/, $prop); $self->StyleSetFore($style, $value) if $key eq 'fore'; $self->StyleSetBack($style, $value) if $key eq 'back'; $self->StyleSetFont($style, $value) if $key eq 'face'; $self->StyleSetSize($style, int ($value) ) if $key eq 'size'; $self->StyleSetBold($style, 1) if $key eq 'bold'; $self->StyleSetBold($style, 0) if $key eq 'notbold'; $self->StyleSetItalic($style, 1) if $key eq 'italic'; $self->StyleSetItalic($style, 0) if $key eq 'notitalic'; $self->StyleSetUnderline($style, 1) if $key eq 'underline'; $self->StyleSetUnderline($style, 0) if $key eq 'notunderline'; $self->StyleSetEOLFilled ($style, 1) if $key eq 'eolfilled'; $self->StyleSetEOLFilled ($style, 0) if $key eq 'noteolfilled'; } } #------------------------------------------------------------------------ # Begin Autogenerate #------------------------------------------------------------------------ --- NEW FILE: Scintilla.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Win32::GUI::Scintilla - Add Scintilla edit control to Win32::GUI</title> <link rev="made" href="mailto:" /> </head> <body style="background-color: white"> <p><a name="__index__"></a></p> <!-- INDEX BEGIN --> <ul> <li><a href="#name">NAME</a></li> <li><a href="#synopsis">SYNOPSIS</a></li> <li><a href="#description">DESCRIPTION</a></li> <ul> [...3150 lines suppressed...] See comment for relation between Lexer language and lexer constante.</pre> </dd> </dl> <p> </p> <hr /> <h1><a name="author">AUTHOR</a></h1> <pre> Laurent Rocher (lr...@cp...) HomePage :<a href="http://perso.club-internet.fr/rocherl/Win32GUI.html">http://perso.club-internet.fr/rocherl/Win32GUI.html</a></pre> <p> </p> <hr /> <h1><a name="see_also">SEE ALSO</a></h1> <pre> Win32::GUI</pre> </body> </html> --- NEW FILE: Perl.pm --- =head1 NAME Win32::GUI::Scintilla::Perl -- Scintilla control with Perl awareness. =head1 SYNOPSIS use Win32::GUI::Scintilla::Perl; my $win = #Create window here my $sciViewer = $winMain->AddScintillaPerl ( -name => "sciViewer", -left => 0, -top => 30, -width => 400, -height => 240, -addexstyle => WS_EX_CLIENTEDGE, ); #Change look and feel to your liking here. =cut package Win32::GUI::Scintilla::Perl; use strict; use Win32::GUI::Scintilla; =head1 METHODS =head2 new(%hOption) Create a Win32::GUI::Scintilla control which is in "Perl mode". Other than this, it's a regular Scintilla object. You can override any setting afterward. =cut my %hFontFace = ( 'times' => 'Times New Roman', 'mono' => 'Courier New', 'helv' => 'Lucida Console', 'lucida' => 'Lucida Console', 'other' => 'Comic Sans MS', 'size' => '10', 'size2' => '9', 'backcol'=> '#FFFFFF', ); my $keywordPerl = q{ NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK abs accept alarm and atan2 bind binmode bless caller chdir chmod chomp chop chown chr chroot close closedir cmp connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eq eval exec exists exit exp fcntl fileno flock for foreach fork format formline ge getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getppid getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst le length link listen local localtime lock log lstat lt m map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q qq qr quotemeta qu qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir s scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn while write x xor y }; sub new { my $pkg = shift; $pkg = ref($pkg) || $pkg; my $sci = Win32::GUI::Scintilla->new(@_) or return(undef); SetupPerl($sci) or return(undef); return($sci); } =head1 ROUTINES =head2 SetupPerl($sciControl) Setup $sciControl in Perl mode. Return 1 on success, else 0. =cut sub SetupPerl { my ($sci) = @_; # Set Perl Lexer $sci->SetLexer(Win32::GUI::Scintilla::SCLEX_PERL); # Set Perl Keyword $sci->SetKeyWords(0, $keywordPerl); # Folder ???? $sci->SetProperty("fold", "1"); $sci->SetProperty("tab.timmy.whinge.level", "1"); # Indenetation $sci->SetIndentationGuides(1); $sci->SetUseTabs(1); $sci->SetTabWidth(4); $sci->SetIndent(4); # Edge Mode $sci->SetEdgeMode(Win32::GUI::Scintilla::EDGE_LINE); #Win32::GUI::Scintilla::EDGE_BACKGROUND $sci->SetEdgeColumn(80); # Define margin # $sci->SetMargins(0,0); $sci->SetMarginTypeN(1, Win32::GUI::Scintilla::SC_MARGIN_NUMBER); $sci->SetMarginWidthN(1, 25); $sci->SetMarginTypeN(2, Win32::GUI::Scintilla::SC_MARGIN_SYMBOL); $sci->SetMarginMaskN(2, Win32::GUI::Scintilla::SC_MASK_FOLDERS); $sci->SetMarginSensitiveN(2, 1); $sci->SetMarginWidthN(2, 12); # Define marker $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, Win32::GUI::Scintilla::SC_MARK_BOXPLUSCONNECTED); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, Win32::GUI::Scintilla::SC_MARK_BOXMINUSCONNECTED); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, Win32::GUI::Scintilla::SC_MARK_TCORNER); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, Win32::GUI::Scintilla::SC_MARK_LCORNER); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, Win32::GUI::Scintilla::SC_MARK_VLINE); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, Win32::GUI::Scintilla::SC_MARK_BOXPLUS); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#000000'); $sci->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, Win32::GUI::Scintilla::SC_MARK_BOXMINUS); $sci->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, '#FFFFFF'); $sci->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, '#000000'); # Define Style $sci->StyleClearAll(); # Global default styles for all languages $sci->StyleSetSpec(Win32::GUI::Scintilla::STYLE_DEFAULT, "face:$hFontFace{'mono'},size:$hFontFace{'size'}"); $sci->StyleSetSpec(Win32::GUI::Scintilla::STYLE_LINENUMBER, "back:#C0C0C0,face:$hFontFace{mono}"); $sci->StyleSetSpec(Win32::GUI::Scintilla::STYLE_CONTROLCHAR, "face:$hFontFace{mono}"); $sci->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold"); $sci->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold"); # White space $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DEFAULT, "fore:#808080,face:$hFontFace{'mono'}"); # Error $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_ERROR , "fore:#0000FF"); # Comment $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_COMMENTLINE, "fore:#007F00"); # POD: = at beginning of line $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_POD, "fore:#004000,back:#E0FFE0,eolfilled"); # Number $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_NUMBER, "fore:#007F7F"); # Keyword $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_WORD , "fore:#00007F,bold"); # Double quoted string $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING, "fore:#7F007F,face:$hFontFace{'mono'},italic"); # Single quoted string $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_CHARACTER, "fore:#7F0000,face:$hFontFace{'mono'},italic"); # Symbols / Punctuation. Currently not used by LexPerl. $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_PUNCTUATION, "fore:#00007F,bold"); # Preprocessor. Currently not used by LexPerl. $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_PREPROCESSOR, "fore:#00007F,bold"); # Operators $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_OPERATOR , "bold"); # Identifiers (functions, etc.) $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_IDENTIFIER , "fore:#000000"); # Scalars: $var $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_SCALAR, "fore:#000000,back:#FFE0E0"); # Array: @var $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_ARRAY, "fore:#000000,back:#FFFFE0"); # Hash: %var $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HASH, "fore:#000000,back:#FFE0FF"); # Symbol table: *var $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_SYMBOLTABLE, "fore:#000000,back:#E0E0E0"); # Regex: /re/ or m{re} $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_REGEX, "fore:#000000,back:#A0FFA0"); # Substitution: s/re/ore/ $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_REGSUBST, "fore:#000000,back:#F0E080"); # Long Quote (qq, qr, qw, qx) -- obsolete: replaced by qq, qx, qr, qw $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_LONGQUOTE, "fore:#FFFF00,back:#8080A0"); # Back Ticks $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_BACKTICKS, "fore:#FFFF00,back:#A08080"); # Data Section: __DATA__ or __END__ at beginning of line $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DATASECTION, "#600000,back:#FFF0D8,eolfilled"); # Here-doc (delimiter) $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_DELIM, "fore:#000000,back:#DDD0DD"); # Here-doc (single quoted, q) $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_Q, "fore:#7F007F,back:#DDD0DD,eolfilled,notbold"); # Here-doc (double quoted, qq) $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_QQ, "fore:#7F007F,back:#DDD0DD,eolfilled,bold"); # Here-doc (back ticks, qx) $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_QX, "fore:#7F007F,back:#DDD0DD,eolfilled,italics"); # Single quoted string, generic $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_Q, "fore:#7F007F,notbold"); # qq = Double quoted string $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QQ, "fore:#7F007F,italic"); # qx = Back ticks $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QX, "fore:#FFFF00,back:#A08080"); # qr = Regex $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QR, "fore:#000000,back:#A0FFA0"); # qw = Array $sci->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QW, "fore:#000000,back:#FFFFE0"); return(1); } =head1 Win32::GUI::Window methods =head2 AddScintillaPerl Create and add a Win32::GUI::Scintilla::Perl control to this window. =cut sub Win32::GUI::Window::AddScintillaPerl { my $parent = shift; return Win32::GUI::Scintilla::Perl->new (-parent => $parent, @_); } 1; =head1 AUTHOR Laurent Rocher (the hard work) and Johan Lindström (subclassing). Same license as Perl. =cut __END__ --- NEW FILE: README --- Win32::GUI::Scintilla version 1.7 ================================= Win32::GUI::Scintilla - Add Scintilla edit control to Win32::GUI INSTALLATION To install this module type the following: perl Makefile.PL make make install Makefile.pl notes: - Scintilla.pm is create by /include/autogen.pl by Makefile.PL. it use Scintilla.iface, Scintilla.pm.begin and Scintilla.pm.end. - Makefile.pl copy ./include/SciLexer.dll to .\blib\arch\auto\Win32\GUI\Scintilla\SciLexer.dll DEPENDENCIES This module requires these other modules and libraries: Win32::GUI Scintilla (http:/www.scintilla.org/) WEB PAGE AND PPM REPOSITORY See: http://perso.club-internet.fr/rocherl/Win32GUI.html COPYRIGHT AND LICENCE Copyright 2003 by Laurent Rocher (lr...@cp...). This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See <http://www.perl.com/perl/misc/Artistic.html>. --- NEW FILE: Scintilla.pm --- #------------------------------------------------------------------------ # Scintilla control for Win32::GUI # by Laurent ROCHER (lr...@cp...) #------------------------------------------------------------------------ #perl2exe_bundle 'SciLexer.dll' package Win32::GUI::Scintilla; use vars qw($ABSTRACT $VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); use Win32::GUI; use Config; require Exporter; require DynaLoader; require AutoLoader; @ISA = qw(Exporter DynaLoader Win32::GUI::Window); $VERSION = '1.7'; [...5864 lines suppressed...] =item C<Lexer constant> See Scintilla.pm SCLEX_* contante for lexer language. SCE_* for lexer constante. See comment for relation between Lexer language and lexer constante. =head1 AUTHOR Laurent Rocher (lr...@cp...) HomePage :http://perso.club-internet.fr/rocherl/Win32GUI.html =head1 SEE ALSO Win32::GUI =cut --- NEW FILE: Scintilla.xs --- /**********************************************************************/ /* S c i n t i l l a . x s */ /**********************************************************************/ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include <windows.h> #include "./include/Scintilla.h" /*====================================================================*/ /* W I N 3 2 : : G U I */ /*====================================================================*/ #define MAX_WINDOW_NAME 128 /* * Various definitions to accomodate the different Perl versions around */ #ifdef PERL_OBJECT # ifdef _INC_WIN32_PERL5 # pragma message( "\n*** Using the 5.005 Perl Object CPerlObj class.\n" ) # define NOTXSPROC CPerlObj *pPerl, # define NOTXSCALL pPerl, # define CPerl CPerlObj # else // not _INC_WIN32_PERL5 # pragma message( "\n*** Using the 5.004 Perl Object CPerl class.\n" ) # define NOTXSPROC CPerl *pPerl, # define NOTXSCALL pPerl, # endif // _INC_WIN32_PERL5 #else # pragma message( "\n*** Using a non-Object Core Perl.\n" ) # define NOTXSPROC # define NOTXSCALL #endif /* * what we'll store in GWL_USERDATA */ typedef struct tagPERLWIN32GUI_USERDATA { DWORD dwSize; // struct size (our signature) #ifdef PERL_OBJECT CPerl *pPerl; // a pointer to the Perl Object #endif SV* svSelf; // a pointer to ourself char szWindowName[MAX_WINDOW_NAME]; // our -name BOOL fDialogUI; // are we to intercept dialog messages? int iClass; // our (Perl) class HACCEL hAcc; // our accelerator table HWND hTooltip; HCURSOR hCursor; DWORD dwPlStyle; int iMinWidth; int iMaxWidth; int iMinHeight; int iMaxHeight; COLORREF clrForeground; COLORREF clrBackground; HBRUSH hBackgroundBrush; WNDPROC wndprocPreContainer; WNDPROC wndprocPreNEM; int iEventModel; HV* hvEvents; DWORD dwEventMask; HWND Modal; } PERLWIN32GUI_USERDATA, *LPPERLWIN32GUI_USERDATA; BOOL ProcessEventError(NOTXSPROC char *Name, int* PerlResult) { if(strncmp(Name, "main::", 6) == 0) Name += 6; if(SvTRUE(ERRSV)) { MessageBeep(MB_ICONASTERISK); *PerlResult = MessageBox( NULL, SvPV_nolen(ERRSV), Name, MB_ICONERROR | MB_OKCANCEL ); if(*PerlResult == IDCANCEL) { *PerlResult = -1; } return TRUE; } else { return FALSE; } } /*====================================================================*/ /* H O O K F U N C T I O N */ /*====================================================================*/ typedef struct SCNotification * pSCNotification; /* struct SCNotification { struct NotifyHeader nmhdr; int position; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND int ch; // SCN_CHARADDED, SCN_KEY int modifiers; // SCN_KEY int modificationType; // SCN_MODIFIED const char *text; // SCN_MODIFIED int length; // SCN_MODIFIED int linesAdded; // SCN_MODIFIED int message; // SCN_MACRORECORD uptr_t wParam; // SCN_MACRORECORD sptr_t lParam; // SCN_MACRORECORD int line; // SCN_MODIFIED int foldLevelNow; // SCN_MODIFIED int foldLevelPrev; // SCN_MODIFIED int margin; // SCN_MARGINCLICK int listType; // SCN_USERLISTSELECTION int x; // SCN_DWELLSTART, SCN_DWELLEND int y; // SCN_DWELLSTART, SCN_DWELLEND }; */ int DoEvent (NOTXSPROC char *Name, UINT code, pSCNotification evt) { int PerlResult; int count; PerlResult = 1; if(perl_get_cv(Name, FALSE) != NULL) { dSP; dTARG; ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(newSVpv("-code", 0))); XPUSHs(sv_2mortal(newSViv(code))); if (code == SCN_STYLENEEDED || code == SCN_MODIFIED || code == SCN_DWELLSTART || code == SCN_DWELLEND || code == SCN_MARGINCLICK || code == SCN_HOTSPOTCLICK || code == SCN_HOTSPOTDOUBLECLICK || code == SCN_CALLTIPCLICK) { XPUSHs(sv_2mortal(newSVpv("-position", 0))); XPUSHs(sv_2mortal(newSViv(evt->position))); } if (code == SCN_CHARADDED || code == SCN_KEY) { XPUSHs(sv_2mortal(newSVpv("-ch", 0))); XPUSHs(sv_2mortal(newSViv(evt->ch))); } if (code == SCN_KEY || code == SCN_MARGINCLICK || code == SCN_HOTSPOTCLICK || code == SCN_HOTSPOTDOUBLECLICK) { XPUSHs(sv_2mortal(newSVpv("-modifiers", 0))); XPUSHs(sv_2mortal(newSViv(evt->modifiers))); XPUSHs(sv_2mortal(newSVpv("-shift", 0))); XPUSHs(sv_2mortal(newSViv(evt->modifiers & SCMOD_SHIFT))); XPUSHs(sv_2mortal(newSVpv("-control", 0))); XPUSHs(sv_2mortal(newSViv(evt->modifiers & SCMOD_CTRL))); XPUSHs(sv_2mortal(newSVpv("-alt", 0))); XPUSHs(sv_2mortal(newSViv(evt->modifiers & SCMOD_ALT))); } if (code == SCN_MODIFIED ) { XPUSHs(sv_2mortal(newSVpv("-modificationType", 0))); XPUSHs(sv_2mortal(newSViv(evt->modificationType))); // XPUSHs(sv_2mortal(newSVpv("-text", 0))); // XPUSHs(sv_2mortal(newSVpv(evt->text, 0))); XPUSHs(sv_2mortal(newSVpv("-length", 0))); XPUSHs(sv_2mortal(newSViv(evt->length))); XPUSHs(sv_2mortal(newSVpv("-linesAdded", 0))); XPUSHs(sv_2mortal(newSViv(evt->linesAdded))); XPUSHs(sv_2mortal(newSVpv("-line", 0))); XPUSHs(sv_2mortal(newSViv(evt->line))); XPUSHs(sv_2mortal(newSVpv("-foldLevelNow", 0))); XPUSHs(sv_2mortal(newSViv(evt->foldLevelNow))); XPUSHs(sv_2mortal(newSVpv("-foldLevelPrev", 0))); XPUSHs(sv_2mortal(newSViv(evt->foldLevelPrev))); } if (code == SCN_MACRORECORD) { XPUSHs(sv_2mortal(newSVpv("-message", 0))); XPUSHs(sv_2mortal(newSViv(evt->message))); } if (code == SCN_MARGINCLICK) { XPUSHs(sv_2mortal(newSVpv("-margin", 0))); XPUSHs(sv_2mortal(newSViv(evt->margin))); } if (code == SCN_USERLISTSELECTION) { XPUSHs(sv_2mortal(newSVpv("-listType", 0))); XPUSHs(sv_2mortal(newSViv((int) evt->wParam))); // ??? // XPUSHs(sv_2mortal(newSViv(evt->listType))); // XPUSHs(sv_2mortal(newSVpv("-text", 0))); // XPUSHs(sv_2mortal(newSVpv(evt->text, 0))); } if (code == SCN_DWELLSTART || code == SCN_DWELLEND) { XPUSHs(sv_2mortal(newSVpv("-x", 0))); XPUSHs(sv_2mortal(newSViv(evt->x))); XPUSHs(sv_2mortal(newSVpv("-y", 0))); XPUSHs(sv_2mortal(newSViv(evt->y))); } PUTBACK; count = perl_call_pv(Name, G_EVAL|G_ARRAY); SPAGAIN; if(!ProcessEventError(NOTXSCALL Name, &PerlResult)) { if(count > 0) PerlResult = POPi; } PUTBACK; FREETMPS; LEAVE; } return PerlResult; } int DoEvent_Generic(NOTXSPROC char *Name) { int PerlResult; int count; PerlResult = 1; if(perl_get_cv(Name, FALSE) != NULL) { dSP; dTARG; ENTER; SAVETMPS; PUSHMARK(SP); PUTBACK; count = perl_call_pv(Name, G_EVAL|G_NOARGS); SPAGAIN; if(!ProcessEventError(NOTXSCALL Name, &PerlResult)) { if(count > 0) PerlResult = POPi; } PUTBACK; FREETMPS; LEAVE; } return PerlResult; } HHOOK hhook; LRESULT WINAPI CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) { CWPSTRUCT * msg = (CWPSTRUCT *) lParam; if (nCode >= 0 && msg->message == WM_NOTIFY) { NMHDR *lpnmhdr = (LPNMHDR) msg->lParam; char Name [255]; // Read Sender Class GetClassName (lpnmhdr->hwndFrom, Name, 255); if (memcmp (Name, "Scintilla", 9) == 0) { // Perl contexte #ifdef PERL_OBJECT CPerl *pPerl; #endif LPPERLWIN32GUI_USERDATA perlud = (LPPERLWIN32GUI_USERDATA) GetWindowLong(lpnmhdr->hwndFrom, GWL_USERDATA); if (perlud != NULL) { #ifdef PERL_OBJECT pPerl = perlud->pPerl; #endif // Build name strcpy(Name, "main::"); strcat(Name, (char *) perlud->szWindowName); strcat(Name, "_Notify"); DoEvent(NOTXSCALL Name, lpnmhdr->code, (pSCNotification) msg->lParam); } } } else if (nCode >= 0 && msg->message == WM_COMMAND && msg->lParam != 0) { char Name [255]; // Read Sender Class GetClassName ((HWND) msg->lParam, Name, 255); if (memcmp (Name, "Scintilla", 9) == 0) { // Perl contexte #ifdef PERL_OBJECT CPerl *pPerl; #endif LPPERLWIN32GUI_USERDATA perlud = (LPPERLWIN32GUI_USERDATA) GetWindowLong((HWND) msg->lParam, GWL_USERDATA); if (perlud != NULL) { #ifdef PERL_OBJECT pPerl = perlud->pPerl; #endif // Build name strcpy(Name, "main::"); strcat(Name, (char *) perlud->szWindowName); switch (HIWORD(msg->wParam)) { case SCEN_CHANGE : strcat(Name, "_Change"); DoEvent_Generic (NOTXSCALL Name); break; case SCEN_SETFOCUS : strcat(Name, "_GotFocus"); DoEvent_Generic (NOTXSCALL Name); break; case SCEN_KILLFOCUS : strcat(Name, "_LostFocus"); DoEvent_Generic (NOTXSCALL Name); break; } } } } return CallNextHookEx(hhook, nCode, wParam, lParam); } /*====================================================================*/ /* Win32::GUI::Scintilla package */ /*====================================================================*/ MODULE = Win32::GUI::Scintilla PACKAGE = Win32::GUI::Scintilla ########################################################################### # _Initialise() (internal) # Install Hook function void _Initialise() PREINIT: CODE: hhook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, (HINSTANCE) NULL, GetCurrentThreadId()); ########################################################################### # _UnInitialise() (internal) # Release Hook function void _UnInitialise() PREINIT: CODE: UnhookWindowsHookEx (hhook); ########################################################################### # SendMessageNP : Posts a message to a window # Take WPARAM as int and LPARAM as a LPVOID LRESULT SendMessageNP(handle,msg,wparam,lparam) HWND handle UINT msg WPARAM wparam LPVOID lparam CODE: RETVAL = SendMessage(handle, msg, (WPARAM) wparam, (LPARAM) lparam); OUTPUT: RETVAL ########################################################################### # SendMessagePP : Posts a message to a window # Take WPARAM and LPARAM as a LPVOID LRESULT SendMessagePP(handle,msg,wparam,lparam) HWND handle UINT msg LPVOID wparam LPVOID lparam CODE: RETVAL = SendMessage(handle, msg, (WPARAM) wparam, (LPARAM) lparam); OUTPUT: RETVAL --- NEW FILE: MANIFEST --- Changes Makefile.PL MANIFEST README Scintilla.pm Scintilla.xs Scintilla.pm.begin Scintilla.pm.end Perl.pm Typemap Include/autogen.pl Include/Readme.txt Include/Scintilla.iface Include/Scintilla.h Include/SciLexer.dll Samples/test.pl Samples/test2.pl Samples/Editor.pl --- NEW FILE: Changes --- Revision history for Perl extension Scintilla. 1.7 28/02/2004 - Use Scintilla 1.59 1.6 30/11/2003 - Use Scintilla 1.57 - Rewrite Makefile.pl 1.5 28/10/2003 - Use Scintilla 1.56 1.4 28/09/2003 - Correct -visible and -tabstop option (thank to Johan Lindström) - Use Scintilla 1.55 1.3 27/05/2003 - [UPDATE] Add Perl2Exe support (Automaticly add Scilexer.dll from current directory) Copy SciLexer.dll in script directory before run perl2exe. 1.2 26/05/2003 - [BUG] Correct some bugs (thank to Jeremy White again) - Add Win32::GUI::Scintilla::Perl (thank to Johan Lindström) - Add FindAndSelect method for simplify text search. - Add Perl2Exe support (Automaticly add Scilexer.dll from current directory) - Use Scintilla 1.53 1.1 14/03/2003 - [BUG] Correct LineLength call (thank to Jeremy White) - Add Change, LostFocus and GotFocus Events. - Use Scintilla 1.51 1.0 24/01/2003 - First release --- NEW FILE: Typemap --- TYPEMAP HWND T_HANDLE HTREEITEM T_IV LONG T_IV LPCTSTR T_PV LPTSTR T_PV DWORD T_IV UINT T_IV BOOL T_IV WPARAM T_IV LPARAM T_IV LRESULT T_IV HINSTANCE T_IV COLORREF T_COLOR LPCSTR T_PV FLOAT T_FLOAT LPVOID T_PV ################################################################################ INPUT T_HANDLE if(SvROK($arg)) { if(hv_fetch((HV*)SvRV($arg), \"-handle\", 7, 0) != NULL) $var = ($type) SvIV(*(hv_fetch((HV*)SvRV($arg), \"-handle\", 7, 0))); else $var = NULL; } else $var = ($type) SvIV($arg); --- NEW FILE: Scintilla.pm.end --- #------------------------------------------------------------------------ # End Autogenerate #------------------------------------------------------------------------ # Code Here because need constant #------------------------------------------------------------------------ # BraceHighEvent Management #------------------------------------------------------------------------ sub BraceHighEvent { my $self = shift; my $braces = shift || "[]{}()"; my $braceAtCaret = -1; my $braceOpposite = -1; my $caretPos = $self->GetCurrentPos(); [...2435 lines suppressed...] =item C<Lexer constant> See Scintilla.pm SCLEX_* contante for lexer language. SCE_* for lexer constante. See comment for relation between Lexer language and lexer constante. =head1 AUTHOR Laurent Rocher (lr...@cp...) HomePage :http://perso.club-internet.fr/rocherl/Win32GUI.html =head1 SEE ALSO Win32::GUI =cut |
From: jw <jw...@us...> - 2005-11-01 10:37:00
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23874/Include Added Files: Readme.txt SciLexer.dll Scintilla.h Scintilla.iface autogen.pl Log Message: Added to repository --- NEW FILE: Scintilla.iface --- ## First line may be used for shbang ## This file defines the interface to Scintilla ## Copyright 2000-2003 by Neil Hodgson <ne...@sc...> ## The License.txt file describes the conditions under which this software may be distributed. ## A line starting with ## is a pure comment and should be stripped by readers. ## A line starting with #! is for future shbang use ## A line starting with # followed by a space is a documentation comment and refers ## to the next feature definition. ## Each feature is defined by a line starting with fun, get, set, val or evt. ## cat -> start a category ## fun -> a function ## get -> a property get function ## set -> a property set function ## val -> definition of a constant ## evt -> an event [...2399 lines suppressed...] evt void URIDropped=2015(string text) evt void DwellStart=2016(int position) evt void DwellEnd=2017(int position) evt void Zoom=2018(void) evt void HotSpotClick=2019(int modifiers, int position) evt void HotSpotDoubleClick=2020(int modifiers, int position) evt void CallTipClick=2021(int position) cat Deprecated # CARET_POLICY changed in 1.47 fun void SetCaretPolicy=2369(int caretPolicy, int caretSlop) val CARET_CENTER=0x02 val CARET_XEVEN=0x08 val CARET_XJUMPS=0x10 # The old name for SCN_UPDATEUI val SCN_CHECKBRACE=2007 evt void PosChanged=2012(int position) --- NEW FILE: Readme.txt --- Scilexer.dll : Scintilla control with lexer. Scintilla.h : C include file of Scintilla control. Scintilla.iface : Interface desciption of Scintilla control. Autogen.pl : Build Scintilla.pm from Scintilla.pm.begin, Scintilla.pm.end and Scintilla.iface. --- NEW FILE: autogen.pl --- #! perl open G, ">Scintilla.pm" or return 1; # Add Startup open F, "<scintilla.pm.begin" or return 1; while ( <F> ) { print G $_; } close F; # Build Scintilla interface open F, "<include/scintilla.iface" or return 2; while ( <F> ) { #--- Constant --- if (/^val (.*)=(.*)$/) { print G "use constant $1 => $2 ;\n"; } #--- Get --- elsif (/^get colour (.*)=(.*)\(,\)$/ ) { print G "sub $1 {\n my \$self = shift;\n my \$colour = \$self->SendMessage ($2, 0, 0);\n \$colour = sprintf ('#%x', \$colour);\n \$colour =~ s/(.)(..)(..)(..)/\$1\$4\$3\$2/;\n return \$colour;\n}\n"; } elsif (/^get colour (.*)=(.*)\(int (.*),\)$/ ) { print G "sub $1 {\n my (\$self, \$$3) = \@_;\n my \$colour = \$self->SendMessage ($2, \$$3, 0);\n \$colour = sprintf ('#%x', \$colour);\n \$colour =~ s/(.)(..)(..)(..)/\$1\$4\$3\$2/;\n return \$colour;\n}"; } elsif (/^get (.*) (.*)=(.*)\(,\)$/ ) { print G "sub $2 {\n my \$self = shift;\n return \$self->SendMessage ($3, 0, 0);\n}\n"; } elsif (/^get int GetCharAt=2007\(position pos,\)$/ ) { print G "sub GetCharAt {\n my (\$self, \$pos) = \@_;\n return chr \$self->SendMessage (2007, \$pos, 0);\n}\n"; } elsif (/^get (.*) (.*)=(.*)\(position (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^get (.*) (.*)=(.*)\(int (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^get (.*) (.*)=(.*)\(int (.*), int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } #--- Set --- elsif (/^set (.*) (.*)=(.*)\(,\)$/ ) { print G "sub $2 {\n my \$self = shift;\n return \$self->SendMessage ($3, 0, 0);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(bool (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(int (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(position (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(colour (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n \$$4 =~ s/.(..)(..)(..)/\$3\$2\$1/;\n return \$self->SendMessage ($3, int hex \$$4, 0);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(int (.*), int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(int (.*), bool (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(bool (.*), colour (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n \$$5 =~ s/.(..)(..)(..)/\$3\$2\$1/;\n return \$self->SendMessage ($3, \$$4, int hex \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(int (.*), colour (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n \$$5 =~ s/.(..)(..)(..)/\$3\$2\$1/;\n return \$self->SendMessage ($3, \$$4, int hex \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(int (.*), string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessageNP ($3, \$$4, \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(string (.*), string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessagePP ($3, \$$4, \$$5);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(, string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessageNP ($3, 0, \$$4);\n}\n"; } elsif (/^set (.*) (.*)=(.*)\(,\s?int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, 0, \$$4);\n}\n"; } #--- Special Function --- # AddText, ReplaceTarget, ReplaceTargetRE, SearchInTarget, AppendText, CopyText elsif (/^fun (.*) (.*)=(.*)\(int length, string text\)$/ ) { print G "# $2(text)\n"; print G "sub $2 {\n"; print G ' my ($self, $text) = @_;', "\n"; print G ' my $length = length $text;', "\n"; print G " return \$self->SendMessageNP ($3, \$length, \$text);\n"; print G '}', "\n"; } # AddStyledText elsif (/^fun void AddStyledText=2002\(int length, cells c\)$/ ) { print G '# AddStyledText(styledtext)', "\n"; print G 'sub AddStyledText {', "\n"; print G ' my ($self, $text) = @_;', "\n"; print G ' my $length = length $text;', "\n"; print G ' return $self->SendMessageNP (2002, $length, $text);', "\n"; print G '}', "\n"; } # GetStyledText and GetTextRange elsif (/^fun (.*) (.*)=(.*)\(, textrange (.*)\)$/ ) { print G "sub $2 {\n my \$self = shift;\n my \$start = shift || 0;\n my \$end = shift || \$self->GetLength();\n\n"; print G " return undef if \$start >= \$end;\n\n"; if ( $2 eq 'GetStyledText') { print G " my \$text = \" \" x ((\$end - \$start + 1)*2);\n"; } else { print G " my \$text = \" \" x (\$end - \$start + 1);\n"; } print G " my \$textrange = pack(\"LLp\", \$start, \$end, \$text);\n"; print G " \$self->SendMessageNP ($3, 0, \$textrange);\n"; print G " return \$text;\n}\n"; } # GetCurLine elsif (/^fun int GetCurLine=2027\(int length, stringresult text\)$/) { print G '# GetCurline () : Return curent line Text', "\n"; print G 'sub GetCurLine {', "\n"; print G ' my ($self) = @_;',"\n"; print G ' my $line = $self->GetLineFromPosition ($self->GetCurrentPos());',"\n"; print G ' my $lenght = $self->LineLength($line);',"\n"; print G ' my $text = " " x ($lenght+1);',"\n\n"; print G ' if ($self->SendMessageNP (2027, $lenght, $text)) {',"\n"; print G ' return $text;',"\n"; print G ' } else {',"\n"; print G ' return undef;',"\n"; print G ' }',"\n"; print G '}',"\n"; } # GetLine elsif (/^fun int GetLine=2153\(int line, stringresult text\)/) { print G '# Getline (line)', "\n"; print G 'sub GetLine {', "\n"; print G ' my ($self, $line) = @_;', "\n"; print G ' my $lenght = $self->LineLength($line);', "\n"; print G ' my $text = " " x ($lenght + 1);', "\n\n"; print G ' if ($self->SendMessageNP (2153, $line, $text)) {', "\n"; print G ' return $text;', "\n"; print G ' } else {', "\n"; print G ' return undef;', "\n"; print G ' }', "\n"; print G '}', "\n"; } # GetSelText elsif (/^fun int GetSelText=2161\(, stringresult text\)/) { print G '# GetSelText() : Return selected text', "\n"; print G 'sub GetSelText {', "\n"; print G ' my $self = shift;', "\n"; print G ' my $start = $self->GetSelectionStart();', "\n"; print G ' my $end = $self->GetSelectionEnd();', "\n\n"; print G ' return undef if $start >= $end;', "\n"; print G ' my $text = " " x ($end - $start + 1);', "\n\n"; print G ' $self->SendMessageNP (2161, 0, $text);', "\n"; print G ' return $text;', "\n"; print G '}', "\n"; } # GetText : elsif (/^fun int GetText=2182\(int length, stringresult text\)/) { print G '# GetText() : Return all text', "\n"; print G 'sub GetText {', "\n"; print G ' my $self = shift;', "\n"; print G ' my $lenght = $self->GetTextLength() + 1;', "\n"; print G ' my $text = " " x ($lenght+1);', "\n\n"; print G ' if ($self->SendMessageNP (2182, $lenght, $text)) {', "\n"; print G ' return $text;', "\n"; print G ' } else {', "\n"; print G ' return undef;', "\n"; print G ' }', "\n"; print G '}', "\n"; } # FindText : elsif (/^fun position FindText=2150\(int flags, findtext ft\)/) { print G '# FindText (textToFind, start=0, end=GetLength(), flag = SCFIND_WHOLEWORD)', "\n"; print G 'sub FindText {', "\n"; print G ' my $self = shift;', "\n"; print G ' my $text = shift;', "\n"; print G ' my $start = shift || 0;', "\n"; print G ' my $end = shift || $self->GetLength();', "\n"; print G ' my $flag = shift || SCFIND_WHOLEWORD;', "\n\n"; print G ' return undef if $start >= $end;', "\n\n"; print G ' my $texttofind = pack("LLpLL", $start, $end, $text, 0, 0);', "\n"; print G ' my $pos = $self->SendMessageNP (2150, $flag, $texttofind);', "\n"; print G ' return $pos unless defined wantarray;', "\n"; print G ' my @res = unpack("LLpLL", $texttofind);', "\n"; print G ' return ($res[3], $res[4]); # pos , lenght', "\n"; print G '}', "\n"; } # FindRange : elsif (/^fun position FormatRange=2151\(bool draw, formatrange fr\)/) { print G '# FormatRange (start=0, end=GetLength(), draw=1)', "\n"; print G 'sub FormatRange {', "\n"; print G ' my $self = shift;', "\n"; print G ' my $start = shift || 0;', "\n"; print G ' my $end = shift || $self->GetLength();', "\n"; print G ' my $draw = shift || 1;', "\n"; print G ' return undef if $start >= $end;', "\n\n"; print G ' my $formatrange = pack("LL", $start, $end);', "\n"; print G ' return $self->SendMessageNP (2151, $draw, $formatrange);', "\n"; print G '}', "\n"; } #--- Function --- elsif (/^fun (.*) (.*)=(.*)\(,\)$/ ) { print G "sub $2 {\n my \$self = shift;\n return \$self->SendMessage ($3, 0, 0);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(bool (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(int (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(position (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, \$$4, 0);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(, position (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, 0, \$$4);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(int (.*), int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(int (.*), colour (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n \$$5 =~ s/.(..)(..)(..)/\$3\$2\$1/;\n return \$self->SendMessage ($3, \$$4, int hex \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(int (.*), string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessageNP ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(, string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessageNP ($3, 0, \$$4);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(, int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4) = \@_;\n return \$self->SendMessage ($3, 0, \$$4);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(position (.*), string (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessageNP ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(position (.*), bool (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(position (.*), int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(position (.*), position (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessage ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(bool (.*), colour (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n \$$5 =~ s/.(..)(..)(..)/\$3\$2\$1/;\n return \$self->SendMessage ($3, \$$4, int hex \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(int (.*), cells (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$$4, \$$5) = \@_;\n return \$self->SendMessageNP ($3, \$$4, \$$5);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(keymod (.*),\)$/ ) { print G "sub $2 {\n my (\$self, \$key, \$modifiers) = \@_;\n"; print G " my \$param = pack ('ss', \$key, \$modifiers);\n"; print G " return \$self->SendMessage ($3, \$param, 0);\n}\n"; } elsif (/^fun (.*) (.*)=(.*)\(keymod (.*), int (.*)\)$/ ) { print G "sub $2 {\n my (\$self, \$key, \$modifiers, \$$5) = \@_;\n"; print G " my \$param = pack ('ss', \$key, \$modifiers);\n"; print G " return \$self->SendMessage ($3, \$param, \$$5);\n}\n"; } #--- Comment --- elsif (/^\#\s(.*)$/) { print G "# $1\n"; } elsif (/^lex (.*)$/) { print G "# $1\n"; } #--- Error ---- elsif (/^fun (.*)$/) { print "===> Function = $1\n"; } elsif (/^set (.*)$/) { print "===> Set = $1\n"; } elsif (/^get (.*)$/) { print "===> Get = $1\n"; } } close F; # Add End open F, "<scintilla.pm.end" or return 3; while ( <F> ) { print G $_; } close F; close G; --- NEW FILE: SciLexer.dll --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Scintilla.h --- // Scintilla source code edit control /** @file Scintilla.h ** Interface to the edit control. **/ // Copyright 1998-2003 by Neil Hodgson <ne...@sc...> // The License.txt file describes the conditions under which this software may be distributed. // Most of this file is automatically generated from the Scintilla.iface interface definition // file which contains any comments about the definitions. HFacer.py does the generation. #ifndef SCINTILLA_H #define SCINTILLA_H #if PLAT_WIN // Return false on failure: bool Scintilla_RegisterClasses(void *hInstance); bool Scintilla_ReleaseResources(); #endif int Scintilla_LinkLexers(); // Here should be placed typedefs for uptr_t, an unsigned integer type large enough to // hold a pointer and sptr_t, a signed integer large enough to hold a pointer. // May need to be changed for 64 bit platforms. #if _MSC_VER >= 1300 #include <BaseTsd.h> #endif #ifdef MAXULONG_PTR typedef ULONG_PTR uptr_t; typedef LONG_PTR sptr_t; #else typedef unsigned long uptr_t; typedef long sptr_t; #endif typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam); //++Autogenerated -- start of section automatically generated from Scintilla.iface #define INVALID_POSITION -1 #define SCI_START 2000 #define SCI_OPTIONAL_START 3000 #define SCI_LEXER_START 4000 #define SCI_ADDTEXT 2001 #define SCI_ADDSTYLEDTEXT 2002 #define SCI_INSERTTEXT 2003 #define SCI_CLEARALL 2004 #define SCI_CLEARDOCUMENTSTYLE 2005 #define SCI_GETLENGTH 2006 #define SCI_GETCHARAT 2007 #define SCI_GETCURRENTPOS 2008 #define SCI_GETANCHOR 2009 #define SCI_GETSTYLEAT 2010 #define SCI_REDO 2011 #define SCI_SETUNDOCOLLECTION 2012 #define SCI_SELECTALL 2013 #define SCI_SETSAVEPOINT 2014 #define SCI_GETSTYLEDTEXT 2015 #define SCI_CANREDO 2016 #define SCI_MARKERLINEFROMHANDLE 2017 #define SCI_MARKERDELETEHANDLE 2018 #define SCI_GETUNDOCOLLECTION 2019 #define SCWS_INVISIBLE 0 #define SCWS_VISIBLEALWAYS 1 #define SCWS_VISIBLEAFTERINDENT 2 #define SCI_GETVIEWWS 2020 #define SCI_SETVIEWWS 2021 #define SCI_POSITIONFROMPOINT 2022 #define SCI_POSITIONFROMPOINTCLOSE 2023 #define SCI_GOTOLINE 2024 #define SCI_GOTOPOS 2025 #define SCI_SETANCHOR 2026 #define SCI_GETCURLINE 2027 #define SCI_GETENDSTYLED 2028 #define SC_EOL_CRLF 0 #define SC_EOL_CR 1 #define SC_EOL_LF 2 #define SCI_CONVERTEOLS 2029 #define SCI_GETEOLMODE 2030 #define SCI_SETEOLMODE 2031 #define SCI_STARTSTYLING 2032 #define SCI_SETSTYLING 2033 #define SCI_GETBUFFEREDDRAW 2034 #define SCI_SETBUFFEREDDRAW 2035 #define SCI_SETTABWIDTH 2036 #define SCI_GETTABWIDTH 2121 #define SC_CP_UTF8 65001 #define SC_CP_DBCS 1 #define SCI_SETCODEPAGE 2037 #define SCI_SETUSEPALETTE 2039 #define MARKER_MAX 31 #define SC_MARK_CIRCLE 0 #define SC_MARK_ROUNDRECT 1 #define SC_MARK_ARROW 2 #define SC_MARK_SMALLRECT 3 #define SC_MARK_SHORTARROW 4 #define SC_MARK_EMPTY 5 #define SC_MARK_ARROWDOWN 6 #define SC_MARK_MINUS 7 #define SC_MARK_PLUS 8 #define SC_MARK_VLINE 9 #define SC_MARK_LCORNER 10 #define SC_MARK_TCORNER 11 #define SC_MARK_BOXPLUS 12 #define SC_MARK_BOXPLUSCONNECTED 13 #define SC_MARK_BOXMINUS 14 #define SC_MARK_BOXMINUSCONNECTED 15 #define SC_MARK_LCORNERCURVE 16 #define SC_MARK_TCORNERCURVE 17 #define SC_MARK_CIRCLEPLUS 18 #define SC_MARK_CIRCLEPLUSCONNECTED 19 #define SC_MARK_CIRCLEMINUS 20 #define SC_MARK_CIRCLEMINUSCONNECTED 21 #define SC_MARK_BACKGROUND 22 #define SC_MARK_DOTDOTDOT 23 #define SC_MARK_ARROWS 24 #define SC_MARK_PIXMAP 25 #define SC_MARK_CHARACTER 10000 #define SC_MARKNUM_FOLDEREND 25 #define SC_MARKNUM_FOLDEROPENMID 26 #define SC_MARKNUM_FOLDERMIDTAIL 27 #define SC_MARKNUM_FOLDERTAIL 28 #define SC_MARKNUM_FOLDERSUB 29 #define SC_MARKNUM_FOLDER 30 #define SC_MARKNUM_FOLDEROPEN 31 #define SC_MASK_FOLDERS 0xFE000000 #define SCI_MARKERDEFINE 2040 #define SCI_MARKERSETFORE 2041 #define SCI_MARKERSETBACK 2042 #define SCI_MARKERADD 2043 #define SCI_MARKERDELETE 2044 #define SCI_MARKERDELETEALL 2045 #define SCI_MARKERGET 2046 #define SCI_MARKERNEXT 2047 #define SCI_MARKERPREVIOUS 2048 #define SCI_MARKERDEFINEPIXMAP 2049 #define SC_MARGIN_SYMBOL 0 #define SC_MARGIN_NUMBER 1 #define SCI_SETMARGINTYPEN 2240 #define SCI_GETMARGINTYPEN 2241 #define SCI_SETMARGINWIDTHN 2242 #define SCI_GETMARGINWIDTHN 2243 #define SCI_SETMARGINMASKN 2244 #define SCI_GETMARGINMASKN 2245 #define SCI_SETMARGINSENSITIVEN 2246 #define SCI_GETMARGINSENSITIVEN 2247 #define STYLE_DEFAULT 32 #define STYLE_LINENUMBER 33 #define STYLE_BRACELIGHT 34 #define STYLE_BRACEBAD 35 #define STYLE_CONTROLCHAR 36 #define STYLE_INDENTGUIDE 37 #define STYLE_LASTPREDEFINED 39 #define STYLE_MAX 127 #define SC_CHARSET_ANSI 0 #define SC_CHARSET_DEFAULT 1 #define SC_CHARSET_BALTIC 186 #define SC_CHARSET_CHINESEBIG5 136 #define SC_CHARSET_EASTEUROPE 238 #define SC_CHARSET_GB2312 134 #define SC_CHARSET_GREEK 161 #define SC_CHARSET_HANGUL 129 #define SC_CHARSET_MAC 77 #define SC_CHARSET_OEM 255 #define SC_CHARSET_RUSSIAN 204 #define SC_CHARSET_SHIFTJIS 128 #define SC_CHARSET_SYMBOL 2 #define SC_CHARSET_TURKISH 162 #define SC_CHARSET_JOHAB 130 #define SC_CHARSET_HEBREW 177 #define SC_CHARSET_ARABIC 178 #define SC_CHARSET_VIETNAMESE 163 #define SC_CHARSET_THAI 222 #define SCI_STYLECLEARALL 2050 #define SCI_STYLESETFORE 2051 #define SCI_STYLESETBACK 2052 #define SCI_STYLESETBOLD 2053 #define SCI_STYLESETITALIC 2054 #define SCI_STYLESETSIZE 2055 #define SCI_STYLESETFONT 2056 #define SCI_STYLESETEOLFILLED 2057 #define SCI_STYLERESETDEFAULT 2058 #define SCI_STYLESETUNDERLINE 2059 #define SC_CASE_MIXED 0 #define SC_CASE_UPPER 1 #define SC_CASE_LOWER 2 #define SCI_STYLESETCASE 2060 #define SCI_STYLESETCHARACTERSET 2066 #define SCI_STYLESETHOTSPOT 2409 #define SCI_SETSELFORE 2067 #define SCI_SETSELBACK 2068 #define SCI_SETCARETFORE 2069 #define SCI_ASSIGNCMDKEY 2070 #define SCI_CLEARCMDKEY 2071 #define SCI_CLEARALLCMDKEYS 2072 #define SCI_SETSTYLINGEX 2073 #define SCI_STYLESETVISIBLE 2074 #define SCI_GETCARETPERIOD 2075 #define SCI_SETCARETPERIOD 2076 #define SCI_SETWORDCHARS 2077 #define SCI_BEGINUNDOACTION 2078 #define SCI_ENDUNDOACTION 2079 #define INDIC_MAX 7 #define INDIC_PLAIN 0 #define INDIC_SQUIGGLE 1 #define INDIC_TT 2 #define INDIC_DIAGONAL 3 #define INDIC_STRIKE 4 #define INDIC_HIDDEN 5 #define INDIC_BOX 6 #define INDIC0_MASK 0x20 #define INDIC1_MASK 0x40 #define INDIC2_MASK 0x80 #define INDICS_MASK 0xE0 #define SCI_INDICSETSTYLE 2080 #define SCI_INDICGETSTYLE 2081 #define SCI_INDICSETFORE 2082 #define SCI_INDICGETFORE 2083 #define SCI_SETWHITESPACEFORE 2084 #define SCI_SETWHITESPACEBACK 2085 #define SCI_SETSTYLEBITS 2090 #define SCI_GETSTYLEBITS 2091 #define SCI_SETLINESTATE 2092 #define SCI_GETLINESTATE 2093 #define SCI_GETMAXLINESTATE 2094 #define SCI_GETCARETLINEVISIBLE 2095 #define SCI_SETCARETLINEVISIBLE 2096 #define SCI_GETCARETLINEBACK 2097 #define SCI_SETCARETLINEBACK 2098 #define SCI_STYLESETCHANGEABLE 2099 #define SCI_AUTOCSHOW 2100 #define SCI_AUTOCCANCEL 2101 #define SCI_AUTOCACTIVE 2102 #define SCI_AUTOCPOSSTART 2103 #define SCI_AUTOCCOMPLETE 2104 #define SCI_AUTOCSTOPS 2105 #define SCI_AUTOCSETSEPARATOR 2106 #define SCI_AUTOCGETSEPARATOR 2107 #define SCI_AUTOCSELECT 2108 #define SCI_AUTOCSETCANCELATSTART 2110 #define SCI_AUTOCGETCANCELATSTART 2111 #define SCI_AUTOCSETFILLUPS 2112 #define SCI_AUTOCSETCHOOSESINGLE 2113 #define SCI_AUTOCGETCHOOSESINGLE 2114 #define SCI_AUTOCSETIGNORECASE 2115 #define SCI_AUTOCGETIGNORECASE 2116 #define SCI_USERLISTSHOW 2117 #define SCI_AUTOCSETAUTOHIDE 2118 #define SCI_AUTOCGETAUTOHIDE 2119 #define SCI_AUTOCSETDROPRESTOFWORD 2270 #define SCI_AUTOCGETDROPRESTOFWORD 2271 #define SCI_REGISTERIMAGE 2405 #define SCI_CLEARREGISTEREDIMAGES 2408 #define SCI_AUTOCGETTYPESEPARATOR 2285 #define SCI_AUTOCSETTYPESEPARATOR 2286 #define SCI_SETINDENT 2122 #define SCI_GETINDENT 2123 #define SCI_SETUSETABS 2124 #define SCI_GETUSETABS 2125 #define SCI_SETLINEINDENTATION 2126 #define SCI_GETLINEINDENTATION 2127 #define SCI_GETLINEINDENTPOSITION 2128 #define SCI_GETCOLUMN 2129 #define SCI_SETHSCROLLBAR 2130 #define SCI_GETHSCROLLBAR 2131 #define SCI_SETINDENTATIONGUIDES 2132 #define SCI_GETINDENTATIONGUIDES 2133 #define SCI_SETHIGHLIGHTGUIDE 2134 #define SCI_GETHIGHLIGHTGUIDE 2135 #define SCI_GETLINEENDPOSITION 2136 #define SCI_GETCODEPAGE 2137 #define SCI_GETCARETFORE 2138 #define SCI_GETUSEPALETTE 2139 #define SCI_GETREADONLY 2140 #define SCI_SETCURRENTPOS 2141 #define SCI_SETSELECTIONSTART 2142 #define SCI_GETSELECTIONSTART 2143 #define SCI_SETSELECTIONEND 2144 #define SCI_GETSELECTIONEND 2145 #define SCI_SETPRINTMAGNIFICATION 2146 #define SCI_GETPRINTMAGNIFICATION 2147 #define SC_PRINT_NORMAL 0 #define SC_PRINT_INVERTLIGHT 1 #define SC_PRINT_BLACKONWHITE 2 #define SC_PRINT_COLOURONWHITE 3 #define SC_PRINT_COLOURONWHITEDEFAULTBG 4 #define SCI_SETPRINTCOLOURMODE 2148 #define SCI_GETPRINTCOLOURMODE 2149 #define SCFIND_WHOLEWORD 2 #define SCFIND_MATCHCASE 4 #define SCFIND_WORDSTART 0x00100000 #define SCFIND_REGEXP 0x00200000 #define SCFIND_POSIX 0x00400000 #define SCI_FINDTEXT 2150 #define SCI_FORMATRANGE 2151 #define SCI_GETFIRSTVISIBLELINE 2152 #define SCI_GETLINE 2153 #define SCI_GETLINECOUNT 2154 #define SCI_SETMARGINLEFT 2155 #define SCI_GETMARGINLEFT 2156 #define SCI_SETMARGINRIGHT 2157 #define SCI_GETMARGINRIGHT 2158 #define SCI_GETMODIFY 2159 #define SCI_SETSEL 2160 #define SCI_GETSELTEXT 2161 #define SCI_GETTEXTRANGE 2162 #define SCI_HIDESELECTION 2163 #define SCI_POINTXFROMPOSITION 2164 #define SCI_POINTYFROMPOSITION 2165 #define SCI_LINEFROMPOSITION 2166 #define SCI_POSITIONFROMLINE 2167 #define SCI_LINESCROLL 2168 #define SCI_SCROLLCARET 2169 #define SCI_REPLACESEL 2170 #define SCI_SETREADONLY 2171 #define SCI_NULL 2172 #define SCI_CANPASTE 2173 #define SCI_CANUNDO 2174 #define SCI_EMPTYUNDOBUFFER 2175 #define SCI_UNDO 2176 #define SCI_CUT 2177 #define SCI_COPY 2178 #define SCI_PASTE 2179 #define SCI_CLEAR 2180 #define SCI_SETTEXT 2181 #define SCI_GETTEXT 2182 #define SCI_GETTEXTLENGTH 2183 #define SCI_GETDIRECTFUNCTION 2184 #define SCI_GETDIRECTPOINTER 2185 #define SCI_SETOVERTYPE 2186 #define SCI_GETOVERTYPE 2187 #define SCI_SETCARETWIDTH 2188 #define SCI_GETCARETWIDTH 2189 #define SCI_SETTARGETSTART 2190 #define SCI_GETTARGETSTART 2191 #define SCI_SETTARGETEND 2192 #define SCI_GETTARGETEND 2193 #define SCI_REPLACETARGET 2194 #define SCI_REPLACETARGETRE 2195 #define SCI_SEARCHINTARGET 2197 #define SCI_SETSEARCHFLAGS 2198 #define SCI_GETSEARCHFLAGS 2199 #define SCI_CALLTIPSHOW 2200 #define SCI_CALLTIPCANCEL 2201 #define SCI_CALLTIPACTIVE 2202 #define SCI_CALLTIPPOSSTART 2203 #define SCI_CALLTIPSETHLT 2204 #define SCI_CALLTIPSETBACK 2205 #define SCI_CALLTIPSETFORE 2206 #define SCI_CALLTIPSETFOREHLT 2207 #define SCI_VISIBLEFROMDOCLINE 2220 #define SCI_DOCLINEFROMVISIBLE 2221 #define SC_FOLDLEVELBASE 0x400 #define SC_FOLDLEVELWHITEFLAG 0x1000 #define SC_FOLDLEVELHEADERFLAG 0x2000 #define SC_FOLDLEVELBOXHEADERFLAG 0x4000 #define SC_FOLDLEVELBOXFOOTERFLAG 0x8000 #define SC_FOLDLEVELCONTRACTED 0x10000 #define SC_FOLDLEVELUNINDENT 0x20000 #define SC_FOLDLEVELNUMBERMASK 0x0FFF #define SCI_SETFOLDLEVEL 2222 #define SCI_GETFOLDLEVEL 2223 #define SCI_GETLASTCHILD 2224 #define SCI_GETFOLDPARENT 2225 #define SCI_SHOWLINES 2226 #define SCI_HIDELINES 2227 #define SCI_GETLINEVISIBLE 2228 #define SCI_SETFOLDEXPANDED 2229 #define SCI_GETFOLDEXPANDED 2230 #define SCI_TOGGLEFOLD 2231 #define SCI_ENSUREVISIBLE 2232 #define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002 #define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004 #define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008 #define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010 #define SC_FOLDFLAG_LEVELNUMBERS 0x0040 #define SC_FOLDFLAG_BOX 0x0001 #define SCI_SETFOLDFLAGS 2233 #define SCI_ENSUREVISIBLEENFORCEPOLICY 2234 #define SCI_SETTABINDENTS 2260 #define SCI_GETTABINDENTS 2261 #define SCI_SETBACKSPACEUNINDENTS 2262 #define SCI_GETBACKSPACEUNINDENTS 2263 #define SC_TIME_FOREVER 10000000 #define SCI_SETMOUSEDWELLTIME 2264 #define SCI_GETMOUSEDWELLTIME 2265 #define SCI_WORDSTARTPOSITION 2266 #define SCI_WORDENDPOSITION 2267 #define SC_WRAP_NONE 0 #define SC_WRAP_WORD 1 #define SCI_SETWRAPMODE 2268 #define SCI_GETWRAPMODE 2269 #define SC_CACHE_NONE 0 #define SC_CACHE_CARET 1 #define SC_CACHE_PAGE 2 #define SC_CACHE_DOCUMENT 3 #define SCI_SETLAYOUTCACHE 2272 #define SCI_GETLAYOUTCACHE 2273 #define SCI_SETSCROLLWIDTH 2274 #define SCI_GETSCROLLWIDTH 2275 #define SCI_TEXTWIDTH 2276 #define SCI_SETENDATLASTLINE 2277 #define SCI_GETENDATLASTLINE 2278 #define SCI_TEXTHEIGHT 2279 #define SCI_SETVSCROLLBAR 2280 #define SCI_GETVSCROLLBAR 2281 #define SCI_APPENDTEXT 2282 #define SCI_GETTWOPHASEDRAW 2283 #define SCI_SETTWOPHASEDRAW 2284 #define SCI_TARGETFROMSELECTION 2287 #define SCI_LINESJOIN 2288 #define SCI_LINESSPLIT 2289 #define SCI_SETFOLDMARGINCOLOUR 2290 #define SCI_SETFOLDMARGINHICOLOUR 2291 #define SCI_LINEDOWN 2300 #define SCI_LINEDOWNEXTEND 2301 #define SCI_LINEUP 2302 #define SCI_LINEUPEXTEND 2303 #define SCI_CHARLEFT 2304 #define SCI_CHARLEFTEXTEND 2305 #define SCI_CHARRIGHT 2306 #define SCI_CHARRIGHTEXTEND 2307 #define SCI_WORDLEFT 2308 #define SCI_WORDLEFTEXTEND 2309 #define SCI_WORDRIGHT 2310 #define SCI_WORDRIGHTEXTEND 2311 #define SCI_HOME 2312 #define SCI_HOMEEXTEND 2313 #define SCI_LINEEND 2314 #define SCI_LINEENDEXTEND 2315 #define SCI_DOCUMENTSTART 2316 #define SCI_DOCUMENTSTARTEXTEND 2317 #define SCI_DOCUMENTEND 2318 #define SCI_DOCUMENTENDEXTEND 2319 #define SCI_PAGEUP 2320 #define SCI_PAGEUPEXTEND 2321 #define SCI_PAGEDOWN 2322 #define SCI_PAGEDOWNEXTEND 2323 #define SCI_EDITTOGGLEOVERTYPE 2324 #define SCI_CANCEL 2325 #define SCI_DELETEBACK 2326 #define SCI_TAB 2327 #define SCI_BACKTAB 2328 #define SCI_NEWLINE 2329 #define SCI_FORMFEED 2330 #define SCI_VCHOME 2331 #define SCI_VCHOMEEXTEND 2332 #define SCI_ZOOMIN 2333 #define SCI_ZOOMOUT 2334 #define SCI_DELWORDLEFT 2335 #define SCI_DELWORDRIGHT 2336 #define SCI_LINECUT 2337 #define SCI_LINEDELETE 2338 #define SCI_LINETRANSPOSE 2339 #define SCI_LINEDUPLICATE 2404 #define SCI_LOWERCASE 2340 #define SCI_UPPERCASE 2341 #define SCI_LINESCROLLDOWN 2342 #define SCI_LINESCROLLUP 2343 #define SCI_DELETEBACKNOTLINE 2344 #define SCI_HOMEDISPLAY 2345 #define SCI_HOMEDISPLAYEXTEND 2346 #define SCI_LINEENDDISPLAY 2347 #define SCI_LINEENDDISPLAYEXTEND 2348 #define SCI_HOMEWRAP 2349 #define SCI_HOMEWRAPEXTEND 2450 #define SCI_LINEENDWRAP 2451 #define SCI_LINEENDWRAPEXTEND 2452 #define SCI_VCHOMEWRAP 2453 #define SCI_VCHOMEWRAPEXTEND 2454 #define SCI_LINECOPY 2455 #define SCI_MOVECARETINSIDEVIEW 2401 #define SCI_LINELENGTH 2350 #define SCI_BRACEHIGHLIGHT 2351 #define SCI_BRACEBADLIGHT 2352 #define SCI_BRACEMATCH 2353 #define SCI_GETVIEWEOL 2355 #define SCI_SETVIEWEOL 2356 #define SCI_GETDOCPOINTER 2357 #define SCI_SETDOCPOINTER 2358 #define SCI_SETMODEVENTMASK 2359 #define EDGE_NONE 0 #define EDGE_LINE 1 #define EDGE_BACKGROUND 2 #define SCI_GETEDGECOLUMN 2360 #define SCI_SETEDGECOLUMN 2361 #define SCI_GETEDGEMODE 2362 #define SCI_SETEDGEMODE 2363 #define SCI_GETEDGECOLOUR 2364 #define SCI_SETEDGECOLOUR 2365 #define SCI_SEARCHANCHOR 2366 #define SCI_SEARCHNEXT 2367 #define SCI_SEARCHPREV 2368 #define SCI_LINESONSCREEN 2370 #define SCI_USEPOPUP 2371 #define SCI_SELECTIONISRECTANGLE 2372 #define SCI_SETZOOM 2373 #define SCI_GETZOOM 2374 #define SCI_CREATEDOCUMENT 2375 #define SCI_ADDREFDOCUMENT 2376 #define SCI_RELEASEDOCUMENT 2377 #define SCI_GETMODEVENTMASK 2378 #define SCI_SETFOCUS 2380 #define SCI_GETFOCUS 2381 #define SCI_SETSTATUS 2382 #define SCI_GETSTATUS 2383 #define SCI_SETMOUSEDOWNCAPTURES 2384 #define SCI_GETMOUSEDOWNCAPTURES 2385 #define SC_CURSORNORMAL -1 #define SC_CURSORWAIT 4 #define SCI_SETCURSOR 2386 #define SCI_GETCURSOR 2387 #define SCI_SETCONTROLCHARSYMBOL 2388 #define SCI_GETCONTROLCHARSYMBOL 2389 #define SCI_WORDPARTLEFT 2390 #define SCI_WORDPARTLEFTEXTEND 2391 #define SCI_WORDPARTRIGHT 2392 #define SCI_WORDPARTRIGHTEXTEND 2393 #define VISIBLE_SLOP 0x01 #define VISIBLE_STRICT 0x04 #define SCI_SETVISIBLEPOLICY 2394 #define SCI_DELLINELEFT 2395 #define SCI_DELLINERIGHT 2396 #define SCI_SETXOFFSET 2397 #define SCI_GETXOFFSET 2398 #define SCI_CHOOSECARETX 2399 #define SCI_GRABFOCUS 2400 #define CARET_SLOP 0x01 #define CARET_STRICT 0x04 #define CARET_JUMPS 0x10 #define CARET_EVEN 0x08 #define SCI_SETXCARETPOLICY 2402 #define SCI_SETYCARETPOLICY 2403 #define SCI_SETPRINTWRAPMODE 2406 #define SCI_GETPRINTWRAPMODE 2407 #define SCI_SETHOTSPOTACTIVEFORE 2410 #define SCI_SETHOTSPOTACTIVEBACK 2411 #define SCI_SETHOTSPOTACTIVEUNDERLINE 2412 #define SCI_SETHOTSPOTSINGLELINE 2421 #define SCI_PARADOWN 2413 #define SCI_PARADOWNEXTEND 2414 #define SCI_PARAUP 2415 #define SCI_PARAUPEXTEND 2416 #define SCI_POSITIONBEFORE 2417 #define SCI_POSITIONAFTER 2418 #define SCI_COPYRANGE 2419 #define SCI_COPYTEXT 2420 #define SC_SEL_STREAM 0 #define SC_SEL_RECTANGLE 1 #define SC_SEL_LINES 2 #define SCI_SETSELECTIONMODE 2422 #define SCI_GETSELECTIONMODE 2423 #define SCI_GETLINESELSTARTPOSITION 2424 #define SCI_GETLINESELENDPOSITION 2425 #define SCI_LINEDOWNRECTEXTEND 2426 #define SCI_LINEUPRECTEXTEND 2427 #define SCI_CHARLEFTRECTEXTEND 2428 #define SCI_CHARRIGHTRECTEXTEND 2429 #define SCI_HOMERECTEXTEND 2430 #define SCI_VCHOMERECTEXTEND 2431 #define SCI_LINEENDRECTEXTEND 2432 #define SCI_PAGEUPRECTEXTEND 2433 #define SCI_PAGEDOWNRECTEXTEND 2434 #define SCI_STUTTEREDPAGEUP 2435 #define SCI_STUTTEREDPAGEUPEXTEND 2436 #define SCI_STUTTEREDPAGEDOWN 2437 #define SCI_STUTTEREDPAGEDOWNEXTEND 2438 #define SCI_WORDLEFTEND 2439 #define SCI_WORDLEFTENDEXTEND 2440 #define SCI_WORDRIGHTEND 2441 #define SCI_WORDRIGHTENDEXTEND 2442 #define SCI_SETWHITESPACECHARS 2443 #define SCI_SETCHARSDEFAULT 2444 #define SCI_AUTOCGETCURRENT 2445 #define SCI_ALLOCATE 2446 #define SCI_STARTRECORD 3001 #define SCI_STOPRECORD 3002 #define SCI_SETLEXER 4001 #define SCI_GETLEXER 4002 #define SCI_COLOURISE 4003 #define SCI_SETPROPERTY 4004 #define KEYWORDSET_MAX 8 #define SCI_SETKEYWORDS 4005 #define SCI_SETLEXERLANGUAGE 4006 #define SCI_LOADLEXERLIBRARY 4007 #define SC_MOD_INSERTTEXT 0x1 #define SC_MOD_DELETETEXT 0x2 #define SC_MOD_CHANGESTYLE 0x4 #define SC_MOD_CHANGEFOLD 0x8 #define SC_PERFORMED_USER 0x10 #define SC_PERFORMED_UNDO 0x20 #define SC_PERFORMED_REDO 0x40 #define SC_LASTSTEPINUNDOREDO 0x100 #define SC_MOD_CHANGEMARKER 0x200 #define SC_MOD_BEFOREINSERT 0x400 #define SC_MOD_BEFOREDELETE 0x800 #define SC_MODEVENTMASKALL 0xF77 #define SCEN_CHANGE 768 #define SCEN_SETFOCUS 512 #define SCEN_KILLFOCUS 256 #define SCK_DOWN 300 #define SCK_UP 301 #define SCK_LEFT 302 #define SCK_RIGHT 303 #define SCK_HOME 304 #define SCK_END 305 #define SCK_PRIOR 306 #define SCK_NEXT 307 #define SCK_DELETE 308 #define SCK_INSERT 309 #define SCK_ESCAPE 7 #define SCK_BACK 8 #define SCK_TAB 9 #define SCK_RETURN 13 #define SCK_ADD 310 #define SCK_SUBTRACT 311 #define SCK_DIVIDE 312 #define SCMOD_SHIFT 1 #define SCMOD_CTRL 2 #define SCMOD_ALT 4 #define SCN_STYLENEEDED 2000 #define SCN_CHARADDED 2001 #define SCN_SAVEPOINTREACHED 2002 #define SCN_SAVEPOINTLEFT 2003 #define SCN_MODIFYATTEMPTRO 2004 #define SCN_KEY 2005 #define SCN_DOUBLECLICK 2006 #define SCN_UPDATEUI 2007 #define SCN_MODIFIED 2008 #define SCN_MACRORECORD 2009 #define SCN_MARGINCLICK 2010 #define SCN_NEEDSHOWN 2011 #define SCN_PAINTED 2013 #define SCN_USERLISTSELECTION 2014 #define SCN_URIDROPPED 2015 #define SCN_DWELLSTART 2016 #define SCN_DWELLEND 2017 #define SCN_ZOOM 2018 #define SCN_HOTSPOTCLICK 2019 #define SCN_HOTSPOTDOUBLECLICK 2020 #define SCN_CALLTIPCLICK 2021 //--Autogenerated -- end of section automatically generated from Scintilla.iface // These structures are defined to be exactly the same shape as the Win32 // CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs. // So older code that treats Scintilla as a RichEdit will work. struct CharacterRange { long cpMin; long cpMax; }; struct TextRange { struct CharacterRange chrg; char *lpstrText; }; struct TextToFind { struct CharacterRange chrg; char *lpstrText; struct CharacterRange chrgText; }; #ifdef PLATFORM_H // This structure is used in printing and requires some of the graphics types // from Platform.h. Not needed by most client code. struct RangeToFormat { SurfaceID hdc; SurfaceID hdcTarget; PRectangle rc; PRectangle rcPage; CharacterRange chrg; }; #endif struct NotifyHeader { // hwndFrom is really an environment specifc window handle or pointer // but most clients of Scintilla.h do not have this type visible. //WindowID hwndFrom; void *hwndFrom; unsigned int idFrom; unsigned int code; }; struct SCNotification { struct NotifyHeader nmhdr; int position; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND int ch; // SCN_CHARADDED, SCN_KEY int modifiers; // SCN_KEY int modificationType; // SCN_MODIFIED const char *text; // SCN_MODIFIED int length; // SCN_MODIFIED int linesAdded; // SCN_MODIFIED int message; // SCN_MACRORECORD uptr_t wParam; // SCN_MACRORECORD sptr_t lParam; // SCN_MACRORECORD int line; // SCN_MODIFIED int foldLevelNow; // SCN_MODIFIED int foldLevelPrev; // SCN_MODIFIED int margin; // SCN_MARGINCLICK int listType; // SCN_USERLISTSELECTION int x; // SCN_DWELLSTART, SCN_DWELLEND int y; // SCN_DWELLSTART, SCN_DWELLEND }; // Deprecation section listing all API features that are deprecated and will // will be removed completely in a future version. // To enable these features define INCLUDE_DEPRECATED_FEATURES #ifdef INCLUDE_DEPRECATED_FEATURES #define SCI_SETCARETPOLICY 2369 #define CARET_CENTER 0x02 #define CARET_XEVEN 0x08 #define CARET_XJUMPS 0x10 #define SCN_POSCHANGED 2012 #define SCN_CHECKBRACE 2007 #endif #endif |
From: jw <jw...@us...> - 2005-11-01 10:36:59
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Samples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23874/Samples Added Files: Editor.pl test.pl test2.pl Log Message: Added to repository --- NEW FILE: test2.pl --- # perl -w use Win32::GUI; use Win32::GUI::Scintilla; use Win32::GUI::Scintilla::Perl; # main Window $Window = new Win32::GUI::Window ( -name => "Window", -title => "Scintilla test", -pos => [100, 100], -size => [400, 400], ) or die "new Window"; # Create Scintilla Edit Window # $Edit = new Win32::GUI::Scintilla ( # -parent => $Window, # Or $Edit = $Window->AddScintillaPerl ( -name => "Edit", -pos => [0, 0], -size => [400, 400], -text => "my \$Test\n", ) or die "new Edit"; # Call Some method $Edit->AddText ("if (\$i == 1) {\n \$i++;\n}\n"); # Event loop $Window->Show(); Win32::GUI::Dialog(); # Main window event handler sub Window_Terminate { return -1; } # Main window resize sub Window_Resize { if (defined $Window) { ($width, $height) = ($Window->GetClientRect)[2..3]; $Edit->Resize ($width, $height); } } # Scintilla Event Notification sub Edit_Notify { my (%evt) = @_; print "Edit Notify = ", %evt, "\n"; } --- NEW FILE: test.pl --- # perl -w use Win32::GUI; use Win32::GUI::Scintilla; # main Window $Window = new Win32::GUI::Window ( -name => "Window", -title => "Scintilla test", -pos => [100, 100], -size => [400, 400], ) or die "new Window"; $Edit = $Window->AddButton ( -name => "Test", -text => "Test", -pos => [0, 0], -size => [100, 10], ); # Create Scintilla Edit Window # $Edit = new Win32::GUI::Scintilla ( # -parent => $Window, # Or $Edit = $Window->AddScintilla ( -name => "Edit", -pos => [0, 10], -size => [400, 400], -text => "Test\n", ) or die "new Edit"; # Call Some method $Edit->AddText ("add\n"); $Edit->AppendText ("append\n"); # Event loop $Window->Show(); Win32::GUI::Dialog(); # Main window event handler sub Window_Terminate { # Call Some method print "GetText = ", $Edit->GetText(), "\n"; print "GetLine(1) = ", $Edit->GetLine(1), "\n"; print "GetSelText = ", $Edit->GetSelText(), "\n"; print "GetTextRange(2) = ", $Edit->GetTextRange(2), "\n"; print "GetTextRange(2, 6) = ", $Edit->GetTextRange(2, 6), "\n"; return -1; } # Main window resize sub Window_Resize { if (defined $Window) { ($width, $height) = ($Window->GetClientRect)[2..3]; $Edit->Move (0, 10); $Edit->Resize ($width, $height-10); } } # Scintilla Event Notification sub Edit_Notify { my (%evt) = @_; # print "Edit Notify = ", %evt, "\n"; } sub Edit_Change { print "Change!!!\n"; } sub Edit_GotFocus { print "GotFocus!!!\n"; } sub Edit_LostFocus { print "LostFocus!!!\n"; } --- NEW FILE: Editor.pl --- # Perl Editor #----------------------------------------------------------------------- # perl -v use strict; use Cwd; use Win32::GUI; use Win32::GUI::Scintilla; my $VERSION = "1.0alpha1"; my $CurrentFile = ""; my $Directory = cwd; my %faces = ( 'times' => 'Times New Roman', 'mono' => 'Courier New', 'helv' => 'Lucida Console', 'lucida' => 'Lucida Console', 'other' => 'Comic Sans MS', 'size' => '10', 'size2' => '9', 'backcol'=> '#FFFFFF', ); my $PERL_KEYWORD = q{ NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK abs accept alarm and atan2 bind binmode bless caller chdir chmod chomp chop chown chr chroot close closedir cmp connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eq eval exec exists exit exp fcntl fileno flock for foreach fork format formline ge getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getppid getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst le length link listen local localtime lock log lstat lt m map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q qq qr quotemeta qu qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir s scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn while write x xor y }; my $Menu = Win32::GUI::MakeMenu( "&File" => "File", " > &New" => "FileNew", " > &Open..." => "FileOpen", " > -" => 0, " > &Save" => "FileSave", " > &Save As..." => "FileSaveAs", " > -" => 0, " > &Directory..." => "FileDirectory", " > -" => 0, " > E&xit" => "FileExit", "&Edit" => "Edit", " > &Undo" => "EditUndo", " > &Redo" => "EditRedo", " > -" => 0, " > Cu&t" => "EditCut", " > &Copy" => "EditCopy", " > &Paste" => "EditPaste", " > &Delete" => "EditClear", " > -" => 0, " > Select A&ll" => "EditSelectAll", " > -" => 0, " > &Find..." => "EditFind", "&Help" => "Help", " > &About..." => "HelpAbout", ); # main Window my $Window = new Win32::GUI::Window ( -name => "Window", -title => "Perl Editor", -pos => [100, 100], -size => [400, 400], -menu => $Menu, ) or die "new Window"; # Create Scintilla Edit Window # $Edit = new Win32::GUI::Scintilla ( # -parent => $Window, my $Editor = $Window->AddScintilla ( -name => "Editor", -pos => [0, 0], -size => [400, 400], -addexstyle => WS_EX_CLIENTEDGE, ) or die "new Edit"; # Init editor InitEditor(); # Create FindDlg window my $FindDlg = CreateFindDlg (); # Event loop $Window->Show(); Win32::GUI::Dialog(); # Free FindDlg $FindDlg->CloseWindow(); sub InitEditor { # Set Perl Lexer $Editor->SetLexer(Win32::GUI::Scintilla::SCLEX_PERL); # Set Perl Keyword $Editor->SetKeyWords(0, $PERL_KEYWORD); # Folder ???? $Editor->SetProperty("fold", "1"); $Editor->SetProperty("tab.timmy.whinge.level", "1"); # Indenetation $Editor->SetIndentationGuides(1); $Editor->SetUseTabs(1); $Editor->SetTabWidth(3); $Editor->SetIndent(3); # Edge Mode $Editor->SetEdgeMode(Win32::GUI::Scintilla::EDGE_LINE); #Win32::GUI::Scintilla::EDGE_BACKGROUND $Editor->SetEdgeColumn(80); # Define margin # $Editor->SetMargins(0,0); $Editor->SetMarginTypeN(1, Win32::GUI::Scintilla::SC_MARGIN_NUMBER); $Editor->SetMarginWidthN(1, 25); $Editor->SetMarginTypeN(2, Win32::GUI::Scintilla::SC_MARGIN_SYMBOL); $Editor->SetMarginMaskN(2, Win32::GUI::Scintilla::SC_MASK_FOLDERS); $Editor->SetMarginSensitiveN(2, 1); $Editor->SetMarginWidthN(2, 12); # Define marker $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, Win32::GUI::Scintilla::SC_MARK_BOXPLUSCONNECTED); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, Win32::GUI::Scintilla::SC_MARK_BOXMINUSCONNECTED); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, Win32::GUI::Scintilla::SC_MARK_TCORNER); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, Win32::GUI::Scintilla::SC_MARK_LCORNER); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, Win32::GUI::Scintilla::SC_MARK_VLINE); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, Win32::GUI::Scintilla::SC_MARK_BOXPLUS); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, Win32::GUI::Scintilla::SC_MARK_BOXMINUS); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, '#000000'); # Define Style $Editor->StyleClearAll(); # Global default styles for all languages $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_DEFAULT, "face:$faces{'mono'},size:$faces{'size'}"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_LINENUMBER, "back:#C0C0C0,face:$faces{mono}"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_CONTROLCHAR, "face:$faces{mono}"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold"); # White space $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DEFAULT, "fore:#808080,face:$faces{'mono'}"); # Error $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_ERROR , "fore:#0000FF"); # Comment $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_COMMENTLINE, "fore:#007F00"); # POD: = at beginning of line $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_POD, "fore:#004000,back:#E0FFE0,eolfilled"); # Number $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_NUMBER, "fore:#007F7F"); # Keyword $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_WORD , "fore:#00007F,bold"); # Double quoted string $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING, "fore:#7F007F,face:$faces{'mono'},italic"); # Single quoted string $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_CHARACTER, "fore:#7F0000,face:$faces{'mono'},italic"); # Symbols / Punctuation. Currently not used by LexPerl. $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_PUNCTUATION, "fore:#00007F,bold"); # Preprocessor. Currently not used by LexPerl. $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_PREPROCESSOR, "fore:#00007F,bold"); # Operators $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_OPERATOR , "bold"); # Identifiers (functions, etc.) $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_IDENTIFIER , "fore:#000000"); # Scalars: $var $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_SCALAR, "fore:#000000,back:#FFE0E0"); # Array: @var $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_ARRAY, "fore:#000000,back:#FFFFE0"); # Hash: %var $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HASH, "fore:#000000,back:#FFE0FF"); # Symbol table: *var $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_SYMBOLTABLE, "fore:#000000,back:#E0E0E0"); # Regex: /re/ or m{re} $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_REGEX, "fore:#000000,back:#A0FFA0"); # Substitution: s/re/ore/ $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_REGSUBST, "fore:#000000,back:#F0E080"); # Long Quote (qq, qr, qw, qx) -- obsolete: replaced by qq, qx, qr, qw $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_LONGQUOTE, "fore:#FFFF00,back:#8080A0"); # Back Ticks $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_BACKTICKS, "fore:#FFFF00,back:#A08080"); # Data Section: __DATA__ or __END__ at beginning of line $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DATASECTION, "#600000,back:#FFF0D8,eolfilled"); # Here-doc (delimiter) $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_DELIM, "fore:#000000,back:#DDD0DD"); # Here-doc (single quoted, q) $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_Q, "fore:#7F007F,back:#DDD0DD,eolfilled,notbold"); # Here-doc (double quoted, qq) $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_QQ, "fore:#7F007F,back:#DDD0DD,eolfilled,bold"); # Here-doc (back ticks, qx) $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_HERE_QX, "fore:#7F007F,back:#DDD0DD,eolfilled,italics"); # Single quoted string, generic $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_Q, "fore:#7F007F,notbold"); # qq = Double quoted string $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QQ, "fore:#7F007F,italic"); # qx = Back ticks $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QX, "fore:#FFFF00,back:#A08080"); # qr = Regex $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QR, "fore:#000000,back:#A0FFA0"); # qw = Array $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_STRING_QW, "fore:#000000,back:#FFFFE0"); } sub Editor_Notify { my (%evt) = @_; if ($evt{-code} == Win32::GUI::Scintilla::SCN_UPDATEUI) { # Update menu my $Sel = ($Editor->GetSelectionStart() != $Editor->GetSelectionEnd()); $Menu->{EditUndo}->Enabled($Editor->CanUndo()); $Menu->{EditRedo}->Enabled($Editor->CanRedo()); $Menu->{EditCut}->Enabled($Sel); $Menu->{EditCopy}->Enabled($Sel); $Menu->{EditPaste}->Enabled($Editor->CanPaste()); $Menu->{EditClear}->Enabled($Sel); # check for matching braces $Editor->BraceHighEvent(); } elsif ($evt{-code} == Win32::GUI::Scintilla::SCN_MARGINCLICK) { # Click on folder margin if ($evt{-margin} == 2) { # Manage Folder $Editor->FolderEvent(%evt); # caret visible $Editor->ScrollCaret(); } } } # Main window event handler sub Window_Terminate { return FileExit_Click(); } sub Window_Resize { if (defined $Window) { my ($width, $height) = ($Window->GetClientRect)[2..3]; $Editor->Move (0, 0); $Editor->Resize ($width, $height); } } ####################################################################### # # File Menu # ####################################################################### sub FileNew_Click { $Editor->NewFile(); $CurrentFile = ""; } sub FileOpen_Click { my $file = Win32::GUI::GetOpenFileName( -owner => $Window, -title => "Open a text file", -filter => [ 'Perl script (*.pl)' => '*.pl', 'All files' => '*.*', ], -directory => $Directory, ); if ($file) { $Editor->LoadFile ($file); $CurrentFile = $file; } elsif (Win32::GUI::CommDlgExtendedError()) { Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(), "GetOpenFileName Error"); } } sub FileSave_Click { unless ($CurrentFile eq "") { my $ret = Win32::GUI::MessageBox (0, "Overwrite existing file ?", "Save", MB_ICONQUESTION | MB_YESNOCANCEL); if ($ret == 6) { $ret = $Editor->SaveFile ($CurrentFile); unless ($ret) { Win32::GUI::MessageBox (0, "ERROR : SaveDocument ", "Save Error"); } } elsif ($ret == 7) { FileSaveAs_Click(); } } else { FileSaveAs_Click(); } } sub FileSaveAs_Click { my $ret = Win32::GUI::GetSaveFileName ( -title => "Save text file As", -filter => [ 'Perl script (*.pl)' => '*.pl', 'All files' => '*.*', ], -directory => $Directory, ); if ($ret) { $CurrentFile = $ret; $ret = $Editor->SaveFile ($CurrentFile); unless ($ret) { Win32::GUI::MessageBox (0, "ERROR : SaveDocument ", "Save Error"); } } elsif (Win32::GUI::CommDlgExtendedError()) { Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(), "GetSaveFileName Error"); } } sub FileDirectory_Click { my $ret = Win32::GUI::BrowseForFolder ( -title => "Select default directory", -directory => $Directory, -folderonly => 1, ); $Directory = $ret if ($ret); } sub FileExit_Click { return -1 } ####################################################################### # # Edit Menu # ####################################################################### sub EditUndo_Click { $Editor->Undo(); } sub EditRedo_Click { $Editor->Redo(); } sub EditCut_Click { $Editor->Cut(); } sub EditCopy_Click { $Editor->Copy(); } sub EditPaste_Click { $Editor->Paste(); } sub EditSelectAll_Click { $Editor->SelectAll(); } sub EditClear_Click { $Editor->Clear(); } sub EditFind_Click { $FindDlg->Show(); } ####################################################################### # # Help Menu # ####################################################################### sub HelpAbout_Click { Win32::GUI::MessageBox( 0, "Perl Editor, version $VERSION\r\n". "Laurent ROCHER", "About...", MB_ICONINFORMATION | MB_OK, ); return 1; } ####################################################################### # # FindWindow # ####################################################################### sub CreateFindDlg { my $FindDlg = new Win32::GUI::Window( -name => "FindDlg", -title => "Find", -pos => [ 150, 150 ], -size => [ 270, 140 ], ); $FindDlg->AddLabel ( -name => "FindDlg_Label", -text => "Find what...", -pos => [10, 12], -size => [100, 13], ); $FindDlg->AddTextfield ( -name => "FindDlg_Text", -pos => [10, 30], -size => [150, 21], ); $FindDlg->AddCheckbox ( -name => "FindDlg_Case", -text => "Match case", -pos => [10, 50], -size => [100, 21], ); $FindDlg->AddCheckbox ( -name => "FindDlg_Word", -text => "Find Whole word only", -pos => [10, 70], -size => [100, 21], ); $FindDlg->AddCheckbox ( -name => "FindDlg_REGEX", -text => "Regular expression", -pos => [10, 90], -size => [75, 21], ); $FindDlg->AddButton ( -name => "FindDlg_Forward", -text => "&Forward", -pos => [180, 10], -size => [75 , 21], ); $FindDlg->AddButton ( -name => "FindDlg_Backware", -text => "&Backware", -pos => [180, 40], -size => [75 , 21], ); $FindDlg->AddButton ( -name => "FindDlg_Close", -text => "C&lose", -pos => [180, 70], -size => [75 , 21], ); return $FindDlg; } sub FindDlg_Forward_Click { my $text = $FindDlg->FindDlg_Text->Text(); my $flag = 0; $flag |= Win32::GUI::Scintilla::SCFIND_MATCHCASE if ($FindDlg->FindDlg_Case->Checked()); $flag |= Win32::GUI::Scintilla::SCFIND_WHOLEWORD if ($FindDlg->FindDlg_Word->Checked()); $flag |= Win32::GUI::Scintilla::SCFIND_REGEXP if ($FindDlg->FindDlg_REGEX->Checked()); if ($Editor->FindAndSelect ($text, $flag, 1, 1) == -1) { Win32::GUI::MessageBox($FindDlg, "Text not found", "Find..."); } 0; } sub FindDlg_Backware_Click { my $text = $FindDlg->FindDlg_Text->Text(); my $flag = 0; $flag |= Win32::GUI::Scintilla::SCFIND_MATCHCASE if ($FindDlg->FindDlg_Case->Checked()); $flag |= Win32::GUI::Scintilla::SCFIND_WHOLEWORD if ($FindDlg->FindDlg_Word->Checked()); $flag |= Win32::GUI::Scintilla::SCFIND_REGEXP if ($FindDlg->FindDlg_REGEX->Checked()); if ($Editor->FindAndSelect ($text, $flag, -1, 1) == -1) { Win32::GUI::MessageBox($FindDlg, "Text not found", "Find..."); } 0; } sub FindDlg_Close_Click { $FindDlg->Hide(); 0; } sub FindDlg_Terminate { return FindDlg_Close_Click(); } |
From: jw <jw...@us...> - 2005-11-01 10:34:16
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Samples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23550/Samples Log Message: Directory /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Samples added to the repository |
From: jw <jw...@us...> - 2005-11-01 10:34:16
|
Update of /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23550/Include Log Message: Directory /cvsroot/perl-win32-gui/Win32-GUI-Scintilla/Include added to the repository |