mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c3744dfd6 | ||
|
|
cb5bc91fe3 | ||
|
|
9171ee602b | ||
|
|
4da0463768 | ||
|
|
8d0a2d9dc1 | ||
|
|
6a2cebea7d | ||
|
|
ae10395b3a | ||
|
|
510abc7cee | ||
|
|
e8a700e4e3 | ||
|
|
c13e384e18 | ||
|
|
4204078b19 | ||
|
|
17fc3d0640 | ||
|
|
7715254212 | ||
|
|
2f50aa460a | ||
|
|
6adec161fa | ||
|
|
c802ba3a1d | ||
|
|
06e80f3889 | ||
|
|
216d63f575 | ||
|
|
ff042a87a4 | ||
|
|
56f0f93bbb | ||
|
|
99a3a5b85b | ||
|
|
1868d1d190 | ||
|
|
705e234044 | ||
|
|
0dd78704f7 | ||
|
|
257425141d | ||
|
|
6482a60c6e | ||
|
|
1466b70f10 | ||
|
|
b87146056b | ||
|
|
b29696d684 | ||
|
|
514a8d54db | ||
|
|
abfe89d8ff | ||
|
|
22609dc297 | ||
|
|
93341be396 | ||
|
|
f2ae3b6223 | ||
|
|
e84204a274 | ||
|
|
7024c7cb37 | ||
|
|
91e0823b04 |
42
.gitmodules
vendored
42
.gitmodules
vendored
@@ -91,9 +91,6 @@
|
|||||||
[submodule "vendor/grammars/bro-sublime"]
|
[submodule "vendor/grammars/bro-sublime"]
|
||||||
path = vendor/grammars/bro-sublime
|
path = vendor/grammars/bro-sublime
|
||||||
url = https://github.com/bro/bro-sublime
|
url = https://github.com/bro/bro-sublime
|
||||||
[submodule "vendor/grammars/sublime_man_page_support"]
|
|
||||||
path = vendor/grammars/sublime_man_page_support
|
|
||||||
url = https://github.com/carsonoid/sublime_man_page_support
|
|
||||||
[submodule "vendor/grammars/sublime-MuPAD"]
|
[submodule "vendor/grammars/sublime-MuPAD"]
|
||||||
path = vendor/grammars/sublime-MuPAD
|
path = vendor/grammars/sublime-MuPAD
|
||||||
url = https://github.com/ccreutzig/sublime-MuPAD
|
url = https://github.com/ccreutzig/sublime-MuPAD
|
||||||
@@ -283,9 +280,6 @@
|
|||||||
[submodule "vendor/grammars/groovy.tmbundle"]
|
[submodule "vendor/grammars/groovy.tmbundle"]
|
||||||
path = vendor/grammars/groovy.tmbundle
|
path = vendor/grammars/groovy.tmbundle
|
||||||
url = https://github.com/textmate/groovy.tmbundle
|
url = https://github.com/textmate/groovy.tmbundle
|
||||||
[submodule "vendor/grammars/haskell.tmbundle"]
|
|
||||||
path = vendor/grammars/haskell.tmbundle
|
|
||||||
url = https://github.com/textmate/haskell.tmbundle
|
|
||||||
[submodule "vendor/grammars/html.tmbundle"]
|
[submodule "vendor/grammars/html.tmbundle"]
|
||||||
path = vendor/grammars/html.tmbundle
|
path = vendor/grammars/html.tmbundle
|
||||||
url = https://github.com/textmate/html.tmbundle
|
url = https://github.com/textmate/html.tmbundle
|
||||||
@@ -755,3 +749,39 @@ url = https://github.com/austinwagner/sublime-sourcepawn
|
|||||||
[submodule "vendor/grammars/SublimeGDB"]
|
[submodule "vendor/grammars/SublimeGDB"]
|
||||||
path = vendor/grammars/SublimeGDB
|
path = vendor/grammars/SublimeGDB
|
||||||
url = https://github.com/quarnster/SublimeGDB
|
url = https://github.com/quarnster/SublimeGDB
|
||||||
|
[submodule "vendor/grammars/language-roff"]
|
||||||
|
path = vendor/grammars/language-roff
|
||||||
|
url = https://github.com/Alhadis/language-roff
|
||||||
|
[submodule "vendor/grammars/language-haskell"]
|
||||||
|
path = vendor/grammars/language-haskell
|
||||||
|
url = https://github.com/atom-haskell/language-haskell
|
||||||
|
[submodule "vendor/grammars/language-asn1"]
|
||||||
|
path = vendor/grammars/language-asn1
|
||||||
|
url = https://github.com/ajLangley12/language-asn1
|
||||||
|
[submodule "vendor/grammars/atom-language-1c-bsl"]
|
||||||
|
path = vendor/grammars/atom-language-1c-bsl
|
||||||
|
url = https://github.com/xDrivenDevelopment/atom-language-1c-bsl.git
|
||||||
|
[submodule "vendor/grammars/sublime-rexx"]
|
||||||
|
path = vendor/grammars/sublime-rexx
|
||||||
|
url = https://github.com/mblocker/rexx-sublime
|
||||||
|
[submodule "vendor/grammars/blitzmax"]
|
||||||
|
path = vendor/grammars/blitzmax
|
||||||
|
url = https://github.com/textmate/blitzmax.tmbundle
|
||||||
|
[submodule "vendor/grammars/cython"]
|
||||||
|
path = vendor/grammars/cython
|
||||||
|
url = https://github.com/textmate/cython.tmbundle
|
||||||
|
[submodule "vendor/grammars/forth"]
|
||||||
|
path = vendor/grammars/forth
|
||||||
|
url = https://github.com/textmate/forth.tmbundle
|
||||||
|
[submodule "vendor/grammars/parrot"]
|
||||||
|
path = vendor/grammars/parrot
|
||||||
|
url = https://github.com/textmate/parrot.tmbundle
|
||||||
|
[submodule "vendor/grammars/secondlife-lsl"]
|
||||||
|
path = vendor/grammars/secondlife-lsl
|
||||||
|
url = https://github.com/textmate/secondlife-lsl.tmbundle
|
||||||
|
[submodule "vendor/grammars/vhdl"]
|
||||||
|
path = vendor/grammars/vhdl
|
||||||
|
url = https://github.com/textmate/vhdl.tmbundle
|
||||||
|
[submodule "vendor/grammars/xquery"]
|
||||||
|
path = vendor/grammars/xquery
|
||||||
|
url = https://github.com/textmate/xquery.tmbundle
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ We try only to add languages once they have some usage on GitHub. In most cases
|
|||||||
To add support for a new language:
|
To add support for a new language:
|
||||||
|
|
||||||
0. Add an entry for your language to [`languages.yml`][languages].
|
0. Add an entry for your language to [`languages.yml`][languages].
|
||||||
0. Add a grammar for your language. Please only add grammars that have a license that permits redistribution.
|
0. Add a grammar for your language. Please only add grammars that have [one of these licenses](https://github.com/github/linguist/blob/257425141d4e2a5232786bf0b13c901ada075f93/vendor/licenses/config.yml#L2-L11).
|
||||||
0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`.
|
0. Add your grammar as a submodule: `git submodule add https://github.com/JaneSmith/MyGrammar vendor/grammars/MyGrammar`.
|
||||||
0. Add your grammar to [`grammars.yml`][grammars] by running `script/convert-grammars --add vendor/grammars/MyGrammar`.
|
0. Add your grammar to [`grammars.yml`][grammars] by running `script/convert-grammars --add vendor/grammars/MyGrammar`.
|
||||||
0. Download the license for the grammar: `script/licensed`. Be careful to only commit the file for the new grammar, as this script may update licenses for other grammars as well.
|
0. Download the license for the grammar: `script/licensed`. Be careful to only commit the file for the new grammar, as this script may update licenses for other grammars as well.
|
||||||
|
|||||||
55
grammars.yml
55
grammars.yml
@@ -1,20 +1,6 @@
|
|||||||
---
|
---
|
||||||
http://svn.edgewall.org/repos/genshi/contrib/textmate/Genshi.tmbundle/Syntaxes/Markup%20Template%20%28XML%29.tmLanguage:
|
http://svn.edgewall.org/repos/genshi/contrib/textmate/Genshi.tmbundle/Syntaxes/Markup%20Template%20%28XML%29.tmLanguage:
|
||||||
- text.xml.genshi
|
- text.xml.genshi
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/BlitzMax.tmbundle:
|
|
||||||
- source.blitzmax
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/Cython.tmbundle:
|
|
||||||
- source.cython
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/Forth.tmbundle:
|
|
||||||
- source.forth
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/Parrot.tmbundle:
|
|
||||||
- source.parrot.pir
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/SecondLife%20LSL.tmbundle:
|
|
||||||
- source.lsl
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/VHDL.tmbundle:
|
|
||||||
- source.vhdl
|
|
||||||
http://svn.textmate.org/trunk/Review/Bundles/XQuery.tmbundle:
|
|
||||||
- source.xquery
|
|
||||||
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
|
https://bitbucket.org/Clams/sublimesystemverilog/get/default.tar.gz:
|
||||||
- source.systemverilog
|
- source.systemverilog
|
||||||
- source.ucfconstraints
|
- source.ucfconstraints
|
||||||
@@ -181,6 +167,9 @@ vendor/grammars/atom-fsharp/:
|
|||||||
- source.fsharp.fsi
|
- source.fsharp.fsi
|
||||||
- source.fsharp.fsl
|
- source.fsharp.fsl
|
||||||
- source.fsharp.fsx
|
- source.fsharp.fsx
|
||||||
|
vendor/grammars/atom-language-1c-bsl:
|
||||||
|
- source.bsl
|
||||||
|
- source.sdbl
|
||||||
vendor/grammars/atom-language-clean:
|
vendor/grammars/atom-language-clean:
|
||||||
- source.clean
|
- source.clean
|
||||||
vendor/grammars/atom-language-purescript/:
|
vendor/grammars/atom-language-purescript/:
|
||||||
@@ -201,6 +190,8 @@ vendor/grammars/awk-sublime:
|
|||||||
- source.awk
|
- source.awk
|
||||||
vendor/grammars/bison.tmbundle:
|
vendor/grammars/bison.tmbundle:
|
||||||
- source.bison
|
- source.bison
|
||||||
|
vendor/grammars/blitzmax:
|
||||||
|
- source.blitzmax
|
||||||
vendor/grammars/boo/:
|
vendor/grammars/boo/:
|
||||||
- source.boo
|
- source.boo
|
||||||
vendor/grammars/bro-sublime:
|
vendor/grammars/bro-sublime:
|
||||||
@@ -233,6 +224,8 @@ vendor/grammars/css.tmbundle:
|
|||||||
vendor/grammars/cucumber-tmbundle:
|
vendor/grammars/cucumber-tmbundle:
|
||||||
- source.ruby.rspec.cucumber.steps
|
- source.ruby.rspec.cucumber.steps
|
||||||
- text.gherkin.feature
|
- text.gherkin.feature
|
||||||
|
vendor/grammars/cython:
|
||||||
|
- source.cython
|
||||||
vendor/grammars/d.tmbundle:
|
vendor/grammars/d.tmbundle:
|
||||||
- source.d
|
- source.d
|
||||||
vendor/grammars/dart-sublime-bundle:
|
vendor/grammars/dart-sublime-bundle:
|
||||||
@@ -270,6 +263,8 @@ vendor/grammars/fancy-tmbundle:
|
|||||||
- source.fancy
|
- source.fancy
|
||||||
vendor/grammars/fish-tmbundle:
|
vendor/grammars/fish-tmbundle:
|
||||||
- source.fish
|
- source.fish
|
||||||
|
vendor/grammars/forth:
|
||||||
|
- source.forth
|
||||||
vendor/grammars/fortran.tmbundle:
|
vendor/grammars/fortran.tmbundle:
|
||||||
- source.fortran
|
- source.fortran
|
||||||
- source.fortran.modern
|
- source.fortran.modern
|
||||||
@@ -291,9 +286,6 @@ vendor/grammars/graphviz.tmbundle:
|
|||||||
- source.dot
|
- source.dot
|
||||||
vendor/grammars/groovy.tmbundle:
|
vendor/grammars/groovy.tmbundle:
|
||||||
- source.groovy
|
- source.groovy
|
||||||
vendor/grammars/haskell.tmbundle:
|
|
||||||
- source.haskell
|
|
||||||
- text.tex.latex.haskell
|
|
||||||
vendor/grammars/haxe-sublime-bundle:
|
vendor/grammars/haxe-sublime-bundle:
|
||||||
- source.erazor
|
- source.erazor
|
||||||
- source.haxe.2
|
- source.haxe.2
|
||||||
@@ -336,6 +328,8 @@ vendor/grammars/language-agc:
|
|||||||
- source.agc
|
- source.agc
|
||||||
vendor/grammars/language-apl:
|
vendor/grammars/language-apl:
|
||||||
- source.apl
|
- source.apl
|
||||||
|
vendor/grammars/language-asn1:
|
||||||
|
- source.asn
|
||||||
vendor/grammars/language-babel/:
|
vendor/grammars/language-babel/:
|
||||||
- source.js.jsx
|
- source.js.jsx
|
||||||
- source.regexp.babel
|
- source.regexp.babel
|
||||||
@@ -364,6 +358,15 @@ vendor/grammars/language-gfm:
|
|||||||
- source.gfm
|
- source.gfm
|
||||||
vendor/grammars/language-graphql:
|
vendor/grammars/language-graphql:
|
||||||
- source.graphql
|
- source.graphql
|
||||||
|
vendor/grammars/language-haskell:
|
||||||
|
- hint.haskell
|
||||||
|
- hint.message.haskell
|
||||||
|
- hint.type.haskell
|
||||||
|
- source.c2hs
|
||||||
|
- source.cabal
|
||||||
|
- source.haskell
|
||||||
|
- source.hsc2hs
|
||||||
|
- text.tex.latex.haskell
|
||||||
vendor/grammars/language-hy:
|
vendor/grammars/language-hy:
|
||||||
- source.hy
|
- source.hy
|
||||||
vendor/grammars/language-inform7:
|
vendor/grammars/language-inform7:
|
||||||
@@ -390,6 +393,11 @@ vendor/grammars/language-renpy:
|
|||||||
- source.renpy
|
- source.renpy
|
||||||
vendor/grammars/language-restructuredtext:
|
vendor/grammars/language-restructuredtext:
|
||||||
- text.restructuredtext
|
- text.restructuredtext
|
||||||
|
vendor/grammars/language-roff:
|
||||||
|
- source.ideal
|
||||||
|
- source.pic
|
||||||
|
- text.roff
|
||||||
|
- text.runoff
|
||||||
vendor/grammars/language-shellscript:
|
vendor/grammars/language-shellscript:
|
||||||
- source.shell
|
- source.shell
|
||||||
- text.shell-session
|
- text.shell-session
|
||||||
@@ -474,6 +482,8 @@ vendor/grammars/opa.tmbundle:
|
|||||||
- source.opa
|
- source.opa
|
||||||
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
|
vendor/grammars/oz-tmbundle/Syntaxes/Oz.tmLanguage:
|
||||||
- source.oz
|
- source.oz
|
||||||
|
vendor/grammars/parrot:
|
||||||
|
- source.parrot.pir
|
||||||
vendor/grammars/pascal.tmbundle:
|
vendor/grammars/pascal.tmbundle:
|
||||||
- source.pascal
|
- source.pascal
|
||||||
vendor/grammars/pawn-sublime-language/:
|
vendor/grammars/pawn-sublime-language/:
|
||||||
@@ -526,6 +536,8 @@ vendor/grammars/scheme.tmbundle:
|
|||||||
- source.scheme
|
- source.scheme
|
||||||
vendor/grammars/scilab.tmbundle:
|
vendor/grammars/scilab.tmbundle:
|
||||||
- source.scilab
|
- source.scilab
|
||||||
|
vendor/grammars/secondlife-lsl:
|
||||||
|
- source.lsl
|
||||||
vendor/grammars/smali-sublime/smali.tmLanguage:
|
vendor/grammars/smali-sublime/smali.tmLanguage:
|
||||||
- source.smali
|
- source.smali
|
||||||
vendor/grammars/smalltalk-tmbundle:
|
vendor/grammars/smalltalk-tmbundle:
|
||||||
@@ -570,6 +582,8 @@ vendor/grammars/sublime-opal/:
|
|||||||
- source.opalsysdefs
|
- source.opalsysdefs
|
||||||
vendor/grammars/sublime-pony:
|
vendor/grammars/sublime-pony:
|
||||||
- source.pony
|
- source.pony
|
||||||
|
vendor/grammars/sublime-rexx/:
|
||||||
|
- source.rexx
|
||||||
vendor/grammars/sublime-robot-plugin:
|
vendor/grammars/sublime-robot-plugin:
|
||||||
- text.robot
|
- text.robot
|
||||||
vendor/grammars/sublime-rust:
|
vendor/grammars/sublime-rust:
|
||||||
@@ -593,9 +607,6 @@ vendor/grammars/sublime_cobol:
|
|||||||
- source.cobol
|
- source.cobol
|
||||||
- source.jcl
|
- source.jcl
|
||||||
- source.opencobol
|
- source.opencobol
|
||||||
vendor/grammars/sublime_man_page_support:
|
|
||||||
- source.man
|
|
||||||
- text.groff
|
|
||||||
vendor/grammars/sublimeassembly/:
|
vendor/grammars/sublimeassembly/:
|
||||||
- source.assembly
|
- source.assembly
|
||||||
vendor/grammars/sublimeprolog/:
|
vendor/grammars/sublimeprolog/:
|
||||||
@@ -617,6 +628,8 @@ vendor/grammars/turtle.tmbundle:
|
|||||||
- source.turtle
|
- source.turtle
|
||||||
vendor/grammars/verilog.tmbundle:
|
vendor/grammars/verilog.tmbundle:
|
||||||
- source.verilog
|
- source.verilog
|
||||||
|
vendor/grammars/vhdl:
|
||||||
|
- source.vhdl
|
||||||
vendor/grammars/vue-syntax-highlight:
|
vendor/grammars/vue-syntax-highlight:
|
||||||
- text.html.vue
|
- text.html.vue
|
||||||
vendor/grammars/xc.tmbundle/:
|
vendor/grammars/xc.tmbundle/:
|
||||||
@@ -624,5 +637,7 @@ vendor/grammars/xc.tmbundle/:
|
|||||||
vendor/grammars/xml.tmbundle:
|
vendor/grammars/xml.tmbundle:
|
||||||
- text.xml
|
- text.xml
|
||||||
- text.xml.xsl
|
- text.xml.xsl
|
||||||
|
vendor/grammars/xquery:
|
||||||
|
- source.xquery
|
||||||
vendor/grammars/zephir-sublime:
|
vendor/grammars/zephir-sublime:
|
||||||
- source.php.zephir
|
- source.php.zephir
|
||||||
|
|||||||
@@ -359,6 +359,14 @@ module Linguist
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
disambiguate ".rno" do |data|
|
||||||
|
if /^\.!|^\.end lit(?:eral)?\b/i.match(data)
|
||||||
|
Language["RUNOFF"]
|
||||||
|
elsif /^\.\\" /.match(data)
|
||||||
|
Language["Groff"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
disambiguate ".rpy" do |data|
|
disambiguate ".rpy" do |data|
|
||||||
if /(^(import|from|class|def)\s)/m.match(data)
|
if /(^(import|from|class|def)\s)/m.match(data)
|
||||||
Language["Python"]
|
Language["Python"]
|
||||||
|
|||||||
@@ -27,6 +27,15 @@
|
|||||||
#
|
#
|
||||||
# Please keep this list alphabetized. Capitalization comes before lower case.
|
# Please keep this list alphabetized. Capitalization comes before lower case.
|
||||||
|
|
||||||
|
1C Enterprise:
|
||||||
|
type: programming
|
||||||
|
color: "#814CCC"
|
||||||
|
extensions:
|
||||||
|
- .bsl
|
||||||
|
- .os
|
||||||
|
tm_scope: source.bsl
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
ABAP:
|
ABAP:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#E8274B"
|
color: "#E8274B"
|
||||||
@@ -82,6 +91,15 @@ APL:
|
|||||||
tm_scope: source.apl
|
tm_scope: source.apl
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
|
ASN.1:
|
||||||
|
type: data
|
||||||
|
color: "#aeead0"
|
||||||
|
extensions:
|
||||||
|
- .asn
|
||||||
|
- .asn1
|
||||||
|
tm_scope: source.asn
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
ASP:
|
ASP:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#6a40fd"
|
color: "#6a40fd"
|
||||||
@@ -1411,9 +1429,14 @@ Groff:
|
|||||||
- .n
|
- .n
|
||||||
- .rno
|
- .rno
|
||||||
- .roff
|
- .roff
|
||||||
tm_scope: text.groff
|
- .tmac
|
||||||
|
filenames:
|
||||||
|
- mmn
|
||||||
|
- mmt
|
||||||
|
tm_scope: text.roff
|
||||||
aliases:
|
aliases:
|
||||||
- nroff
|
- nroff
|
||||||
|
- troff
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
Groovy:
|
Groovy:
|
||||||
@@ -2926,6 +2949,7 @@ Pony:
|
|||||||
|
|
||||||
PostScript:
|
PostScript:
|
||||||
type: markup
|
type: markup
|
||||||
|
color: "#da291c"
|
||||||
extensions:
|
extensions:
|
||||||
- .ps
|
- .ps
|
||||||
- .eps
|
- .eps
|
||||||
@@ -2934,6 +2958,17 @@ PostScript:
|
|||||||
- postscr
|
- postscr
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
|
PowerBuilder:
|
||||||
|
type: programming
|
||||||
|
color: "#8f0f8d"
|
||||||
|
extensions:
|
||||||
|
- .pbt
|
||||||
|
- .sra
|
||||||
|
- .sru
|
||||||
|
- .srw
|
||||||
|
tm_scope: none
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
PowerShell:
|
PowerShell:
|
||||||
type: programming
|
type: programming
|
||||||
ace_mode: powershell
|
ace_mode: powershell
|
||||||
@@ -3131,6 +3166,17 @@ REALbasic:
|
|||||||
tm_scope: source.vbnet
|
tm_scope: source.vbnet
|
||||||
ace_mode: text
|
ace_mode: text
|
||||||
|
|
||||||
|
REXX:
|
||||||
|
type: programming
|
||||||
|
aliases:
|
||||||
|
- arexx
|
||||||
|
extensions:
|
||||||
|
- .rexx
|
||||||
|
- .pprx
|
||||||
|
- .rex
|
||||||
|
tm_scope: source.rexx
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
RHTML:
|
RHTML:
|
||||||
type: markup
|
type: markup
|
||||||
group: HTML
|
group: HTML
|
||||||
@@ -3149,6 +3195,15 @@ RMarkdown:
|
|||||||
- .rmd
|
- .rmd
|
||||||
tm_scope: source.gfm
|
tm_scope: source.gfm
|
||||||
|
|
||||||
|
RUNOFF:
|
||||||
|
type: markup
|
||||||
|
color: "#665a4e"
|
||||||
|
extensions:
|
||||||
|
- .rnh
|
||||||
|
- .rno
|
||||||
|
tm_scope: text.runoff
|
||||||
|
ace_mode: text
|
||||||
|
|
||||||
Racket:
|
Racket:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#22228f"
|
color: "#22228f"
|
||||||
@@ -3197,7 +3252,7 @@ Rebol:
|
|||||||
|
|
||||||
Red:
|
Red:
|
||||||
type: programming
|
type: programming
|
||||||
color: "#ee0000"
|
color: "#f50000"
|
||||||
extensions:
|
extensions:
|
||||||
- .red
|
- .red
|
||||||
- .reds
|
- .reds
|
||||||
@@ -3442,7 +3497,7 @@ Sass:
|
|||||||
Scala:
|
Scala:
|
||||||
type: programming
|
type: programming
|
||||||
ace_mode: scala
|
ace_mode: scala
|
||||||
color: "#DC322F"
|
color: "#c22d40"
|
||||||
extensions:
|
extensions:
|
||||||
- .scala
|
- .scala
|
||||||
- .sbt
|
- .sbt
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module Linguist
|
module Linguist
|
||||||
VERSION = "4.8.8"
|
VERSION = "4.8.9"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,265 @@
|
|||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция ПолучитьКонтактноеЛицоПоЭлектроннойПочте(ЭлектроннаяПочта)
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ ЭлектроннаяПочта = &ЭлектроннаяПочта";
|
||||||
|
Запрос.Параметры.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта));
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
КонтактноеЛицо = "";
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат КонтактноеЛицо;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция ПолучитьКонтактноеЛицоПоПолучателю(Получатель)
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Получатель";
|
||||||
|
Запрос.Параметры.Вставить("Получатель", Получатель);
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
КонтактноеЛицо = "";
|
||||||
|
Если Выборка.Следующий() Тогда
|
||||||
|
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат КонтактноеЛицо;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура ДобавитьПолучателей(Получатель, Получатели)
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ ЭлектроннаяПочта ИЗ Справочник.Контрагенты ГДЕ Ссылка ";
|
||||||
|
Если ТипЗнч(Получатели) = Тип("Массив") Тогда
|
||||||
|
Запрос.Текст = Запрос.Текст + "В (&Получатели)";
|
||||||
|
Иначе
|
||||||
|
Запрос.Текст = Запрос.Текст + "= &Получатели";
|
||||||
|
КонецЕсли;
|
||||||
|
Запрос.Параметры.Вставить("Получатели", Получатели);
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
Если Получатель <> "" Тогда
|
||||||
|
Получатель = Получатель + "; ";
|
||||||
|
КонецЕсли;
|
||||||
|
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||||
|
Если Параметры.Ключ.Пустая() Тогда
|
||||||
|
Заголовок = "Исходящее письмо (Создание)";
|
||||||
|
Объект.Дата = ТекущаяДата();
|
||||||
|
ПоШаблону = Параметры.Свойство("ПоШаблону");
|
||||||
|
ВходящееПисьмо = Параметры.ВходящееПисьмо;
|
||||||
|
Если ПоШаблону = Истина Тогда
|
||||||
|
Элементы.ЗаполнитьПоШаблону.Видимость = Истина;
|
||||||
|
РаботаСПочтой.ЗаполнитьПисьмоПоШаблону(Объект, Содержимое);
|
||||||
|
ИначеЕсли Не ВходящееПисьмо.Пустая() Тогда
|
||||||
|
РаботаСПочтой.ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, Объект, Содержимое);
|
||||||
|
КонецЕсли;
|
||||||
|
Адресаты = Параметры.Адресаты;
|
||||||
|
Если Адресаты <> Неопределено Тогда
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
|
| Контрагенты.ЭлектроннаяПочта
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Контрагенты КАК Контрагенты
|
||||||
|
|ГДЕ
|
||||||
|
| Контрагенты.Ссылка В(&Адресаты)
|
||||||
|
| И Контрагенты.ЭлектроннаяПочта <> """"";
|
||||||
|
Запрос.УстановитьПараметр("Адресаты", Адресаты);
|
||||||
|
Получатель = "";
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
Если Получатель <> "" Тогда
|
||||||
|
Получатель = Получатель + "; ";
|
||||||
|
КонецЕсли;
|
||||||
|
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||||||
|
КонецЦикла;
|
||||||
|
Объект.Получатель = Получатель;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
|
||||||
|
Содержимое = ТекущийОбъект.Содержимое.Получить();
|
||||||
|
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||||||
|
Если РаботаСПочтой.ПисьмоОтправлено(ТекущийОбъект.Ссылка) Тогда
|
||||||
|
Заголовок = Заголовок + " - Отправлено";
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
|
||||||
|
ТекущийОбъект.Содержимое = Новый ХранилищеЗначения(Содержимое, Новый СжатиеДанных());
|
||||||
|
ТекущийОбъект.Текст = Содержимое.ПолучитьТекст();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Функция ОтправитьПисьмо(Ошибка)
|
||||||
|
Если Не Записать() Тогда
|
||||||
|
Ошибка = "ОшибкаЗаписи";
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не РаботаСПочтой.ОтправитьПисьмо(Объект.Ссылка) Тогда
|
||||||
|
Ошибка = "ОшибкаОтправки";
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
Заголовок = Заголовок + " - Отправлено";
|
||||||
|
Возврат Истина;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ОтправитьПисьмоКлиент()
|
||||||
|
Ошибка = "";
|
||||||
|
Если Не ОтправитьПисьмо(Ошибка) Тогда
|
||||||
|
Если Ошибка = "ОшибкаОтправки" Тогда
|
||||||
|
Кнопки = Новый СписокЗначений;
|
||||||
|
Кнопки.Добавить(1, "Настроить почту");
|
||||||
|
Кнопки.Добавить(2, "Закрыть");
|
||||||
|
|
||||||
|
Оп = Новый ОписаниеОповещения(
|
||||||
|
"ОтправитьПисьмоКлиентВопросЗавершение",
|
||||||
|
ЭтотОбъект);
|
||||||
|
ПоказатьВопрос(Оп,
|
||||||
|
"Не указаны настройки интернет почты!",
|
||||||
|
Кнопки, , 1);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Ложь;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
|
||||||
|
ПоказатьОповещениеПользователя("Письмо отправлено", НавигационнаяСсылка, Объект.Наименование);
|
||||||
|
ОповеститьОбИзменении(Объект.Ссылка);
|
||||||
|
Возврат Истина;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ОтправитьПисьмоКлиентВопросЗавершение(Результат, Параметры) Экспорт
|
||||||
|
Если Результат = 1 Тогда
|
||||||
|
ОткрытьФорму("ОбщаяФорма.НастройкаПочты");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Отправить(Команда)
|
||||||
|
ОтправитьПисьмоКлиент();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ОтправитьИЗакрыть(Команда)
|
||||||
|
Если Не ОтправитьПисьмоКлиент() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Закрыть();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВставитьСтрокуВТекущуюПозицию(Поле, Документ, Строка)
|
||||||
|
Перем Начало, Конец;
|
||||||
|
Поле.ПолучитьГраницыВыделения(Начало, Конец);
|
||||||
|
Позиция = Документ.ПолучитьПозициюПоЗакладке(Начало);
|
||||||
|
Документ.Удалить(Начало, Конец);
|
||||||
|
Начало = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||||||
|
Документ.Вставить(Начало, Строка);
|
||||||
|
Позиция = Позиция + СтрДлина(Строка);
|
||||||
|
Закладка = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||||||
|
Поле.УстановитьГраницыВыделения(Закладка, Закладка);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВставитьКонтактноеЛицо(Команда)
|
||||||
|
Если Объект.Контрагент.Пустая() Тогда
|
||||||
|
Сообщить("Выберите контрагента");
|
||||||
|
Иначе
|
||||||
|
КонтактноеЛицо = ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент);
|
||||||
|
ВставитьСтрокуВТекущуюПозицию(Элементы.Содержимое, Содержимое, КонтактноеЛицо + " ");
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
|
||||||
|
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура КонтрагентПриИзменении(Элемент)
|
||||||
|
ДобавитьПолучателей(Объект.Получатель, Объект.Контрагент);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВыделитьВажное(Команда)
|
||||||
|
Перем Начало, Конец;
|
||||||
|
ВсеВажное = Истина;
|
||||||
|
Элементы.Содержимое.ПолучитьГраницыВыделения(Начало, Конец);
|
||||||
|
Если Начало = Конец Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
НаборТекстовыхЭлементов = Новый Массив();
|
||||||
|
Для Каждого ТекстовыйЭлемент Из Содержимое.СформироватьЭлементы(Начало, Конец) Цикл
|
||||||
|
Если Тип(ТекстовыйЭлемент) = Тип("ТекстФорматированногоДокумента") Тогда
|
||||||
|
НаборТекстовыхЭлементов.Добавить(ТекстовыйЭлемент);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||||||
|
Если ТекстовыйЭлемент.Шрифт.Жирный <> Истина И
|
||||||
|
ТекстовыйЭлемент.ЦветТекста <> Новый Цвет(255, 0, 0) Тогда
|
||||||
|
ВсеВажное = Ложь;
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||||||
|
ТекстовыйЭлемент.Шрифт = Новый Шрифт(ТекстовыйЭлемент.Шрифт, , , Не ВсеВажное);
|
||||||
|
ТекстовыйЭлемент.ЦветТекста = Новый Цвет(?(ВсеВажное, 0, 255), 0, 0);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ЗаполнитьПоШаблону(Команда)
|
||||||
|
Если Объект.Контрагент.Пустая() Тогда
|
||||||
|
Сообщить("Выберите контрагента");
|
||||||
|
Иначе
|
||||||
|
НайтиИЗаменить("[Контрагент]", Объект.Контрагент);
|
||||||
|
НайтиИЗаменить("[КонтактноеЛицо]", ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент));
|
||||||
|
КонецЕсли;
|
||||||
|
НайтиИЗаменить("[ДатаПисьма]", Объект.Дата);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура НайтиИЗаменить(СтрокаДляПоиска, СтрокаДляЗамены)
|
||||||
|
Перем ВставленныйТекст, ШрифтОформления, ЦветТекстаОформления, ЦветФонаОформления, НавигационнаяСсылкаОформления;
|
||||||
|
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска);
|
||||||
|
Пока ((РезультатПоиска <> Неопределено) И (РезультатПоиска.ЗакладкаНачала <> Неопределено) И (РезультатПоиска.ЗакладкаКонца <> Неопределено)) Цикл
|
||||||
|
ПозицияНачалаСледующегоЦиклаПоиска = Содержимое.ПолучитьПозициюПоЗакладке(РезультатПоиска.ЗакладкаНачала) + СтрДлина(СтрокаДляЗамены);
|
||||||
|
МассивЭлементовДляОформления = Содержимое.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||||||
|
Для Каждого ЭлементДляОформления Из МассивЭлементовДляОформления Цикл
|
||||||
|
Если Тип(ЭлементДляОформления) = Тип("ТекстФорматированногоДокумента") Тогда
|
||||||
|
ШрифтОформления = ЭлементДляОформления.Шрифт;
|
||||||
|
ЦветТекстаОформления = ЭлементДляОформления.ЦветТекста;
|
||||||
|
ЦветФонаОформления = ЭлементДляОформления.ЦветФона;
|
||||||
|
НавигационнаяСсылкаОформления = ЭлементДляОформления.НавигационнаяССылка;
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Содержимое.Удалить(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||||||
|
ВставленныйТекст = Содержимое.Вставить(РезультатПоиска.ЗакладкаНачала, СтрокаДляЗамены);
|
||||||
|
Если ВставленныйТекст <> Неопределено И ШрифтОформления <> Неопределено Тогда
|
||||||
|
ВставленныйТекст.Шрифт = ШрифтОформления;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВставленныйТекст <> Неопределено И ЦветТекстаОформления <> Неопределено Тогда
|
||||||
|
ВставленныйТекст.ЦветТекста = ЦветТекстаОформления;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВставленныйТекст <> Неопределено И ЦветФонаОформления <> Неопределено Тогда
|
||||||
|
ВставленныйТекст.ЦветФона = ЦветФонаОформления;
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВставленныйТекст <> Неопределено И НавигационнаяСсылкаОформления <> Неопределено Тогда
|
||||||
|
ВставленныйТекст.НавигационнаяССылка = НавигационнаяСсылкаОформления;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска, Содержимое.ПолучитьЗакладкуПоПозиции(ПозицияНачалаСледующегоЦиклаПоиска));
|
||||||
|
КонецЦикла;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
&НаСервере
|
||||||
|
Функция ПечатнаяФорма(ПараметрКоманды)
|
||||||
|
ТабличныйДокумент = Новый ТабличныйДокумент;
|
||||||
|
ТабличныйДокумент.ОтображатьСетку = Истина;
|
||||||
|
ТабличныйДокумент.ОтображатьЗаголовки = Истина;
|
||||||
|
|
||||||
|
Сформирован = Ложь;
|
||||||
|
ТабМакет = Справочники.Товары.ПолучитьМакет("МакетПрайсЛиста");
|
||||||
|
|
||||||
|
Шапка = ТабМакет.ПолучитьОбласть("Шапка");
|
||||||
|
ТабличныйДокумент.Вывести(Шапка);
|
||||||
|
|
||||||
|
ОбластьНоменклатура = ТабМакет.ПолучитьОбласть("ОбластьНоменклатура");
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ
|
||||||
|
| Товары.Код КАК Код,
|
||||||
|
| Товары.Наименование КАК Наименование,
|
||||||
|
| Товары.Артикул КАК Артикул,
|
||||||
|
| Товары.ФайлКартинки КАК Картинка,
|
||||||
|
| Товары.Описание КАК Описание,
|
||||||
|
| Товары.Вид КАК Вид,
|
||||||
|
| ЦеныТоваров.Цена КАК Цена
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.ЦеныТоваров КАК ЦеныТоваров
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
|
||||||
|
| ПО ЦеныТоваров.Товар = Товары.Ссылка
|
||||||
|
|ГДЕ
|
||||||
|
| Товары.ЭтоГруппа = ЛОЖЬ
|
||||||
|
| И ЦеныТоваров.ВидЦен = &ВидЦен
|
||||||
|
|
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| Вид,
|
||||||
|
| Товары.Родитель.Код,
|
||||||
|
| Код";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("ВидЦен", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"));
|
||||||
|
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
ОбластьНоменклатура.Параметры.Заполнить(Выборка);
|
||||||
|
|
||||||
|
Описание = "";
|
||||||
|
|
||||||
|
Чтение = Новый ЧтениеHTML();
|
||||||
|
Чтение.УстановитьСтроку(Выборка.Описание);
|
||||||
|
|
||||||
|
ДокDOM = Новый ПостроительDOM();
|
||||||
|
HTML = ДокDOM.Прочитать(Чтение);
|
||||||
|
|
||||||
|
Если Не HTML.ЭлементДокумента = Неопределено Тогда
|
||||||
|
Для Каждого Узел из HTML.ЭлементДокумента.ДочерниеУзлы Цикл
|
||||||
|
Если Узел.ИмяУзла = "body" Тогда
|
||||||
|
Для Каждого ЭлементОписания из Узел.ДочерниеУзлы Цикл
|
||||||
|
Описание = Описание + ЭлементОписания.ТекстовоеСодержимое;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли;
|
||||||
|
ОбластьНоменклатура.Параметры.Описание = Описание;
|
||||||
|
|
||||||
|
Если (Выборка.Картинка <> Null) Тогда
|
||||||
|
ОбластьНоменклатура.Параметры.ПараметрКартинки = Новый Картинка(Выборка.Картинка.ДанныеФайла.Получить());
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТабличныйДокумент.Вывести(ОбластьНоменклатура, Выборка.Уровень());
|
||||||
|
Сформирован = Истина;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если Сформирован Тогда
|
||||||
|
Возврат ТабличныйДокумент;
|
||||||
|
Иначе
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
|
||||||
|
ТабличныйДокумент = ПечатнаяФорма(ПараметрКоманды);
|
||||||
|
|
||||||
|
Если ТабличныйДокумент <> Неопределено Тогда
|
||||||
|
ТабличныйДокумент.Показать();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
// Процедура на основании анализа типа данных заменяет их на данные, удаляющие
|
||||||
|
// информацию из узла в котором их не должно быть
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Данные – Объект, набор записей,... который нужно преобразовать
|
||||||
|
//
|
||||||
|
Процедура УдалениеДанных(Данные)
|
||||||
|
|
||||||
|
// Получаем объект описания метаданного, соответствующий данным
|
||||||
|
ОбъектМетаданных = ?(ТипЗнч(Данные) = Тип("УдалениеОбъекта"), Данные.Ссылка.Метаданные(), Данные.Метаданные());
|
||||||
|
// Проверяем тип, интересуют только те типы, которые реализованы на мобильной платформе
|
||||||
|
Если Метаданные.Справочники.Содержит(ОбъектМетаданных)
|
||||||
|
ИЛИ Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
|
||||||
|
|
||||||
|
// Перенос удаления объекта для объектных
|
||||||
|
Данные = Новый УдалениеОбъекта(Данные.Ссылка);
|
||||||
|
|
||||||
|
ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных)
|
||||||
|
ИЛИ Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных)
|
||||||
|
ИЛИ Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда
|
||||||
|
|
||||||
|
// Очищаем данные
|
||||||
|
Данные.Очистить();
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Функция формирует пакет обмена, который будет отправлен узлу "УзелОбмена"
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// УзелОбмена – узел плана обмена "мобильные", с которым осуществляется обмен
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// сформированный пакет, помещенный в хранилище значения
|
||||||
|
Функция СформироватьПакетОбмена(УзелОбмена) Экспорт
|
||||||
|
|
||||||
|
ЗаписьXML = Новый ЗаписьXML;
|
||||||
|
|
||||||
|
ЗаписьXML.УстановитьСтроку("UTF-8");
|
||||||
|
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||||||
|
|
||||||
|
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
|
||||||
|
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
|
||||||
|
|
||||||
|
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
|
||||||
|
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
|
||||||
|
|
||||||
|
ТипДанныхУдаления = Тип("УдалениеОбъекта");
|
||||||
|
|
||||||
|
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
|
||||||
|
Пока ВыборкаИзменений.Следующий() Цикл
|
||||||
|
|
||||||
|
Данные = ВыборкаИзменений.Получить();
|
||||||
|
|
||||||
|
// Если перенос данных не нужен, то, возможно, необходимо записать удаление данных
|
||||||
|
Если Не ОбменМобильныеПереопределяемый.НуженПереносДанных(Данные, УзелОбмена) Тогда
|
||||||
|
|
||||||
|
// Получаем значение с возможным удалением данных
|
||||||
|
УдалениеДанных(Данные);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Записываем данные в сообщение
|
||||||
|
ОбменМобильныеПереопределяемый.ЗаписатьДанные(ЗаписьXML, Данные);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ЗаписьСообщения.ЗакончитьЗапись();
|
||||||
|
|
||||||
|
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Процедура вносит в информационную базу данные, которые присланы из узла "УзелОбмена"
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// УзелОбмена – узел плана обмена "мобильные", с которым осуществляется обмен
|
||||||
|
// ДанныеОбмена - пакет обмена полученный из узла УзелОбмена, помещен в ХранилищеЗначения
|
||||||
|
//
|
||||||
|
Процедура ПринятьПакетОбмена(УзелОбмена, ДанныеОбмена) Экспорт
|
||||||
|
|
||||||
|
ЧтениеXML = Новый ЧтениеXML;
|
||||||
|
ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить());
|
||||||
|
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
|
||||||
|
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
|
||||||
|
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
|
||||||
|
|
||||||
|
НачатьТранзакцию();
|
||||||
|
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
|
||||||
|
|
||||||
|
Данные = ОбменМобильныеПереопределяемый.ПрочитатьДанные(ЧтениеXML);
|
||||||
|
|
||||||
|
Если Не Данные = Неопределено Тогда
|
||||||
|
|
||||||
|
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
|
||||||
|
Данные.ОбменДанными.Загрузка = Истина;
|
||||||
|
|
||||||
|
Данные.Записать();
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
ЗафиксироватьТранзакцию();
|
||||||
|
|
||||||
|
ЧтениеСообщения.ЗакончитьЧтение();
|
||||||
|
ЧтениеXML.Закрыть();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
302
samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
Normal file
302
samples/1C Enterprise/Document.РасходТовара.ObjectModule.bsl
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Формирование печатной формы документа
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
// Параметры:
|
||||||
|
|
||||||
|
// Нет.
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
// Возвращаемое значение:
|
||||||
|
|
||||||
|
// ТабличныйДокумент - Сформированный табличный документ.
|
||||||
|
|
||||||
|
Процедура ПечатнаяФорма(ТабличныйДокумент) Экспорт
|
||||||
|
|
||||||
|
|
||||||
|
Макет = Документы.РасходТовара.ПолучитьМакет("МакетПечати");
|
||||||
|
|
||||||
|
|
||||||
|
// Заголовок
|
||||||
|
|
||||||
|
Область = Макет.ПолучитьОбласть("Заголовок");
|
||||||
|
|
||||||
|
ТабличныйДокумент.Вывести(Область);
|
||||||
|
|
||||||
|
|
||||||
|
// Шапка
|
||||||
|
|
||||||
|
Шапка = Макет.ПолучитьОбласть("Шапка");
|
||||||
|
|
||||||
|
Шапка.Параметры.Заполнить(ЭтотОбъект);
|
||||||
|
|
||||||
|
ТабличныйДокумент.Вывести(Шапка);
|
||||||
|
|
||||||
|
|
||||||
|
// Товары
|
||||||
|
|
||||||
|
Область = Макет.ПолучитьОбласть("ТоварыШапка");
|
||||||
|
|
||||||
|
ТабличныйДокумент.Вывести(Область);
|
||||||
|
|
||||||
|
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
|
||||||
|
|
||||||
|
|
||||||
|
Для каждого ТекСтрокаТовары Из Товары Цикл
|
||||||
|
|
||||||
|
|
||||||
|
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
|
||||||
|
|
||||||
|
ТабличныйДокумент.Вывести(ОбластьТовары);
|
||||||
|
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
// Формирование печатной формы документа
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Нет.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// ТабличныйДокумент - Сформированный табличный документ.
|
||||||
|
Процедура Пересчитать() Экспорт
|
||||||
|
|
||||||
|
Для каждого ТекСтрокаТовары Из Товары Цикл
|
||||||
|
|
||||||
|
ТекСтрокаТовары.Сумма = ТекСтрокаТовары.Количество * ТекСтрокаТовары.Цена;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ОБРАБОТЧИКИ СОБЫТИЙ ОБЪЕКТА
|
||||||
|
|
||||||
|
|
||||||
|
Процедура ОбработкаПроведения(Отказ, Режим)
|
||||||
|
|
||||||
|
// Формирование движений регистров накопления ТоварныеЗапасы и Продажи.
|
||||||
|
Движения.ТоварныеЗапасы.Записывать = Истина;
|
||||||
|
Движения.Продажи.Записывать = Истина;
|
||||||
|
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
|
||||||
|
Движения.ТоварныеЗапасы.БлокироватьДляИзменения = Истина;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
// Создадим запрос, чтобы получать информацию об услугах
|
||||||
|
Запрос = Новый Запрос("ВЫБРАТЬ
|
||||||
|
| ТоварыВДокументе.НомерСтроки КАК НомерСтроки
|
||||||
|
|ИЗ
|
||||||
|
| Документ.РасходТовара.Товары КАК ТоварыВДокументе
|
||||||
|
|ГДЕ
|
||||||
|
| ТоварыВДокументе.Ссылка = &Ссылка
|
||||||
|
| И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)");
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||||||
|
РезультатУслуги = Запрос.Выполнить().Выгрузить();
|
||||||
|
РезультатУслуги.Индексы.Добавить("НомерСтроки");
|
||||||
|
|
||||||
|
Для каждого ТекСтрокаТовары Из Товары Цикл
|
||||||
|
|
||||||
|
Строка = РезультатУслуги.Найти(ТекСтрокаТовары.НомерСтроки, "НомерСтроки");
|
||||||
|
Если Строка = Неопределено Тогда
|
||||||
|
|
||||||
|
// Не услуга
|
||||||
|
Движение = Движения.ТоварныеЗапасы.Добавить();
|
||||||
|
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
|
||||||
|
Движение.Период = Дата;
|
||||||
|
Движение.Товар = ТекСтрокаТовары.Товар;
|
||||||
|
Движение.Склад = Склад;
|
||||||
|
Движение.Количество = ТекСтрокаТовары.Количество;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Движение = Движения.Продажи.Добавить();
|
||||||
|
Движение.Период = Дата;
|
||||||
|
Движение.Товар = ТекСтрокаТовары.Товар;
|
||||||
|
Движение.Покупатель = Покупатель;
|
||||||
|
Движение.Количество = ТекСтрокаТовары.Количество;
|
||||||
|
Движение.Сумма = ТекСтрокаТовары.Сумма;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Формирование движения регистра накопления Взаиморасчеты.
|
||||||
|
Движения.Взаиморасчеты.Записывать = Истина;
|
||||||
|
Движение = Движения.Взаиморасчеты.Добавить();
|
||||||
|
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
|
||||||
|
Движение.Период = Дата;
|
||||||
|
Движение.Контрагент = Покупатель;
|
||||||
|
Движение.Валюта = Валюта;
|
||||||
|
|
||||||
|
Если Валюта.Пустая() Тогда
|
||||||
|
Движение.Сумма = Товары.Итог("Сумма");
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
Курс = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(Дата, Новый Структура("Валюта", Валюта)).Курс;
|
||||||
|
|
||||||
|
Если Курс = 0 Тогда
|
||||||
|
Движение.Сумма = Товары.Итог("Сумма");
|
||||||
|
Иначе
|
||||||
|
Движение.Сумма = Товары.Итог("Сумма") / Курс;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
//Запишем движения
|
||||||
|
Движения.Записать();
|
||||||
|
|
||||||
|
//Контроль остатков при оперативном проведении
|
||||||
|
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
|
||||||
|
// Создадим запрос, чтобы контролировать остатки по товарам
|
||||||
|
Запрос = Новый Запрос("ВЫБРАТЬ
|
||||||
|
| ТоварыВДокументе.Товар КАК Товар,
|
||||||
|
| СУММА(ТоварыВДокументе.Количество) КАК Количество,
|
||||||
|
| МАКСИМУМ(ТоварыВДокументе.НомерСтроки) КАК НомерСтроки
|
||||||
|
|
|
||||||
|
|ПОМЕСТИТЬ ТребуетсяТовара
|
||||||
|
|
|
||||||
|
|ИЗ
|
||||||
|
| Документ.РасходТовара.Товары КАК ТоварыВДокументе
|
||||||
|
|
|
||||||
|
|ГДЕ
|
||||||
|
| ТоварыВДокументе.Ссылка = &Ссылка
|
||||||
|
| И ТоварыВДокументе.Товар.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)
|
||||||
|
|
|
||||||
|
|СГРУППИРОВАТЬ ПО
|
||||||
|
| ТоварыВДокументе.Товар
|
||||||
|
|
|
||||||
|
|ИНДЕКСИРОВАТЬ ПО
|
||||||
|
| Товар
|
||||||
|
|;
|
||||||
|
|
|
||||||
|
|////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| ПРЕДСТАВЛЕНИЕ(ТребуетсяТовара.Товар) КАК ТоварПредставление,
|
||||||
|
| ВЫБОР
|
||||||
|
| КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество
|
||||||
|
| ТОГДА ТоварыВДокументе.Количество
|
||||||
|
| ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
|
||||||
|
| КОНЕЦ КАК Нехватка,
|
||||||
|
| ТоварыВДокументе.Количество - ВЫБОР
|
||||||
|
| КОГДА - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0) > ТоварыВДокументе.Количество
|
||||||
|
| ТОГДА ТоварыВДокументе.Количество
|
||||||
|
| ИНАЧЕ - ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
|
||||||
|
| КОНЕЦ КАК МаксимальноеКоличество,
|
||||||
|
| ТребуетсяТовара.НомерСтроки КАК НомерСтроки
|
||||||
|
|
|
||||||
|
|ИЗ
|
||||||
|
| ТребуетсяТовара КАК ТребуетсяТовара
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварныеЗапасы.Остатки(
|
||||||
|
| ,
|
||||||
|
| Товар В
|
||||||
|
| (ВЫБРАТЬ
|
||||||
|
| ТребуетсяТовара.Товар
|
||||||
|
| ИЗ
|
||||||
|
| ТребуетсяТовара)
|
||||||
|
| И Склад = &Склад) КАК ТоварныеЗапасыОстатки
|
||||||
|
| ПО ТребуетсяТовара.Товар = ТоварныеЗапасыОстатки.Товар
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходТовара.Товары КАК ТоварыВДокументе
|
||||||
|
| ПО ТребуетсяТовара.Товар = ТоварыВДокументе.Товар
|
||||||
|
| И ТребуетсяТовара.НомерСтроки = ТоварыВДокументе.НомерСтроки
|
||||||
|
|
|
||||||
|
|ГДЕ
|
||||||
|
| ТоварыВДокументе.Ссылка = &Ссылка И
|
||||||
|
| 0 > ЕСТЬNULL(ТоварныеЗапасыОстатки.КоличествоОстаток, 0)
|
||||||
|
|
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| НомерСтроки");
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("Склад", Склад);
|
||||||
|
Запрос.УстановитьПараметр("Ссылка", Ссылка);
|
||||||
|
РезультатСНехваткой = Запрос.Выполнить();
|
||||||
|
|
||||||
|
ВыборкаРезультатаСНехваткой = РезультатСНехваткой.Выбрать();
|
||||||
|
|
||||||
|
// Выдадим ошибки для строк, в которых не хватает остатка
|
||||||
|
Пока ВыборкаРезультатаСНехваткой.Следующий() Цикл
|
||||||
|
|
||||||
|
Сообщение = Новый СообщениеПользователю();
|
||||||
|
Сообщение.Текст = НСтр("ru = 'Не хватает '", "ru")
|
||||||
|
+ ВыборкаРезультатаСНехваткой.Нехватка
|
||||||
|
+ НСтр("ru = ' единиц товара'", "ru") + """"
|
||||||
|
+ ВыборкаРезультатаСНехваткой.ТоварПредставление
|
||||||
|
+ """"
|
||||||
|
+ НСтр("ru = ' на складе'", "ru")
|
||||||
|
+ """"
|
||||||
|
+ Склад
|
||||||
|
+ """."
|
||||||
|
+ НСтр("ru = 'Максимальное количество: '", "ru")
|
||||||
|
+ ВыборкаРезультатаСНехваткой.МаксимальноеКоличество
|
||||||
|
+ ".";
|
||||||
|
Сообщение.Поле = НСтр("ru = 'Товары'", "ru")
|
||||||
|
+ "["
|
||||||
|
+ (ВыборкаРезультатаСНехваткой.НомерСтроки - 1)
|
||||||
|
+ "]."
|
||||||
|
+ НСтр("ru = 'Количество'", "ru");
|
||||||
|
Сообщение.УстановитьДанные(ЭтотОбъект);
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
Отказ = Истина;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
|
||||||
|
// Проверим заполненность поля "Покупатель"
|
||||||
|
|
||||||
|
Если Покупатель.Пустая() Тогда
|
||||||
|
|
||||||
|
|
||||||
|
// Если поле Покупатель не заполнено, сообщим об этом пользователю
|
||||||
|
|
||||||
|
Сообщение = Новый СообщениеПользователю();
|
||||||
|
|
||||||
|
Сообщение.Текст = НСтр("ru = 'Не указан Покупатель, для которого выписывается накладная!'", "ru");
|
||||||
|
|
||||||
|
Сообщение.Поле = НСтр("ru = 'Покупатель'", "ru");
|
||||||
|
Сообщение.УстановитьДанные(ЭтотОбъект);
|
||||||
|
|
||||||
|
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Сообщим платформе, что мы сами обработали проверку заполнения поля "Покупатель"
|
||||||
|
|
||||||
|
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Покупатель"));
|
||||||
|
|
||||||
|
// Так как информация в документе не консистентна, то продолжать работу дальше смысла нет
|
||||||
|
|
||||||
|
Отказ = Истина;
|
||||||
|
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
|
//Если склад не заполнен, то проверим есть ли в документе что-то кроме услуг
|
||||||
|
Если Склад.Пустая() И Товары.Количество() > 0 Тогда
|
||||||
|
|
||||||
|
// Создадим запрос, чтобы получать информацию об товарах
|
||||||
|
Запрос = Новый Запрос("ВЫБРАТЬ
|
||||||
|
| Количество(*) КАК Количество
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Товары КАК Товары
|
||||||
|
|ГДЕ
|
||||||
|
| Товары.Ссылка В (&ТоварыВДокументе)
|
||||||
|
| И Товары.Вид = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар)");
|
||||||
|
|
||||||
20
samples/1C Enterprise/ci_before_script.os
Normal file
20
samples/1C Enterprise/ci_before_script.os
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
Каталог = ОбъединитьПути(ТекущийКаталог(), "libs\oscript-library\src");
|
||||||
|
Загрузчик_Оригинал_ИмяФайла = ОбъединитьПути(Каталог, "package-loader.os");
|
||||||
|
|
||||||
|
Файлы = НайтиФайлы(Каталог, , Ложь);
|
||||||
|
Для Каждого ВыбФайл Из Файлы Цикл
|
||||||
|
|
||||||
|
Если ВыбФайл.ЭтоФайл() Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Загрузчик_ИмяФайла = ОбъединитьПути(ВыбФайл.ПолноеИмя, "package-loader.os");
|
||||||
|
Загрузчик_Файл = Новый Файл(Загрузчик_ИмяФайла);
|
||||||
|
|
||||||
|
Если Загрузчик_Файл.Существует() Тогда
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КопироватьФайл(Загрузчик_Оригинал_ИмяФайла, Загрузчик_ИмяФайла);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
42
samples/1C Enterprise/test_canCompile.os
Normal file
42
samples/1C Enterprise/test_canCompile.os
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#Использовать "../libs/oscript-library/src/v8runner"
|
||||||
|
#Использовать "../libs/oscript-library/src/tempfiles"
|
||||||
|
|
||||||
|
Перем Лог;
|
||||||
|
Перем КодВозврата;
|
||||||
|
|
||||||
|
Процедура Инициализация()
|
||||||
|
|
||||||
|
Лог = Логирование.ПолучитьЛог("oscript.app.gitlab-test_CanCompile");
|
||||||
|
КодВозврата = 0;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ВыполнитьТест()
|
||||||
|
|
||||||
|
Конфигуратор = Новый УправлениеКонфигуратором();
|
||||||
|
|
||||||
|
ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
|
||||||
|
КомандаЗапуска = "/LoadConfigFromFiles ""%1""";
|
||||||
|
КомандаЗапуска = СтрШаблон(КомандаЗапуска, ТекущийКаталог() + "\source\cf");
|
||||||
|
|
||||||
|
Лог.Информация("Команда обновления конфигурации: " + КомандаЗапуска);
|
||||||
|
|
||||||
|
ПараметрыЗапуска.Добавить(КомандаЗапуска);
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
|
||||||
|
Исключение
|
||||||
|
|
||||||
|
Лог.Ошибка(Конфигуратор.ВыводКоманды());
|
||||||
|
КодВозврата = 1;
|
||||||
|
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
УдалитьФайлы(Конфигуратор.ПутьКВременнойБазе());
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Инициализация();
|
||||||
|
ВыполнитьТест();
|
||||||
|
|
||||||
|
ЗавершитьРаботу(КодВозврата);
|
||||||
33
samples/ASN.1/example.asn
Normal file
33
samples/ASN.1/example.asn
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
MyShopPurchaseOrders DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
|
|
||||||
|
PurchaseOrder ::= SEQUENCE {
|
||||||
|
dateOfOrder DATE,
|
||||||
|
customer CustomerInfo,
|
||||||
|
items ListOfItems
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomerInfo ::= SEQUENCE {
|
||||||
|
companyName VisibleString (SIZE (3..50)),
|
||||||
|
billingAddress Address,
|
||||||
|
contactPhone NumericString (SIZE (7..12))
|
||||||
|
}
|
||||||
|
|
||||||
|
Address::= SEQUENCE {
|
||||||
|
street VisibleString (SIZE (5 .. 50)) OPTIONAL,
|
||||||
|
city VisibleString (SIZE (2..30)),
|
||||||
|
state VisibleString (SIZE(2) ^ FROM ("A".."Z")),
|
||||||
|
zipCode NumericString (SIZE(5 | 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
ListOfItems ::= SEQUENCE (SIZE (1..100)) OF Item
|
||||||
|
|
||||||
|
Item ::= SEQUENCE {
|
||||||
|
itemCode INTEGER (1..99999),
|
||||||
|
color VisibleString ("Black" | "Blue" | "Brown"),
|
||||||
|
power INTEGER (110 | 220),
|
||||||
|
deliveryTime INTEGER (8..12 | 14..19),
|
||||||
|
quantity INTEGER (1..1000),
|
||||||
|
unitPrice REAL (1.00 .. 9999.00),
|
||||||
|
isTaxable BOOLEAN
|
||||||
|
}
|
||||||
|
END
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
/* -*- Mode: dtrace-script; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007 Sun Microsystems, Inc. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* javascript provider probes
|
|
||||||
*
|
|
||||||
* function-entry (filename, classname, funcname)
|
|
||||||
* function-info (filename, classname, funcname, lineno,
|
|
||||||
* runfilename, runlineno)
|
|
||||||
* function-args (filename, classname, funcname, argc, argv, argv0,
|
|
||||||
* argv1, argv2, argv3, argv4)
|
|
||||||
* function-rval (filename, classname, funcname, lineno, rval, rval0)
|
|
||||||
* function-return (filename, classname, funcname)
|
|
||||||
* object-create-start (filename, classname)
|
|
||||||
* object-create (filename, classname, *object, rlineno)
|
|
||||||
* object-create-done (filename, classname)
|
|
||||||
* object-finalize (NULL, classname, *object)
|
|
||||||
* execute-start (filename, lineno)
|
|
||||||
* execute-done (filename, lineno)
|
|
||||||
*/
|
|
||||||
|
|
||||||
provider javascript {
|
|
||||||
probe function__entry(char *, char *, char *);
|
|
||||||
probe function__info(char *, char *, char *, int, char *, int);
|
|
||||||
probe function__args(char *, char *, char *, int, void *, void *, void *,
|
|
||||||
void *, void *, void *);
|
|
||||||
probe function__rval(char *, char *, char *, int, void *, void *);
|
|
||||||
probe function__return(char *, char *, char *);
|
|
||||||
probe object__create__start(char *, char *);
|
|
||||||
probe object__create__done(char *, char *);
|
|
||||||
/* XXX must use unsigned longs here instead of uintptr_t for OS X
|
|
||||||
(Apple radar: 5194316 & 5565198) */
|
|
||||||
probe object__create(char *, char *, unsigned long, int);
|
|
||||||
probe object__finalize(char *, char *, unsigned long);
|
|
||||||
probe execute__start(char *, int);
|
|
||||||
probe execute__done(char *, int);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
#pragma D attributes Unstable/Unstable/Common provider mozilla provider
|
|
||||||
#pragma D attributes Private/Private/Unknown provider mozilla module
|
|
||||||
#pragma D attributes Private/Private/Unknown provider mozilla function
|
|
||||||
#pragma D attributes Unstable/Unstable/Common provider mozilla name
|
|
||||||
#pragma D attributes Unstable/Unstable/Common provider mozilla args
|
|
||||||
*/
|
|
||||||
|
|
||||||
184
samples/DTrace/trace_futexes.d
Normal file
184
samples/DTrace/trace_futexes.d
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
#!/usr/sbin/dtrace -qs
|
||||||
|
|
||||||
|
// Source: https://github.com/bycn82/freebsd/blob/12a4a4a008eac3cfa71e496b33eaeaf426c374c1/sys/compat/linux/trace_futexes.d
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 2011-2012 Alexander Leidinger <netchild@FreeBSD.org>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer
|
||||||
|
* in this position and unchanged.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace futex operations:
|
||||||
|
* - internal locks
|
||||||
|
* - size of the futex list
|
||||||
|
* - report error conditions (emulation errors, kernel errors,
|
||||||
|
* programming errors)
|
||||||
|
* - execution time (wallclock) of futex related functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option specsize=32m
|
||||||
|
|
||||||
|
/* Error conditions */
|
||||||
|
linuxulator*:futex:futex_get:error,
|
||||||
|
linuxulator*:futex:futex_sleep:requeue_error,
|
||||||
|
linuxulator*:futex:futex_sleep:sleep_error,
|
||||||
|
linuxulator*:futex:futex_wait:copyin_error,
|
||||||
|
linuxulator*:futex:futex_wait:itimerfix_error,
|
||||||
|
linuxulator*:futex:futex_wait:sleep_error,
|
||||||
|
linuxulator*:futex:futex_atomic_op:missing_access_check,
|
||||||
|
linuxulator*:futex:futex_atomic_op:unimplemented_op,
|
||||||
|
linuxulator*:futex:futex_atomic_op:unimplemented_cmp,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_clockswitch,
|
||||||
|
linuxulator*:futex:linux_sys_futex:copyin_error,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unhandled_efault,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_lock_pi,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_unlock_pi,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_trylock_pi,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_wait_requeue_pi,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unimplemented_cmp_requeue_pi,
|
||||||
|
linuxulator*:futex:linux_sys_futex:unknown_operation,
|
||||||
|
linuxulator*:futex:linux_get_robust_list:copyout_error,
|
||||||
|
linuxulator*:futex:handle_futex_death:copyin_error,
|
||||||
|
linuxulator*:futex:fetch_robust_entry:copyin_error,
|
||||||
|
linuxulator*:futex:release_futexes:copyin_error
|
||||||
|
{
|
||||||
|
printf("ERROR: %s in %s:%s:%s\n", probename, probeprov, probemod,
|
||||||
|
probefunc);
|
||||||
|
stack();
|
||||||
|
ustack();
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:futex:linux_sys_futex:invalid_cmp_requeue_use,
|
||||||
|
linuxulator*:futex:linux_sys_futex:deprecated_requeue,
|
||||||
|
linuxulator*:futex:linux_set_robust_list:size_error
|
||||||
|
{
|
||||||
|
printf("WARNING: %s:%s:%s:%s in application %s, maybe an application error?\n",
|
||||||
|
probename, probeprov, probemod, probefunc, execname);
|
||||||
|
stack();
|
||||||
|
ustack();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Per futex checks/statistics */
|
||||||
|
|
||||||
|
linuxulator*:futex:futex:create
|
||||||
|
{
|
||||||
|
++futex_count;
|
||||||
|
@max_futexes = max(futex_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:futex:futex:destroy
|
||||||
|
/futex_count == 0/
|
||||||
|
{
|
||||||
|
printf("ERROR: Request to destroy a futex which was not created,\n");
|
||||||
|
printf(" or this script was started after some futexes where\n");
|
||||||
|
printf(" created. Stack trace:\n");
|
||||||
|
stack();
|
||||||
|
ustack();
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:futex:futex:destroy
|
||||||
|
{
|
||||||
|
--futex_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Internal locks */
|
||||||
|
|
||||||
|
linuxulator*:locks:futex_mtx:locked
|
||||||
|
{
|
||||||
|
++check[probefunc, arg0];
|
||||||
|
@stats[probefunc] = count();
|
||||||
|
|
||||||
|
ts[probefunc] = timestamp;
|
||||||
|
spec[probefunc] = speculation();
|
||||||
|
printf("Stacktrace of last lock operation of the %s:\n", probefunc);
|
||||||
|
stack();
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:locks:futex_mtx:unlock
|
||||||
|
/check[probefunc, arg0] == 0/
|
||||||
|
{
|
||||||
|
printf("ERROR: unlock attempt of unlocked %s (%p),", probefunc, arg0);
|
||||||
|
printf(" missing SDT probe in kernel, or dtrace program started");
|
||||||
|
printf(" while the %s was already held (race condition).", probefunc);
|
||||||
|
printf(" Stack trace follows:");
|
||||||
|
stack();
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:locks:futex_mtx:unlock
|
||||||
|
{
|
||||||
|
discard(spec[probefunc]);
|
||||||
|
spec[probefunc] = 0;
|
||||||
|
--check[probefunc, arg0];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Timeout handling for internal locks */
|
||||||
|
|
||||||
|
tick-10s
|
||||||
|
/spec["futex_mtx"] != 0 && timestamp - ts["futex_mtx"] >= 9999999000/
|
||||||
|
{
|
||||||
|
commit(spec["futex_mtx"]);
|
||||||
|
spec["futex_mtx"] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Timing statistings */
|
||||||
|
|
||||||
|
linuxulator*:futex::entry
|
||||||
|
{
|
||||||
|
self->time[probefunc] = timestamp;
|
||||||
|
@calls[probeprov, execname, probefunc] = count();
|
||||||
|
}
|
||||||
|
|
||||||
|
linuxulator*:futex::return
|
||||||
|
/self->time[probefunc] != 0/
|
||||||
|
{
|
||||||
|
this->timediff = self->time[probefunc] - timestamp;
|
||||||
|
|
||||||
|
@timestats[probeprov, execname, probefunc] = quantize(this->timediff);
|
||||||
|
@longest[probeprov, probefunc] = max(this->timediff);
|
||||||
|
|
||||||
|
self->time[probefunc] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Statistics */
|
||||||
|
|
||||||
|
END
|
||||||
|
{
|
||||||
|
printf("Number of locks per type:");
|
||||||
|
printa(@stats);
|
||||||
|
printf("Number of maximum number of futexes in the futex list:");
|
||||||
|
printa(@max_futexes);
|
||||||
|
printf("Number of futexes still existing: %d", futex_count);
|
||||||
|
printf("Number of calls per provider/application/kernel function:");
|
||||||
|
printa(@calls);
|
||||||
|
printf("Wallclock-timing statistics per provider/application/kernel function (in ns):");
|
||||||
|
printa(@timestats);
|
||||||
|
printf("Longest running (wallclock!) functions per provider (in ns):");
|
||||||
|
printa(@longest);
|
||||||
|
}
|
||||||
215
samples/Groff/an-ext.tmac
Normal file
215
samples/Groff/an-ext.tmac
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
.\" -*- nroff -*-
|
||||||
|
.\"
|
||||||
|
.\" an-ext.tmac
|
||||||
|
.\"
|
||||||
|
.\" Copyright (C) 2007-2014 Free Software Foundation, Inc.
|
||||||
|
.\"
|
||||||
|
.\" Written by Eric S. Raymond <esr@thyrsus.com>
|
||||||
|
.\" Werner Lemberg <wl@gnu.org>
|
||||||
|
.\"
|
||||||
|
.\" You may freely use, modify and/or distribute this file.
|
||||||
|
.\"
|
||||||
|
.\" The code below provides extension macros for the `man' macro package.
|
||||||
|
.\" Care has been taken to make the code portable; groff extensions are
|
||||||
|
.\" properly hidden so that all troff implementations can use it without
|
||||||
|
.\" changes.
|
||||||
|
.\"
|
||||||
|
.\" With groff, this file is sourced by the `man' macro package itself.
|
||||||
|
.\" Man page authors who are concerned about portability might add the
|
||||||
|
.\" used macros directly to the prologue of the man page(s).
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Convention: Auxiliary macros and registers start with `m' followed
|
||||||
|
.\" by an uppercase letter or digit.
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Protect against being sourced twice.
|
||||||
|
.nr mX +1
|
||||||
|
.if \n(mX>1 \
|
||||||
|
. nx
|
||||||
|
.
|
||||||
|
.\" Check whether we are using grohtml.
|
||||||
|
.nr mH 0
|
||||||
|
.if \n(.g \
|
||||||
|
. if '\*(.T'html' \
|
||||||
|
. nr mH 1
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Map mono-width fonts to standard fonts for groff's TTY device.
|
||||||
|
.if n \{\
|
||||||
|
. do ftr CR R
|
||||||
|
. do ftr CI I
|
||||||
|
. do ftr CB B
|
||||||
|
.\}
|
||||||
|
.
|
||||||
|
.\" groff has glyph entities for angle brackets.
|
||||||
|
.ie \n(.g \{\
|
||||||
|
. ds la \(la\"
|
||||||
|
. ds ra \(ra\"
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
. ds la <\"
|
||||||
|
. ds ra >\"
|
||||||
|
. \" groff's man macros control hyphenation with this register.
|
||||||
|
. nr HY 1
|
||||||
|
.\}
|
||||||
|
.
|
||||||
|
.nr mS 0
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Declare start of command synopsis. Sets up hanging indentation.
|
||||||
|
.de SY
|
||||||
|
. ie !\\n(mS \{\
|
||||||
|
. nh
|
||||||
|
. nr mS 1
|
||||||
|
. nr mA \\n(.j
|
||||||
|
. ad l
|
||||||
|
. nr mI \\n(.i
|
||||||
|
. \}
|
||||||
|
. el \{\
|
||||||
|
. br
|
||||||
|
. ns
|
||||||
|
. \}
|
||||||
|
.
|
||||||
|
. nr mT \w'\fB\\$1\fP\ '
|
||||||
|
. HP \\n(mTu
|
||||||
|
. B "\\$1"
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End of command synopsis. Restores adjustment.
|
||||||
|
.de YS
|
||||||
|
. in \\n(mIu
|
||||||
|
. ad \\n(mA
|
||||||
|
. hy \\n(HY
|
||||||
|
. nr mS 0
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Declare optional option.
|
||||||
|
.de OP
|
||||||
|
. ie \\n(.$-1 \
|
||||||
|
. RI "[\fB\\$1\fP" "\ \\$2" "]"
|
||||||
|
. el \
|
||||||
|
. RB "[" "\\$1" "]"
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start URL.
|
||||||
|
.de UR
|
||||||
|
. ds m1 \\$1\"
|
||||||
|
. nh
|
||||||
|
. if \\n(mH \{\
|
||||||
|
. \" Start diversion in a new environment.
|
||||||
|
. do ev URL-div
|
||||||
|
. do di URL-div
|
||||||
|
. \}
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End URL.
|
||||||
|
.de UE
|
||||||
|
. ie \\n(mH \{\
|
||||||
|
. br
|
||||||
|
. di
|
||||||
|
. ev
|
||||||
|
.
|
||||||
|
. \" Has there been one or more input lines for the link text?
|
||||||
|
. ie \\n(dn \{\
|
||||||
|
. do HTML-NS "<a href=""\\*(m1"">"
|
||||||
|
. \" Yes, strip off final newline of diversion and emit it.
|
||||||
|
. do chop URL-div
|
||||||
|
. do URL-div
|
||||||
|
\c
|
||||||
|
. do HTML-NS </a>
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
. do HTML-NS "<a href=""\\*(m1"">\\*(m1</a>"
|
||||||
|
\&\\$*\"
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
\\*(la\\*(m1\\*(ra\\$*\"
|
||||||
|
.
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start email address.
|
||||||
|
.de MT
|
||||||
|
. ds m1 \\$1\"
|
||||||
|
. nh
|
||||||
|
. if \\n(mH \{\
|
||||||
|
. \" Start diversion in a new environment.
|
||||||
|
. do ev URL-div
|
||||||
|
. do di URL-div
|
||||||
|
. \}
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End email address.
|
||||||
|
.de ME
|
||||||
|
. ie \\n(mH \{\
|
||||||
|
. br
|
||||||
|
. di
|
||||||
|
. ev
|
||||||
|
.
|
||||||
|
. \" Has there been one or more input lines for the link text?
|
||||||
|
. ie \\n(dn \{\
|
||||||
|
. do HTML-NS "<a href=""mailto:\\*(m1"">"
|
||||||
|
. \" Yes, strip off final newline of diversion and emit it.
|
||||||
|
. do chop URL-div
|
||||||
|
. do URL-div
|
||||||
|
\c
|
||||||
|
. do HTML-NS </a>
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
. do HTML-NS "<a href=""mailto:\\*(m1"">\\*(m1</a>"
|
||||||
|
\&\\$*\"
|
||||||
|
. \}
|
||||||
|
. el \
|
||||||
|
\\*(la\\*(m1\\*(ra\\$*\"
|
||||||
|
.
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Continuation line for .TP header.
|
||||||
|
.de TQ
|
||||||
|
. br
|
||||||
|
. ns
|
||||||
|
. TP \\$1\" no doublequotes around argument!
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start example.
|
||||||
|
.de EX
|
||||||
|
. do ds mF \\n[.fam]
|
||||||
|
. nr mE \\n(.f
|
||||||
|
. nf
|
||||||
|
. nh
|
||||||
|
. do fam C
|
||||||
|
. ft CW
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End example.
|
||||||
|
.de EE
|
||||||
|
. do fam \\*(mF
|
||||||
|
. ft \\n(mE
|
||||||
|
. fi
|
||||||
|
. hy \\n(HY
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" Start display.
|
||||||
|
.de DS
|
||||||
|
. \" XXX to be written
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.\" End display.
|
||||||
|
.de DE
|
||||||
|
. \" XXX to be written
|
||||||
|
..
|
||||||
|
.
|
||||||
|
.\" EOF
|
||||||
35
samples/Groff/refs.rno
Normal file
35
samples/Groff/refs.rno
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
.\" Copyright (c) 1980 Regents of the University of California.
|
||||||
|
.\" All rights reserved. The Berkeley software License Agreement
|
||||||
|
.\" specifies the terms and conditions for redistribution.
|
||||||
|
.\"
|
||||||
|
.\" @(#)refs.rno 6.1 (Berkeley) 4/29/86
|
||||||
|
.\"
|
||||||
|
.NS 1 "References"
|
||||||
|
.sp
|
||||||
|
.ip "[Bac78]"
|
||||||
|
John Backus, \*(lqCan Programming Be Liberated from the von Neumann Style?
|
||||||
|
A Functional Style and Its Algebra of Programs,\*(rq \fICACM\fP, Turing
|
||||||
|
Award Lecture, 21, 8 (August 1978), 613-641.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Fod80]"
|
||||||
|
John K. Foderaro, \*(lqThe \s-2FRANZ LISP\s+2
|
||||||
|
Manual,\*(rq University of California,
|
||||||
|
Berkeley, California, 1980.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Joy79]"
|
||||||
|
W.N. Joy, O. Babaoglu, \*(lqUNIX Programmer's Manual,\*(rq November 7,
|
||||||
|
1979, Computer Science Division, University of California, Berkeley,
|
||||||
|
California.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Mc60]"
|
||||||
|
J. McCarthy, \*(lqRecursive Functions of Symbolic expressions and their
|
||||||
|
Computation by Machine,\*(rq Part I, \fICACM\fP 3, 4 (April 1960), 184-195.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Pat80]"
|
||||||
|
Dorab Ratan Patel, \*(lqA System Organization for Applicative Programming,\*(rq
|
||||||
|
M.S Thesis, University of California, Los Angeles, California, 1980.
|
||||||
|
.sp 6p
|
||||||
|
.ip "[Pat81]"
|
||||||
|
Dorab Patel, \*(lqFunctional Language Interpreter User Manual,\*(rq
|
||||||
|
University of California, Los Angeles, California, 1981.
|
||||||
|
.bp
|
||||||
42
samples/PowerBuilder/TestPBT.pbt
Normal file
42
samples/PowerBuilder/TestPBT.pbt
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 dario ureña
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/c7f167b4852c75d3da2f7b024bda7d7dda241a00/resources/advanced/real/myproject/myproject.pbt
|
||||||
|
|
||||||
|
Save Format v3.0(19990112)
|
||||||
|
@begin Libraries
|
||||||
|
"Scs\\Lib\\ScsApex1\\ScsApex1.pbl" "";
|
||||||
|
@end;
|
||||||
|
@begin Objects
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_apbe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_envio.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_inp_bolsa.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_imput.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_inp_conce.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_rete.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_info_noti.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_concsani.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_expe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_proc_expe.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_mant_soli.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
"Scs\\Lib\\ScsApex1\\m_proc_soli.srm" "Scs\\Lib\\ScsApex1\\ScsApex1.pbl";
|
||||||
|
@end;
|
||||||
174
samples/PowerBuilder/ginpix7.sra
Normal file
174
samples/PowerBuilder/ginpix7.sra
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 dario ureña
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/07bf527194b73e133943221dc2199a9442d463eb/resources/inventoryModel/nivel0/ginpix7.sra
|
||||||
|
|
||||||
|
HA$PBExportHeader$ginpix7.sra
|
||||||
|
$PBExportComments$Aplicaci$$HEX1$$f300$$ENDHEX$$n Ginpix7
|
||||||
|
forward
|
||||||
|
global type ginpix7 from application
|
||||||
|
end type
|
||||||
|
global n_tr_apli sqlca
|
||||||
|
global dynamicdescriptionarea sqlda
|
||||||
|
global dynamicstagingarea sqlsa
|
||||||
|
global error error
|
||||||
|
global message message
|
||||||
|
end forward
|
||||||
|
|
||||||
|
global variables
|
||||||
|
n_appmanager gnv_app
|
||||||
|
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Satxa - 02-Jun-2009.27760 No tenemos constancia del uso de esta ayuda, asi que la eliminamos.
|
||||||
|
//n_help gn_help
|
||||||
|
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
//----------------------------------------------------------
|
||||||
|
// Satxa - 17-Jun-2010.42351 No se usa.
|
||||||
|
//n_help2 gn_help2
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Satxa - 15-Jun-2009.27760
|
||||||
|
//Para el modulo de contratos.
|
||||||
|
String gs_enlacemacros, gs_office2000 // Posibles de Pulir.(en estudio).
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
end variables
|
||||||
|
global type ginpix7 from application
|
||||||
|
string appname = "ginpix7"
|
||||||
|
string toolbarframetitle = "ginpix7"
|
||||||
|
boolean toolbarusercontrol = false
|
||||||
|
end type
|
||||||
|
global ginpix7 ginpix7
|
||||||
|
|
||||||
|
type prototypes
|
||||||
|
//------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
// Satxa - 15-Jun-2009.27760 Copio la llamada a la API del objeto aplicaci$$HEX1$$f300$$ENDHEX$$n de LCS.
|
||||||
|
// Satxa - 25-Oct-2005.25577 Viene de LCS y RCS, abre un archivo independientemente del tipo ejecutando el programa asociado en WINDOWS
|
||||||
|
Public Function long ShellExecuteA(long hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, long nShowCmd) Library "SHELL32.DLL" alias for "ShellExecuteA;Ansi"
|
||||||
|
//------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fernando Baldellou.14/05/2009. Ginpix7.// Funciones Externas Globales para el Proyecto de Mensajer$$HEX1$$ed00$$ENDHEX$$a.
|
||||||
|
//
|
||||||
|
Public Function Long GetWindowRect (Long hWnd, Ref mensajeria lpRect) Library "user32" alias for "GetWindowRect;Ansi"
|
||||||
|
Public Function Long GetClientRect (Long hWnd, Ref mensajeria lpRect) Library "user32" alias for "GetClientRect;Ansi"
|
||||||
|
Public Function Long SetWindowPos (Long hWnd, Long hWndInsertAfter, Long x, Long y, Long cx, Long cy, Long wFlags) Library "user32"
|
||||||
|
Public Function Boolean sndPlaySoundA (String SoundName, uint Flags)Library "winmm.dll" alias for "sndPlaySoundA;Ansi"
|
||||||
|
// Fin de la anotaci$$HEX1$$f300$$ENDHEX$$n anterior.
|
||||||
|
|
||||||
|
|
||||||
|
end prototypes
|
||||||
|
|
||||||
|
type variables
|
||||||
|
|
||||||
|
end variables
|
||||||
|
|
||||||
|
on ginpix7.create
|
||||||
|
appname="ginpix7"
|
||||||
|
message=create message
|
||||||
|
sqlca=create n_tr_apli
|
||||||
|
sqlda=create dynamicdescriptionarea
|
||||||
|
sqlsa=create dynamicstagingarea
|
||||||
|
error=create error
|
||||||
|
end on
|
||||||
|
|
||||||
|
on ginpix7.destroy
|
||||||
|
destroy(sqlca)
|
||||||
|
destroy(sqlda)
|
||||||
|
destroy(sqlsa)
|
||||||
|
destroy(error)
|
||||||
|
destroy(message)
|
||||||
|
end on
|
||||||
|
|
||||||
|
event open;// Inicializa propiedades del objeto aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
This.MicroHelpDefault = "SAVIA"
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
// Satxa - 17-Jun-2010.42351 No se usa.
|
||||||
|
// Crea el servicio de ayuda nivel2:
|
||||||
|
//IF NOT IsValid(gn_help2) THEN
|
||||||
|
// gn_help2 = CREATE n_help2
|
||||||
|
//END IF
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
// Presenta la aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
OpenWithParm(w_ini_ginpix7,commandline)
|
||||||
|
//OpenWithParm(w_logontab,commandline)
|
||||||
|
|
||||||
|
|
||||||
|
// PORQU$$HEX2$$c9002000$$ENDHEX$$RETRASAMOS LA INSTANCIACI$$HEX1$$d300$$ENDHEX$$N DEL MANEJADOR DE LA APLICACI$$HEX1$$d300$$ENDHEX$$N "n_appmanager" ???
|
||||||
|
//
|
||||||
|
// El CNVUO n_appmanager conlleva consigo el proceso de apertura de la ventana w_logon de
|
||||||
|
// conexi$$HEX1$$f300$$ENDHEX$$n a la base de datos. Nosotros sin embargo, deseamos presentar previamente
|
||||||
|
// nuestra ventana de presentaci$$HEX1$$f300$$ENDHEX$$n "w_ini".
|
||||||
|
//
|
||||||
|
// Si instanciamos n_appmanager aqu$$HEX1$$ed00$$ENDHEX$$, abre "w_ini" pero pasa de largo y no se "queda" en la
|
||||||
|
// ventana esperando que pulsemos <CONTINUAR> o bien <SALIR>, ll$$HEX1$$e900$$ENDHEX$$ndose directamente a la
|
||||||
|
// apertura de "w_logon" y requirimientos de datos para la conexi$$HEX1$$f300$$ENDHEX$$n a la base de datos.
|
||||||
|
//
|
||||||
|
// Por eso instanciamos el CNVUO n_appmanager en el evento w_ini::cb_ini_con::clicked, para
|
||||||
|
// retrasar este proceso de conexi$$HEX1$$f300$$ENDHEX$$n a base de datos.
|
||||||
|
//
|
||||||
|
//gnv_app = CREATE n_appmanager
|
||||||
|
//gnv_app.Event pfc_Open(commandline)
|
||||||
|
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
event close;//----------------------------------------------------------
|
||||||
|
// Satxa - 17-Jun-2010.42351 No se usa.
|
||||||
|
// Destruye el servicio de ayuda nivel2:
|
||||||
|
//IF IsValid(gn_help2) THEN
|
||||||
|
// DESTROY n_help2
|
||||||
|
//END IF
|
||||||
|
//----------------------------------------------------------
|
||||||
|
|
||||||
|
// Destruye el manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
IF IsValid(gnv_app) THEN
|
||||||
|
DESTROY gnv_app
|
||||||
|
END IF
|
||||||
|
|
||||||
|
// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
IF IsValid(gnv_app) THEN
|
||||||
|
gnv_app.Event pfc_Close()
|
||||||
|
END IF
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
event connectionbegin;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
RETURN gnv_app.Event pfc_ConnectionBegin(userid,password,connectstring)
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
event connectionend;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
gnv_app.Event pfc_ConnectionEnd()
|
||||||
|
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
event idle;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
gnv_app.Event pfc_Idle()
|
||||||
|
end event
|
||||||
|
|
||||||
|
event systemerror;// Redirige el evento al manejador de aplicaci$$HEX1$$f300$$ENDHEX$$n:
|
||||||
|
gnv_app.Event pfc_SystemError()
|
||||||
|
end event
|
||||||
|
|
||||||
32
samples/PowerBuilder/myproject.pbt
Normal file
32
samples/PowerBuilder/myproject.pbt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 dario ureña
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/173c3949d5684150c34f7405f0689310eade0362/resources/basics/TestPBT.pbt
|
||||||
|
|
||||||
|
Save Format v3.0(19990112)
|
||||||
|
@begin Projects
|
||||||
|
0 "myproject\\myprojectlib.pbl";
|
||||||
|
@end;
|
||||||
|
appname "myproject";
|
||||||
|
applib "myproject\\myproject.pbl";
|
||||||
|
LibList "myproject\\myproject.pbl;myproject\\lib\\logger\\logger.pbl;myproject\\lib\\payroll\\payroll.pbl;myproject\\lib\\contract\\contract.pbl;myproject\\lib\\common\\common.pbl;";
|
||||||
|
type "pb";
|
||||||
765
samples/PowerBuilder/n_cst_buttonlistbar_gradient.sru
Normal file
765
samples/PowerBuilder/n_cst_buttonlistbar_gradient.sru
Normal file
@@ -0,0 +1,765 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 dario ureña
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source: https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/07bf527194b73e133943221dc2199a9442d463eb/resources/inventoryModel/nivel0/nivel1/n_cst_buttonlistbar_gradient.sru
|
||||||
|
|
||||||
|
HA$PBExportHeader$n_cst_buttonlistbar_gradient.sru
|
||||||
|
forward
|
||||||
|
global type n_cst_buttonlistbar_gradient from nonvisualobject
|
||||||
|
end type
|
||||||
|
type gradient_rect from structure within n_cst_buttonlistbar_gradient
|
||||||
|
end type
|
||||||
|
type gradient_triangle from structure within n_cst_buttonlistbar_gradient
|
||||||
|
end type
|
||||||
|
type rect from structure within n_cst_buttonlistbar_gradient
|
||||||
|
end type
|
||||||
|
type trivertex from structure within n_cst_buttonlistbar_gradient
|
||||||
|
end type
|
||||||
|
type logfont from structure within n_cst_buttonlistbar_gradient
|
||||||
|
end type
|
||||||
|
end forward
|
||||||
|
|
||||||
|
type gradient_rect from structure
|
||||||
|
unsignedlong upperleft
|
||||||
|
unsignedlong lowerright
|
||||||
|
end type
|
||||||
|
|
||||||
|
type gradient_triangle from structure
|
||||||
|
unsignedlong vertex1
|
||||||
|
unsignedlong vertex2
|
||||||
|
unsignedlong vertex3
|
||||||
|
end type
|
||||||
|
|
||||||
|
type rect from structure
|
||||||
|
long left
|
||||||
|
long top
|
||||||
|
long right
|
||||||
|
long bottom
|
||||||
|
end type
|
||||||
|
|
||||||
|
type trivertex from structure
|
||||||
|
long x
|
||||||
|
long y
|
||||||
|
integer red
|
||||||
|
integer green
|
||||||
|
integer blue
|
||||||
|
integer alpha
|
||||||
|
end type
|
||||||
|
|
||||||
|
type logfont from structure
|
||||||
|
long lfheight
|
||||||
|
long lfwidth
|
||||||
|
long lfescapement
|
||||||
|
long lforientation
|
||||||
|
long lfweight
|
||||||
|
character lfitalic
|
||||||
|
character lfunderline
|
||||||
|
character lfstrikeout
|
||||||
|
character lfcharset
|
||||||
|
character lfoutprecision
|
||||||
|
character lfclipprecision
|
||||||
|
character lfquality
|
||||||
|
character lfpitchandfamily
|
||||||
|
character lffacename[32]
|
||||||
|
end type
|
||||||
|
|
||||||
|
global type n_cst_buttonlistbar_gradient from nonvisualobject autoinstantiate
|
||||||
|
end type
|
||||||
|
|
||||||
|
type prototypes
|
||||||
|
FUNCTION ulong SetBkMode(ulong lhdc,ulong nBkMode) LIBRARY "gdi32.dll"
|
||||||
|
Function Long GetDC (Long hwnd) Library 'user32'
|
||||||
|
Function Long GetClientRect (Long hwnd, REF RECT lpRect) Library 'user32' alias for "GetClientRect;Ansi"
|
||||||
|
Function Long ReleaseDC (Long hwnd, Long hdc1) Library 'user32'
|
||||||
|
Function Boolean GradientRectangle (Long hdc2, TRIVERTEX pVert[], ULong numVert, GRADIENT_RECT pMesh [], ULong numMesh, ULong dMode) Library 'msimg32' Alias For 'GradientFill;Ansi'
|
||||||
|
Function Boolean GradientTriangle (Long hdc3, TRIVERTEX pVert[], ULong numVert, GRADIENT_TRIANGLE pMesh [], ULong numMesh, ULong dMode) Library 'msimg32' Alias For 'GradientFill;Ansi'
|
||||||
|
|
||||||
|
Function ulong Rectangle (ulong hwnd, ulong X1, ulong Y1, ulong X2, ulong Y2) library "gdi32"
|
||||||
|
Function ulong CreatePen (ulong nPenStyle, ulong nWidth, ulong crColor) LIBRARY "Gdi32.dll"
|
||||||
|
Function ULONG SelectObject (uLong hdc4, uLong hObject ) LIBRARY "Gdi32.dll"
|
||||||
|
function boolean DeleteObject(ulong hgdiobject) library "gdi32.dll"
|
||||||
|
|
||||||
|
FUNCTION ulong DrawText(ulong lhdc,ref string lpStr,ulong nCount,ref RECT lpRect,ulong wFormat) LIBRARY "user32.dll" ALIAS FOR "DrawTextA;Ansi"
|
||||||
|
FUNCTION ulong SetTextColor(ulong lhdc,ulong crColor) LIBRARY "gdi32.dll"
|
||||||
|
FUNCTION ulong CreateFontIndirect(ref LOGFONT lpLogFont) LIBRARY "gdi32.dll" ALIAS FOR "CreateFontIndirectA;ANSI"
|
||||||
|
|
||||||
|
Function ulong RoundRect (uLong hdc5 , uLong X1, ulong Y1 , ulong X2 , ulong Y2 , ulong X3 , ulong Y3 ) LIBRARY "Gdi32.dll"
|
||||||
|
Function ULONG FillRgn (Long hdc6, Long hRgn , Long hBrush ) LIBRARY "Gdi32.dll"
|
||||||
|
Function ulong CreateRectRgn (Long X1, Long Y1 , Long X2 , Long Y2 ) LIBRARY "Gdi32.dll"
|
||||||
|
Function ulong CreateRoundRectRgn (long X1 , long Y1 , long X2 , long Y2 , long X3 , long Y3 ) LIBRARY "Gdi32.dll"
|
||||||
|
|
||||||
|
Function ULONG PolyBezier (Long hdc7, REF RECT lpRect, long cPoints ) LIBRARY "Gdi32.dll"
|
||||||
|
Function ULONG Polyline( Long hdc8, GRADIENT_RECT lppt[], int cPoints) LIBRARY "Gdi32.dll"
|
||||||
|
|
||||||
|
FUNCTION boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2) LIBRARY "Gdi32.dll"
|
||||||
|
|
||||||
|
FUNCTION ulong CreatePolygonRgn(ref POINT ppoint[], int count, int fillMode) Library "GDI32.DLL"
|
||||||
|
FUNCTION long SelectClipRgn(ulong lhdc, ulong lhrgn) Library "GDI32.DLL"
|
||||||
|
|
||||||
|
FUNCTION long PtInRegion(ulong hrgn, int x, int y) LIBRARY "GDI32.dll"
|
||||||
|
|
||||||
|
Function boolean ImageList_Draw(long himl, long i, long hdcDst, long lx, long ly, ulong fStyle) Library "comctl32.dll"
|
||||||
|
Function boolean ImageList_DrawEx(long himl, long i, long hdcDst, long lx, long ly, long lwidth, long lheight, long lback, long lfore , ulong fStyle) Library "comctl32.dll"
|
||||||
|
|
||||||
|
end prototypes
|
||||||
|
|
||||||
|
type variables
|
||||||
|
// MS Windows enumerations
|
||||||
|
CONSTANT ULong GRADIENT_FILL_RECT_H = 0
|
||||||
|
CONSTANT ULong GRADIENT_FILL_RECT_V = 1
|
||||||
|
CONSTANT ULong GRADIENT_FILL_TRIANGLE = 2
|
||||||
|
CONSTANT ULong GRADIENT_FILL_OP_FLAG = 255
|
||||||
|
|
||||||
|
CONSTANT Long ILD_TRANSPARENT = 1
|
||||||
|
CONSTANT Long LVM_GETIMAGELIST = 4098
|
||||||
|
CONSTANT Long LVSIL_NORMAL = 0
|
||||||
|
CONSTANT Long ILD_BLEND50 = 4
|
||||||
|
CONSTANT Long ILD_BLEND25 = 2
|
||||||
|
|
||||||
|
// User object enumerations
|
||||||
|
CONSTANT String TOPLEFT = "TOPLEFT"
|
||||||
|
CONSTANT String TOPRIGHT = "TOPRIGHT"
|
||||||
|
CONSTANT String BOTTOMRIGHT = "BOTTOMRIGHT"
|
||||||
|
CONSTANT String BOTTOMLEFT = "BOTTOMLEFT"
|
||||||
|
|
||||||
|
BOOLEAN ib_displayborder
|
||||||
|
|
||||||
|
CONSTANT LONG ALIGN_LEFT = 0
|
||||||
|
CONSTANT LONG ALIGN_CENTER = 1
|
||||||
|
CONSTANT LONG ALIGN_RIGHT = 2
|
||||||
|
|
||||||
|
CONSTANT LONG DT_WORD_ELLIPSIS = 262144
|
||||||
|
CONSTANT LONG DT_CALCRECT = 1024
|
||||||
|
CONSTANT LONG DT_WORDBREAK = 16
|
||||||
|
|
||||||
|
Long il_HDC
|
||||||
|
|
||||||
|
Long il_newHeight
|
||||||
|
Long il_newWidth
|
||||||
|
|
||||||
|
PRIVATE:
|
||||||
|
// Object Handle
|
||||||
|
Long HDC
|
||||||
|
|
||||||
|
Long il_ShadowBackColor
|
||||||
|
|
||||||
|
ULong iul_font
|
||||||
|
ULong iul_fontbold
|
||||||
|
|
||||||
|
// Dimensions
|
||||||
|
RECT DC_Rect
|
||||||
|
|
||||||
|
// Vertices
|
||||||
|
TRIVERTEX Corner[4]
|
||||||
|
TRIVERTEX BorderCorner[2]
|
||||||
|
TRIVERTEX VistaCorner1[4]
|
||||||
|
TRIVERTEX VistaCorner2[4]
|
||||||
|
TRIVERTEX VistaCorner3[4]
|
||||||
|
end variables
|
||||||
|
|
||||||
|
forward prototypes
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2)
|
||||||
|
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue)
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette)
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette)
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style)
|
||||||
|
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor)
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border)
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow)
|
||||||
|
public function integer of_sethdc (long al_hdc)
|
||||||
|
public function boolean of_getbit (long al_decimal, integer ai_bit)
|
||||||
|
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline)
|
||||||
|
public function long of_bitwiseand (long al_value1, long al_value2)
|
||||||
|
public function long of_bitwiseor (long al_value1, long al_value2)
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap)
|
||||||
|
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height)
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2)
|
||||||
|
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue)
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette)
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette)
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style)
|
||||||
|
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor)
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border)
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow)
|
||||||
|
public function integer of_sethdc (long al_hdc)
|
||||||
|
public function boolean of_getbit (long al_decimal, integer ai_bit)
|
||||||
|
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline)
|
||||||
|
public function long of_bitwiseand (long al_value1, long al_value2)
|
||||||
|
public function long of_bitwiseor (long al_value1, long al_value2)
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap)
|
||||||
|
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height)
|
||||||
|
end prototypes
|
||||||
|
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2);Long ll_Red, &
|
||||||
|
ll_Green, &
|
||||||
|
ll_Blue, &
|
||||||
|
ll_DC
|
||||||
|
GRADIENT_RECT l_Gradient[1]
|
||||||
|
|
||||||
|
LONG hRPen
|
||||||
|
|
||||||
|
// Set the colors in the first corner (top left)
|
||||||
|
of_SplitRGB (al_Color1, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[1].Red = ll_Red
|
||||||
|
Corner[1].Green = ll_Green
|
||||||
|
Corner[1].Blue = ll_Blue
|
||||||
|
|
||||||
|
// Set the colors in the third corner (bottom right)
|
||||||
|
of_SplitRGB (al_Color2, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[3].Red = ll_Red
|
||||||
|
Corner[3].Green = ll_Green
|
||||||
|
Corner[3].Blue = ll_Blue
|
||||||
|
|
||||||
|
l_Gradient[1].UpperLeft = 0 // First corner, top left
|
||||||
|
l_Gradient[1].LowerRight = 2 // Third corner, bottom right
|
||||||
|
|
||||||
|
ll_DC = il_HDC//GetDC (HDC)
|
||||||
|
|
||||||
|
// Create a border if ib_displayborder is true
|
||||||
|
IF ib_displayborder THEN
|
||||||
|
hRPen = CreatePen(0,0,1090519039)
|
||||||
|
SelectObject(ll_DC, hRPen)
|
||||||
|
Rectangle(ll_DC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X +1, Corner[3].Y +1)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
GradientRectangle (ll_DC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
|
||||||
|
|
||||||
|
//ReleaseDC (HDC, ll_DC)
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public subroutine of_splitrgb (long al_color, ref long red, ref long green, ref long blue);Red = Mod (al_Color, 256)
|
||||||
|
Red *= 256
|
||||||
|
|
||||||
|
al_Color /= 256
|
||||||
|
Green = Mod (al_Color, 256)
|
||||||
|
Green *= 256
|
||||||
|
|
||||||
|
Blue = al_Color / 256
|
||||||
|
Blue *= 256
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette);IF NOT IsValid (ado_Palette) THEN RETURN FALSE
|
||||||
|
|
||||||
|
// Get the object's handle
|
||||||
|
HDC = Handle (ado_Palette)
|
||||||
|
|
||||||
|
// Get the object's dimensions
|
||||||
|
GetClientRect (HDC, DC_RECT)
|
||||||
|
|
||||||
|
// let's resize the grandient rectangle if border is displayed
|
||||||
|
IF ib_displayborder THEN
|
||||||
|
// Initialize the vertices
|
||||||
|
Corner[1].X = DC_RECT.Left +1
|
||||||
|
Corner[1].Y = DC_RECT.Top +1
|
||||||
|
Corner[2].X = DC_RECT.Right -1
|
||||||
|
Corner[2].Y = DC_RECT.Top +1
|
||||||
|
Corner[3].X = DC_RECT.Right -1
|
||||||
|
Corner[3].Y = DC_RECT.Bottom - 1
|
||||||
|
Corner[4].X = DC_RECT.Left +1
|
||||||
|
Corner[4].Y = DC_RECT.Bottom - 1
|
||||||
|
|
||||||
|
VistaCorner1[1].X = DC_RECT.Left + 1
|
||||||
|
VistaCorner1[1].Y = DC_RECT.Top + 1
|
||||||
|
VistaCorner1[2].X = DC_RECT.Right -1
|
||||||
|
VistaCorner1[2].Y = DC_RECT.Top + 1
|
||||||
|
VistaCorner1[3].X = DC_RECT.Right -1
|
||||||
|
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)//20
|
||||||
|
VistaCorner1[4].X = DC_RECT.Left +1
|
||||||
|
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)//20
|
||||||
|
|
||||||
|
VistaCorner3[1].X = DC_RECT.Left + 1
|
||||||
|
VistaCorner3[1].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2)//10
|
||||||
|
VistaCorner3[2].X = DC_RECT.Right -1
|
||||||
|
VistaCorner3[2].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2)//10
|
||||||
|
VistaCorner3[3].X = DC_RECT.Right -1
|
||||||
|
VistaCorner3[3].Y = DC_RECT.Bottom - 1
|
||||||
|
VistaCorner3[4].X = DC_RECT.Left +1
|
||||||
|
VistaCorner3[4].Y = DC_RECT.Bottom - 1
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
Corner[1].X = DC_RECT.Left
|
||||||
|
Corner[1].Y = DC_RECT.Top
|
||||||
|
Corner[2].X = DC_RECT.Right
|
||||||
|
Corner[2].Y = DC_RECT.Top
|
||||||
|
Corner[3].X = DC_RECT.Right
|
||||||
|
Corner[3].Y = DC_RECT.Bottom
|
||||||
|
Corner[4].X = DC_RECT.Left
|
||||||
|
Corner[4].Y = DC_RECT.Bottom
|
||||||
|
|
||||||
|
VistaCorner1[1].X = DC_RECT.Left
|
||||||
|
VistaCorner1[1].Y = DC_RECT.Top
|
||||||
|
VistaCorner1[2].X = DC_RECT.Right
|
||||||
|
VistaCorner1[2].Y = DC_RECT.Top
|
||||||
|
VistaCorner1[3].X = DC_RECT.Right
|
||||||
|
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)// - 19
|
||||||
|
VistaCorner1[4].X = DC_RECT.Left
|
||||||
|
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .65)// - 19
|
||||||
|
|
||||||
|
VistaCorner3[1].X = DC_RECT.Left
|
||||||
|
VistaCorner3[1].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2) - 1// + 9//12
|
||||||
|
VistaCorner3[2].X = DC_RECT.Right
|
||||||
|
VistaCorner3[2].Y = DC_RECT.Top + ((DC_RECT.Bottom * .65) / 2) - 1// + 9//12
|
||||||
|
VistaCorner3[3].X = DC_RECT.Right
|
||||||
|
VistaCorner3[3].Y = DC_RECT.Bottom
|
||||||
|
VistaCorner3[4].X = DC_RECT.Left
|
||||||
|
VistaCorner3[4].Y = DC_RECT.Bottom
|
||||||
|
END IF
|
||||||
|
|
||||||
|
RETURN TRUE
|
||||||
|
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette);IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN
|
||||||
|
|
||||||
|
of_VerticalGradient (al_Color1, al_Color2)
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public subroutine of_verticalgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor, integer ai_style);CHOOSE CASE ai_STYLE
|
||||||
|
CASE 0
|
||||||
|
of_XPGradient (al_color1, al_color2, ado_palette,ab_displayborder,al_bordercolor)
|
||||||
|
END CHOOSE
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public subroutine of_xpgradient (long al_color1, long al_color2, graphicobject ado_palette, boolean ab_displayborder, long al_bordercolor);Long ll_Red, &
|
||||||
|
ll_Green, &
|
||||||
|
ll_Blue, &
|
||||||
|
ll_DC
|
||||||
|
GRADIENT_RECT l_Gradient[1]
|
||||||
|
|
||||||
|
LONG hRPen
|
||||||
|
|
||||||
|
ib_displayborder = ab_displayborder
|
||||||
|
|
||||||
|
IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN
|
||||||
|
|
||||||
|
//of_VerticalGradient (al_Color1, al_Color2)
|
||||||
|
|
||||||
|
// Set the colors in the first corner (top left)
|
||||||
|
of_SplitRGB (al_Color1, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[1].Red = ll_Red
|
||||||
|
Corner[1].Green = ll_Green
|
||||||
|
Corner[1].Blue = ll_Blue
|
||||||
|
|
||||||
|
// Set the colors in the third corner (bottom right)
|
||||||
|
of_SplitRGB (al_Color2, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[3].Red = ll_Red
|
||||||
|
Corner[3].Green = ll_Green
|
||||||
|
Corner[3].Blue = ll_Blue
|
||||||
|
|
||||||
|
l_Gradient[1].UpperLeft = 0 // First corner, top left
|
||||||
|
l_Gradient[1].LowerRight = 2 // Third corner, bottom right
|
||||||
|
|
||||||
|
ll_DC = il_HDC//GetDC (HDC)
|
||||||
|
|
||||||
|
// Create a border if ib_displayborder is true
|
||||||
|
IF ab_displayborder THEN
|
||||||
|
hRPen = CreatePen(0,0,al_bordercolor)
|
||||||
|
SelectObject(ll_DC, hRPen)
|
||||||
|
Rectangle(ll_DC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X +1, Corner[3].Y +1)
|
||||||
|
DeleteObject(hRPen)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
GradientRectangle (ll_DC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
|
||||||
|
|
||||||
|
//ReleaseDC (HDC, ll_DC)
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public function boolean of_setdevicecontext (graphicobject ado_palette, integer ai_style, boolean ab_border);IF NOT IsValid (ado_Palette) THEN RETURN FALSE
|
||||||
|
|
||||||
|
// Get the object's handle
|
||||||
|
HDC = Handle (ado_Palette)
|
||||||
|
|
||||||
|
// Get the object's dimensions
|
||||||
|
GetClientRect (HDC, DC_RECT)
|
||||||
|
|
||||||
|
// let's resize the grandient rectangle if border is displayed
|
||||||
|
choose case ai_style
|
||||||
|
case 2
|
||||||
|
IF ab_border THEN
|
||||||
|
// Initialize the vertices
|
||||||
|
Corner[1].X = DC_RECT.Left +1
|
||||||
|
Corner[1].Y = DC_RECT.Top +1
|
||||||
|
Corner[2].X = DC_RECT.Right -1
|
||||||
|
Corner[2].Y = DC_RECT.Top +1
|
||||||
|
Corner[3].X = DC_RECT.Right -1
|
||||||
|
Corner[3].Y = DC_RECT.Bottom - 1
|
||||||
|
Corner[4].X = DC_RECT.Left +1
|
||||||
|
Corner[4].Y = DC_RECT.Bottom - 1
|
||||||
|
|
||||||
|
VistaCorner1[1].X = DC_RECT.Left + 2
|
||||||
|
VistaCorner1[1].Y = DC_RECT.Top + 2
|
||||||
|
VistaCorner1[2].X = DC_RECT.Right - 1
|
||||||
|
VistaCorner1[2].Y = DC_RECT.Top + 2
|
||||||
|
VistaCorner1[3].X = DC_RECT.Right -2
|
||||||
|
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
|
||||||
|
VistaCorner1[4].X = DC_RECT.Left +1
|
||||||
|
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
|
||||||
|
|
||||||
|
VistaCorner3[1].X = DC_RECT.Left + 2
|
||||||
|
VistaCorner3[1].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
|
||||||
|
VistaCorner3[2].X = DC_RECT.Right //-1
|
||||||
|
VistaCorner3[2].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
|
||||||
|
VistaCorner3[3].X = DC_RECT.Right - 2
|
||||||
|
VistaCorner3[3].Y = DC_RECT.Bottom - 2
|
||||||
|
VistaCorner3[4].X = DC_RECT.Left
|
||||||
|
VistaCorner3[4].Y = DC_RECT.Bottom - 2
|
||||||
|
ELSE
|
||||||
|
Corner[1].X = DC_RECT.Left +1
|
||||||
|
Corner[1].Y = DC_RECT.Top +1
|
||||||
|
Corner[2].X = DC_RECT.Right -1
|
||||||
|
Corner[2].Y = DC_RECT.Top +1
|
||||||
|
Corner[3].X = DC_RECT.Right -1
|
||||||
|
Corner[3].Y = DC_RECT.Bottom - 1
|
||||||
|
Corner[4].X = DC_RECT.Left +1
|
||||||
|
Corner[4].Y = DC_RECT.Bottom - 1
|
||||||
|
|
||||||
|
VistaCorner1[1].X = DC_RECT.Left
|
||||||
|
VistaCorner1[1].Y = DC_RECT.Top
|
||||||
|
VistaCorner1[2].X = DC_RECT.Right
|
||||||
|
VistaCorner1[2].Y = DC_RECT.Top
|
||||||
|
VistaCorner1[3].X = DC_RECT.Right
|
||||||
|
VistaCorner1[3].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
|
||||||
|
VistaCorner1[4].X = DC_RECT.Left
|
||||||
|
VistaCorner1[4].Y = DC_RECT.Bottom - (DC_RECT.Bottom * .48)//14
|
||||||
|
|
||||||
|
VistaCorner3[1].X = DC_RECT.Left
|
||||||
|
VistaCorner3[1].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
|
||||||
|
VistaCorner3[2].X = DC_RECT.Right
|
||||||
|
VistaCorner3[2].Y = DC_RECT.Top + (DC_RECT.Bottom * .53)//16
|
||||||
|
VistaCorner3[3].X = DC_RECT.Right
|
||||||
|
VistaCorner3[3].Y = DC_RECT.Bottom
|
||||||
|
VistaCorner3[4].X = DC_RECT.Left
|
||||||
|
VistaCorner3[4].Y = DC_RECT.Bottom
|
||||||
|
END IF
|
||||||
|
end choose
|
||||||
|
|
||||||
|
RETURN TRUE
|
||||||
|
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow);RETURN of_DrawText (ado_palette, as_text, al_color, as_font, al_size, ab_bold, al_align, al_x, al_y, al_width, al_height, ab_displayshadow, FALSE, FALSE, FALSE)
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function integer of_sethdc (long al_hdc);il_HDC = al_hdc
|
||||||
|
|
||||||
|
RETURN 1
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function boolean of_getbit (long al_decimal, integer ai_bit);Boolean lb_null
|
||||||
|
|
||||||
|
//Check parameters
|
||||||
|
If IsNull(al_decimal) or IsNull(ai_bit) then
|
||||||
|
SetNull(lb_null)
|
||||||
|
Return lb_null
|
||||||
|
End If
|
||||||
|
|
||||||
|
//Assumption ai_bit is the nth bit counting right to left with
|
||||||
|
//the leftmost bit being bit one.
|
||||||
|
//al_decimal is a binary number as a base 10 long.
|
||||||
|
If Int(Mod(al_decimal / (2 ^(ai_bit - 1)), 2)) > 0 Then
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return False
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function unsignedlong of_createfont (string as_name, long al_size, boolean ab_underline);LogFont lstr_Lf
|
||||||
|
uLong lul_Font
|
||||||
|
|
||||||
|
lstr_Lf.lffacename = as_name
|
||||||
|
lstr_Lf.lfweight = 400
|
||||||
|
lstr_Lf.lfheight = al_size * -1
|
||||||
|
lstr_Lf.lfPitchAndFamily = '1'
|
||||||
|
lstr_Lf.lfClipPrecision = Char(2)
|
||||||
|
lstr_Lf.lfOutPrecision = Char(1)
|
||||||
|
lstr_Lf.lfQuality = Char(1)
|
||||||
|
lstr_Lf.lfCharset = Char(1)
|
||||||
|
|
||||||
|
IF ab_underline THEN
|
||||||
|
lstr_Lf.lfunderline = Char(1)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
iul_font = CreateFontIndirect( lstr_Lf )
|
||||||
|
lstr_Lf.lfweight = 700
|
||||||
|
iul_fontbold = CreateFontIndirect( lstr_Lf )
|
||||||
|
|
||||||
|
RETURN 1
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function long of_bitwiseand (long al_value1, long al_value2);Integer li_Cnt
|
||||||
|
Long ll_Result
|
||||||
|
Boolean lb_Value1[32], lb_Value2[32]
|
||||||
|
|
||||||
|
// Check for nulls
|
||||||
|
If IsNull(al_Value1) Or IsNull(al_Value2) Then
|
||||||
|
SetNull(ll_Result)
|
||||||
|
Return ll_Result
|
||||||
|
End If
|
||||||
|
|
||||||
|
// Get all bits for both values
|
||||||
|
For li_Cnt = 1 To 32
|
||||||
|
lb_Value1[li_Cnt] = of_getbit(al_Value1, li_Cnt)
|
||||||
|
lb_Value2[li_Cnt] = of_getbit(al_Value2, li_Cnt)
|
||||||
|
Next
|
||||||
|
|
||||||
|
// And them together
|
||||||
|
For li_Cnt = 1 To 32
|
||||||
|
If lb_Value1[li_Cnt] And lb_Value2[li_Cnt] Then
|
||||||
|
ll_Result = ll_Result + (2^(li_Cnt - 1))
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return ll_Result
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function long of_bitwiseor (long al_value1, long al_value2);Integer li_Cnt
|
||||||
|
Long ll_Result
|
||||||
|
Boolean lb_Value1[32], lb_Value2[32]
|
||||||
|
|
||||||
|
// Check for nulls
|
||||||
|
If IsNull(al_Value1) Or IsNull(al_Value2) Then
|
||||||
|
SetNull(ll_Result)
|
||||||
|
Return ll_Result
|
||||||
|
End If
|
||||||
|
|
||||||
|
// Get all bits for both values
|
||||||
|
For li_Cnt = 1 To 32
|
||||||
|
lb_Value1[li_Cnt] = of_getbit(al_Value1, li_Cnt)
|
||||||
|
lb_Value2[li_Cnt] = of_getbit(al_Value2, li_Cnt)
|
||||||
|
Next
|
||||||
|
|
||||||
|
// Or them together
|
||||||
|
For li_Cnt = 1 To 32
|
||||||
|
If lb_Value1[li_Cnt] Or lb_Value2[li_Cnt] Then
|
||||||
|
ll_Result = ll_Result + (2^(li_Cnt - 1))
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return ll_Result
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function integer of_drawtext (graphicobject ado_palette, string as_text, long al_color, string as_font, long al_size, boolean ab_bold, long al_align, long al_x, long al_y, long al_width, long al_height, boolean ab_displayshadow, boolean ab_elipse, boolean ab_underline, boolean ab_wordwrap);Long ll_Red, &
|
||||||
|
ll_Green, &
|
||||||
|
ll_Blue, &
|
||||||
|
ll_DC, ll_parm, ll_sizeparm
|
||||||
|
GRADIENT_RECT l_Gradient[1]
|
||||||
|
RECT l_Rect, l_Rectback
|
||||||
|
|
||||||
|
LONG hRPen
|
||||||
|
|
||||||
|
IF Len(Trim(as_text)) = 0 THEN
|
||||||
|
il_newWidth = 1
|
||||||
|
il_NewHeight = al_height
|
||||||
|
RETURN 0
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF NOT of_SetDeviceContext (ado_Palette) THEN RETURN 0
|
||||||
|
|
||||||
|
ll_DC = il_HDC//GetDC (HDC)
|
||||||
|
|
||||||
|
of_CreateFont(as_font, al_size, ab_underline)
|
||||||
|
|
||||||
|
IF ab_bold THEN
|
||||||
|
SelectObject(ll_DC, iul_fontbold)
|
||||||
|
ELSE
|
||||||
|
SelectObject(ll_DC, iul_font)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF ab_elipse THEN
|
||||||
|
ll_sizeparm = of_BitWiseOr(al_align, DT_WORD_ELLIPSIS)
|
||||||
|
ELSE
|
||||||
|
IF ab_wordwrap THEN
|
||||||
|
ll_sizeparm = of_BitWiseOr(al_align, DT_WORDBREAK)
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF ab_wordwrap THEN
|
||||||
|
ll_parm = of_BitWiseOr(DT_CALCRECT, DT_WORDBREAK)
|
||||||
|
ELSE
|
||||||
|
ll_parm = DT_CALCRECT
|
||||||
|
END IF
|
||||||
|
|
||||||
|
SetBkMode(ll_DC, 1)
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------
|
||||||
|
Normal text
|
||||||
|
-------------------------------------------------------------------*/
|
||||||
|
// Position
|
||||||
|
l_Rect.Left = al_x
|
||||||
|
l_Rect.Top = al_y
|
||||||
|
l_Rect.Right = al_width
|
||||||
|
l_Rect.Bottom = al_height
|
||||||
|
|
||||||
|
//SetBkMode(ll_DC, 1)
|
||||||
|
SetTextColor(ll_DC, al_color)
|
||||||
|
|
||||||
|
IF NOT ab_elipse THEN
|
||||||
|
Drawtext(ll_DC, as_text, LEN(as_text), l_Rect, ll_parm)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF al_align = ALIGN_RIGHT OR &
|
||||||
|
al_align = ALIGN_CENTER THEN
|
||||||
|
l_Rect.Right = al_width
|
||||||
|
END IF
|
||||||
|
|
||||||
|
Drawtext(ll_DC, as_text, LEN(as_text), l_Rect, ll_sizeparm)
|
||||||
|
|
||||||
|
il_NewHeight = l_Rect.Bottom
|
||||||
|
il_newWidth = l_Rect.RIGHT
|
||||||
|
|
||||||
|
DeleteObject(iul_font)
|
||||||
|
DeleteObject(iul_fontbold)
|
||||||
|
|
||||||
|
//ReleaseDC (HDC, ll_DC)
|
||||||
|
|
||||||
|
RETURN 1
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function integer of_drawbuttons (dragobject ado_palette, buttons ast_buttons[], long al_bordercolor, long al_imagelist, boolean ab_boldselected, long il_imagesize, long al_height);point lp[], lp_line[]
|
||||||
|
point lp_empty[]
|
||||||
|
gradient_rect l_Gradient[1]
|
||||||
|
GRADIENT_RECT l_Line[]
|
||||||
|
rect rc
|
||||||
|
Long ll_Red, &
|
||||||
|
ll_Green, &
|
||||||
|
ll_Blue
|
||||||
|
long hRgn, hRPen, ll_index, ll_count, ll_textcolor, ll_parm
|
||||||
|
Long ll_inner, ll_innercount
|
||||||
|
Long ll_textx, ll_texty, ll_textwidth, ll_y
|
||||||
|
Boolean lb_bold
|
||||||
|
|
||||||
|
ll_count = UpperBound(ast_buttons)
|
||||||
|
|
||||||
|
FOR ll_index = 1 TO ll_count
|
||||||
|
lp = lp_empty
|
||||||
|
|
||||||
|
lp = ast_buttons[ll_index].ast_point
|
||||||
|
|
||||||
|
IF lp[4].py < 0 OR lp[1].py > al_height THEN
|
||||||
|
CONTINUE
|
||||||
|
END IF
|
||||||
|
|
||||||
|
l_Gradient[1].UpperLeft = 0
|
||||||
|
l_Gradient[1].LowerRight = 2
|
||||||
|
|
||||||
|
IF ast_buttons[ll_index].ab_selected OR &
|
||||||
|
ast_buttons[ll_index].ab_mouseover THEN
|
||||||
|
Corner[1].X = lp[1].px
|
||||||
|
Corner[1].Y = lp[1].py
|
||||||
|
Corner[2].X = lp[2].px
|
||||||
|
Corner[2].Y = lp[2].py
|
||||||
|
Corner[3].X = lp[3].px
|
||||||
|
Corner[3].Y = lp[3].py
|
||||||
|
Corner[4].X = lp[4].px
|
||||||
|
Corner[4].Y = lp[4].py
|
||||||
|
|
||||||
|
// Set the colors in the first corner (top left)
|
||||||
|
of_SplitRGB (ast_buttons[ll_index].al_backcolor1, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[1].Red = ll_Red
|
||||||
|
Corner[1].Green = ll_Green
|
||||||
|
Corner[1].Blue = ll_Blue
|
||||||
|
|
||||||
|
// Set the colors in the third corner (bottom right)
|
||||||
|
of_SplitRGB (ast_buttons[ll_index].al_backcolor2, ll_Red, ll_Green, ll_Blue)
|
||||||
|
Corner[3].Red = ll_Red
|
||||||
|
Corner[3].Green = ll_Green
|
||||||
|
Corner[3].Blue = ll_Blue
|
||||||
|
|
||||||
|
//Create Polygon
|
||||||
|
hRPen = CreatePen(0,0,al_bordercolor)
|
||||||
|
SelectObject(il_HDC, hRPen)
|
||||||
|
hRgn = CreateRoundRectRgn( Corner[1].X, Corner[1].Y, Corner[3].X, Corner[3].Y,7,7)
|
||||||
|
RoundRect( il_HDC, Corner[1].X - 1, Corner[1].Y - 1, Corner[3].X, Corner[3].Y,10,10)
|
||||||
|
|
||||||
|
SelectClipRgn(il_HDC, hRgn)
|
||||||
|
|
||||||
|
//Gradient Fill
|
||||||
|
GradientRectangle (il_HDC, Corner, 4, l_Gradient, 1, GRADIENT_FILL_RECT_V)
|
||||||
|
|
||||||
|
SelectClipRgn(il_HDC, 0)
|
||||||
|
|
||||||
|
DeleteObject(hRPen)
|
||||||
|
DeleteObject(hRgn)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF ast_buttons[ll_index].ab_enabled THEN
|
||||||
|
ll_textcolor = 0
|
||||||
|
ELSE
|
||||||
|
ll_textcolor = RGB(100,100,100)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF ab_boldselected AND ast_buttons[ll_index].ab_selected THEN
|
||||||
|
lb_bold = TRUE
|
||||||
|
ELSE
|
||||||
|
lb_bold = FALSE
|
||||||
|
END IF
|
||||||
|
|
||||||
|
of_DrawText(ado_palette, &
|
||||||
|
ast_buttons[ll_index].as_text, &
|
||||||
|
ll_textcolor, &
|
||||||
|
'tahoma', &
|
||||||
|
11, lb_bold, ALIGN_CENTER, &
|
||||||
|
ast_buttons[ll_index].ast_point[1].px, &
|
||||||
|
ast_buttons[ll_index].ast_point[1].py + il_imagesize + 6, &
|
||||||
|
ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px + 10, &
|
||||||
|
ast_buttons[ll_index].al_textheight, &
|
||||||
|
FALSE, FALSE, FALSE, TRUE)
|
||||||
|
|
||||||
|
//----------------------------------------
|
||||||
|
|
||||||
|
IF ast_buttons[ll_index].ab_enabled THEN
|
||||||
|
ImageList_DrawEx(al_imagelist, &
|
||||||
|
ast_buttons[ll_index].al_image - 1, &
|
||||||
|
il_HDC, &
|
||||||
|
ast_buttons[ll_index].ast_point[1].px + (ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px) / 2 - (il_imagesize / 2) , &
|
||||||
|
ast_buttons[ll_index].ast_point[1].py + 4, &
|
||||||
|
il_imagesize,il_imagesize, &
|
||||||
|
0, 0, ILD_TRANSPARENT )
|
||||||
|
ELSE
|
||||||
|
ll_parm = of_BitWiseOR(ILD_TRANSPARENT, ILD_BLEND50)
|
||||||
|
ImageList_DrawEx(al_imagelist, &
|
||||||
|
ast_buttons[ll_index].al_image - 1, &
|
||||||
|
il_HDC, &
|
||||||
|
ast_buttons[ll_index].ast_point[1].px + (ast_buttons[ll_index].ast_point[2].px - ast_buttons[ll_index].ast_point[1].px) / 2 - (il_imagesize / 2) , &
|
||||||
|
ast_buttons[ll_index].ast_point[1].py + 4, &
|
||||||
|
il_imagesize,il_imagesize, &
|
||||||
|
4294967295, RGB(128,128,128), ll_parm )
|
||||||
|
END IF
|
||||||
|
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
RETURN 1
|
||||||
|
end function
|
||||||
|
|
||||||
|
on n_cst_buttonlistbar_gradient.create
|
||||||
|
call super::create
|
||||||
|
TriggerEvent( this, "constructor" )
|
||||||
|
end on
|
||||||
|
|
||||||
|
on n_cst_buttonlistbar_gradient.destroy
|
||||||
|
TriggerEvent( this, "destructor" )
|
||||||
|
call super::destroy
|
||||||
|
end on
|
||||||
|
|
||||||
46
samples/PowerBuilder/part1.srw
Normal file
46
samples/PowerBuilder/part1.srw
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 dario ureña
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source - https://github.com/darioaxel/PowerScriptToKDMTransformer/blob/62083e4cd4f9ead9975427ee9f558d6adef67bbe/resources/advanced/w_mant_seg/part1.srw
|
||||||
|
|
||||||
|
forward
|
||||||
|
global type w_mant_seg_scs from w_mant
|
||||||
|
end type
|
||||||
|
type sle_anio from singlelineedit within w_mant_seg_scs
|
||||||
|
end type
|
||||||
|
type st_1 from statictext within w_mant_seg_scs
|
||||||
|
end type
|
||||||
|
end forward
|
||||||
|
|
||||||
|
global type w_mant_seg_scs from w_mant
|
||||||
|
integer height = 952
|
||||||
|
sle_anio sle_anio
|
||||||
|
st_1 st_1
|
||||||
|
end type
|
||||||
|
global w_mant_seg_scs w_mant_seg_scs
|
||||||
|
|
||||||
|
type variables
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
// Satxa - 26-Ene-2005.19417
|
||||||
|
String is_anio
|
||||||
|
//------------------------------------------------------------------------------------------
|
||||||
|
end variables
|
||||||
399
samples/PowerBuilder/w_export.srw
Normal file
399
samples/PowerBuilder/w_export.srw
Normal file
@@ -0,0 +1,399 @@
|
|||||||
|
// The MIT License (MIT)
|
||||||
|
|
||||||
|
// Copyright (c) 2016 Sébastien Kirche
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// Source: https://github.com/sebkirche/libexport/blob/c2459a5399ff87f29344b3b0472b041ebb6f9246/sources/115/w_export.srw
|
||||||
|
|
||||||
|
HA$PBExportHeader$w_export.srw
|
||||||
|
forward
|
||||||
|
global type w_export from window
|
||||||
|
end type
|
||||||
|
type st_2 from statictext within w_export
|
||||||
|
end type
|
||||||
|
type sle_destdir from singlelineedit within w_export
|
||||||
|
end type
|
||||||
|
type cb_browse_dest from commandbutton within w_export
|
||||||
|
end type
|
||||||
|
type cb_export_some from commandbutton within w_export
|
||||||
|
end type
|
||||||
|
type cb_export_all from commandbutton within w_export
|
||||||
|
end type
|
||||||
|
type dw_objects from datawindow within w_export
|
||||||
|
end type
|
||||||
|
type cb_browse from commandbutton within w_export
|
||||||
|
end type
|
||||||
|
type sle_pbl from singlelineedit within w_export
|
||||||
|
end type
|
||||||
|
type st_1 from statictext within w_export
|
||||||
|
end type
|
||||||
|
end forward
|
||||||
|
|
||||||
|
global type w_export from window
|
||||||
|
integer width = 3209
|
||||||
|
integer height = 1600
|
||||||
|
boolean titlebar = true
|
||||||
|
string title = "Export"
|
||||||
|
boolean controlmenu = true
|
||||||
|
boolean minbox = true
|
||||||
|
boolean maxbox = true
|
||||||
|
boolean resizable = true
|
||||||
|
long backcolor = 67108864
|
||||||
|
string icon = "AppIcon!"
|
||||||
|
boolean center = true
|
||||||
|
st_2 st_2
|
||||||
|
sle_destdir sle_destdir
|
||||||
|
cb_browse_dest cb_browse_dest
|
||||||
|
cb_export_some cb_export_some
|
||||||
|
cb_export_all cb_export_all
|
||||||
|
dw_objects dw_objects
|
||||||
|
cb_browse cb_browse
|
||||||
|
sle_pbl sle_pbl
|
||||||
|
st_1 st_1
|
||||||
|
end type
|
||||||
|
global w_export w_export
|
||||||
|
|
||||||
|
forward prototypes
|
||||||
|
public subroutine get_objects (string as_pbl)
|
||||||
|
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment)
|
||||||
|
public function string get_object_suffix (string as_type)
|
||||||
|
public function libexporttype get_object_libtype (string as_type)
|
||||||
|
public subroutine export_object_at_row (long al_row, string as_lib)
|
||||||
|
end prototypes
|
||||||
|
|
||||||
|
public subroutine get_objects (string as_pbl);
|
||||||
|
if not fileexists(as_pbl) then return
|
||||||
|
|
||||||
|
int i, p = 1
|
||||||
|
string ls_entries, ls_entry
|
||||||
|
ls_entries = LibraryDirectoryEx(as_pbl, DirAll!)
|
||||||
|
debug_message('get_objects()', ls_entries)
|
||||||
|
|
||||||
|
dw_objects.reset()
|
||||||
|
dw_objects.importstring(ls_entries)
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment);
|
||||||
|
LibExportType l_ot
|
||||||
|
string ls_syntax, ls_filename, ls_dir
|
||||||
|
int li_file
|
||||||
|
|
||||||
|
ls_dir = sle_destdir.text
|
||||||
|
l_ot = get_object_libtype(as_type)
|
||||||
|
ls_syntax = libraryexport(as_lib, as_object, l_ot)
|
||||||
|
|
||||||
|
ls_filename = as_object + '.' + get_object_suffix(as_type)
|
||||||
|
li_file = FileOpen(ls_dir + '\' + ls_filename, streammode!, write!, LockReadWrite!, Replace!, EncodingUTF16LE!)
|
||||||
|
if li_file = -1 then return false
|
||||||
|
|
||||||
|
FileWrite(li_file, "$PBExportHeader$" + ls_filename + "~r~n")
|
||||||
|
if as_comment <> "" then
|
||||||
|
FileWrite(li_file, "$PBExportComments$" + as_comment + "~r~n")
|
||||||
|
end if
|
||||||
|
FileWrite(li_file, ls_syntax)
|
||||||
|
FileClose(li_file)
|
||||||
|
|
||||||
|
return true
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function string get_object_suffix (string as_type);
|
||||||
|
string ls_suf = ""
|
||||||
|
|
||||||
|
choose case as_type
|
||||||
|
case 'Application'; ls_suf = 'sra'
|
||||||
|
case 'DataWindow'; ls_suf = 'srd'
|
||||||
|
case 'Function'; ls_suf = 'srf'
|
||||||
|
case 'Menu'; ls_suf = 'srm'
|
||||||
|
case 'Pipeline'; ls_suf = 'srp'
|
||||||
|
case 'Project'; ls_suf = 'srj'
|
||||||
|
case 'Query'; ls_suf = 'srq'
|
||||||
|
case 'Structure'; ls_suf = 'srs'
|
||||||
|
case 'UserObject'; ls_suf = 'sru'
|
||||||
|
case 'Window'; ls_suf = 'srw'
|
||||||
|
end choose
|
||||||
|
|
||||||
|
return ls_suf
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public function libexporttype get_object_libtype (string as_type);
|
||||||
|
libexporttype l_ot
|
||||||
|
|
||||||
|
choose case as_type
|
||||||
|
case 'Application'; l_ot = ExportApplication!
|
||||||
|
case 'DataWindow'; l_ot = ExportDataWindow!
|
||||||
|
case 'Function'; l_ot = ExportFunction!
|
||||||
|
case 'Menu'; l_ot = ExportMenu!
|
||||||
|
case 'Pipeline'; l_ot = ExportPipeline!
|
||||||
|
case 'Project'; l_ot = ExportProject!
|
||||||
|
case 'Query'; l_ot = ExportQuery!
|
||||||
|
case 'Structure'; l_ot = ExportStructure!
|
||||||
|
case 'UserObject'; l_ot = ExportUserObject!
|
||||||
|
case 'Window'; l_ot = ExportWindow!
|
||||||
|
end choose
|
||||||
|
|
||||||
|
return l_ot
|
||||||
|
|
||||||
|
end function
|
||||||
|
|
||||||
|
public subroutine export_object_at_row (long al_row, string as_lib);
|
||||||
|
string ls_obj, ls_type, ls_comment
|
||||||
|
|
||||||
|
ls_obj = dw_objects.getitemstring(al_row, "obj_name")
|
||||||
|
ls_type = dw_objects.getitemstring(al_row, "obj_type")
|
||||||
|
ls_comment = dw_objects.getitemstring(al_row, "comment")
|
||||||
|
export_object(as_lib, ls_obj, ls_type, ls_comment)
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
|
on w_export.create
|
||||||
|
this.st_2=create st_2
|
||||||
|
this.sle_destdir=create sle_destdir
|
||||||
|
this.cb_browse_dest=create cb_browse_dest
|
||||||
|
this.cb_export_some=create cb_export_some
|
||||||
|
this.cb_export_all=create cb_export_all
|
||||||
|
this.dw_objects=create dw_objects
|
||||||
|
this.cb_browse=create cb_browse
|
||||||
|
this.sle_pbl=create sle_pbl
|
||||||
|
this.st_1=create st_1
|
||||||
|
this.Control[]={this.st_2,&
|
||||||
|
this.sle_destdir,&
|
||||||
|
this.cb_browse_dest,&
|
||||||
|
this.cb_export_some,&
|
||||||
|
this.cb_export_all,&
|
||||||
|
this.dw_objects,&
|
||||||
|
this.cb_browse,&
|
||||||
|
this.sle_pbl,&
|
||||||
|
this.st_1}
|
||||||
|
end on
|
||||||
|
|
||||||
|
on w_export.destroy
|
||||||
|
destroy(this.st_2)
|
||||||
|
destroy(this.sle_destdir)
|
||||||
|
destroy(this.cb_browse_dest)
|
||||||
|
destroy(this.cb_export_some)
|
||||||
|
destroy(this.cb_export_all)
|
||||||
|
destroy(this.dw_objects)
|
||||||
|
destroy(this.cb_browse)
|
||||||
|
destroy(this.sle_pbl)
|
||||||
|
destroy(this.st_1)
|
||||||
|
end on
|
||||||
|
|
||||||
|
type st_2 from statictext within w_export
|
||||||
|
integer x = 32
|
||||||
|
integer y = 1208
|
||||||
|
integer width = 251
|
||||||
|
integer height = 76
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
long textcolor = 33554432
|
||||||
|
long backcolor = 67108864
|
||||||
|
string text = "Export into"
|
||||||
|
boolean focusrectangle = false
|
||||||
|
end type
|
||||||
|
|
||||||
|
type sle_destdir from singlelineedit within w_export
|
||||||
|
integer x = 325
|
||||||
|
integer y = 1204
|
||||||
|
integer width = 2619
|
||||||
|
integer height = 80
|
||||||
|
integer taborder = 30
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
long textcolor = 33554432
|
||||||
|
string text = "none"
|
||||||
|
borderstyle borderstyle = stylelowered!
|
||||||
|
end type
|
||||||
|
|
||||||
|
type cb_browse_dest from commandbutton within w_export
|
||||||
|
integer x = 2985
|
||||||
|
integer y = 1204
|
||||||
|
integer width = 169
|
||||||
|
integer height = 80
|
||||||
|
integer taborder = 30
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
string text = "..."
|
||||||
|
end type
|
||||||
|
|
||||||
|
event clicked;
|
||||||
|
string ls_dir
|
||||||
|
|
||||||
|
ls_dir = getfolder("Select the directory where you want to export")
|
||||||
|
if ls_dir <> "" then
|
||||||
|
sle_destdir.text = ls_dir
|
||||||
|
end if
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
type cb_export_some from commandbutton within w_export
|
||||||
|
integer x = 398
|
||||||
|
integer y = 1344
|
||||||
|
integer width = 457
|
||||||
|
integer height = 100
|
||||||
|
integer taborder = 50
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
string text = "Export selected"
|
||||||
|
end type
|
||||||
|
|
||||||
|
event clicked;
|
||||||
|
string ls_lib
|
||||||
|
int r
|
||||||
|
|
||||||
|
ls_lib = sle_pbl.text
|
||||||
|
if not fileexists(ls_lib) then return
|
||||||
|
|
||||||
|
r = dw_objects.getselectedrow(0)
|
||||||
|
do while r > 0
|
||||||
|
export_object_at_row(r, ls_lib)
|
||||||
|
r = dw_objects.getselectedrow(r)
|
||||||
|
loop
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
type cb_export_all from commandbutton within w_export
|
||||||
|
integer x = 37
|
||||||
|
integer y = 1344
|
||||||
|
integer width = 338
|
||||||
|
integer height = 100
|
||||||
|
integer taborder = 40
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
string text = "Export all"
|
||||||
|
end type
|
||||||
|
|
||||||
|
event clicked;
|
||||||
|
string ls_lib
|
||||||
|
int i, li_max
|
||||||
|
|
||||||
|
ls_lib = sle_pbl.text
|
||||||
|
if not fileexists(ls_lib) then return
|
||||||
|
|
||||||
|
li_max = dw_objects.rowcount()
|
||||||
|
for i = 1 to li_max
|
||||||
|
export_object_at_row(i, ls_lib)
|
||||||
|
next
|
||||||
|
end event
|
||||||
|
|
||||||
|
type dw_objects from datawindow within w_export
|
||||||
|
integer x = 32
|
||||||
|
integer y = 212
|
||||||
|
integer width = 2912
|
||||||
|
integer height = 876
|
||||||
|
integer taborder = 30
|
||||||
|
string title = "none"
|
||||||
|
string dataobject = "dw_objects"
|
||||||
|
boolean hscrollbar = true
|
||||||
|
boolean vscrollbar = true
|
||||||
|
boolean livescroll = true
|
||||||
|
borderstyle borderstyle = stylelowered!
|
||||||
|
end type
|
||||||
|
|
||||||
|
event clicked;
|
||||||
|
boolean lb_sel
|
||||||
|
|
||||||
|
lb_sel = dw_objects.isselected(row)
|
||||||
|
dw_objects.selectrow(row, not lb_sel)
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
type cb_browse from commandbutton within w_export
|
||||||
|
integer x = 2985
|
||||||
|
integer y = 64
|
||||||
|
integer width = 169
|
||||||
|
integer height = 80
|
||||||
|
integer taborder = 20
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
string text = "..."
|
||||||
|
end type
|
||||||
|
|
||||||
|
event clicked;
|
||||||
|
string ls_dir, ls_file, ls_path
|
||||||
|
|
||||||
|
if 1 = getfileopenname("Choose a library to export", ls_dir, ls_file, "pbl", "Libraries (*.PBL),*.PBL") then
|
||||||
|
ls_path = ls_dir
|
||||||
|
sle_pbl.text = ls_path
|
||||||
|
get_objects(ls_path)
|
||||||
|
end if
|
||||||
|
|
||||||
|
end event
|
||||||
|
|
||||||
|
type sle_pbl from singlelineedit within w_export
|
||||||
|
integer x = 256
|
||||||
|
integer y = 64
|
||||||
|
integer width = 2688
|
||||||
|
integer height = 80
|
||||||
|
integer taborder = 10
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
long textcolor = 33554432
|
||||||
|
string text = "none"
|
||||||
|
borderstyle borderstyle = stylelowered!
|
||||||
|
end type
|
||||||
|
|
||||||
|
type st_1 from statictext within w_export
|
||||||
|
integer x = 32
|
||||||
|
integer y = 72
|
||||||
|
integer width = 215
|
||||||
|
integer height = 76
|
||||||
|
integer textsize = -8
|
||||||
|
integer weight = 400
|
||||||
|
fontcharset fontcharset = ansi!
|
||||||
|
fontpitch fontpitch = variable!
|
||||||
|
fontfamily fontfamily = swiss!
|
||||||
|
string facename = "Tahoma"
|
||||||
|
long textcolor = 33554432
|
||||||
|
long backcolor = 67108864
|
||||||
|
string text = "Library"
|
||||||
|
boolean focusrectangle = false
|
||||||
|
end type
|
||||||
|
|
||||||
174
samples/REXX/BatchRemapBrushes.pprx
Normal file
174
samples/REXX/BatchRemapBrushes.pprx
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
/* Ga igenom lador med IFF-filer rekursivt och skapa:
|
||||||
|
1: Spritekartor om 320x256 med alla spritar
|
||||||
|
2: En tabell med enumererade spritenummer
|
||||||
|
Aterstar:
|
||||||
|
*: Att skriva shapesfiler direkt
|
||||||
|
$VER: 1.0
|
||||||
|
*/
|
||||||
|
SIGNAL ON BREAK_C
|
||||||
|
PARSE ARG argument
|
||||||
|
template = 'START/N COLOURS/N REMAP/S RECURSIVE/S PALETTE/K DIRECTORY/A'
|
||||||
|
CALL Init
|
||||||
|
|
||||||
|
ADDRESS 'PPAINT'
|
||||||
|
OPTIONS RESULTS
|
||||||
|
GetBestVideoMode WIDTH 320 HEIGHT 256 COLORS args.colours
|
||||||
|
modeid=Word(RESULT,1)
|
||||||
|
say modeid
|
||||||
|
Set 'FORCE "DISPLAY=' || modeid || '"'
|
||||||
|
IF RC~=0 THEN EXIT 20
|
||||||
|
Set 'FORCE "IMAGEW=320" "IMAGEH=256" "COLORS='args.colours'"'
|
||||||
|
ClearImage
|
||||||
|
LockGUI
|
||||||
|
ScreenToFront
|
||||||
|
x=0 ; y=0 ; maxhoejd=0 ; fil#=0 ; blad#=0
|
||||||
|
CALL WriteLn konstfil, ';Blad' blad#
|
||||||
|
DO UNTIL Lines()==0 & fillista==''
|
||||||
|
DO WHILE fillista~=''
|
||||||
|
PARSE VAR fillista filnamn 'y' fillista
|
||||||
|
IF Right(filnamn,5)=='.info' THEN ITERATE
|
||||||
|
IF Word(StateF(dir||filnamn),1)=='DIR' THEN DO
|
||||||
|
PUSH fillista
|
||||||
|
PUSH dir
|
||||||
|
dir=dir||filnamn||'/'
|
||||||
|
SAY 'Entering directory' dir'...'
|
||||||
|
fillista=ShowDir(dir,'ALL','y')
|
||||||
|
ITERATE
|
||||||
|
END
|
||||||
|
LoadBrush FILE dir || filnamn NOPROGRESS
|
||||||
|
IF RC~==0 THEN DO
|
||||||
|
SAY 'Skipping file:' dir || filnamn
|
||||||
|
ITERATE
|
||||||
|
END
|
||||||
|
IF args.remap THEN RemapBrush NOPROGRESS
|
||||||
|
GetBrushAttributes WIDTH ; bredd=RESULT
|
||||||
|
GetBrushAttributes HEIGHT ; hoejd=RESULT
|
||||||
|
GetBrushAttributes COLORS ; djup=RESULT
|
||||||
|
IF bredd//16==0 THEN ebwidth=bredd
|
||||||
|
ELSE ebwidth=bredd+(16-(bredd//16))
|
||||||
|
maxhoejd=Max(maxhoejd,hoejd)
|
||||||
|
SAY 'File:' Left(filnamn,29) 'Width:' bredd ' Height:' hoejd ' Depth:' djup ' ebwidth:' ebwidth
|
||||||
|
SetCurrentBrush RECTANGULAR WIDTH 1 HEIGHT 1
|
||||||
|
DrawRectangle x y x+ebwidth y+hoejd
|
||||||
|
Text fil# 'X' x+2 'Y' y+2
|
||||||
|
SetCurrentBrush 1 ; SetBrushHandle 0 0
|
||||||
|
PutBrush x y
|
||||||
|
CALL WriteLn(konstfil,'; '||fil# ||': '|| filnamn ||' ('||ebwidth||'x'||hoejd||'x'||djup||')')
|
||||||
|
CALL WriteLn(konstfil,'#'||Upper(Left(filnamn,Min(Length(filnamn),Max(LastPos('.',filnamn)-1,0))))||'='fil#)
|
||||||
|
x=x+ebwidth
|
||||||
|
IF x+ebwidth>319 THEN DO
|
||||||
|
x=0
|
||||||
|
y=y+maxhoejd
|
||||||
|
IF y+maxhoejd>255 THEN DO
|
||||||
|
SaveImage FILE 'Spritesheet' || blad# || '.ilbm' FORCE
|
||||||
|
IF RC==0 THEN SAY 'Saved sheet' blad#
|
||||||
|
ELSE SAY "Couldn't save spritesheet"
|
||||||
|
ClearImage
|
||||||
|
y=0
|
||||||
|
blad#=blad#+1
|
||||||
|
CALL WriteLn konstfil, ';Blad' blad#
|
||||||
|
END
|
||||||
|
maxhoejd=0
|
||||||
|
END
|
||||||
|
fil#=fil#+1
|
||||||
|
END /* WHILE fillista */
|
||||||
|
IF Lines()>0 THEN DO
|
||||||
|
PARSE PULL dir
|
||||||
|
PARSE PULL fillista
|
||||||
|
SAY 'Going back to' dir'...'
|
||||||
|
END
|
||||||
|
END /* UNTIL Lines() */
|
||||||
|
|
||||||
|
BREAK_C:
|
||||||
|
FreeBrush FORCE
|
||||||
|
UnLockGUI
|
||||||
|
medd=fil# 'files processed in' blad#+1 'sheets'
|
||||||
|
SAY medd
|
||||||
|
RequestNotify 'TITLE SpriteSheet.pprx PROMPT "'medd'"'
|
||||||
|
ScreenToBack
|
||||||
|
CALL Close(konstfil)
|
||||||
|
DO WHILE Lines()>0; PULL .; END
|
||||||
|
EXIT 0
|
||||||
|
|
||||||
|
Init:
|
||||||
|
IF argument = '' | argument = '?' THEN DO
|
||||||
|
SAY template
|
||||||
|
EXIT 0
|
||||||
|
END
|
||||||
|
|
||||||
|
CALL ReadArgs()
|
||||||
|
|
||||||
|
IF ~Show('L',"rexxsupport.library") THEN DO
|
||||||
|
IF ~AddLib("rexxsupport.library",0,-30,0) THEN DO
|
||||||
|
SAY 'Hittade inte rexxsupport.library'
|
||||||
|
EXIT 20
|
||||||
|
END
|
||||||
|
END
|
||||||
|
IF ~Open(konstfil,'SpriteConstants.txt','WRITE') THEN EXIT 10
|
||||||
|
|
||||||
|
IF ~SHOW('P', 'PPAINT') THEN DO
|
||||||
|
SAY "Couldn't find PPaint. Please start the program first."
|
||||||
|
EXIT 5
|
||||||
|
END
|
||||||
|
dir=args.directory
|
||||||
|
IF dir='""' THEN dir=Pragma('DIRECTORY')
|
||||||
|
IF dir='' THEN dir='Ram:Megamanv6/Graphics/'
|
||||||
|
IF Right(dir,1)~=='/' THEN dir=dir || '/'
|
||||||
|
fillista=ShowDir(dir,'FILES','y')
|
||||||
|
fillista=ShowDir(dir,'ALL','y')
|
||||||
|
IF fillista="" THEN DO
|
||||||
|
SAY "Found no files"
|
||||||
|
EXIT 5
|
||||||
|
END
|
||||||
|
IF args.colours==0 THEN args.colours=16
|
||||||
|
ADDRESS 'PPAINT'
|
||||||
|
OPTIONS RESULTS
|
||||||
|
IF args.palette~='' THEN LoadPalette args.palette
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
ReadArgs:
|
||||||
|
/* ReadArgs()-like evaluation of command line arguments */
|
||||||
|
SAY 'ReadArgs'
|
||||||
|
DO key# = 1 TO Words(Template)
|
||||||
|
key=Word(template,key#)
|
||||||
|
PARSE VAR key key "/" keytype
|
||||||
|
SELECT
|
||||||
|
WHEN keytype='S'|keytype='N' THEN args.key=0
|
||||||
|
WHEN keytype='K'|keytype='A' THEN args.key=''
|
||||||
|
OTHERWISE NOP /* Error in template */
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
DO WHILE argument ~= ''
|
||||||
|
PARSE VAR argument arg1 argument
|
||||||
|
arg2=''
|
||||||
|
DO key# = 1 TO Words(template)
|
||||||
|
key = Word(template,key#)
|
||||||
|
PARSE VAR key key '/' keytype
|
||||||
|
IF Upper(Left(arg1,Length(key))) = key THEN DO
|
||||||
|
SELECT
|
||||||
|
WHEN keytype='S' THEN DO
|
||||||
|
args.key=1
|
||||||
|
END
|
||||||
|
WHEN keytype='K' | keytype='N' | keytype='A' THEN DO
|
||||||
|
IF Index(arg1,'=')>0
|
||||||
|
THEN DO
|
||||||
|
SAY 'Innehaller ='
|
||||||
|
PARSE VAR arg1 '=' arg2
|
||||||
|
SAY 'arg2:' arg2
|
||||||
|
END
|
||||||
|
ELSE PARSE VAR argument arg2 argument
|
||||||
|
args.key=arg2
|
||||||
|
IF keytype='N' & DataType(arg2)~==NUM THEN DO
|
||||||
|
SAY 'Illegal numerical argument' key arg2
|
||||||
|
EXIT 10
|
||||||
|
END
|
||||||
|
END
|
||||||
|
END
|
||||||
|
arg1=''
|
||||||
|
LEAVE key#
|
||||||
|
END
|
||||||
|
END
|
||||||
|
IF arg1~='' THEN args.directory=arg1
|
||||||
|
END
|
||||||
|
RETURN
|
||||||
135
samples/REXX/ShapesInfo.rexx
Normal file
135
samples/REXX/ShapesInfo.rexx
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
/* Display information about Blitz Basic .shapes file,
|
||||||
|
optionally displaying the shape's cookiecut
|
||||||
|
$AUTHOR: Iggy Drougge 2016
|
||||||
|
$VER: 1.1
|
||||||
|
*/
|
||||||
|
PARSE ARG argument
|
||||||
|
template = 'FROM/N TO/N SHOW/S FILE/A'
|
||||||
|
IF argument = '' | argument = '?' THEN DO
|
||||||
|
SAY 'ShapesInfo' template
|
||||||
|
EXIT 0
|
||||||
|
END
|
||||||
|
|
||||||
|
CALL ReadArgs()
|
||||||
|
|
||||||
|
IF ~Open(fh,args.file,READ) then DO
|
||||||
|
SAY "Couldn't Open file:" args.file
|
||||||
|
EXIT 10
|
||||||
|
END
|
||||||
|
|
||||||
|
shape#=0
|
||||||
|
filebad=0
|
||||||
|
IF args.to=0 THEN args.to=9999
|
||||||
|
|
||||||
|
IF args.from>1 THEN SAY 'Seeking...'
|
||||||
|
DO WHILE ~EOF(fh)
|
||||||
|
header=ReadCh(fh,32)
|
||||||
|
IF EOF(fh) THEN DO
|
||||||
|
SAY 'Reached end of file.'
|
||||||
|
EXIT 0
|
||||||
|
END
|
||||||
|
PARSE VALUE header WITH pixwidth +2 pixheight +2 depth +2 ebwidth +2 bltsize +2 xhandle +2 yhandle +2 . +4 . +4 onebpmem +2 onebpmemx +2 allbpmem +2 allbpmemx +2 .
|
||||||
|
CALL CheckHeader
|
||||||
|
IF filebad THEN DO
|
||||||
|
SAY 'Not a valid shapes file.'
|
||||||
|
SAY C2X(header)
|
||||||
|
EXIT 10
|
||||||
|
END
|
||||||
|
shape#=shape#+1
|
||||||
|
bitplanesize = C2D(ebwidth) * C2D(pixheight)
|
||||||
|
bitmapsize = bitplanesize * C2D(depth)
|
||||||
|
IF shape# < args.from THEN DO
|
||||||
|
CALL Seek(fh,bitmapsize,CURRENT)
|
||||||
|
ITERATE
|
||||||
|
END
|
||||||
|
IF shape# > args.to THEN LEAVE
|
||||||
|
CALL PrintHeader
|
||||||
|
IF args.show THEN CALL ShowCookiecut
|
||||||
|
ELSE CALL Seek(fh,bitmapsize,CURRENT)
|
||||||
|
END
|
||||||
|
EXIT 0
|
||||||
|
|
||||||
|
CheckHeader:
|
||||||
|
IF C2D(pixwidth)>C2D(ebwidth)*8 THEN filebad=1
|
||||||
|
IF Left(C2B(bltsize),10)~=C2B(pixheight) THEN filebad=1
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
PrintHeader:
|
||||||
|
SAY 'Shape #' || shape# || ':'
|
||||||
|
SAY ' Width: ' C2D(pixwidth) 'pixels' '('C2D(ebwidth) 'bytes)'
|
||||||
|
SAY ' Height: ' C2D(pixheight) 'pixels'
|
||||||
|
SAY ' Depth: ' C2D(depth) 'bitplanes'
|
||||||
|
SAY ' BLTSIZE: ' '$'C2X(bltsize) '('||,
|
||||||
|
C2D(B2C(Left(C2B(bltsize),10))) 'x',
|
||||||
|
C2D(B2C(Right(C2B(bltsize),6)))')'
|
||||||
|
SAY ' Handle: ' C2D(xhandle)','C2D(yhandle)
|
||||||
|
/*
|
||||||
|
SAY 'Onebpmem: ' C2D(onebpmem)
|
||||||
|
SAY 'OnebpmemX:' C2D(onebpmemx)
|
||||||
|
SAY 'Allbpmem: ' C2D(allbpmem)
|
||||||
|
SAY 'AllbpmemX:' C2D(allbpmemx)
|
||||||
|
*/
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ShowCookiecut:
|
||||||
|
depth=C2D(depth)
|
||||||
|
bmap=Copies('00'x,bitplanesize)
|
||||||
|
DO FOR depth
|
||||||
|
bmap=BitOr(bmap,readch(fh,bitplanesize))
|
||||||
|
END
|
||||||
|
ln=1 ; pixheight=C2D(pixheight) ; ebwidth=C2D(ebwidth)
|
||||||
|
DO FOR pixheight
|
||||||
|
SAY C2B(SubStr(bmap,ln,ebwidth))
|
||||||
|
ln=ln+ebwidth
|
||||||
|
END
|
||||||
|
RETURN
|
||||||
|
|
||||||
|
EXIT 0
|
||||||
|
|
||||||
|
ReadArgs:
|
||||||
|
/* ReadArgs()-like evaluation of command line arguments */
|
||||||
|
DO key# = 1 TO Words(Template) /* Initialise the keywords */
|
||||||
|
key=Word(template,key#)
|
||||||
|
PARSE VAR key key "/" keytype
|
||||||
|
SELECT
|
||||||
|
WHEN keytype='S'|keytype='N' THEN args.key=0
|
||||||
|
WHEN keytype='K'|keytype='A' THEN args.key=''
|
||||||
|
OTHERWISE NOP /* Error in template */
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
DO WHILE argument ~= ''
|
||||||
|
PARSE VAR argument arg1 argument
|
||||||
|
arg2=''
|
||||||
|
DO key# = 1 TO Words(template)
|
||||||
|
key = Word(template,key#)
|
||||||
|
PARSE VAR key key '/' keytype
|
||||||
|
IF Upper(Left(arg1,Length(key))) = key THEN DO
|
||||||
|
SELECT
|
||||||
|
WHEN keytype='S' THEN DO
|
||||||
|
args.key=1
|
||||||
|
END
|
||||||
|
WHEN keytype='K' | keytype='N' | keytype='A' THEN DO
|
||||||
|
IF Index(arg1,'=')>0
|
||||||
|
THEN DO
|
||||||
|
SAY 'Innehaller ='
|
||||||
|
PARSE VAR arg1 '=' arg2
|
||||||
|
SAY 'arg2:' arg2
|
||||||
|
END
|
||||||
|
ELSE PARSE VAR argument arg2 argument
|
||||||
|
args.key=arg2
|
||||||
|
IF keytype='N' & DataType(arg2)~==NUM THEN DO
|
||||||
|
SAY 'Illegal numerical argument' key arg2
|
||||||
|
EXIT 10
|
||||||
|
END
|
||||||
|
END
|
||||||
|
END
|
||||||
|
arg1=''
|
||||||
|
LEAVE key#
|
||||||
|
END
|
||||||
|
END
|
||||||
|
IF arg1~='' THEN args.file=arg1
|
||||||
|
END
|
||||||
|
RETURN
|
||||||
54
samples/REXX/SkrivShape.rexx
Normal file
54
samples/REXX/SkrivShape.rexx
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/* rexx */
|
||||||
|
PARSE ARG filnamn
|
||||||
|
IF filnamn='' THEN DO
|
||||||
|
filnamn='raw'
|
||||||
|
filnamn='font.shapes'
|
||||||
|
end
|
||||||
|
IF ~open(fil,filnamn,r) THEN EXIT 10
|
||||||
|
pixwidth=48
|
||||||
|
ebwidth=pixwidth/8
|
||||||
|
pixheight=48
|
||||||
|
depth=4
|
||||||
|
SAY "Skriver utfil..."
|
||||||
|
CALL open utfil,"RAM:utfil",W
|
||||||
|
CALL skriv pixwidth,2
|
||||||
|
CALL skriv pixheight,2
|
||||||
|
CALL skriv depth,2
|
||||||
|
CALL skriv ebwidth,2
|
||||||
|
bltsize=Right(C2B(D2C(pixheight)),10,"00")
|
||||||
|
bltsize=bltsize || Right(C2B(D2C(ebwidth)),6,"00")
|
||||||
|
/* SAY bltsize */
|
||||||
|
CALL skriv C2D(B2C(bltsize)),2
|
||||||
|
CALL skriv 0,4 /* xhandle, yhandle*/
|
||||||
|
CALL skriv 0,4 /* datapekare */
|
||||||
|
CALL skriv 0,4 /* cookiepekare */
|
||||||
|
CALL skriv ebwidth*pixheight,2 /* onebpmem */
|
||||||
|
CALL skriv ebwidth*pixheight+pixheight*2,2 /* onebpmemx */
|
||||||
|
CALL skriv ebwidth*pixheight*depth,2 /* allbpmem */
|
||||||
|
CALL skriv ebwidth*pixheight*depth+pixheight*2*depth,2 /* allbpmemx */
|
||||||
|
CALL skriv 0,2 /* padding */
|
||||||
|
CALL Close utfil
|
||||||
|
EXIT
|
||||||
|
|
||||||
|
skriv:
|
||||||
|
say "Skriver $"D2X(arg(1)) "("arg(2) "byte)"
|
||||||
|
call writech utfil,right(D2C(ARG(1)),ARG(2),"00"x)
|
||||||
|
return
|
||||||
|
|
||||||
|
visacookie:
|
||||||
|
rad=copies('00'x,pixheight*ebwidth)
|
||||||
|
say "Initierar bitmap till" pixheight*ebwidth*depth
|
||||||
|
say "Ett bitplan =" pixheight*ebwidth
|
||||||
|
bmap.=''
|
||||||
|
say "laser in"
|
||||||
|
do bitplan=1 to depth
|
||||||
|
say "laser plan" bitplan
|
||||||
|
rad=bitor(rad,readch(fil,pixheight*ebwidth))
|
||||||
|
end
|
||||||
|
ln=1
|
||||||
|
say "skriver ut"
|
||||||
|
do for pixheight
|
||||||
|
say c2b(substr(rad,ln,bredd/8))
|
||||||
|
ln=ln+bredd/8
|
||||||
|
end
|
||||||
|
return
|
||||||
106
samples/REXX/ag2xml.rexx
Normal file
106
samples/REXX/ag2xml.rexx
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
/* Las en Amigaguidefil och omvandla till nan slags XML */
|
||||||
|
/* $VER: 2 */
|
||||||
|
options AREXX_BIFS
|
||||||
|
options AREXX_SEMANTICS
|
||||||
|
if ~open(infil,'Blitz2_V1.3.guide',R) then exit 10
|
||||||
|
if ~open(utfil,'bb2.xml',W) then exit 10
|
||||||
|
|
||||||
|
call writeln utfil,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
|
||||||
|
call writeln utfil,'<root>'
|
||||||
|
radnr=1
|
||||||
|
inrad=readln(infil)
|
||||||
|
|
||||||
|
do while ~eof(infil)
|
||||||
|
och=1
|
||||||
|
do while index(inrad,'&',och)>0
|
||||||
|
och=index(inrad,'&',och)
|
||||||
|
if index(inrad,';',och)=0 then do
|
||||||
|
parse value inrad with prefix =(och) +1 suffix
|
||||||
|
inrad=prefix'&'suffix
|
||||||
|
och=index(inrad,';',och)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
do while index(inrad,'<')>0
|
||||||
|
parse var inrad prefix '<' suffix
|
||||||
|
inrad = prefix'<'suffix
|
||||||
|
end
|
||||||
|
do while index(inrad,'>')>0
|
||||||
|
parse var inrad prefix '>' suffix
|
||||||
|
inrad = prefix'>'suffix
|
||||||
|
end
|
||||||
|
inrad=behandlarad(inrad)
|
||||||
|
if right(inrad,1)~='>' & strip(inrad)~='' then inrad=inrad || ' '
|
||||||
|
testrad=inrad
|
||||||
|
do while index(testrad,'>') > 0
|
||||||
|
parse var testrad prefix '<' . '>' suffix
|
||||||
|
testrad = prefix || suffix
|
||||||
|
end
|
||||||
|
if length(testrad)<65 then inrad = inrad || '0d'x
|
||||||
|
call writech utfil,inrad
|
||||||
|
inrad=readln(infil)
|
||||||
|
radnr=radnr+1
|
||||||
|
end
|
||||||
|
call close(infil)
|
||||||
|
call writeln utfil,'</root>'
|
||||||
|
call close(utfil)
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
behandlarad: procedure
|
||||||
|
parse arg inrad
|
||||||
|
do forever
|
||||||
|
if abbrev(inrad,'@NODE') then do
|
||||||
|
parse var inrad '@NODE ' nod inrad
|
||||||
|
/* say 'Hittade nod:' nod */
|
||||||
|
inrad='<story id="' || nod || '">' || inrad
|
||||||
|
end
|
||||||
|
if inrad='@ENDNODE' then inrad='</story>' || '0d'x
|
||||||
|
/* say inrad */
|
||||||
|
if abbrev(inrad,'-----') then inrad='<streck> </streck>'
|
||||||
|
if abbrev(inrad,'Command'),
|
||||||
|
| abbrev(inrad,'Function'),
|
||||||
|
| abbrev(inrad,'Statement') then do
|
||||||
|
parse var inrad kommandotyp ':' inrad
|
||||||
|
/* if index(inrad,'@{')>0 then */
|
||||||
|
parse var inrad inrad '@{' rest
|
||||||
|
if rest~='' then rest='@{' || rest
|
||||||
|
/* say 'rest:' rest */
|
||||||
|
inrad='<commandheadline>'||strip(kommandotyp)||' </commandheadline><commandname>'||behandlarad(inrad)||'</commandname>'||behandlarad(rest)
|
||||||
|
end
|
||||||
|
if index(inrad,'@{')>0 then do
|
||||||
|
parse var inrad inrad '@{' tagg '}' rest
|
||||||
|
select
|
||||||
|
when tagg='fg shine' then tagg='<fgshine>'
|
||||||
|
when tagg='fg text' then tagg='</fgshine>'
|
||||||
|
when tagg='b' then tagg='<bold>'
|
||||||
|
when tagg='ub' then tagg='</bold>'
|
||||||
|
/* @{" SpriteMode " link BUM_SPRITEMODE} */
|
||||||
|
when abbrev(tagg,'"') then do
|
||||||
|
parse var tagg '"' besk '"' . 'link' dest
|
||||||
|
tagg='<link dest="' || dest || '">' || besk || '</link>'
|
||||||
|
end
|
||||||
|
otherwise tagg='<okand>'
|
||||||
|
end
|
||||||
|
rest=behandlarad(rest)
|
||||||
|
/*
|
||||||
|
if index(rest,'@{')>0 then rest=behandlarad(left(rest,index(rest,'@{'))) || substr(rest,index(rest,'@{'))
|
||||||
|
*/
|
||||||
|
inrad=inrad || tagg || rest
|
||||||
|
/* iterate */
|
||||||
|
end
|
||||||
|
if abbrev(inrad,'@') then do
|
||||||
|
say 'Hittade okand tagg:' inrad
|
||||||
|
/* inrad='<okand>' inrad '</okand>' */
|
||||||
|
parse var inrad '@' tagg inrad
|
||||||
|
if abbrev(tagg,'$') then parse var tagg '$' tagg ':'
|
||||||
|
inrad='<'tagg'>'inrad'</'tagg'>'
|
||||||
|
end
|
||||||
|
if abbrev(inrad,'Modes') then do
|
||||||
|
parse var inrad . ':' inrad
|
||||||
|
inrad='<modeheadline>Modes: </modeheadline><modename>' || strip(inrad) || '</modename>'
|
||||||
|
end
|
||||||
|
if abbrev(inrad,'Syntax') then do
|
||||||
|
parse var inrad . ':' inrad
|
||||||
|
inrad='<syntaxheadline>Syntax: </syntaxheadline><syntax>' || strip(inrad) || '</syntax>'
|
||||||
|
end
|
||||||
|
return inrad
|
||||||
|
end
|
||||||
1467
samples/RUNOFF/VMS_ZIP.RNH
Normal file
1467
samples/RUNOFF/VMS_ZIP.RNH
Normal file
File diff suppressed because it is too large
Load Diff
324
samples/RUNOFF/contributing.rnh
Normal file
324
samples/RUNOFF/contributing.rnh
Normal file
@@ -0,0 +1,324 @@
|
|||||||
|
.na
|
||||||
|
.ll 72
|
||||||
|
.pl 90
|
||||||
|
.m1 4
|
||||||
|
.m2 4
|
||||||
|
.m3 6
|
||||||
|
.m4 6
|
||||||
|
.sp 8
|
||||||
|
.ds
|
||||||
|
.ce
|
||||||
|
CONTRIBUTING TO LINGUIST
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
by
|
||||||
|
.ce
|
||||||
|
GITHUB
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
and the
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
OPEN SOURCE COMMUNITY
|
||||||
|
.sp
|
||||||
|
.bp
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_I_N_T_R_O_D_U_C_T_I_O_N:
|
||||||
|
.sp
|
||||||
|
Hi there! We're thrilled that you'd like to contribute to this
|
||||||
|
project. Your help is essential for keeping it great. This project
|
||||||
|
adheres to the Contributor Covenant Code of Conduct. By participating,
|
||||||
|
you are expected to uphold this code.
|
||||||
|
.br
|
||||||
|
The majority of contributions won't need to touch any Ruby code at all.
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_A_d_d_i_n_g _a_n _e_x_t_e_n_s_i_o_n _t_o _a
|
||||||
|
_l_a_n_g_u_a_g_e
|
||||||
|
.sp
|
||||||
|
We try only to add new extensions once they have some usage on
|
||||||
|
GitHub. In most cases we prefer that extensions be in use in hundreds of
|
||||||
|
repositories before supporting them in Linguist.
|
||||||
|
.sp
|
||||||
|
To add support for a new extension:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Add your extension to the language entry in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l, keeping the extensions in
|
||||||
|
alphabetical order.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Add at least one sample for your extension to the samples directory
|
||||||
|
in the correct subdirectory.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. Open a pull request, linking to a GitHub search result showing
|
||||||
|
in-the-wild usage.
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
In addition, if this extension is already listed in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l then sometimes a few more steps
|
||||||
|
will need to be taken:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Make sure that example .yourextension files are present in the
|
||||||
|
samples directory for each language that uses .yourextension.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Test the performance of the Bayesian classifier with a relatively
|
||||||
|
large number (1000s) of sample .yourextension files. (ping @arfon or
|
||||||
|
@bkeepers to help with this) to ensure we're not misclassifying files.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. If the Bayesian classifier does a bad job with the sample files
|
||||||
|
then a heuristic may need to be written to help.
|
||||||
|
.in 0
|
||||||
|
.sp 5
|
||||||
|
.ce
|
||||||
|
_A_d_d_i_n_g _a _l_a_n_g_u_a_g_e
|
||||||
|
.sp
|
||||||
|
We try only to add languages once they have some usage on GitHub.
|
||||||
|
In most cases we prefer that each new extension be in use in hundreds of
|
||||||
|
repositories before supporting them in Linguist.
|
||||||
|
.sp
|
||||||
|
To add support for a new language:
|
||||||
|
.in 5
|
||||||
|
.un 5
|
||||||
|
1. Add an entry for your language to
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Add a grammar for your language. Please only add grammars that have
|
||||||
|
a license that permits redistribution.
|
||||||
|
.br
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
i. Add your grammar as a submodule:
|
||||||
|
.br
|
||||||
|
.in +4
|
||||||
|
git submodule add
|
||||||
|
https://github.com/Alhadis/language-roff
|
||||||
|
vendor/grammars/language-roff
|
||||||
|
.in -4
|
||||||
|
.un 5
|
||||||
|
ii. Add your grammar to grammars.yml:
|
||||||
|
.br
|
||||||
|
.in +4
|
||||||
|
script/convert-grammars --add vendor/grammars/MyGrammar
|
||||||
|
.in -4
|
||||||
|
.un 5
|
||||||
|
iii. Download the license for the grammar by running script/licensed.
|
||||||
|
Be careful to only commit the file for the new grammar, as this script
|
||||||
|
may update licenses for other grammars as well.
|
||||||
|
.br
|
||||||
|
.in -5
|
||||||
|
.un 5
|
||||||
|
3. Add samples for your language to the samples directory in the
|
||||||
|
correct subdirectory.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
4. Open a pull request, linking to a GitHub search result showing
|
||||||
|
in-the-wild usage.
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
In addition, if your new language defines an extension that's already
|
||||||
|
listed in _l_a_n_g_u_a_g_e_s_._y_m_l (such as `.foo`) then
|
||||||
|
sometimes a few more steps will need to be taken:
|
||||||
|
.sp
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
1. Make sure that example .foo files are present in the samples
|
||||||
|
directory for each language that uses .foo.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
2. Test the performance of the Bayesian classifier with a relatively
|
||||||
|
large number (1000s) of sample `.foo` files. (ping @arfon or @bkeepers
|
||||||
|
to help with this) to ensure we're not misclassifying files.
|
||||||
|
.br
|
||||||
|
.un 5
|
||||||
|
3. If the Bayesian classifier does a bad job with the sample .foo
|
||||||
|
files then a heuristic may need to be written to help.
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
Remember, the goal here is to try and avoid false positives!
|
||||||
|
.sp 2
|
||||||
|
.ce
|
||||||
|
_F_i_x_i_n_g _a _m_i_s_c_l_a_s_s_i_f_i_e_d
|
||||||
|
_l_a_n_g_u_a_g_e
|
||||||
|
.br
|
||||||
|
Most languages are detected by their file extension defined in
|
||||||
|
_l_a_n_g_u_a_g_e_s_._y_m_l. For disambiguating between
|
||||||
|
files with common extensions, linguist applies some heuristics and a
|
||||||
|
statistical classifier. This process can help differentiate between,
|
||||||
|
for example, .h files which could be either C, C++, or Obj-C.
|
||||||
|
.sp
|
||||||
|
Misclassifications can often be solved by either adding a new
|
||||||
|
filename or extension for the language or adding more samples to make
|
||||||
|
the classifier smarter.
|
||||||
|
.sp
|
||||||
|
.m4 -2
|
||||||
|
.ce
|
||||||
|
_F_i_x_i_n_g _s_y_n_t_a_x
|
||||||
|
_h_i_g_h_l_i_g_h_t_i_n_g
|
||||||
|
.br
|
||||||
|
Syntax highlighting in GitHub is performed using
|
||||||
|
TextMate-compatible grammars. These are the same grammars that TextMate,
|
||||||
|
Sublime Text and Atom use. Every language in languages.yml is mapped to
|
||||||
|
its corresponding TM `scope`. This scope will be used when picking up a
|
||||||
|
grammar for highlighting.
|
||||||
|
.sp
|
||||||
|
Assuming your code is being detected as the right language, in most
|
||||||
|
cases this is due to a bug in the language grammar rather than a bug in
|
||||||
|
Linguist. _g_r_a_m_m_a_r_s_._y_m_l lists all the grammars
|
||||||
|
we use for syntax highlighting on github.com. Find the one corresponding
|
||||||
|
to your code's programming language and submit a bug report upstream.
|
||||||
|
.sp
|
||||||
|
If you can, try to reproduce the highlighting problem in the text editor
|
||||||
|
that the grammar is designed for (TextMate, Sublime Text, or Atom) and
|
||||||
|
include that information in your bug report.
|
||||||
|
.sp
|
||||||
|
You can also try to fix the bug yourself and submit a Pull Request.
|
||||||
|
TextMate's documentation offers a good introduction on how to work with
|
||||||
|
TextMate-compatible grammars. You can test grammars using Lightshow.
|
||||||
|
.sp
|
||||||
|
Once the bug has been fixed upstream, we'll pick it up for GitHub
|
||||||
|
in the next release of Linguist.
|
||||||
|
.sp 2
|
||||||
|
.ce
|
||||||
|
_T_e_s_t_i_n_g
|
||||||
|
.br
|
||||||
|
For development you are going to want to checkout out the source.
|
||||||
|
To get it, clone the repo and run Bundler to install its dependencies.
|
||||||
|
.sp
|
||||||
|
.in 4
|
||||||
|
git clone https://github.com/github/linguist.git
|
||||||
|
.br
|
||||||
|
cd linguist/
|
||||||
|
.br
|
||||||
|
script/bootstrap
|
||||||
|
.br
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
To run the tests:
|
||||||
|
.sp
|
||||||
|
.in 4
|
||||||
|
bundle exec rake test
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
Sometimes getting the tests running can be too much work, especially
|
||||||
|
if you don't have much Ruby experience. It's okay: be lazy and let our
|
||||||
|
build bot Travis run the tests for you. Just open a pull request and the
|
||||||
|
bot will start cranking away.
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
_M_a_i_n_t_a_i_n_e_r_s
|
||||||
|
.br
|
||||||
|
Linguist is maintained with love by:
|
||||||
|
.sp
|
||||||
|
.in -2
|
||||||
|
- @arfon (GitHub Staff)
|
||||||
|
.br
|
||||||
|
- @larsbrinkhoff
|
||||||
|
.br
|
||||||
|
- @pchaigno
|
||||||
|
.in 0
|
||||||
|
.br
|
||||||
|
.sp
|
||||||
|
As Linguist is a production dependency for GitHub we have a couple of
|
||||||
|
workflow restrictions:
|
||||||
|
.sp
|
||||||
|
.in -2
|
||||||
|
- Anyone with commit rights can merge Pull Requests provided that there
|
||||||
|
is a :+1: from a GitHub member of staff
|
||||||
|
.br
|
||||||
|
- Releases are performed by GitHub staff so we can ensure GitHub.com
|
||||||
|
always stays up to date with the latest release of Linguist and there
|
||||||
|
are no regressions in production.
|
||||||
|
.in 0
|
||||||
|
.sp
|
||||||
|
.ce
|
||||||
|
_R_e_l_e_a_s_i_n_g
|
||||||
|
.sp
|
||||||
|
If you are the current maintainer of this gem:
|
||||||
|
.sp
|
||||||
|
.in 5
|
||||||
|
.ul 5
|
||||||
|
1. Create a branch for the release:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git checkout -b cut-release-vxx.xx.xx
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
2. Make sure your local dependencies are up to date:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
script/bootstrap
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
3. If grammar submodules have not been updated recently, update them:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git submodule update --remote _&_& git commit -a
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
4. Ensure that samples are updated:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
bundle exec rake samples
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
5. Ensure that tests are green:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
bundle exec rake test
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
6. Bump gem version in lib/linguist/version.rb
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
7. Make a PR to github/linguist
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
8. Build a local gem: `bundle exec rake build_gem`
|
||||||
|
.br
|
||||||
|
.ul 5
|
||||||
|
9. Test the gem:
|
||||||
|
.sp
|
||||||
|
.in +5
|
||||||
|
.un 5
|
||||||
|
i. Bump the Gemfile and Gemfile.lock versions for an app which relies
|
||||||
|
on this gem
|
||||||
|
.un 5
|
||||||
|
ii. Install the new gem locally
|
||||||
|
.un 5
|
||||||
|
iii. Test behaviour locally, branch deploy, whatever needs to happen.
|
||||||
|
.br
|
||||||
|
.in -5
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
10. Merge github/linguist PR
|
||||||
|
.sp
|
||||||
|
.ul 5
|
||||||
|
11. Tag and push:
|
||||||
|
.sp
|
||||||
|
.in +2
|
||||||
|
git tag vx.xx.xx;
|
||||||
|
.br
|
||||||
|
git push --tags
|
||||||
|
.in -2
|
||||||
|
.sp
|
||||||
|
12. Push to rubygems.org
|
||||||
|
.br
|
||||||
|
.in +2
|
||||||
|
gem push github-linguist-3.0.0.gem
|
||||||
|
.in -2
|
||||||
|
.sp 2
|
||||||
8644
samples/RUNOFF/longlib.rno
Normal file
8644
samples/RUNOFF/longlib.rno
Normal file
File diff suppressed because it is too large
Load Diff
1773
samples/RUNOFF/mcp_help.rnh
Normal file
1773
samples/RUNOFF/mcp_help.rnh
Normal file
File diff suppressed because it is too large
Load Diff
2
vendor/grammars/Handlebars
vendored
2
vendor/grammars/Handlebars
vendored
Submodule vendor/grammars/Handlebars updated: 94ef9439d8...c07f986ae7
2
vendor/grammars/MagicPython
vendored
2
vendor/grammars/MagicPython
vendored
Submodule vendor/grammars/MagicPython updated: 820a9310f6...f4ff7de27f
2
vendor/grammars/NimLime
vendored
2
vendor/grammars/NimLime
vendored
Submodule vendor/grammars/NimLime updated: 5089ecab59...2f5ec25fe6
2
vendor/grammars/PHP-Twig.tmbundle
vendored
2
vendor/grammars/PHP-Twig.tmbundle
vendored
Submodule vendor/grammars/PHP-Twig.tmbundle updated: f4f7529ac2...9e802d525e
2
vendor/grammars/Sublime-SQF-Language
vendored
2
vendor/grammars/Sublime-SQF-Language
vendored
Submodule vendor/grammars/Sublime-SQF-Language updated: 777931999d...984606e146
2
vendor/grammars/Sublime-VimL
vendored
2
vendor/grammars/Sublime-VimL
vendored
Submodule vendor/grammars/Sublime-VimL updated: 4b23352ce5...b453aff6f7
2
vendor/grammars/SublimeGDB
vendored
2
vendor/grammars/SublimeGDB
vendored
Submodule vendor/grammars/SublimeGDB updated: 0afb64f273...d9a512da6e
2
vendor/grammars/TLA
vendored
2
vendor/grammars/TLA
vendored
Submodule vendor/grammars/TLA updated: 7e351a9cdf...5dc130cab3
2
vendor/grammars/applescript.tmbundle
vendored
2
vendor/grammars/applescript.tmbundle
vendored
Submodule vendor/grammars/applescript.tmbundle updated: bfb426974d...5067ef67a5
1
vendor/grammars/atom-language-1c-bsl
vendored
Submodule
1
vendor/grammars/atom-language-1c-bsl
vendored
Submodule
Submodule vendor/grammars/atom-language-1c-bsl added at 787ea4fd3a
2
vendor/grammars/atom-language-purescript
vendored
2
vendor/grammars/atom-language-purescript
vendored
Submodule vendor/grammars/atom-language-purescript updated: 83d188103f...fc8b0bf9da
2
vendor/grammars/atom-language-stan
vendored
2
vendor/grammars/atom-language-stan
vendored
Submodule vendor/grammars/atom-language-stan updated: 2fa2745da7...0a79d383b7
1
vendor/grammars/blitzmax
vendored
Submodule
1
vendor/grammars/blitzmax
vendored
Submodule
Submodule vendor/grammars/blitzmax added at 7ee210811a
2
vendor/grammars/c.tmbundle
vendored
2
vendor/grammars/c.tmbundle
vendored
Submodule vendor/grammars/c.tmbundle updated: d26c35164a...fa4b7e2114
2
vendor/grammars/css.tmbundle
vendored
2
vendor/grammars/css.tmbundle
vendored
Submodule vendor/grammars/css.tmbundle updated: 94f7111c29...d79e9c0137
1
vendor/grammars/cython
vendored
Submodule
1
vendor/grammars/cython
vendored
Submodule
Submodule vendor/grammars/cython added at e9f4d3a1e4
2
vendor/grammars/d.tmbundle
vendored
2
vendor/grammars/d.tmbundle
vendored
Submodule vendor/grammars/d.tmbundle updated: e4beff2ce5...8763c4c5f2
2
vendor/grammars/elixir-tmbundle
vendored
2
vendor/grammars/elixir-tmbundle
vendored
Submodule vendor/grammars/elixir-tmbundle updated: 6ee8051a75...6d0417e8eb
1
vendor/grammars/forth
vendored
Submodule
1
vendor/grammars/forth
vendored
Submodule
Submodule vendor/grammars/forth added at 0cf0ec91f6
1
vendor/grammars/haskell.tmbundle
vendored
1
vendor/grammars/haskell.tmbundle
vendored
Submodule vendor/grammars/haskell.tmbundle deleted from df3d54278a
2
vendor/grammars/java.tmbundle
vendored
2
vendor/grammars/java.tmbundle
vendored
Submodule vendor/grammars/java.tmbundle updated: 64294ae0b6...faffa518d0
2
vendor/grammars/json.tmbundle
vendored
2
vendor/grammars/json.tmbundle
vendored
Submodule vendor/grammars/json.tmbundle updated: 0762cbdcb3...563b6f629b
1
vendor/grammars/language-asn1
vendored
Submodule
1
vendor/grammars/language-asn1
vendored
Submodule
Submodule vendor/grammars/language-asn1 added at d45daeb849
2
vendor/grammars/language-babel
vendored
2
vendor/grammars/language-babel
vendored
Submodule vendor/grammars/language-babel updated: 0d093e8ffe...c9d6dbf463
2
vendor/grammars/language-blade
vendored
2
vendor/grammars/language-blade
vendored
Submodule vendor/grammars/language-blade updated: 50dcfb72af...fcbe2c2022
2
vendor/grammars/language-clojure
vendored
2
vendor/grammars/language-clojure
vendored
Submodule vendor/grammars/language-clojure updated: d41af28800...bc86668c40
2
vendor/grammars/language-coffee-script
vendored
2
vendor/grammars/language-coffee-script
vendored
Submodule vendor/grammars/language-coffee-script updated: 9ebf474016...8f001efe73
2
vendor/grammars/language-crystal
vendored
2
vendor/grammars/language-crystal
vendored
Submodule vendor/grammars/language-crystal updated: ec1e4991e6...0d7ac572e4
2
vendor/grammars/language-csharp
vendored
2
vendor/grammars/language-csharp
vendored
Submodule vendor/grammars/language-csharp updated: b3f1130b1a...c97c4bf74d
2
vendor/grammars/language-csound
vendored
2
vendor/grammars/language-csound
vendored
Submodule vendor/grammars/language-csound updated: f5c603ac11...29d8eca1a8
2
vendor/grammars/language-gfm
vendored
2
vendor/grammars/language-gfm
vendored
Submodule vendor/grammars/language-gfm updated: 5435923521...a55c18c3dc
2
vendor/grammars/language-graphql
vendored
2
vendor/grammars/language-graphql
vendored
Submodule vendor/grammars/language-graphql updated: 037e5d46ea...d88cbb73e2
1
vendor/grammars/language-haskell
vendored
Submodule
1
vendor/grammars/language-haskell
vendored
Submodule
Submodule vendor/grammars/language-haskell added at 296a7e94df
2
vendor/grammars/language-javascript
vendored
2
vendor/grammars/language-javascript
vendored
Submodule vendor/grammars/language-javascript updated: 83f9e51bc9...e7b00e4d15
2
vendor/grammars/language-less
vendored
2
vendor/grammars/language-less
vendored
Submodule vendor/grammars/language-less updated: 234fd8a37b...d4f5db5fba
2
vendor/grammars/language-python
vendored
2
vendor/grammars/language-python
vendored
Submodule vendor/grammars/language-python updated: d5ae69749b...bc20450849
2
vendor/grammars/language-renpy
vendored
2
vendor/grammars/language-renpy
vendored
Submodule vendor/grammars/language-renpy updated: 883f51f4ef...a3b9bbed66
2
vendor/grammars/language-restructuredtext
vendored
2
vendor/grammars/language-restructuredtext
vendored
Submodule vendor/grammars/language-restructuredtext updated: 7133612568...f4f931ab7f
1
vendor/grammars/language-roff
vendored
Submodule
1
vendor/grammars/language-roff
vendored
Submodule
Submodule vendor/grammars/language-roff added at bef4485150
2
vendor/grammars/language-shellscript
vendored
2
vendor/grammars/language-shellscript
vendored
Submodule vendor/grammars/language-shellscript updated: 8019ad833c...6b936daeca
2
vendor/grammars/language-toc-wow
vendored
2
vendor/grammars/language-toc-wow
vendored
Submodule vendor/grammars/language-toc-wow updated: f538862fdd...03e7c2a02f
2
vendor/grammars/language-yaml
vendored
2
vendor/grammars/language-yaml
vendored
Submodule vendor/grammars/language-yaml updated: 9f55beb635...784cecc64f
2
vendor/grammars/latex.tmbundle
vendored
2
vendor/grammars/latex.tmbundle
vendored
Submodule vendor/grammars/latex.tmbundle updated: a5c14e1ce9...cb0c75906c
2
vendor/grammars/objective-c.tmbundle
vendored
2
vendor/grammars/objective-c.tmbundle
vendored
Submodule vendor/grammars/objective-c.tmbundle updated: fdcedb95de...583d31f673
1
vendor/grammars/parrot
vendored
Submodule
1
vendor/grammars/parrot
vendored
Submodule
Submodule vendor/grammars/parrot added at b56e84139f
2
vendor/grammars/pawn-sublime-language
vendored
2
vendor/grammars/pawn-sublime-language
vendored
Submodule vendor/grammars/pawn-sublime-language updated: 879fae6157...1916b03ba0
2
vendor/grammars/ruby-slim.tmbundle
vendored
2
vendor/grammars/ruby-slim.tmbundle
vendored
Submodule vendor/grammars/ruby-slim.tmbundle updated: 7452b27ea4...2016357d9c
2
vendor/grammars/sas.tmbundle
vendored
2
vendor/grammars/sas.tmbundle
vendored
Submodule vendor/grammars/sas.tmbundle updated: 012368ab93...776b54772b
1
vendor/grammars/secondlife-lsl
vendored
Submodule
1
vendor/grammars/secondlife-lsl
vendored
Submodule
Submodule vendor/grammars/secondlife-lsl added at ee359d634c
2
vendor/grammars/smali-sublime
vendored
2
vendor/grammars/smali-sublime
vendored
Submodule vendor/grammars/smali-sublime updated: 60a1fdb344...5bcea806cf
2
vendor/grammars/sublime-autoit
vendored
2
vendor/grammars/sublime-autoit
vendored
Submodule vendor/grammars/sublime-autoit updated: d4e742a73a...eeca503056
1
vendor/grammars/sublime-rexx
vendored
Submodule
1
vendor/grammars/sublime-rexx
vendored
Submodule
Submodule vendor/grammars/sublime-rexx added at a649cf3aef
2
vendor/grammars/sublime-rust
vendored
2
vendor/grammars/sublime-rust
vendored
Submodule vendor/grammars/sublime-rust updated: 167018cc0f...d3c63dec57
2
vendor/grammars/sublime-typescript
vendored
2
vendor/grammars/sublime-typescript
vendored
Submodule vendor/grammars/sublime-typescript updated: 0d538fc748...27529a651f
1
vendor/grammars/sublime_man_page_support
vendored
1
vendor/grammars/sublime_man_page_support
vendored
Submodule vendor/grammars/sublime_man_page_support deleted from f3568e9e61
2
vendor/grammars/swift.tmbundle
vendored
2
vendor/grammars/swift.tmbundle
vendored
Submodule vendor/grammars/swift.tmbundle updated: 662fd22bf8...b3cb4372f2
1
vendor/grammars/vhdl
vendored
Submodule
1
vendor/grammars/vhdl
vendored
Submodule
Submodule vendor/grammars/vhdl added at e88be21845
2
vendor/grammars/vue-syntax-highlight
vendored
2
vendor/grammars/vue-syntax-highlight
vendored
Submodule vendor/grammars/vue-syntax-highlight updated: a29a875bf3...8e729750bc
1
vendor/grammars/xquery
vendored
Submodule
1
vendor/grammars/xquery
vendored
Submodule
Submodule vendor/grammars/xquery added at 1908094946
25
vendor/licenses/grammar/atom-language-1c-bsl.txt
vendored
Normal file
25
vendor/licenses/grammar/atom-language-1c-bsl.txt
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: atom-language-1c-bsl
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
Copyright © 2015 xDrivenDevelopment
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
type: grammar
|
type: grammar
|
||||||
name: haskell.tmbundle
|
name: blitzmax
|
||||||
license: permissive
|
license: permissive
|
||||||
curated: true
|
curated: true
|
||||||
---
|
---
|
||||||
15
vendor/licenses/grammar/cython.txt
vendored
Normal file
15
vendor/licenses/grammar/cython.txt
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: cython
|
||||||
|
license: permissive
|
||||||
|
curated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
|
||||||
|
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||||
14
vendor/licenses/grammar/forth.txt
vendored
Normal file
14
vendor/licenses/grammar/forth.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: forth
|
||||||
|
license: permissive
|
||||||
|
curated: true
|
||||||
|
---
|
||||||
|
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
|
||||||
|
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||||
26
vendor/licenses/grammar/language-asn1.txt
vendored
Normal file
26
vendor/licenses/grammar/language-asn1.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-asn1
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Alexander Langley
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
26
vendor/licenses/grammar/language-haskell.txt
vendored
Normal file
26
vendor/licenses/grammar/language-haskell.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-haskell
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Atom-Haskell
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
18
vendor/licenses/grammar/language-roff.txt
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: language-roff
|
||||||
|
license: isc
|
||||||
|
---
|
||||||
|
Copyright (c) 2016, John Gardner
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
14
vendor/licenses/grammar/parrot.txt
vendored
Normal file
14
vendor/licenses/grammar/parrot.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: parrot
|
||||||
|
license: permissive
|
||||||
|
curated: true
|
||||||
|
---
|
||||||
|
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
|
||||||
|
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||||
14
vendor/licenses/grammar/secondlife-lsl.txt
vendored
Normal file
14
vendor/licenses/grammar/secondlife-lsl.txt
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: secondlife-lsl
|
||||||
|
license: permissive
|
||||||
|
curated: true
|
||||||
|
---
|
||||||
|
If not otherwise specified (see below), files in this repository fall under the following license:
|
||||||
|
|
||||||
|
Permission to copy, use, modify, sell and distribute this
|
||||||
|
software is granted. This software is provided "as is" without
|
||||||
|
express or implied warranty, and with no claim as to its
|
||||||
|
suitability for any purpose.
|
||||||
|
|
||||||
|
An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
|
||||||
26
vendor/licenses/grammar/sublime-rexx.txt
vendored
Normal file
26
vendor/licenses/grammar/sublime-rexx.txt
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
type: grammar
|
||||||
|
name: sublime-rexx
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Mike Blocker
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user