mirror of
https://github.com/moparisthebest/Simba
synced 2024-11-23 17:52:16 -05:00
Merge branch 'master' into cts-rework
Conflicts: Doc/sphinx/conf.py Doc/sphinx/libmml/intro.rst
This commit is contained in:
commit
7c8600311c
@ -48,9 +48,9 @@ copyright = u'2010, Merlijn Wajer, Raymond van Venetie'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.820'
|
||||
version = '0.97'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.820'
|
||||
release = '0.97'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
@ -94,7 +94,7 @@ pygments_style = 'sphinx'
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. Major themes that come with
|
||||
# Sphinx are currently 'default' and 'sphinxdoc'.
|
||||
html_theme = 'default'
|
||||
html_theme = 'nature'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
@ -176,7 +176,7 @@ htmlhelp_basename = 'Simbadoc'
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'Simba.tex', u'Simba Documentation',
|
||||
u'Merlijn Wajer, Raymond van Venetie', 'manual'),
|
||||
u'Merlijn Wajer, Raymond van Venetië, Nielsie95', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
|
@ -1,7 +1,9 @@
|
||||
.. _docdoc:
|
||||
|
||||
Documentation Documentation
|
||||
===========================
|
||||
|
||||
This page is the documentation for the documentation.
|
||||
This page is the documentation for the documentation.
|
||||
|
||||
It is very important to know this by heart when you are writing documentation
|
||||
for Simba.
|
||||
@ -18,12 +20,13 @@ be found at the bottom of the page.
|
||||
|
||||
Building the documentation
|
||||
--------------------------
|
||||
|
||||
In the future, the online documentation will be refreshed every hour. However,
|
||||
if you want to build the documentation yourself, you should install
|
||||
``python-sphinx``.
|
||||
``python-sphinx``.
|
||||
|
||||
Move to the ``Simba/doc/sphinx`` directory and run ``make all``.
|
||||
This will place an HTML version of the documentation in ``_build/html``.
|
||||
Move to the ``Simba/doc/sphinx`` directory and run ``make all``.
|
||||
This will place an HTML version of the documentation in ``_build/html``.
|
||||
|
||||
.. note::
|
||||
The build instructions are for Linux only. If you want to build the doc on
|
||||
@ -66,6 +69,28 @@ The titles of all major sections have all words capitalized. (The ones with
|
||||
The minor sections and subsections (---) and (~~~) have only the first word and
|
||||
Simba specific words (like Simba itself) capitalized.
|
||||
|
||||
Try to stick to the Python documentation standards.
|
||||
Try to stick to the Python documentation standards.
|
||||
( http://docs.python.org/using/index.html )
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
Sphinx has references, most of the .rst files contain labels and references.
|
||||
|
||||
A label looks something like this:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
.. _<X>-<Y>:
|
||||
|
||||
Where X is either the name of file or folder; and Y is the name of the
|
||||
file/function if X is a folder. For referring to specific functions for example,
|
||||
use:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
.. _scriptref-movemouse:
|
||||
|
||||
To define a label for the MoveMouse function. Labels are always placed right
|
||||
above section/chapter declarations.
|
||||
|
||||
|
@ -1,7 +1,11 @@
|
||||
Feature Overview
|
||||
================
|
||||
Detailed Feature Overview
|
||||
=========================
|
||||
|
||||
Simba has some fancy features; the most basic operations as well as detailed
|
||||
information about settings will be explained here.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
features/scriptmanager.rst
|
||||
features/autoupdate.rst
|
||||
@ -10,5 +14,3 @@ Feature Overview
|
||||
features/ui.rst
|
||||
features/notwellknown.rst
|
||||
|
||||
|
||||
Most stuff here is probably misplaced anyway.
|
||||
|
@ -1,6 +1,9 @@
|
||||
Not Well Known Features
|
||||
=======================
|
||||
|
||||
..
|
||||
TODO
|
||||
|
||||
Simba has several features that are relatively unknown.
|
||||
A few will be listed here.
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
.. _gettingstarted:
|
||||
|
||||
Getting Started with Simba
|
||||
==========================
|
||||
@ -18,10 +19,12 @@ minutes.
|
||||
Simba installer
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Everyone can download Simba at http://wizzup.org/simba/
|
||||
Go to download and download the Simba installer.
|
||||
Everyone can get Simba at http://wizzup.org/simba/
|
||||
|
||||
Once it is done downloading, simply run the installer and follow the steps.
|
||||
Go to *Download* and download the Simba installer.
|
||||
|
||||
Once it is done downloading, simply run the installer, follow the steps and
|
||||
please make notice of the following note:
|
||||
|
||||
.. note::
|
||||
Simba will install to C:/ by default; if you want to install it
|
||||
@ -35,18 +38,20 @@ Once it is done downloading, simply run the installer and follow the steps.
|
||||
|
||||
Simba will probably tell you there is an update available. In this case, an
|
||||
update button will appear. Click it and the Simba Updater will show up.
|
||||
Alternatively you can update Simba using Tools -> Update.
|
||||
Alternatively you can update Simba using Tools -> Update which will update Simba
|
||||
if there is a new update available.
|
||||
|
||||
.. note::
|
||||
Updating Simba regularly is recommended.
|
||||
Updating Simba as soon as an update is released is recommended.
|
||||
|
||||
Downloading Simba binary
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Portable Simba Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is harder and not recommended. Steps on how to do this will follow later.
|
||||
..
|
||||
TODO
|
||||
|
||||
For now, simply stick to the installer and update Simba after the install has
|
||||
completed.
|
||||
To get a portable installation at this time is not supported but will follow
|
||||
sooner or later.
|
||||
|
||||
Setting up SRL 4 with Simba
|
||||
---------------------------
|
||||
@ -54,7 +59,7 @@ Setting up SRL 4 with Simba
|
||||
If you were using the :ref:`simba-installer` then you can simply enable the
|
||||
``SRL Updater`` extension. (Go to View -> Extensions and enable ``srl.sex``)
|
||||
|
||||
See :ref:`simbaext` for more information on Extensions.
|
||||
See :ref:`simbaext` for more information on (other) Simba extensions.
|
||||
|
||||
This is the only supported way. You can simply do a svn checkout on the srl
|
||||
repository, but if you can do that, then you should be able to set up SRL
|
||||
@ -68,6 +73,9 @@ This will follow later, upon SRL 5 release.
|
||||
Installing scripts
|
||||
------------------
|
||||
|
||||
..
|
||||
TODO
|
||||
|
||||
Scripts can be downloaded with the Script Manager, in Tools -> Script Manager.
|
||||
|
||||
.. note::
|
||||
|
@ -7,11 +7,28 @@ Welcome to the Simba documentation!
|
||||
===================================
|
||||
|
||||
.. note::
|
||||
The documentation is still WIP (Work In Progress)
|
||||
|
||||
Welcome to the Documentation for the Simba project.
|
||||
This documentation is aimed at providing documentation on just about anything
|
||||
you'd want to know about Simba.
|
||||
Welcome to the Documentation for the Simba project.
|
||||
The documentation is actively being worked on and somewhat incomplete.
|
||||
|
||||
This documentation aims to provide information on just about anything
|
||||
there is to know about Simba.
|
||||
|
||||
Starting points are :ref:`whatis`, :ref:`gettingstarted` and the :ref:`scriptref`
|
||||
|
||||
Want to help out with the documentation? See :ref:`docdoc`.
|
||||
|
||||
|
||||
Simba is a program used to repeat certain (complicated) tasks. Typically these
|
||||
tasks involve using the mouse and keyboard. Simba is programmable, which means
|
||||
you can design your own logic and steps that Simba will follow, based upon
|
||||
certain input or as a reaction to a certain action.
|
||||
|
||||
Simba is created by the SRL community, fully open source and actively
|
||||
maintained.
|
||||
|
||||
For community forums see http://villavu.com/
|
||||
|
||||
|
||||
Contents:
|
||||
|
||||
@ -19,7 +36,6 @@ Contents:
|
||||
:maxdepth: 2
|
||||
|
||||
whatis.rst
|
||||
whatsnew.rst
|
||||
whysimba.rst
|
||||
gettingstarted.rst
|
||||
troubleshooting.rst
|
||||
|
@ -12,7 +12,7 @@ libMML exactly?
|
||||
|
||||
libMML is a loadable C-like library that provides most of the MML functionality.
|
||||
For the ones that do not know, MML is the core component for Simba that does all
|
||||
the *computational* and *algorithmic* work. See :ref:`mml-ref` for more
|
||||
the *computational* and *algorithmic* work. See :ref:`mmlref` for more
|
||||
information.
|
||||
|
||||
To summarize, the MML covers:
|
||||
@ -59,3 +59,45 @@ write - again - their own wrapper around libMML. This is what is being done with
|
||||
*pyMML*, the python libMML wrapper. It is still as much in development as libMML
|
||||
is, but the functionality exposed by libMML is succesfully used.
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
As of writing the pyMML usage looks like this, the passing around of a client
|
||||
may be removed in a later stage, or at least have it's behaviour changed.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
DLL = MMLCore('../libmml.so')
|
||||
|
||||
client = DLL.dll.create_client()
|
||||
print 'Python Client: %d' % client
|
||||
if client in (0, 1):
|
||||
raise Exception('Could create a client');
|
||||
|
||||
c = Color(DLL, client)
|
||||
|
||||
|
||||
ret = c.find((0, 0, 100, 100), 0)
|
||||
print ret
|
||||
|
||||
ret = c.find_all((0, 0, 100, 100), 0, tol=100)
|
||||
print ret
|
||||
|
||||
m = Mouse(DLL, client)
|
||||
|
||||
print m[(Mouse.Pos, Mouse.Left, Mouse.Right)]
|
||||
m[(Mouse.Pos, Mouse.Right)] = ((300,300), True)
|
||||
|
||||
print m.getButtonStates()
|
||||
sleep(0.5)
|
||||
m.setPos((200,200))
|
||||
|
||||
sleep(2)
|
||||
print 'Done'
|
||||
|
||||
m[(Mouse.Left, Mouse.Right, Mouse.Middle)] = [False for x in range(3)]
|
||||
for v in zip((Mouse.Left, Mouse.Right), m[(Mouse.Left, Mouse.Right)]):
|
||||
print v
|
||||
print m.getPos()
|
||||
|
||||
del DLL
|
||||
>>>>>>> master
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _mmlref:
|
||||
|
||||
MML Reference
|
||||
=============
|
||||
|
||||
@ -10,7 +12,7 @@ There currently is an effort to create a standalone library of the MML; called
|
||||
*libMML*. This way any application can just load the library and use the MML
|
||||
functionality.
|
||||
|
||||
The MML is split up in "Core" classes and "Addon" classes.
|
||||
The MML is split up in "Core" classes and "Addon" classes.
|
||||
|
||||
.. note::
|
||||
This section needs to explain more on the core/addon differences,
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _scriptref:
|
||||
|
||||
Scripting Reference
|
||||
===================
|
||||
|
||||
|
@ -4,12 +4,44 @@
|
||||
Bitmaps
|
||||
=======
|
||||
|
||||
A bitmap in Simba is simply a two dimensional *field of colours*. These colours
|
||||
can all be the same, or they can be of different colours. Simba features
|
||||
functions to create, manipulate and search for bitmaps.
|
||||
|
||||
.. INSERT BITMAP EXAMPLE HERE (Picture, etc)
|
||||
|
||||
The bitmaps are - just as files - represented as integer in Simba (they point to
|
||||
a list of bitmaps, and the value of the integer is the position in the list).
|
||||
So typically, when referring to bitmaps in Simba, you simply represent them as
|
||||
an integer:
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
var bmp, x, y: integer;
|
||||
bmp := CreateBitmap(10, 10); // Create a bitmap of size (10, 10)
|
||||
if FindBitmapIn(bmp, x, y, 0, 0, 300, 300) then
|
||||
writeln('Found it!');
|
||||
FreeBitmap(bmp); // Don't forget to free it when we are done.
|
||||
|
||||
Note that the previous example doesn't make a lot of sense as the bitmap has
|
||||
only been created and not filled with any colours, they are as of yet,
|
||||
undefined. You can also create bitmaps from screenshots and load them when your
|
||||
script starts using the :ref:`scriptref-bitmapfromstring` function, or
|
||||
simple store them as files and load them using the :ref:`scriptref-loadbitmap`
|
||||
function.
|
||||
|
||||
Word of caution on bitmap creation
|
||||
----------------------------------
|
||||
|
||||
Bitmaps in Simba are internally all instances of *TMufasBitmap*. Scripts should
|
||||
generally access bitmaps using their *handle*: an integer. All functions
|
||||
referenced here either require a bitmap *handle* or return one.
|
||||
|
||||
If you want to gain more access over a specific bitmap, see the
|
||||
*GetMufasaBitmap* function. It is highly unrecommended to create bitmaps with:
|
||||
*GetMufasaBitmap* function. It is highly unrecommended to create bitmaps like
|
||||
this, because Simba will not free them automatically for you. (There's no
|
||||
problem doing it like this if you only want to perform operations on it and then
|
||||
free it again)
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
@ -48,6 +80,7 @@ then call this function to get the class reference.
|
||||
|
||||
bmp.SetSize(150,150); // also changes bmph, as they are the same bitmap.
|
||||
|
||||
.. _scriptref-createbitmapstring:
|
||||
|
||||
CreateBitmapString
|
||||
------------------
|
||||
@ -56,7 +89,11 @@ CreateBitmapString
|
||||
|
||||
function CreateBitmapString(bmp : integer) : string;
|
||||
|
||||
Creates a string for the given bitmap.
|
||||
Creates a string for the given bitmap, you can use this to save a bitmap for
|
||||
later us, for example loading it again using :ref:`scriptref-bitmapfromstring`.
|
||||
|
||||
|
||||
.. _scriptref-createbitmap:
|
||||
|
||||
CreateBitmap
|
||||
------------
|
||||
@ -65,8 +102,10 @@ CreateBitmap
|
||||
|
||||
function CreateBitmap(w,h :integer) : integer;
|
||||
|
||||
Create a bitmap with width *h* and height *h*. Returns the bitmap reference.
|
||||
Create a bitmap with width *h* and height *h*.
|
||||
Returns the reference to the created bitmap.
|
||||
|
||||
.. _scriptref-freebitmap:
|
||||
|
||||
FreeBitmap
|
||||
----------
|
||||
@ -80,6 +119,8 @@ Be careful when working with bitmaps: not freeing it when you no longer need it
|
||||
leads to memory leaks, which will eventually make your script crash. (Unless you
|
||||
stop it in time, in which case Simba will free the bitmaps for you)
|
||||
|
||||
.. _scriptref-savebitmap:
|
||||
|
||||
SaveBitmap
|
||||
----------
|
||||
|
||||
@ -89,6 +130,8 @@ SaveBitmap
|
||||
|
||||
Save the given bitmap to the specified path.
|
||||
|
||||
.. _scriptref-bitmapfromstring:
|
||||
|
||||
BitmapFromString
|
||||
----------------
|
||||
|
||||
@ -99,6 +142,7 @@ BitmapFromString
|
||||
Load a bitmap from the given string. This command is usually generated with the
|
||||
Bitmap to String feature in Simba.
|
||||
|
||||
.. _scriptref-loadbitmap:
|
||||
|
||||
LoadBitmap
|
||||
----------
|
||||
@ -107,8 +151,10 @@ LoadBitmap
|
||||
|
||||
function LoadBitmap(Path : string) : integer;
|
||||
|
||||
Load a bitmap from a path to a file. Known formats are .bmp and .png. (Possibly
|
||||
others, don't know for sure)
|
||||
Load a bitmap from a path to a file. Formats known to work are BMP and PNG
|
||||
images.
|
||||
|
||||
.. _scriptref-setbitmapsize:
|
||||
|
||||
SetBitmapSize
|
||||
-------------
|
||||
@ -117,7 +163,12 @@ SetBitmapSize
|
||||
|
||||
procedure SetBitmapSize(Bmp,NewW,NewH : integer);
|
||||
|
||||
Change the size of the bitmap. Previous data will be preserved (if possible).
|
||||
Change the size of the bitmap.
|
||||
Previous data will be preserved (if possible), so enlarging the bitmap won't
|
||||
destroy the old data, but shrinking it will inevitably destroy some data.
|
||||
(Everything that falls out of the new bounds)
|
||||
|
||||
.. _scriptref-getbitmapsize:
|
||||
|
||||
GetBitmapSize
|
||||
-------------
|
||||
@ -128,6 +179,8 @@ GetBitmapSize
|
||||
|
||||
Returns the size of the bitmap in *BmpW*, *BmpH*.
|
||||
|
||||
.. _scriptref-stretchbitmapresize:
|
||||
|
||||
StretchBitmapResize
|
||||
-------------------
|
||||
|
||||
@ -136,6 +189,8 @@ StretchBitmapResize
|
||||
procedure StretchBitmapResize(Bmp,NewW,NewH : integer);
|
||||
|
||||
|
||||
.. _scriptref-createmirroredbitmap:
|
||||
|
||||
CreateMirroredBitmap
|
||||
--------------------
|
||||
|
||||
@ -144,6 +199,8 @@ CreateMirroredBitmap
|
||||
function CreateMirroredBitmap(Bmp : integer) : integer;
|
||||
|
||||
|
||||
.. _scriptref-createmirroredbitmapex:
|
||||
|
||||
CreateMirroredBitmapEx
|
||||
----------------------
|
||||
|
||||
@ -152,6 +209,8 @@ CreateMirroredBitmapEx
|
||||
function CreateMirroredBitmapEx(Bmp : integer; MirrorStyle : TBmpMirrorStyle) : integer;
|
||||
|
||||
|
||||
.. _scriptref-fastsetpixel:
|
||||
|
||||
FastSetPixel
|
||||
------------
|
||||
|
||||
@ -161,6 +220,8 @@ FastSetPixel
|
||||
|
||||
Set the pixel on the bitmap at position x, y to *color*.
|
||||
|
||||
.. _scriptref-fastsetpixels:
|
||||
|
||||
FastSetPixels
|
||||
-------------
|
||||
|
||||
@ -170,6 +231,7 @@ FastSetPixels
|
||||
|
||||
Set the pixels on the bitmap at position TPA[index] to Colors[index].
|
||||
|
||||
.. _scriptref-fastgetpixel:
|
||||
|
||||
FastGetPixel
|
||||
------------
|
||||
@ -180,6 +242,8 @@ FastGetPixel
|
||||
|
||||
Return the colour of pixel on the bitmap, position specified by x, y.
|
||||
|
||||
.. _scriptref-fastgetpixels:
|
||||
|
||||
FastGetPixels
|
||||
-------------
|
||||
|
||||
@ -189,6 +253,7 @@ FastGetPixels
|
||||
|
||||
Return an array of the colours on the bitmap; positions specified by *TPA*.
|
||||
|
||||
.. _scriptref-getbitmapareacolors:
|
||||
|
||||
GetBitmapAreaColors
|
||||
-------------------
|
||||
@ -200,6 +265,8 @@ GetBitmapAreaColors
|
||||
Returns all the colours in the area defined by (*xs*, *xy*, *xe*, *ye*) on the
|
||||
bitmap in a two dimensions integer array.
|
||||
|
||||
.. _scriptref-fastdrawclear:
|
||||
|
||||
FastDrawClear
|
||||
-------------
|
||||
|
||||
@ -209,6 +276,8 @@ FastDrawClear
|
||||
|
||||
Draw *Color* on every pixel on the bitmap.
|
||||
|
||||
.. _scriptref-fastdrawtransparent:
|
||||
|
||||
FastDrawTransparent
|
||||
-------------------
|
||||
|
||||
@ -217,6 +286,8 @@ FastDrawTransparent
|
||||
procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer);
|
||||
|
||||
|
||||
.. _scriptref-setransparentcolor:
|
||||
|
||||
SetTransparentColor
|
||||
-------------------
|
||||
|
||||
@ -224,6 +295,7 @@ SetTransparentColor
|
||||
|
||||
procedure SetTransparentColor(bmp : integer; Color : TColor);
|
||||
|
||||
.. _scriptref-getransparentcolor:
|
||||
|
||||
GetTransparentColor
|
||||
-------------------
|
||||
@ -232,6 +304,7 @@ GetTransparentColor
|
||||
|
||||
function GetTransparentColor(bmp: integer) : TColor;
|
||||
|
||||
.. _scriptref-fastreplacecolor:
|
||||
|
||||
FastReplaceColor
|
||||
----------------
|
||||
@ -240,6 +313,7 @@ FastReplaceColor
|
||||
|
||||
procedure FastReplaceColor(Bmp : integer; OldColor,NewColor : TColor);
|
||||
|
||||
.. _scriptref-copyclienttobitmap:
|
||||
|
||||
CopyClientToBitmap
|
||||
------------------
|
||||
@ -250,6 +324,8 @@ CopyClientToBitmap
|
||||
|
||||
Copy client area *xs, ys, xe, ye* to specified bitmap.
|
||||
|
||||
.. _scriptref-bitmapfromclient:
|
||||
|
||||
BitmapFromClient
|
||||
----------------
|
||||
|
||||
@ -259,6 +335,8 @@ BitmapFromClient
|
||||
|
||||
Create a bitmap from the client. Area specified by *xs, ye, xe, ye*.
|
||||
|
||||
.. _scriptref-setbitmapname:
|
||||
|
||||
SetBitmapName
|
||||
-------------
|
||||
|
||||
@ -269,6 +347,20 @@ SetBitmapName
|
||||
Assign a name to the bitmap. Mainly for debugging purposes. (It will write the
|
||||
name of the bitmap if it hasn't been freed.)
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
program new;
|
||||
|
||||
var bmp: integer;
|
||||
begin
|
||||
bmp := CreateBitmap(10, 10);
|
||||
SetBitmapName(bmp, 'We will not free this bitmap');
|
||||
end.
|
||||
// Simba will print what bitmap has not been freed (along with his long
|
||||
// name)
|
||||
|
||||
.. _scriptref-findbitmap:
|
||||
|
||||
FindBitmap
|
||||
----------
|
||||
|
||||
@ -279,6 +371,8 @@ FindBitmap
|
||||
Searches for the Bitmap *bmp* on the entire client. Returns true if found.
|
||||
If found, *x, y* specifies the position where the bitmap was found.
|
||||
|
||||
.. _scriptref-findbitmapin:
|
||||
|
||||
FindBitmapIn
|
||||
------------
|
||||
|
||||
@ -291,6 +385,8 @@ Searches for the Bitmap *bmp* on the client in the area defined by *xs,ys,xe,ye*
|
||||
Returns true if found. If found, *x, y* specifies the position where the bitmap
|
||||
was found.
|
||||
|
||||
.. _scriptref-findbitmaptolerancein:
|
||||
|
||||
FindBitmapToleranceIn
|
||||
---------------------
|
||||
|
||||
@ -300,10 +396,12 @@ FindBitmapToleranceIn
|
||||
|
||||
Searches for the Bitmap *bmp* on the client in the area defined by *xs,ys,xe,ye*.
|
||||
Tolerance defines the tolerance per pixel when matching bitmaps. See
|
||||
:ref:`scriptref_CTS` for more information on tolerance.
|
||||
:ref:`scriptref-CTS` for more information on tolerance.
|
||||
Returns true if found. If found, *x, y* specifies the position where the bitmap
|
||||
was found.
|
||||
|
||||
.. _scriptref-findbitmapspiral:
|
||||
|
||||
FindBitmapSpiral
|
||||
----------------
|
||||
|
||||
@ -316,6 +414,8 @@ Returns true if found. If found, *x, y* specifies the position where the bitmap
|
||||
was found. Search starts from a point defined by *x, y*.
|
||||
|
||||
|
||||
.. _scriptref-findbitmapsspiraltolerance:
|
||||
|
||||
FindBitmapsSpiralTolerance
|
||||
--------------------------
|
||||
|
||||
@ -326,10 +426,12 @@ FindBitmapsSpiralTolerance
|
||||
|
||||
Searches for the Bitmap *bmp* on the client in the area defined by *xs,ys,xe,ye*.
|
||||
Tolerance defines the tolerance per pixel when matching bitmaps. See
|
||||
:ref:`scriptref_CTS` for more information on tolerance.
|
||||
:ref:`scriptref-CTS` for more information on tolerance.
|
||||
Search starts from a point defined by *x, y*.
|
||||
Returns true if found. If found, each point in *TPA* specifies a match.
|
||||
|
||||
.. _scriptref-findbitmapspiraltolerance:
|
||||
|
||||
FindBitmapSpiralTolerance
|
||||
-------------------------
|
||||
|
||||
@ -339,11 +441,13 @@ FindBitmapSpiralTolerance
|
||||
|
||||
Searches for the Bitmap *bmp* on the client in the area defined by *xs,ys,xe,ye*.
|
||||
Tolerance defines the tolerance per pixel when matching bitmaps. See
|
||||
:ref:`scriptref_CTS` for more information on tolerance.
|
||||
:ref:`scriptref-CTS` for more information on tolerance.
|
||||
Search starts from a point defined by *x, y*.
|
||||
Returns true if found. If found, *x, y* specifies the position where the bitmap
|
||||
was found.
|
||||
|
||||
.. _scriptref-rotatebitmap:
|
||||
|
||||
RotateBitmap
|
||||
------------
|
||||
|
||||
@ -352,6 +456,8 @@ RotateBitmap
|
||||
function RotateBitmap(bitmap: Integer; angle: Extended): Integer;
|
||||
|
||||
|
||||
.. _scriptref-desaturatebitmap:
|
||||
|
||||
DesaturateBitmap
|
||||
----------------
|
||||
|
||||
@ -360,6 +466,8 @@ DesaturateBitmap
|
||||
function DesaturateBitmap(Bitmap : integer) : integer;
|
||||
|
||||
|
||||
.. _scriptref-invertbitmap:
|
||||
|
||||
InvertBitmap
|
||||
------------
|
||||
|
||||
@ -368,6 +476,8 @@ InvertBitmap
|
||||
procedure InvertBitmap(Bitmap : integer);
|
||||
|
||||
|
||||
.. _scriptref-copybitmap:
|
||||
|
||||
CopyBitmap
|
||||
----------
|
||||
|
||||
@ -377,6 +487,8 @@ CopyBitmap
|
||||
|
||||
Creates a copy of the *Bitmap*. Returns the bitmap copy.
|
||||
|
||||
.. _scriptref-greyscalebitmap:
|
||||
|
||||
GreyScaleBitmap
|
||||
---------------
|
||||
|
||||
@ -386,6 +498,7 @@ GreyScaleBitmap
|
||||
|
||||
Creates a copy of the bitmap, greyscaled.
|
||||
|
||||
.. _scriptref-brightnessbitmap:
|
||||
|
||||
BrightnessBitmap
|
||||
----------------
|
||||
@ -400,6 +513,8 @@ Returns a new bitmap with the brightness applied.
|
||||
If you instead want to apply brightness to the current bitmap, see
|
||||
:ref:`filter_apply_bitmap`
|
||||
|
||||
.. _scriptref-contrastbitmap:
|
||||
|
||||
ContrastBitmap
|
||||
--------------
|
||||
|
||||
@ -410,6 +525,7 @@ ContrastBitmap
|
||||
Changes the constrast of a bitmap, returns a new bitmap with the contrast
|
||||
applied.
|
||||
|
||||
.. _scriptref-posterizebitmap:
|
||||
|
||||
PosterizeBitmap
|
||||
---------------
|
||||
@ -441,6 +557,8 @@ Applying a filter on the current bitmap
|
||||
FreeBitmap(b);
|
||||
end.
|
||||
|
||||
.. _scriptref-createmaskfrombitmap:
|
||||
|
||||
CreateMaskFromBitmap
|
||||
--------------------
|
||||
|
||||
@ -449,6 +567,8 @@ CreateMaskFromBitmap
|
||||
function CreateMaskFromBitmap(Bitmap : integer) : TMask;
|
||||
|
||||
|
||||
.. _scriptref-findmasktolerance:
|
||||
|
||||
FindMaskTolerance
|
||||
-----------------
|
||||
|
||||
@ -457,6 +577,8 @@ FindMaskTolerance
|
||||
function FindMaskTolerance(const mask: TMask; var x, y: Integer; xs,ys, xe, ye: Integer; Tolerance, ContourTolerance: Integer): Boolean;
|
||||
|
||||
|
||||
.. _scriptref-findbitmapmasktolerance:
|
||||
|
||||
FindBitmapMaskTolerance
|
||||
-----------------------
|
||||
|
||||
@ -465,6 +587,8 @@ FindBitmapMaskTolerance
|
||||
function FindBitmapMaskTolerance(mask: Integer; var x, y: Integer; xs, ys, xe, ye: Integer; Tolerance, ContourTolerance: Integer): Boolean;
|
||||
|
||||
|
||||
.. _scriptref-finddeformedbitmaptolerancein:
|
||||
|
||||
FindDeformedBitmapToleranceIn
|
||||
-----------------------------
|
||||
|
||||
@ -473,6 +597,8 @@ FindDeformedBitmapToleranceIn
|
||||
function FindDeformedBitmapToleranceIn(bitmap: integer; var x,y: Integer; xs, ys, xe, ye: Integer; tolerance: Integer; Range: Integer; AllowPartialAccuracy: Boolean; var accuracy: Extended): Boolean;
|
||||
|
||||
|
||||
.. _scriptref-drawtpabitmap:
|
||||
|
||||
DrawTPABitmap
|
||||
-------------
|
||||
|
||||
@ -484,6 +610,7 @@ DrawTPABitmap
|
||||
on the bitmap by setting the pixel on the bitmap (position defined by tpa point)
|
||||
to *color*.
|
||||
|
||||
.. _scriptref-drawatpabitmap:
|
||||
|
||||
DrawATPABitmap
|
||||
--------------
|
||||
@ -497,6 +624,8 @@ Each point in the TPointArray is *painted* on the bitmap by setting
|
||||
the pixel on the bitmap (position defined by tpa point)
|
||||
to a color. Colors differ per TPointArray (group).
|
||||
|
||||
.. _scriptref-drawatpabitmapex:
|
||||
|
||||
DrawATPABitmapEx
|
||||
----------------
|
||||
|
||||
@ -509,6 +638,7 @@ Each point in the TPointArray is *painted* on the bitmap by setting
|
||||
the pixel on the bitmap (position defined by tpa point)
|
||||
to a color. Colors are defined by *Colors*.
|
||||
|
||||
.. _scriptref-drawbitmap:
|
||||
|
||||
DrawBitmap
|
||||
----------
|
||||
@ -519,6 +649,8 @@ DrawBitmap
|
||||
|
||||
Draw the bitmap to a TCanvas.
|
||||
|
||||
.. _scriptref-rectanglebitmap:
|
||||
|
||||
RectangleBitmap
|
||||
---------------
|
||||
|
||||
@ -527,6 +659,8 @@ RectangleBitmap
|
||||
procedure RectangleBitmap(bitmap : integer; const box : TBox; Color : TColor);
|
||||
|
||||
|
||||
.. _scriptref-floodfillbitmap:
|
||||
|
||||
FloodFillBitmap
|
||||
---------------
|
||||
|
||||
@ -535,6 +669,8 @@ FloodFillBitmap
|
||||
procedure FloodFillBitmap(bitmap : integer; const StartPoint : TPoint; const SearchCol,ReplaceCol : TColor);
|
||||
|
||||
|
||||
.. _scriptref-calculatepixelshift:
|
||||
|
||||
CalculatePixelShift
|
||||
-------------------
|
||||
|
||||
@ -543,6 +679,8 @@ CalculatePixelShift
|
||||
function CalculatePixelShift(Bmp1,Bmp2 : Integer; CompareBox : TBox) : integer;
|
||||
|
||||
|
||||
.. _scriptref-calculatepixeltolerance:
|
||||
|
||||
CalculatePixelTolerance
|
||||
-----------------------
|
||||
|
||||
@ -550,4 +688,3 @@ CalculatePixelTolerance
|
||||
|
||||
function CalculatePixelTolerance(Bmp1,Bmp2 : Integer; CompareBox : TBox; CTS : integer) : extended;')
|
||||
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
.. _scriptref_colourconv:
|
||||
.. _scriptref-colourconv:
|
||||
|
||||
Colour Conversions
|
||||
==================
|
||||
|
||||
..
|
||||
TODO:
|
||||
|
||||
Colour spaces
|
||||
-------------
|
||||
|
||||
@ -12,6 +15,7 @@ Explain some colour spaces here.
|
||||
Colour Conversion Methods
|
||||
-------------------------
|
||||
|
||||
.. _scriptref-colortorgb:
|
||||
|
||||
ColorToRGB
|
||||
~~~~~~~~~~
|
||||
@ -20,6 +24,8 @@ ColorToRGB
|
||||
|
||||
procedure ColorToRGB(Color: integer; var r, g, b: Integer);
|
||||
|
||||
.. _scriptref-rgbtocolor:
|
||||
|
||||
RGBtoColor
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -27,6 +33,8 @@ RGBtoColor
|
||||
|
||||
function RGBtoColor(r, g, b: Integer): TColor;
|
||||
|
||||
.. _scriptref-colortohsl:
|
||||
|
||||
ColorToHSL
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -34,6 +42,8 @@ ColorToHSL
|
||||
|
||||
procedure ColorToHSL(Color: Integer; var h, s, l: Extended);
|
||||
|
||||
.. _scriptref-hsltocolor:
|
||||
|
||||
HSLToColor
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -41,6 +51,8 @@ HSLToColor
|
||||
|
||||
function HSLToColor(H, S, L: Extended): TColor;
|
||||
|
||||
.. _scriptref-colortoxyz:
|
||||
|
||||
ColorToXYZ
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -48,6 +60,8 @@ ColorToXYZ
|
||||
|
||||
procedure ColorToXYZ(Color: Integer; var x, y, z: Extended);
|
||||
|
||||
.. _scriptref-xyztocolor:
|
||||
|
||||
XYZToColor
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -55,6 +69,8 @@ XYZToColor
|
||||
|
||||
function XYZToColor(X, Y, Z: Extended): TColor;
|
||||
|
||||
.. _scriptref-rgbtohsl:
|
||||
|
||||
RGBToHSL
|
||||
~~~~~~~~
|
||||
|
||||
@ -62,6 +78,8 @@ RGBToHSL
|
||||
|
||||
procedure RGBToHSL(R, G, B: Integer; var h, s, l: Extended);
|
||||
|
||||
.. _scriptref-hsltorgb:
|
||||
|
||||
HSLtoRGB
|
||||
~~~~~~~~
|
||||
|
||||
@ -69,6 +87,8 @@ HSLtoRGB
|
||||
|
||||
procedure HSLtoRGB(H, S, L: extended; var R, G ,B: Integer);
|
||||
|
||||
.. _scriptref-rgbtoxyz:
|
||||
|
||||
RGBToXYZ
|
||||
~~~~~~~~
|
||||
|
||||
@ -76,6 +96,8 @@ RGBToXYZ
|
||||
|
||||
procedure RGBToXYZ(R, G, B: Integer;var x, y ,z: Extended);
|
||||
|
||||
.. _scriptref-xyztorgb:
|
||||
|
||||
XYZToRGB
|
||||
~~~~~~~~
|
||||
|
||||
@ -83,4 +105,5 @@ XYZToRGB
|
||||
|
||||
procedure XYZToRGB(X, Y, Z: Extended; var R, G, B: Integer);
|
||||
|
||||
|
||||
..
|
||||
TODO: Add CIE L*a*b.
|
||||
|
@ -37,6 +37,7 @@ components:
|
||||
a *TPointArray*.
|
||||
|
||||
.. note::
|
||||
|
||||
Other techniques exist, which involve relative point distance from one point
|
||||
to another; these are found in the :ref:`scriptref-dtm` section.
|
||||
|
||||
@ -51,6 +52,8 @@ Colour Finding Methods
|
||||
|
||||
A list of all colour finding methods in Simba.
|
||||
|
||||
.. _scriptref-similarcolors:
|
||||
|
||||
SimilarColors
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
@ -61,6 +64,8 @@ SimilarColors
|
||||
SimilarColors returns true if the two passed colours are *similar* given the
|
||||
passed *Tolerance*.
|
||||
|
||||
.. _scriptref-getcolor:
|
||||
|
||||
GetColor
|
||||
~~~~~~~~
|
||||
|
||||
@ -68,13 +73,19 @@ GetColor
|
||||
|
||||
function GetColor(x, y: Integer): Integer;
|
||||
|
||||
GetColor returns the color on the coordinate (*x*, *y*).
|
||||
GetColor returns the color on the coordinate *(x, y)*.
|
||||
|
||||
*Example: Printing the colour on coordinate (25, 25)*
|
||||
Example printing the colour on coordinate (25, 25).
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
Writeln('Colour is ' + IntToStr(GetColor(25, 25)))
|
||||
program printcolour;
|
||||
|
||||
begin
|
||||
Writeln('Colour is ' + IntToStr(GetColor(25, 25)))
|
||||
end.
|
||||
|
||||
.. _scriptref-getcolors:
|
||||
|
||||
GetColors
|
||||
~~~~~~~~~
|
||||
@ -85,6 +96,7 @@ GetColors
|
||||
|
||||
GetColors returns an array of the colours at the given *Coords*.
|
||||
|
||||
.. _scriptref-countcolor:
|
||||
|
||||
CountColor
|
||||
~~~~~~~~~~
|
||||
@ -96,6 +108,8 @@ CountColor
|
||||
Returns how many times *Color* occurs in the area defined by (*xs*, *ys*),
|
||||
(*xe*, *ye*)
|
||||
|
||||
.. _scriptref-countcolortolerance:
|
||||
|
||||
CountColorTolerance
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -106,6 +120,8 @@ CountColorTolerance
|
||||
Returns how many times *Color* occurs (within *Tolerance*)
|
||||
in the area defined by (*xs*, *ys*), (*xe*, *ye*)
|
||||
|
||||
.. _scriptref-findcolor:
|
||||
|
||||
FindColor
|
||||
~~~~~~~~~
|
||||
|
||||
@ -121,6 +137,8 @@ The point is returned in *x* and *y*.
|
||||
It searches from the top left to the bottom right and will stop
|
||||
after matching a point.
|
||||
|
||||
.. _scriptref-findcolortolerance:
|
||||
|
||||
FindColorTolerance
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -134,9 +152,11 @@ FindColorTolerance returns true if a colour within the given tolerance range
|
||||
*x2*, *y2*.
|
||||
Only the first point is returned in *x* and *y*.
|
||||
Whether or not a colour is within the tolerance range is determined by the
|
||||
:ref:`scriptref_CTS` mode. It searches from the top left to the bottom right
|
||||
:ref:`scriptref-CTS` mode. It searches from the top left to the bottom right
|
||||
and will stop after matching a point.
|
||||
|
||||
.. _scriptref-findcolors:
|
||||
|
||||
FindColors
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -148,6 +168,8 @@ FindColors returns a list of all points that match the colour *col* in an area
|
||||
defined by *x1*, *y1*, *x2*, *y2*. It returns true if one or more points have
|
||||
been found.
|
||||
|
||||
.. _scriptref-findcolorstolerance:
|
||||
|
||||
FindColorsTolerance
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -160,10 +182,12 @@ FindColorsTolerance returns true if at least one point was found.
|
||||
A point is found if it is within the given tolerance range *tol*
|
||||
of the given colour *col* and inside the box defined by *x1*, *y1*, *x2*, *y2*.
|
||||
Whether or not a color is within the tolerance range is determined by the
|
||||
:ref:`scriptref_CTS` mode.
|
||||
:ref:`scriptref-CTS` mode.
|
||||
It searches from the top left to the bottom right and will find all
|
||||
matching points in the area.
|
||||
|
||||
.. _scriptref-findcolorspiral:
|
||||
|
||||
FindColorSpiral
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
@ -174,6 +198,8 @@ FindColorSpiral
|
||||
|
||||
Same as FindColor, but starts searching from *x*, *y*.
|
||||
|
||||
.. _scriptref-findcolorspiraltolerance:
|
||||
|
||||
FindColorSpiralTolerance
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -184,6 +210,8 @@ FindColorSpiralTolerance
|
||||
|
||||
Same as FindColorTolerance, but starts searching from *x*, *y*.
|
||||
|
||||
.. _scriptref-findcolorsspiraltolerance:
|
||||
|
||||
FindColorsSpiralTolerance
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -194,6 +222,9 @@ FindColorsSpiralTolerance
|
||||
|
||||
Same as FindColorsTolerance, but starts searching from *x*, *y*.
|
||||
|
||||
.. _scriptref-findcoloredarea:
|
||||
.. _scriptref-findcoloredareatolerance:
|
||||
|
||||
Find areas of colours
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -215,7 +246,7 @@ FindColoredArea finds an area that consists out of Colours that match *Color* wi
|
||||
the given *Tolerance* and has a minimal size of *MinArea*.
|
||||
If you want minimal area of 5x5 pixels (25), then set MinArea to 25.
|
||||
|
||||
.. _scriptref_CTS:
|
||||
.. _scriptref-CTS:
|
||||
|
||||
Colour tolerance
|
||||
----------------
|
||||
@ -236,6 +267,11 @@ given a tolerance. There are three algorithms, from fastest to slowest:
|
||||
very little in hue. Luminance is assigned a somewhat static function, and
|
||||
has no modifier.
|
||||
|
||||
..
|
||||
TODO: CIE-Lab
|
||||
|
||||
.. _scriptref-gettolerancespeed:
|
||||
.. _scriptref-setcolortolerancespeed:
|
||||
|
||||
Get and Set Colour Tolerance
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -258,12 +294,15 @@ function, which returns the current colour tolerance speed:
|
||||
|
||||
function GetToleranceSpeed: Integer;
|
||||
|
||||
*Example: Printing the Color Tolerance*
|
||||
Example printing the Color Tolerance
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
Writeln(Format('Tolerance Speed = %d', [GetToleranceSpeed]))
|
||||
|
||||
.. _scriptref-settolerancespeed2modifiers:
|
||||
.. _scriptref-gettolerancespeed2modifiers:
|
||||
|
||||
Get And Set Colour Modifiers
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -280,14 +319,14 @@ Set colour speed 2 modifiers.
|
||||
SetToleranceSpeed2Modifiers(42.0, 0.4)
|
||||
|
||||
The following function
|
||||
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
procedure GetToleranceSpeed2Modifiers(var hMod, sMod: Extended);
|
||||
|
||||
returns colour speed 2 modifiers.
|
||||
|
||||
*Example: Getting the modifiers*
|
||||
Example getting the modifiers:
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
Mouse and Keyboard
|
||||
==================
|
||||
|
||||
Simba contains several functions to manipulate the mouse and keyboard.
|
||||
Features range from clicking and moving the mouse to faking keypresses.
|
||||
|
||||
Types
|
||||
-----
|
||||
|
||||
@ -27,15 +30,43 @@ list.
|
||||
Mouse Functions
|
||||
---------------
|
||||
|
||||
Simba's coordinate system is similar to most computer coordinate systems.
|
||||
Coordinate *(0, 0)* is the top-left part of your selected window (the desktop by
|
||||
default). To get to point *(5, 0)* we move five pixels to the right; to get to
|
||||
*(5, 5)* we move five pixels to the right, and five pixels down.
|
||||
|
||||
Recall that the first value is *x*, the second value is *y*: *(x, y)*
|
||||
|
||||
..
|
||||
TODO: Picture?
|
||||
|
||||
MoveMouse
|
||||
~~~~~~~~~
|
||||
|
||||
.. _scriptref-movemouse:
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
|
||||
procedure MoveMouse(x, y: integer);
|
||||
|
||||
MoveMouse moves the mouse pointer to the specified x and y coordinates.
|
||||
|
||||
The following example will move the mouse to position *(10, 10)*; relative
|
||||
to the selected client. (To get to point (10, 10) visually, recall that (0, 0)
|
||||
is the *top left* part and to get to (10, 10) we move 10 pixels to the right,
|
||||
and ten pixels down.)
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
Program MouseMove;
|
||||
|
||||
begin
|
||||
MoveMouse(10, 10);
|
||||
end.
|
||||
|
||||
|
||||
.. _scriptref-getmousepos:
|
||||
|
||||
GetMousePos
|
||||
~~~~~~~~~~~
|
||||
|
||||
@ -43,9 +74,23 @@ GetMousePos
|
||||
|
||||
procedure GetMousePos(var x, y: integer);
|
||||
|
||||
GetMousePos returns the current position of the mouse in x and
|
||||
y.
|
||||
GetMousePos returns the current position of the mouse in x and y.
|
||||
|
||||
The following example moves the mouse 1 pixel to the right, relative to its
|
||||
current position:
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
Program MouseMoveRelative;
|
||||
|
||||
var x, y: integer;
|
||||
|
||||
begin
|
||||
GetMousePos(x, y);
|
||||
MoveMouse(x + 1, y);
|
||||
end.
|
||||
|
||||
.. _scriptref-holdmouse:
|
||||
|
||||
HoldMouse
|
||||
~~~~~~~~~
|
||||
@ -54,9 +99,14 @@ HoldMouse
|
||||
|
||||
procedure HoldMouse(x, y: Integer; clickType: TClickType);
|
||||
|
||||
HoldMouse holds the given mouse button (clickType) down at the specified
|
||||
x, y coordinate. If the mouse if not at the given x, y yet, the mouse position
|
||||
will be set to x, y.
|
||||
HoldMouse holds the given mouse button specified by clickType down at the
|
||||
specified *(x, y)* coordinate. If the mouse if not at the given
|
||||
(*x, y)* yet, the mouse position will be set to *(x, y)*.
|
||||
|
||||
..
|
||||
TODO: Example
|
||||
|
||||
.. _scriptref-releasemouse:
|
||||
|
||||
ReleaseMouse
|
||||
~~~~~~~~~~~~
|
||||
@ -69,6 +119,11 @@ HoldMouse holds the given mouse button (clickType) down at the specified
|
||||
x, y coordinate. If the mouse if not at the given x, y yet, the
|
||||
mouse position will be set to x, y.
|
||||
|
||||
..
|
||||
TODO: Example
|
||||
|
||||
.. _scriptref-clickmouse:
|
||||
|
||||
ClickMouse
|
||||
~~~~~~~~~~
|
||||
|
||||
@ -77,7 +132,9 @@ ClickMouse
|
||||
procedure ClickMouse(x, y: Integer; clickType: Integer):
|
||||
|
||||
ClickMouse performs a click with the given mouse button (clickType) at the
|
||||
specified x, y coordinate.
|
||||
specified *(x, y)* coordinate. This ``click`` equals an immediate click, with no
|
||||
wait between holding down and releasing the mouse button. To create a more
|
||||
human-like effect, use the HoldMouse and ReleaseMouse functions.
|
||||
|
||||
Keyboard Functions
|
||||
------------------
|
||||
@ -85,18 +142,22 @@ Keyboard Functions
|
||||
Keyboard functions are obviously used to manipulate the keyboard input. It can
|
||||
also be used to read states of specific keys.
|
||||
|
||||
.. _scriptref-keydown:
|
||||
|
||||
KeyDown
|
||||
~~~~~~~
|
||||
|
||||
|
||||
.. code-block:: pascal
|
||||
|
||||
procedure KeyDown(key: Word);
|
||||
|
||||
KeyDown sends a request to the Operating System to "fake" an event that
|
||||
causes the ``key`` to be "down".
|
||||
causes the keyboard ``key`` to be "down".
|
||||
|
||||
..
|
||||
TODO: Example
|
||||
|
||||
.. _scriptref-keyup:
|
||||
|
||||
KeyUp
|
||||
~~~~~
|
||||
@ -108,8 +169,10 @@ KeyUp
|
||||
KeyDown sends a request to the Operating System to "fake" an event that
|
||||
causes the ``key`` to be "up".
|
||||
|
||||
..
|
||||
TODO: Example
|
||||
|
||||
.. _virtualkeys:
|
||||
.. _scriptref-virtualkeys:
|
||||
|
||||
Keyboard Virtual Keys
|
||||
---------------------
|
||||
|
@ -1,12 +1,12 @@
|
||||
|
||||
.. _scriptref_web:
|
||||
.. _scriptref_sound:
|
||||
|
||||
Multimedia Functions
|
||||
====================
|
||||
|
||||
|
||||
Sound Functions
|
||||
--------------
|
||||
---------------
|
||||
|
||||
PlaySound
|
||||
~~~~~~~~~
|
||||
|
@ -3,7 +3,6 @@
|
||||
Documentation TODO
|
||||
==================
|
||||
|
||||
* **WIP** - What's New. Changelog template added, fill it with stuff.
|
||||
* *Wizzup* - Script manager (non technical).
|
||||
* *Wizzup* - Script manager (technical).
|
||||
* Extend "Getting Started". Include downloading scripts from the manager.
|
||||
|
@ -23,9 +23,10 @@ Simba crashes on start complaining about settings.xml
|
||||
|
||||
This means your settings.xml has become corrupt somehow, or Simba may not be
|
||||
able to create it. If a settings.xml exists in your Simba directory, you can
|
||||
delete it. (All your settings will be lost, but this shouldn't be a bug deal)
|
||||
delete it. (All your settings will be lost, but this shouldn't be a big deal)
|
||||
|
||||
Note that this should no longer happen with Simba 750 and up.
|
||||
|
||||
..
|
||||
..
|
||||
TODO
|
||||
Anything else?
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _whatis:
|
||||
|
||||
What Is Simba?
|
||||
==============
|
||||
|
||||
@ -22,4 +24,11 @@ Simba can:
|
||||
|
||||
and more. Start now by :ref:`installingsimba`.
|
||||
|
||||
Currently Simba is still in its beta stages; this includes the documentation.
|
||||
You will probably notice some parts of the documentation aren't finished or are just
|
||||
plain missing.
|
||||
|
||||
Simba is being updated almost every day. To see changes as they are added, view
|
||||
https://github.com/MerlijnWajer/Simba.
|
||||
|
||||
If you want to know more about Simba, see :ref:`whysimba`
|
||||
|
@ -1,10 +0,0 @@
|
||||
What's new in Simba?
|
||||
====================
|
||||
|
||||
Currently Simba is still in its beta stages; this includes the documentation.
|
||||
You will probably notice some parts of the documentation aren't finished or are just
|
||||
plain missing.
|
||||
|
||||
Simba is being updated almost every day. To see changes as they are added, view
|
||||
https://github.com/MerlijnWajer/Simba. Each commit should be explained
|
||||
in one line, and the exact changes can be viewed with "commitdiff".
|
@ -11,15 +11,15 @@ the open-mindedness of the Simba developers.
|
||||
Free
|
||||
~~~~
|
||||
|
||||
Simba is, and always will be free.
|
||||
Simba is, and always will be free.
|
||||
It is free as in Free Beer **and** Freedom.
|
||||
|
||||
Simba is 100% free to use. In fact, we welcome you to share it with the
|
||||
Simba is 100% free to use. In fact, we welcome you to share it with the
|
||||
rest of the world.
|
||||
|
||||
The source code to the program is freely available, under the GPL (v3) license.
|
||||
The source code to the program is freely available, under the GPL (v3) license.
|
||||
|
||||
.. note::
|
||||
.. note::
|
||||
The source code allows everyone to see how the program actually
|
||||
works. Most developers choose not to share their source code and therefore
|
||||
decide to withhold knowledge. The Simba developers highly disagree with
|
||||
@ -39,19 +39,19 @@ This way one can easily extend Simba. See :ref:`writing-simba-extensions`
|
||||
Reliable
|
||||
~~~~~~~~
|
||||
|
||||
Simba is actively maintained by a team of knowledgeable programmers.
|
||||
Simba is actively maintained by a team of knowledgeable programmers.
|
||||
|
||||
We as a team do our best to make Simba into a quality product.
|
||||
We as a team do our best to make Simba into a quality product.
|
||||
However this does not guarantee a bug free program.
|
||||
(Bug free programs don't exist)
|
||||
|
||||
Should you encounter a bug, please consider sending a bug report so we can
|
||||
resolve the issue: :ref:`bugreport`.
|
||||
try to resolve the issue: :ref:`bugreport`.
|
||||
|
||||
Cross Platform
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Simba has been written with freedom in mind and believes Simba
|
||||
Simba has been written with freedom in mind and believes Simba
|
||||
should not be limited to one platform, as that limits its users
|
||||
to one platform as well.
|
||||
|
||||
@ -59,7 +59,7 @@ Currently the supported platforms are Windows and Linux with attempts
|
||||
being made to port it to OSX (it may run on OSX if you install X11).
|
||||
|
||||
Even though we try hard to make Simba bug-free on all platforms,
|
||||
some issues remain. The biggest issue is the interpreter that
|
||||
some issues remain. The biggest issue is the interpreter that
|
||||
executes your program. It is an external component and does not
|
||||
play too well on Linux. Hopefully this will be improved upon soon.
|
||||
|
||||
@ -94,5 +94,4 @@ Well Documented
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Simba is well documented. (You're looking the documentation right now...)
|
||||
There is still a lot left to document but overall the documentation is pretty
|
||||
good.
|
||||
There is still a lot left to document though.
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
//{$DEFINE USE_CPASCAL} // TODO
|
||||
//{$DEFINE USE_LAPE} // TODO
|
||||
//{$DEFINE USE_EXTENSIONS} // TODO
|
||||
//{$DEFINE USE_EXTENSIONS}
|
||||
//{$DEFINE USE_CODECOMPLETION} // TODO
|
||||
|
||||
//{$DEFINE TERMINALWRITELN} // Only used once. Remove from SimbaUnit?
|
||||
|
@ -37,7 +37,7 @@ uses
|
||||
PSDump, v_ideCodeParser,
|
||||
v_AutoCompleteForm, CastaliaPasLex, CastaliaPasLexTypes, CastaliaSimplePasPar,
|
||||
CastaliaSimplePasParTypes, dcpbase64, mPasLex, v_Constants, v_MiscFunctions,
|
||||
extensionmanagergui, mmisc, bitmapconv;
|
||||
mmisc, bitmapconv;
|
||||
|
||||
{$R Simba.res}
|
||||
|
||||
@ -48,7 +48,7 @@ begin
|
||||
Application.CreateForm(TColourHistoryForm, ColourHistoryForm);
|
||||
Application.CreateForm(TAboutForm, AboutForm);
|
||||
Application.CreateForm(TDebugImgForm, DebugImgForm);
|
||||
Application.CreateForm(TExtensionsForm, ExtensionsForm);
|
||||
// Application.CreateForm(TExtensionsForm, ExtensionsForm);
|
||||
Application.CreateForm(TBitmapConvForm, BitmapConvForm);
|
||||
// Application.CreateForm(TSimbaUpdateForm, SimbaUpdateForm);
|
||||
// Application.CreateForm(TSettingsForm, SettingsForm); Done in FormCreate of MainForm
|
||||
|
@ -58,10 +58,15 @@ end;
|
||||
|
||||
destructor TExtensionManager.Destroy;
|
||||
var
|
||||
i: Integer;
|
||||
I, C: Integer;
|
||||
begin
|
||||
for i := 0 to Extensions.Count - 1 do
|
||||
TExtension(Extensions.Items[i]).Free;
|
||||
C := Extensions.Count - 1;
|
||||
for I := 0 to C do
|
||||
begin
|
||||
TExtension(Extensions.Items[I]).Settings.Free;
|
||||
TExtension(Extensions.Items[I]).Free;
|
||||
end;
|
||||
|
||||
Extensions.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
@ -265,7 +265,7 @@ begin
|
||||
begin
|
||||
{$I ../../Units/MMLAddon/PSInc/pscompile.inc}
|
||||
AddTypes('TStringArray','Array of String');
|
||||
AddConstantN('ExtPath','string').SetString(ExtPath);
|
||||
AddConstantN('ExtPath', 'string').SetString({$IFDEF USE_EXTENSIONS}ExtPath{$ELSE}''{$ENDIF});
|
||||
for i := 0 to high(VirtualKeys) do
|
||||
AddConstantN(Format('VK_%S',[VirtualKeys[i].Str]),'Byte').SetInt(VirtualKeys[i].Key);
|
||||
end;
|
||||
@ -329,6 +329,7 @@ begin
|
||||
FreeScript;
|
||||
if Assigned(PSInstance) then
|
||||
FreeAndNil(PSInstance);
|
||||
Script.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
@ -5,7 +5,7 @@ object SimbaForm: TSimbaForm
|
||||
Width = 660
|
||||
AllowDropFiles = True
|
||||
Caption = 'THA FUKING Simba'
|
||||
ClientHeight = 598
|
||||
ClientHeight = 603
|
||||
ClientWidth = 660
|
||||
KeyPreview = True
|
||||
Menu = MainMenu
|
||||
@ -207,8 +207,8 @@ object SimbaForm: TSimbaForm
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Height = 21
|
||||
Top = 577
|
||||
Height = 23
|
||||
Top = 580
|
||||
Width = 660
|
||||
Panels = <
|
||||
item
|
||||
@ -230,7 +230,7 @@ object SimbaForm: TSimbaForm
|
||||
object PanelMemo: TPanel
|
||||
Left = 0
|
||||
Height = 154
|
||||
Top = 423
|
||||
Top = 426
|
||||
Width = 660
|
||||
Align = alBottom
|
||||
ClientHeight = 154
|
||||
@ -253,19 +253,19 @@ object SimbaForm: TSimbaForm
|
||||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 5
|
||||
Top = 418
|
||||
Top = 421
|
||||
Width = 660
|
||||
Align = alBottom
|
||||
ResizeAnchor = akBottom
|
||||
end
|
||||
object ScriptPanel: TPanel
|
||||
Left = 0
|
||||
Height = 394
|
||||
Height = 397
|
||||
Top = 24
|
||||
Width = 660
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 394
|
||||
ClientHeight = 397
|
||||
ClientWidth = 660
|
||||
DockSite = True
|
||||
TabOrder = 4
|
||||
@ -273,7 +273,7 @@ object SimbaForm: TSimbaForm
|
||||
OnDockOver = ScriptPanelDockOver
|
||||
object PageControl1: TPageControl
|
||||
Left = 155
|
||||
Height = 359
|
||||
Height = 362
|
||||
Top = 0
|
||||
Width = 505
|
||||
Align = alClient
|
||||
@ -292,7 +292,7 @@ object SimbaForm: TSimbaForm
|
||||
object SearchPanel: TPanel
|
||||
Left = 0
|
||||
Height = 35
|
||||
Top = 359
|
||||
Top = 362
|
||||
Width = 660
|
||||
Align = alBottom
|
||||
BevelOuter = bvSpace
|
||||
@ -387,7 +387,7 @@ object SimbaForm: TSimbaForm
|
||||
end
|
||||
object LabeledEditSearch: TLabeledEdit
|
||||
Left = 104
|
||||
Height = 27
|
||||
Height = 23
|
||||
Top = 6
|
||||
Width = 80
|
||||
EditLabel.AnchorSideLeft.Control = LabeledEditSearch
|
||||
@ -395,10 +395,10 @@ object SimbaForm: TSimbaForm
|
||||
EditLabel.AnchorSideTop.Side = asrCenter
|
||||
EditLabel.AnchorSideRight.Control = LabeledEditSearch
|
||||
EditLabel.AnchorSideBottom.Control = LabeledEditSearch
|
||||
EditLabel.Left = 66
|
||||
EditLabel.Height = 18
|
||||
EditLabel.Top = 10
|
||||
EditLabel.Width = 35
|
||||
EditLabel.Left = 71
|
||||
EditLabel.Height = 16
|
||||
EditLabel.Top = 9
|
||||
EditLabel.Width = 30
|
||||
EditLabel.Caption = 'Find: '
|
||||
EditLabel.ParentColor = False
|
||||
LabelPosition = lpLeft
|
||||
@ -413,7 +413,7 @@ object SimbaForm: TSimbaForm
|
||||
Left = 320
|
||||
Height = 19
|
||||
Top = 7
|
||||
Width = 93
|
||||
Width = 80
|
||||
Caption = 'Match case'
|
||||
OnClick = CheckBoxMatchCaseClick
|
||||
TabOrder = 1
|
||||
@ -421,38 +421,38 @@ object SimbaForm: TSimbaForm
|
||||
end
|
||||
object SplitterFunctionList: TSplitter
|
||||
Left = 150
|
||||
Height = 359
|
||||
Height = 362
|
||||
Top = 0
|
||||
Width = 5
|
||||
OnCanResize = SplitterFunctionListCanResize
|
||||
Visible = False
|
||||
end
|
||||
inline frmFunctionList: TFunctionListFrame
|
||||
Height = 359
|
||||
Height = 362
|
||||
Width = 150
|
||||
ClientHeight = 359
|
||||
ClientHeight = 362
|
||||
ClientWidth = 150
|
||||
OnEndDock = nil
|
||||
TabOrder = 3
|
||||
inherited FunctionList: TTreeView
|
||||
Height = 310
|
||||
Top = 22
|
||||
Height = 319
|
||||
Top = 20
|
||||
Width = 150
|
||||
DefaultItemHeight = 19
|
||||
DefaultItemHeight = 17
|
||||
OnChange = FunctionListChange
|
||||
OnEnter = FunctionListEnter
|
||||
OnExit = FunctionListExit
|
||||
end
|
||||
inherited editSearchList: TEdit
|
||||
Height = 27
|
||||
Top = 332
|
||||
Height = 23
|
||||
Top = 339
|
||||
Width = 150
|
||||
OnExit = editSearchListExit
|
||||
OnKeyDown = editSearchListKeyDown
|
||||
OnKeyPress = editSearchListKeyPress
|
||||
end
|
||||
inherited FunctionListLabel: TLabel
|
||||
Height = 18
|
||||
Height = 16
|
||||
Width = 146
|
||||
end
|
||||
end
|
||||
@ -3006,6 +3006,7 @@ object SimbaForm: TSimbaForm
|
||||
Caption = '&Extensions'
|
||||
OnExecute = ActionExtensionsExecute
|
||||
OnUpdate = ActionExtensionsUpdate
|
||||
Visible = False
|
||||
end
|
||||
object ActionPascalScript: TAction
|
||||
Caption = 'PascalScript'
|
||||
|
@ -51,8 +51,9 @@ uses
|
||||
SynExportHTML, SynEditKeyCmds, SynEditHighlighter,
|
||||
SynEditMarkupHighAll, LMessages, Buttons,
|
||||
mmisc, stringutil,mufasatypesutil, mufasabase,
|
||||
about, framefunctionlist, ocr, updateform, Simbasettings, psextension, virtualextension,
|
||||
extensionmanager, settingssandbox,
|
||||
about, framefunctionlist, ocr, updateform, Simbasettings,
|
||||
{$IFDEF USE_EXTENSIONS}psextension, virtualextension, extensionmanager,{$ENDIF}
|
||||
settingssandbox,
|
||||
|
||||
v_ideCodeParser, v_ideCodeInsight, CastaliaPasLexTypes, // Code completion units
|
||||
CastaliaSimplePasPar, v_AutoCompleteForm, // Code completion units
|
||||
@ -61,7 +62,7 @@ uses
|
||||
settings, updater;
|
||||
|
||||
const
|
||||
SimbaVersion = 830;
|
||||
SimbaVersion = 970;
|
||||
|
||||
interp_PS = 0; //PascalScript
|
||||
interp_RT = 1; //RUTIS
|
||||
@ -410,6 +411,7 @@ type
|
||||
OpenFileData : TOpenFileData;
|
||||
WriteFileData : TWriteFileData;
|
||||
ScriptStartData : TScriptStartData;
|
||||
|
||||
procedure UpdateInterpreter;
|
||||
procedure HandleConnectionData;
|
||||
procedure HandleOpenFileData;
|
||||
@ -418,7 +420,7 @@ type
|
||||
function GetInterpreter: Integer;
|
||||
function GetDefScriptPath: string;
|
||||
function GetScriptPath : string;
|
||||
function GetExtPath: string;
|
||||
{$IFDEF USE_EXTENSIONS}function GetExtPath: string;{$ENDIF}
|
||||
function GetFontPath: String;
|
||||
function GetHighlighter: TSynCustomHighlighter;
|
||||
function GetIncludePath: String;
|
||||
@ -428,7 +430,7 @@ type
|
||||
function GetShowCodeCompletionAuto: Boolean;
|
||||
function GetSimbaNews: String;
|
||||
procedure SetDefScriptPath(const AValue: string);
|
||||
procedure SetExtPath(const AValue: string);
|
||||
{$IFDEF USE_EXTENSIONS}procedure SetExtPath(const AValue: string);{$ENDIF}
|
||||
procedure SetFontPath(const AValue: String);
|
||||
procedure SetIncludePath(const AValue: String);
|
||||
procedure SetInterpreter(const AValue: Integer);
|
||||
@ -501,7 +503,7 @@ type
|
||||
property IncludePath : String read GetIncludePath write SetIncludePath;
|
||||
property FontPath : String read GetFontPath write SetFontPath;
|
||||
property PluginPath : string read GetPluginPath write SetPluginPath;
|
||||
property ExtPath : string read GetExtPath write SetExtPath;
|
||||
{$IFDEF USE_EXTENSIONS}property ExtPath : string read GetExtPath write SetExtPath;{$ENDIF}
|
||||
property ScriptDir : string read GetScriptPath write SetScriptPath;
|
||||
property DefScriptPath : string read GetDefScriptPath write SetDefScriptPath;
|
||||
property CurrHighlighter : TSynCustomHighlighter read GetHighlighter;
|
||||
@ -545,7 +547,7 @@ uses
|
||||
InterfaceBase,
|
||||
bitmapconv,
|
||||
bitmaps,
|
||||
extensionmanagergui,
|
||||
{$IFDEF USE_EXTENSIONS}extensionmanagergui,{$ENDIF}
|
||||
colourhistory,
|
||||
math
|
||||
|
||||
@ -744,6 +746,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.HandleConnectionData;
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
Args : TVariantArray;
|
||||
begin
|
||||
@ -758,6 +761,9 @@ begin
|
||||
on e : Exception do
|
||||
mDebugLn('ERROR in HandleConnectiondata: ' + e.message);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
function TSimbaForm.GetInterpreter: Integer;
|
||||
@ -781,6 +787,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.HandleOpenFileData;
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
Args : TVariantArray;
|
||||
begin
|
||||
@ -795,9 +802,13 @@ begin
|
||||
on e : Exception do
|
||||
mDebugLn('ERROR in HandleOpenFileData: ' + e.message);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.HandleWriteFileData;
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
Args : TVariantArray;
|
||||
begin
|
||||
@ -812,9 +823,13 @@ begin
|
||||
on e : Exception do
|
||||
mDebugLn('ERROR in HandleWriteFileData: ' + e.message);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.HandleScriptStartData;
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
Args : TVariantArray;
|
||||
begin
|
||||
@ -829,6 +844,9 @@ begin
|
||||
on e : Exception do
|
||||
mDebugLn('ERROR in HandleScriptStartData: ' + e.message);
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.ProcessDebugStream(Sender: TObject);
|
||||
@ -1361,7 +1379,7 @@ begin
|
||||
CreateSetting('Settings/CodeHints/ShowAutomatically','True');
|
||||
CreateSetting('Settings/CodeCompletion/ShowAutomatically','True');
|
||||
CreateSetting('Settings/SourceEditor/LazColors','True');
|
||||
CreateSetting('Settings/Extensions/FileExtension','sex');
|
||||
{$IFDEF USE_EXTENSIONS}CreateSetting('Settings/Extensions/FileExtension','sex');{$ENDIF}
|
||||
|
||||
CreateSetting('Settings/Updater/RemoteLink',SimbaURL + 'Simba'{$IFDEF WINDOWS} +'.exe'{$ENDIF});
|
||||
CreateSetting('Settings/Updater/RemoteVersionLink',SimbaURL + 'Version');
|
||||
@ -1372,8 +1390,10 @@ begin
|
||||
|
||||
{Creates the paths and returns the path}
|
||||
PluginsPath := CreateSetting('Settings/Plugins/Path', ExpandFileName(MainDir+ DS+ 'Plugins' + DS));
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
extensionsPath := CreateSetting('Settings/Extensions/Path',ExpandFileName(MainDir +DS + 'Extensions' + DS));
|
||||
CreateSetting('Extensions/ExtensionCount','0');
|
||||
{$ENDIF}
|
||||
CreateSetting('LastConfig/MainForm/Position','');
|
||||
CreateSetting('LastConfig/MainForm/State','Normal');
|
||||
{$ifdef MSWindows}
|
||||
@ -1387,10 +1407,12 @@ begin
|
||||
CreateDir(FontPath);
|
||||
if not DirectoryExists(PluginsPath) then
|
||||
CreateDir(PluginsPath);
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
if not DirectoryExists(extensionsPath) then
|
||||
CreateDir(extensionsPath);
|
||||
if not DirectoryExists(ExtPath) then
|
||||
CreateDir(ExtPath);
|
||||
{$ENDIF}
|
||||
if not DirectoryExists(ScriptDir) then
|
||||
CreateDir(ScriptDir);
|
||||
SettingsForm.SettingsTreeView.Items.GetFirstNode.Expand(false);
|
||||
@ -1491,19 +1513,21 @@ begin
|
||||
else
|
||||
SetSetting('LastConfig/Console/Visible','False');
|
||||
{$endif}
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
SetSetting('Extensions/ExtensionCount',inttostr(ExtManager.Extensions.Count));
|
||||
for i := 0 to ExtManager.Extensions.Count-1 do
|
||||
begin;
|
||||
|
||||
path :='Extensions/Extension' + inttostr(I);
|
||||
SetSetting(Path + '/Path',TVirtualSimbaExtension(ExtManager.Extensions[i]).Filename);
|
||||
SetSetting(Path + '/Enabled',BoolToStr(TVirtualSimbaExtension(ExtManager.Extensions[i]).Enabled,True));
|
||||
end;
|
||||
{$ENDIF}
|
||||
SaveToXML(SimbaSettingsFile);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.LoadExtensions;
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
extCount : integer;
|
||||
function LoadExtension(Number : integer) : boolean;
|
||||
@ -1551,6 +1575,9 @@ begin
|
||||
str := LoadSettingDef('Settings/Extensions/Path',ExpandFileName(MainDir +DS + 'Extensions' + DS));
|
||||
str2 := LoadSettingDef('Settings/Extensions/FileExtension','sex');
|
||||
ExtManager.LoadPSExtensionsDir(str,str2);
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.AddRecentFile(const filename: string);
|
||||
@ -1648,26 +1675,30 @@ begin
|
||||
Thread.Client.IOManager.SetTarget(Selector.LastPick);
|
||||
|
||||
loadFontsOnScriptStart := (lowercase(LoadSettingDef('Settings/Fonts/LoadOnStartUp', 'True')) = 'true');
|
||||
// Copy our current fonts
|
||||
if not assigned(Self.OCR_Fonts) and loadFontsOnScriptStart and DirectoryExists(fontPath) then
|
||||
|
||||
if (loadFontsOnScriptStart) then
|
||||
begin
|
||||
Self.OCR_Fonts := TMOCR.Create(Thread.Client);
|
||||
OCR_Fonts.InitTOCR(fontPath);
|
||||
Thread.Client.MOCR.Fonts := OCR_Fonts.Fonts
|
||||
end else
|
||||
if assigned(Self.OCR_Fonts) and loadFontsOnScriptStart then
|
||||
if ((not (Assigned(OCR_Fonts))) and DirectoryExists(fontPath)) then
|
||||
begin
|
||||
OCR_Fonts := TMOCR.Create(Thread.Client);
|
||||
OCR_Fonts.InitTOCR(fontPath);
|
||||
end;
|
||||
|
||||
if (Assigned(OCR_Fonts)) then
|
||||
Thread.Client.MOCR.Fonts := OCR_Fonts.Fonts;
|
||||
end;
|
||||
|
||||
{
|
||||
We pass the entire settings to the script; it will then create a Sandbox
|
||||
for settings that are exported to the script. This way we can access all
|
||||
the settings from the PSTHread, and scripts can only access limited
|
||||
the settings from the PSThread, and scripts can only access limited
|
||||
resources. Hopefully this won't cause any form / thread related problems?
|
||||
(Settings doesn't use the Settings form, iirc)
|
||||
Well, it was like this previously as well, we just passed a sandbox to it
|
||||
directly, but the sandbox still called Settings.
|
||||
}
|
||||
Thread.SetSettings(SettingsForm.Settings, SimbaSettingsFile);
|
||||
|
||||
Thread.OpenConnectionEvent:=@ThreadOpenConnectionEvent;
|
||||
Thread.WriteFileEvent:=@ThreadWriteFileEvent;
|
||||
Thread.OpenFileEvent:=@ThreadOpenFileEvent;
|
||||
@ -1830,15 +1861,17 @@ end;
|
||||
|
||||
procedure TSimbaForm.ActionExtensionsExecute(Sender: TObject);
|
||||
begin
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
if not ExtensionsForm.Showing then
|
||||
ExtensionsForm.Show
|
||||
else
|
||||
ExtensionsForm.Hide;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.ActionExtensionsUpdate(Sender: TObject);
|
||||
begin
|
||||
TAction(Sender).Checked := ExtensionsForm.Showing;
|
||||
{$IFDEF USE_EXTENSIONS}TAction(Sender).Checked := ExtensionsForm.Showing;{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.ActionFindNextExecute(Sender: TObject);
|
||||
@ -2308,7 +2341,7 @@ begin
|
||||
end;
|
||||
FunctionListTimer.Enabled:= false;
|
||||
CloseAction := caFree;
|
||||
FreeAndNil(ExtManager);
|
||||
{$IFDEF USE_EXTENSIONS}FreeAndNil(ExtManager);{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure CCFillCore;
|
||||
@ -2410,6 +2443,7 @@ begin
|
||||
UpdateTimer.OnTimer:= @UpdateTimerCheck;
|
||||
|
||||
Application.CreateForm(TSimbaUpdateForm, SimbaUpdateForm);
|
||||
{$IFDEF USE_EXTENSIONS}Application.CreateForm(TExtensionsForm, ExtensionsForm);{$ENDIF}
|
||||
|
||||
if FileExistsUTF8(SimbaSettingsFile) then
|
||||
begin
|
||||
@ -2464,13 +2498,15 @@ begin
|
||||
FillThread.Resume;
|
||||
|
||||
//Load the extensions
|
||||
LoadExtensions;
|
||||
{$IFDEF USE_EXTENSIONS}LoadExtensions;{$ENDIF}
|
||||
|
||||
UpdateTitle;
|
||||
|
||||
{$IFNDEF USE_RUTIS}
|
||||
MenuItemRUTIS.Enabled:=False;
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF USE_EXTENSIONS}ActionExtensions.Visible := True;{$ENDIF}
|
||||
self.EndFormUpdate;
|
||||
|
||||
if SettingsForm.Oops then
|
||||
@ -2488,8 +2524,10 @@ begin
|
||||
for i := 0 to high(RecentFileItems) do
|
||||
RecentFileItems[i].Free;
|
||||
|
||||
if ExtManager <> nil then
|
||||
FreeAndNil(extmanager);
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
if ExtManager <> nil then
|
||||
FreeAndNil(extmanager);
|
||||
{$ENDIF}
|
||||
|
||||
Tabs.Free;
|
||||
|
||||
@ -2501,6 +2539,10 @@ begin
|
||||
{ Free the plugins }
|
||||
PluginsGlob.Free;
|
||||
|
||||
{ Free Fonts }
|
||||
if (Assigned(OCR_Fonts)) then
|
||||
OCR_Fonts.Free;
|
||||
|
||||
SetLength(DebugStream, 0);
|
||||
DebugCriticalSection.Free;
|
||||
|
||||
@ -2795,10 +2837,12 @@ begin
|
||||
SetSetting('Settings/SourceEditor/DefScriptPath',AValue,True);
|
||||
end;
|
||||
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
procedure TSimbaForm.SetExtPath(const AValue: string);
|
||||
begin
|
||||
SetSetting('Settings/Extensions/Path',AValue,true);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
procedure TSimbaForm.NewsTimerTimer(Sender: TObject);
|
||||
var
|
||||
@ -2828,6 +2872,11 @@ var
|
||||
c, x, y: Integer;
|
||||
cobj: TColourPickerObject;
|
||||
begin
|
||||
if Picker.Picking then
|
||||
begin
|
||||
formWriteln('Error: Already picking a colour');
|
||||
exit;
|
||||
end;
|
||||
Picker.Pick(c, x, y);
|
||||
cobj := TColourPickerObject.Create(c, Classes.Point(x,y), '');
|
||||
|
||||
@ -2928,6 +2977,7 @@ end;
|
||||
|
||||
procedure TSimbaForm.PickerPick(Sender: TObject; const Colour, colourx,
|
||||
coloury: integer);
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
var
|
||||
Args : TVariantArray;
|
||||
begin
|
||||
@ -2936,6 +2986,9 @@ begin
|
||||
Args[1] := Colourx;
|
||||
Args[2] := Coloury;
|
||||
ExtManager.HandleHook(EventHooks[SExt_OnColourPick].HookName,Args);
|
||||
{$ELSE}
|
||||
begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSimbaForm.PopupItemFindClick(Sender: TObject);
|
||||
@ -2969,10 +3022,12 @@ begin
|
||||
Result := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Fonts/Path', ExpandFileName(MainDir+DS+'Fonts' + DS)));
|
||||
end;
|
||||
|
||||
{$IFDEF USE_EXTENSIONS}
|
||||
function TSimbaForm.GetExtPath: string;
|
||||
begin
|
||||
result :=IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Extensions/Path', ExpandFileName(MainDir+DS+'Extensions' + DS)));
|
||||
Result := IncludeTrailingPathDelimiter(LoadSettingDef('Settings/Extensions/Path', ExpandFileName(MainDir+DS+'Extensions' + DS)));
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function TSimbaForm.GetHighlighter: TSynCustomHighlighter;
|
||||
begin
|
||||
@ -3122,7 +3177,6 @@ begin
|
||||
if Assigned(self.OCR_Fonts) then
|
||||
self.OCR_Fonts.Free;
|
||||
FormWriteln('Freeing the current fonts. Creating new ones now');
|
||||
// XXX: Can this cause problems when running scripts?
|
||||
Self.OCR_Fonts := TMOCR.Create(nil);
|
||||
OCR_Fonts.InitTOCR(fontPath);
|
||||
end;
|
||||
@ -3292,7 +3346,8 @@ begin
|
||||
else
|
||||
InitialDir := ScriptDir;
|
||||
Options := [ofAllowMultiSelect, ofExtensionDifferent, ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail];
|
||||
Filter:= 'Simba Files|*.simba;*.simb;*.cogat;*.mufa;*.txt;*.' +LoadSettingDef('Settings/Extensions/FileExtension','sex')+
|
||||
Filter:= 'Simba Files|*.simba;*.simb;*.cogat;*.mufa;*.txt' +
|
||||
{$IFDEF USE_EXTENSIONS}';*.' + LoadSettingDef('Settings/Extensions/FileExtension', 'sex') + {$ENDIF}
|
||||
'|Any files|*.*';
|
||||
if Execute then
|
||||
begin
|
||||
@ -3399,8 +3454,8 @@ begin
|
||||
InitialDir := ExtractFileDir(CurrScript.ScriptFile)
|
||||
else
|
||||
InitialDir := ScriptDir;
|
||||
filter := 'Simba Files|*.simba;*.simb;*.cogat;*.mufa;*.txt;*.' +
|
||||
LoadSettingDef('Settings/Extensions/FileExtension','sex')+
|
||||
filter := 'Simba Files|*.simba;*.simb;*.cogat;*.mufa;*.txt' +
|
||||
{$IFDEF USE_EXTENSIONS}';*.' + LoadSettingDef('Settings/Extensions/FileExtension','sex') + {$ENDIF}
|
||||
'|Any files|*.*';
|
||||
if Execute then
|
||||
begin;
|
||||
|
@ -51,7 +51,12 @@ type
|
||||
|
||||
procedure ImageMainMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||
procedure ImageInfoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||
Procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
|
||||
procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
|
||||
|
||||
private
|
||||
{ Are we currently picking? }
|
||||
FPicking: Boolean;
|
||||
|
||||
public
|
||||
manager: TIOManager;
|
||||
{ Form components }
|
||||
@ -68,7 +73,9 @@ type
|
||||
|
||||
{ Handles }
|
||||
InfoHandle, ImageHandle : HDC;
|
||||
|
||||
public
|
||||
property Picking: Boolean read FPicking;
|
||||
property OnPick: TColourPickEvent read FPickEvent write FPickEvent;
|
||||
end;
|
||||
|
||||
@ -80,7 +87,8 @@ constructor TMColorPicker.Create(manager: TIOManager);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
self.manager := manager;
|
||||
Self.manager := manager;
|
||||
Self.FPicking := False;
|
||||
end;
|
||||
|
||||
destructor TMColorPicker.Destroy;
|
||||
@ -103,12 +111,17 @@ var
|
||||
|
||||
|
||||
begin
|
||||
if self.FPicking then
|
||||
raise Exception.Create('Pick() has not yet returned, but has been called'
|
||||
+ 'again');
|
||||
|
||||
Self.FPicking := True;
|
||||
{ Disable both of the color pick buttons }
|
||||
w := 0;
|
||||
h := 0;
|
||||
{ If the target window isn't valid (closed etc), make the destkop the new window}
|
||||
if not Self.Manager.TargetValid then
|
||||
self.Manager.SetDesktop;
|
||||
Self.Manager.SetDesktop;
|
||||
|
||||
{Desktop is needed for the whole picture}
|
||||
Desktop := TIOManager.Create;
|
||||
@ -214,6 +227,8 @@ begin
|
||||
|
||||
Desktop.free;
|
||||
|
||||
self.FPicking := False;
|
||||
|
||||
{ Re-enable the color pick buttons }
|
||||
// Application.MainForm.Enabled := True;
|
||||
// ColourHistoryForm.Enabled := True;
|
||||
|
@ -176,12 +176,15 @@ end;
|
||||
{ Get the current pointer to our list of Fonts }
|
||||
function TMOCR.GetFonts:TMFonts;
|
||||
begin
|
||||
Exit(Self.FFonts);
|
||||
Result := Self.FFonts;
|
||||
end;
|
||||
|
||||
{ Set new Fonts. We set it to a Copy of NewFonts }
|
||||
procedure TMOCR.SetFonts(const NewFonts: TMFonts);
|
||||
begin
|
||||
if (Self.FFonts <> nil) then
|
||||
Self.FFonts.Free;
|
||||
|
||||
Self.FFonts := NewFonts.Copy(Self.Client);
|
||||
end;
|
||||
|
||||
|
@ -413,34 +413,40 @@ implementation
|
||||
result := xmask and ButtonP > 0;
|
||||
end;
|
||||
|
||||
procedure TWindow.SendString(str: string);
|
||||
var
|
||||
i: integer;
|
||||
key: byte;
|
||||
HoldShift : boolean;
|
||||
procedure TWindow.SendString(str: string);
|
||||
var
|
||||
I, L: Integer;
|
||||
K: Byte;
|
||||
HoldShift: Boolean;
|
||||
begin
|
||||
HoldShift := False;
|
||||
L := Length(str);
|
||||
for I := 1 to L do
|
||||
begin
|
||||
HoldShift := false;
|
||||
for i := 1 to length(str) do
|
||||
if (((str[I] >= 'A') and (str[I] <= 'Z')) or
|
||||
((str[I] >= '!') and (str[I] <= '&')) or
|
||||
((str[I] >= '(') and (str[I] <= '+')) or
|
||||
(str[I] = ':') or
|
||||
((str[I] >= '<') and (str[I] <= '@')) or
|
||||
((str[I] >= '^') and (str[I] <= '_')) or
|
||||
((str[I] >= '{') and (str[I] <= '~'))) then
|
||||
begin
|
||||
if((str[i] >= 'A') and (str[i] <= 'Z')) then
|
||||
begin
|
||||
HoldKey(VK_SHIFT);
|
||||
HoldShift:= True;
|
||||
str[i] := lowerCase(str[i]);
|
||||
end else
|
||||
if HoldShift then
|
||||
begin
|
||||
HoldShift:= false;
|
||||
ReleaseKey(VK_SHIFT);
|
||||
end;
|
||||
key:= GetKeyCode(str[i]);
|
||||
HoldKey(key);
|
||||
//BenLand100: You should probably wait here...
|
||||
ReleaseKey(key);
|
||||
HoldKey(VK_SHIFT);
|
||||
HoldShift := True;
|
||||
end;
|
||||
if HoldShift then
|
||||
|
||||
K := GetKeyCode(str[I]);
|
||||
HoldKey(K);
|
||||
Sleep(20);
|
||||
ReleaseKey(K);
|
||||
|
||||
if (HoldShift) then
|
||||
begin
|
||||
HoldShift := False;
|
||||
ReleaseKey(VK_SHIFT);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWindow.HoldKey(key: integer);
|
||||
begin
|
||||
|
@ -366,34 +366,34 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWindow.SendString(str: string);
|
||||
var
|
||||
i: integer;
|
||||
key: byte;
|
||||
HoldShift : boolean;
|
||||
procedure TWindow.SendString(str: string);
|
||||
var
|
||||
I, L: integer;
|
||||
C: Byte;
|
||||
ScanCode, VK: Word;
|
||||
Shift: boolean;
|
||||
begin
|
||||
L := Length(str);
|
||||
for I := 1 to L do
|
||||
begin
|
||||
HoldShift := false;
|
||||
for i := 1 to length(str) do
|
||||
begin
|
||||
if((str[i] >= 'A') and (str[i] <= 'Z')) then
|
||||
begin
|
||||
HoldKey(VK_SHIFT);
|
||||
HoldShift:= True;
|
||||
str[i] := lowerCase(str[i]);
|
||||
end else
|
||||
if HoldShift then
|
||||
begin
|
||||
HoldShift:= false;
|
||||
ReleaseKey(VK_SHIFT);
|
||||
end;
|
||||
key:= GetKeyCode(str[i]);
|
||||
HoldKey(key);
|
||||
//BenLand100 note: probably should wait here
|
||||
ReleaseKey(key);
|
||||
end;
|
||||
if HoldShift then
|
||||
ReleaseKey(VK_SHIFT);
|
||||
VK := VkKeyScan(str[I]);
|
||||
Shift := (Hi(VK) > 0);
|
||||
C := LoByte(VK);
|
||||
ScanCode := MapVirtualKey(C, 0);
|
||||
if (ScanCode = 0) then
|
||||
Continue;
|
||||
|
||||
if (Shift) then
|
||||
Keybd_Event(VK_SHIFT, $2A, 0, 0);
|
||||
|
||||
Keybd_Event(C, ScanCode, 0, 0);
|
||||
Keybd_Event(C, ScanCode, KEYEVENTF_KEYUP, 0);
|
||||
|
||||
if (Shift) then
|
||||
Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWindow.HoldKey(key: integer);
|
||||
begin
|
||||
keyinput.Down(key);
|
||||
|
Loading…
Reference in New Issue
Block a user