mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
Add qlo10k1
Added qlo10k1 by Peter Zubaj.
This commit is contained in:
parent
83b4a93e03
commit
ab3e05d1da
73 changed files with 12923 additions and 1 deletions
2
Makefile
2
Makefile
|
|
@ -2,7 +2,7 @@ VERSION = 1.0.9rc1
|
||||||
TOP = .
|
TOP = .
|
||||||
SUBDIRS = ac3dec as10k1 envy24control hdsploader hdspconf hdspmixer \
|
SUBDIRS = ac3dec as10k1 envy24control hdsploader hdspconf hdspmixer \
|
||||||
mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl us428control \
|
mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl us428control \
|
||||||
usx2yloader vxloader echomixer ld10k1
|
usx2yloader vxloader echomixer ld10k1 qlo10k1
|
||||||
|
|
||||||
all:
|
all:
|
||||||
@for i in $(SUBDIRS); do cd $(TOP)/$$i; ./cvscompile $(CVSCOMPILE_ARGS); cd ..; make -C $$i; done
|
@for i in $(SUBDIRS); do cd $(TOP)/$$i; ./cvscompile $(CVSCOMPILE_ARGS); cd ..; make -C $$i; done
|
||||||
|
|
|
||||||
4
qlo10k1/AUTHORS
Normal file
4
qlo10k1/AUTHORS
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Peter Zubaj <pzad@pobox.sk>
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Eduardo García-Mádico Portabella <informatica@eurogaran.com>
|
||||||
340
qlo10k1/COPYING
Normal file
340
qlo10k1/COPYING
Normal file
|
|
@ -0,0 +1,340 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
1
qlo10k1/ChangeLog
Normal file
1
qlo10k1/ChangeLog
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
236
qlo10k1/INSTALL
Normal file
236
qlo10k1/INSTALL
Normal file
|
|
@ -0,0 +1,236 @@
|
||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||||
|
Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. (Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.)
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You only need
|
||||||
|
`configure.ac' if you want to change it or regenerate `configure' using
|
||||||
|
a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not support the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a
|
||||||
|
time in the source code directory. After you have installed the
|
||||||
|
package for one architecture, use `make distclean' before reconfiguring
|
||||||
|
for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PREFIX', the package will
|
||||||
|
use PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script). Here is a another example:
|
||||||
|
|
||||||
|
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||||
|
configuration-related scripts to be executed by `/bin/bash'.
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
||||||
9
qlo10k1/Makefile.am
Normal file
9
qlo10k1/Makefile.am
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
SUBDIRS = src
|
||||||
|
|
||||||
|
EXTRA_DIST = COPYING configure.in README NEWS AUTHORS TODO INSTALL ChangeLog
|
||||||
|
|
||||||
|
alsa-dist: distdir
|
||||||
|
@rm -rf ../distdir/ld10k1
|
||||||
|
@mkdir -p ../distdir/ld10k1
|
||||||
|
@cp -RLpv $(distdir)/* ../distdir/ld10k1
|
||||||
|
@rm -rf $(distdir)
|
||||||
14
qlo10k1/NEWS
Normal file
14
qlo10k1/NEWS
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
0.1.2
|
||||||
|
- ld10k1 0.1.8 required
|
||||||
|
- Colors and better object positioning - Eduardo García-Mádico Portabella
|
||||||
|
0.1.1test3
|
||||||
|
- Warning cleaning
|
||||||
|
0.1.1test2
|
||||||
|
- Fixed build
|
||||||
|
- Fixed "make dist" - not include moc generated sources
|
||||||
|
0.1.1test1
|
||||||
|
- No more needs for kde - only qt is needed
|
||||||
|
- Sync with lo10k1 - save dsp config, load dsp config, save patch
|
||||||
|
- Source cleanup
|
||||||
|
0.1.0
|
||||||
|
- First version
|
||||||
6
qlo10k1/README
Normal file
6
qlo10k1/README
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Some sort of GUI for ld10k1.
|
||||||
|
Still early stage of development.
|
||||||
|
Source is ugly (better not to read).
|
||||||
|
Don't expeect everything will work.
|
||||||
|
To compile needs QT instaled.
|
||||||
|
First install ld10k1.
|
||||||
6
qlo10k1/TODO
Normal file
6
qlo10k1/TODO
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
- nefunguje dobre disconnect na inpute
|
||||||
|
- source cleanup (warnings, ...)
|
||||||
|
- rename
|
||||||
|
- patch info
|
||||||
|
- dsp ussage info
|
||||||
|
- optimalization - is getting slow
|
||||||
217
qlo10k1/acinclude.m4
Normal file
217
qlo10k1/acinclude.m4
Normal file
|
|
@ -0,0 +1,217 @@
|
||||||
|
# Check for Qt compiler flags, linker flags, and binary packages
|
||||||
|
AC_DEFUN([gw_CHECK_QT],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_PROG_CXX])
|
||||||
|
AC_REQUIRE([AC_PATH_X])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([QTDIR])
|
||||||
|
AC_ARG_WITH([qtdir], [ --with-qtdir=DIR Qt installation directory [default=$QTDIR]], QTDIR=$withval)
|
||||||
|
# Check that QTDIR is defined or that --with-qtdir given
|
||||||
|
if test x"$QTDIR" = x ; then
|
||||||
|
QT_SEARCH="/usr/lib/qt31 /usr/local/qt31 /usr/lib/qt3 /usr/local/qt3 /usr/lib/qt2 /usr/local/qt2 /usr/lib/qt /usr/local/qt"
|
||||||
|
for i in $QT_SEARCH; do
|
||||||
|
if test -f $i/include/qglobal.h -a x$QTDIR = x; then QTDIR=$i; fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if test x"$QTDIR" = x ; then
|
||||||
|
AC_MSG_ERROR([*** QTDIR must be defined, or --with-qtdir option given])
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$QTDIR])
|
||||||
|
|
||||||
|
# Change backslashes in QTDIR to forward slashes to prevent escaping
|
||||||
|
# problems later on in the build process, mainly for Cygwin build
|
||||||
|
# environment using MSVC as the compiler
|
||||||
|
# TODO: Use sed instead of perl
|
||||||
|
QTDIR=`echo $QTDIR | perl -p -e 's/\\\\/\\//g'`
|
||||||
|
|
||||||
|
# Figure out which version of Qt we are using
|
||||||
|
AC_MSG_CHECKING([Qt version])
|
||||||
|
QT_VER=`grep 'define.*QT_VERSION_STR\W' $QTDIR/include/qglobal.h | perl -p -e 's/\D//g'`
|
||||||
|
case "${QT_VER}" in
|
||||||
|
2*)
|
||||||
|
QT_MAJOR="2"
|
||||||
|
;;
|
||||||
|
3*)
|
||||||
|
QT_MAJOR="3"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_ERROR([*** Don't know how to handle this Qt major version])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_MSG_RESULT([$QT_VER ($QT_MAJOR)])
|
||||||
|
|
||||||
|
# Check that moc is in path
|
||||||
|
AC_PATH_PROG([MOC], [moc], [$QTDIR/bin/moc], [$PATH:$QTDIR/bin])
|
||||||
|
if test x$MOC = x ; then
|
||||||
|
AC_MSG_ERROR([*** moc must be in path])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# uic is the Qt user interface compiler
|
||||||
|
AC_PATH_PROG([UIC], [uic], [$QTDIR/bin/uic], [$PATH:$QTDIR/bin])
|
||||||
|
if test x$UIC = x ; then
|
||||||
|
AC_MSG_ERROR([*** uic must be in path])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# qembed is the Qt data embedding utility.
|
||||||
|
# It is located in $QTDIR/tools/qembed, and must be compiled and installed
|
||||||
|
# manually, we'll let it slide if it isn't present
|
||||||
|
AC_PATH_PROG([QEMBED], [qembed], [$QTDIR/bin/qembed], [$PATH:$QTDIR/bin])
|
||||||
|
|
||||||
|
|
||||||
|
# Calculate Qt include path
|
||||||
|
QT_CXXFLAGS="-I$QTDIR/include"
|
||||||
|
|
||||||
|
QT_IS_EMBEDDED="no"
|
||||||
|
# On unix, figure out if we're doing a static or dynamic link
|
||||||
|
case "${host}" in
|
||||||
|
*-cygwin)
|
||||||
|
AC_DEFINE_UNQUOTED(WIN32, "", Defined if on Win32 platform)
|
||||||
|
if test -f "$QTDIR/lib/qt.lib" ; then
|
||||||
|
QT_LIB="qt.lib"
|
||||||
|
QT_IS_STATIC="yes"
|
||||||
|
QT_IS_MT="no"
|
||||||
|
elif test -f "$QTDIR/lib/qt-mt.lib" ; then
|
||||||
|
QT_LIB="qt-mt.lib"
|
||||||
|
QT_IS_STATIC="yes"
|
||||||
|
QT_IS_MT="yes"
|
||||||
|
elif test -f "$QTDIR/lib/qt$QT_VER.lib" ; then
|
||||||
|
QT_LIB="qt$QT_VER.lib"
|
||||||
|
QT_IS_STATIC="no"
|
||||||
|
QT_IS_MT="no"
|
||||||
|
elif test -f "$QTDIR/lib/qt-mt$QT_VER.lib" ; then
|
||||||
|
QT_LIB="qt-mt$QT_VER.lib"
|
||||||
|
QT_IS_STATIC="no"
|
||||||
|
QT_IS_MT="yes"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
QT_IS_STATIC=`ls $QTDIR/lib/*.a 2> /dev/null`
|
||||||
|
if test "x$QT_IS_STATIC" = x; then
|
||||||
|
QT_IS_STATIC="no"
|
||||||
|
else
|
||||||
|
QT_IS_STATIC="yes"
|
||||||
|
fi
|
||||||
|
if test x$QT_IS_STATIC = xno ; then
|
||||||
|
QT_IS_DYNAMIC=`ls $QTDIR/lib/*.so 2> /dev/null`
|
||||||
|
if test "x$QT_IS_DYNAMIC" = x; then
|
||||||
|
AC_MSG_ERROR([*** Couldn't find any Qt libraries])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x`ls $QTDIR/lib/libqt.* 2> /dev/null`" != x ; then
|
||||||
|
QT_LIB="-lqt"
|
||||||
|
QT_IS_MT="no"
|
||||||
|
elif test "x`ls $QTDIR/lib/libqt-mt.* 2> /dev/null`" != x ; then
|
||||||
|
QT_LIB="-lqt-mt"
|
||||||
|
QT_IS_MT="yes"
|
||||||
|
elif test "x`ls $QTDIR/lib/libqte.* 2> /dev/null`" != x ; then
|
||||||
|
QT_LIB="-lqte"
|
||||||
|
QT_IS_MT="no"
|
||||||
|
QT_IS_EMBEDDED="yes"
|
||||||
|
elif test "x`ls $QTDIR/lib/libqte-mt.* 2> /dev/null`" != x ; then
|
||||||
|
QT_LIB="-lqte-mt"
|
||||||
|
QT_IS_MT="yes"
|
||||||
|
QT_IS_EMBEDDED="yes"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_MSG_CHECKING([if Qt is static])
|
||||||
|
AC_MSG_RESULT([$QT_IS_STATIC])
|
||||||
|
AC_MSG_CHECKING([if Qt is multithreaded])
|
||||||
|
AC_MSG_RESULT([$QT_IS_MT])
|
||||||
|
AC_MSG_CHECKING([if Qt is embedded])
|
||||||
|
AC_MSG_RESULT([$QT_IS_EMBEDDED])
|
||||||
|
|
||||||
|
QT_GUILINK=""
|
||||||
|
QASSISTANTCLIENT_LDADD="-lqassistantclient"
|
||||||
|
case "${host}" in
|
||||||
|
*irix*)
|
||||||
|
QT_LIBS="$QT_LIB"
|
||||||
|
if test $QT_IS_STATIC = yes ; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*linux*)
|
||||||
|
QT_LIBS="$QT_LIB"
|
||||||
|
if test $QT_IS_STATIC = yes && test $QT_IS_EMBEDDED = no; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -ldl -ljpeg"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
*osf*)
|
||||||
|
# Digital Unix (aka DGUX aka Tru64)
|
||||||
|
QT_LIBS="$QT_LIB"
|
||||||
|
if test $QT_IS_STATIC = yes ; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*solaris*)
|
||||||
|
QT_LIBS="$QT_LIB"
|
||||||
|
if test $QT_IS_STATIC = yes ; then
|
||||||
|
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -lresolv -lsocket -lnsl"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
*win*)
|
||||||
|
# linker flag to suppress console when linking a GUI app on Win32
|
||||||
|
QT_GUILINK="/subsystem:windows"
|
||||||
|
|
||||||
|
if test $QT_MAJOR = "3" ; then
|
||||||
|
if test $QT_IS_MT = yes ; then
|
||||||
|
QT_LIBS="/nodefaultlib:libcmt"
|
||||||
|
else
|
||||||
|
QT_LIBS="/nodefaultlib:libc"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $QT_IS_STATIC = yes ; then
|
||||||
|
QT_LIBS="$QT_LIBS $QT_LIB kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib shell32.lib imm32.lib advapi32.lib wsock32.lib winspool.lib winmm.lib netapi32.lib"
|
||||||
|
if test $QT_MAJOR = "3" ; then
|
||||||
|
QT_LIBS="$QT_LIBS qtmain.lib"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
QT_LIBS="$QT_LIBS $QT_LIB"
|
||||||
|
if test $QT_MAJOR = "3" ; then
|
||||||
|
QT_CXXFLAGS="$QT_CXXFLAGS -DQT_DLL"
|
||||||
|
QT_LIBS="$QT_LIBS qtmain.lib qui.lib user32.lib netapi32.lib"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
QASSISTANTCLIENT_LDADD="qassistantclient.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if test x"$QT_IS_EMBEDDED" = "xyes" ; then
|
||||||
|
QT_CXXFLAGS="-DQWS $QT_CXXFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x"$QT_IS_MT" = "xyes" ; then
|
||||||
|
QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -DQT_THREAD_SUPPORT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
QT_LDADD="-L$QTDIR/lib $QT_LIBS"
|
||||||
|
|
||||||
|
if test x$QT_IS_STATIC = xyes ; then
|
||||||
|
OLDLIBS="$LIBS"
|
||||||
|
LIBS="$QT_LDADD"
|
||||||
|
AC_CHECK_LIB(Xft, XftFontOpen, QT_LDADD="$QT_LDADD -lXft")
|
||||||
|
LIBS="$LIBS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([QT_CXXFLAGS])
|
||||||
|
AC_MSG_RESULT([$QT_CXXFLAGS])
|
||||||
|
AC_MSG_CHECKING([QT_LDADD])
|
||||||
|
AC_MSG_RESULT([$QT_LDADD])
|
||||||
|
|
||||||
|
AC_SUBST(QT_CXXFLAGS)
|
||||||
|
AC_SUBST(QT_LDADD)
|
||||||
|
AC_SUBST(QT_GUILINK)
|
||||||
|
AC_SUBST(QASSISTANTCLIENT_LDADD)
|
||||||
|
|
||||||
|
])
|
||||||
65
qlo10k1/config.h.in
Normal file
65
qlo10k1/config.h.in
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
/* config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `lo10k1' library (-llo10k1). */
|
||||||
|
#undef HAVE_LIBLO10K1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Defined if on Win32 platform */
|
||||||
|
#undef WIN32
|
||||||
|
|
||||||
|
/* Define to 1 if your processor stores words with the most significant byte
|
||||||
|
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||||
|
#undef WORDS_BIGENDIAN
|
||||||
15
qlo10k1/configure.in
Normal file
15
qlo10k1/configure.in
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
AC_INIT(src/main.cpp)
|
||||||
|
AM_INIT_AUTOMAKE(qlo10k1, 0.1.2)
|
||||||
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
AC_PROG_CXX
|
||||||
|
AC_PROG_LD
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
AC_C_BIGENDIAN
|
||||||
|
gw_CHECK_QT
|
||||||
|
CXXFLAGS="$CXXFLAGS $QT_CXXFLAGS -Wall"
|
||||||
|
AM_PATH_LD10K1(0.1.8)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile
|
||||||
|
src/Makefile)
|
||||||
9
qlo10k1/cvscompile
Normal file
9
qlo10k1/cvscompile
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
autoreconf -fi
|
||||||
|
export CFLAGS='-O2 -Wall -pipe -g'
|
||||||
|
echo "CFLAGS=$CFLAGS"
|
||||||
|
echo "./configure $@"
|
||||||
|
./configure $@
|
||||||
|
unset CFLAGS
|
||||||
|
make
|
||||||
137
qlo10k1/src/Makefile.am
Normal file
137
qlo10k1/src/Makefile.am
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
#SUBDIRS = dlgs icons
|
||||||
|
|
||||||
|
# this is the program that gets installed. it's name is used for all
|
||||||
|
# of the other Makefile.am variables
|
||||||
|
bin_PROGRAMS = qlo10k1
|
||||||
|
|
||||||
|
# the libraries to link against.
|
||||||
|
qlo10k1_LDADD = $(LDADD) $(QT_LDADD)
|
||||||
|
|
||||||
|
EXTRA_DIST = dlgs/connectionwizardbase.ui dlgs/filecontroldialogbase.ui dlgs/filecontrolsdialogbase.ui \
|
||||||
|
dlgs/loadpatchdialogbase.ui dlgs/mainwndbase.ui dlgs/patchdialogbase.ui dlgs/preferencesbase.ui \
|
||||||
|
dlgs/newiodialogbase.ui dlgs/aboutdialogbase.ui dlgs/transformpatchbase.ui\
|
||||||
|
icons/routing_fx.xpm \
|
||||||
|
icons/routing_in.xpm \
|
||||||
|
icons/routing_out.xpm \
|
||||||
|
icons/routing_route.xpm \
|
||||||
|
icons/routing_effect.xpm \
|
||||||
|
icons/routing_effect_stack.xpm \
|
||||||
|
icons/routing_zoom_plus.xpm \
|
||||||
|
icons/routing_zoom_minus.xpm \
|
||||||
|
icons/routing_normal.xpm
|
||||||
|
|
||||||
|
# these are the headers for your project
|
||||||
|
noinst_HEADERS =
|
||||||
|
|
||||||
|
%.moc.cpp: %.h
|
||||||
|
$(MOC) -o $@ $<
|
||||||
|
|
||||||
|
%.h: %.ui
|
||||||
|
$(UIC) -o $@ $<
|
||||||
|
|
||||||
|
%.cpp: %.ui
|
||||||
|
$(UIC) -o $@ -impl $*.h $<
|
||||||
|
|
||||||
|
qlo10k1_UI = dlgs/connectionwizardbase.h \
|
||||||
|
dlgs/connectionwizardbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/filecontroldialogbase.h \
|
||||||
|
dlgs/filecontroldialogbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/filecontrolsdialogbase.h \
|
||||||
|
dlgs/filecontrolsdialogbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/loadpatchdialogbase.h \
|
||||||
|
dlgs/loadpatchdialogbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/transformpatchbase.h \
|
||||||
|
dlgs/transformpatchbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/mainwndbase.h \
|
||||||
|
dlgs/mainwndbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/patchdialogbase.h \
|
||||||
|
dlgs/patchdialogbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/preferencesbase.h \
|
||||||
|
dlgs/preferencesbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/newiodialogbase.h \
|
||||||
|
dlgs/newiodialogbase.cpp \
|
||||||
|
\
|
||||||
|
dlgs/aboutdialogbase.h \
|
||||||
|
dlgs/aboutdialogbase.cpp
|
||||||
|
|
||||||
|
qlo10k1_MOC = dlgs/connectionwizardbase.moc.cpp \
|
||||||
|
dlgs/filecontroldialogbase.moc.cpp \
|
||||||
|
dlgs/filecontrolsdialogbase.moc.cpp \
|
||||||
|
dlgs/loadpatchdialogbase.moc.cpp \
|
||||||
|
dlgs/mainwndbase.moc.cpp \
|
||||||
|
dlgs/patchdialogbase.moc.cpp \
|
||||||
|
dlgs/preferencesbase.moc.cpp \
|
||||||
|
dlgs/newiodialogbase.moc.cpp \
|
||||||
|
dlgs/aboutdialogbase.moc.cpp \
|
||||||
|
dlgs/transformpatchbase.moc.cpp \
|
||||||
|
\
|
||||||
|
connectionwizard.moc.cpp \
|
||||||
|
filecontroldialog.moc.cpp \
|
||||||
|
loadpatchdialog.moc.cpp \
|
||||||
|
mainwnd.moc.cpp \
|
||||||
|
patchdialog.moc.cpp \
|
||||||
|
preferences.moc.cpp \
|
||||||
|
routingwidget.moc.cpp \
|
||||||
|
newiodialog.moc.cpp \
|
||||||
|
aboutdialog.moc.cpp \
|
||||||
|
transformpatchdialog.moc.cpp
|
||||||
|
|
||||||
|
BUILT_SOURCES = $(qlo10k1_MOC) $(qlo10k1_UI)
|
||||||
|
CLEANFILES = $(BUILT_SOURCES)
|
||||||
|
|
||||||
|
# which sources should be compiled for qlo10k1
|
||||||
|
# emu10k1file.cpp emu10k1file.h
|
||||||
|
qlo10k1_SOURCES = app_global.h connectionwizard.cpp connectionwizard.h \
|
||||||
|
filecontroldialog.cpp filecontroldialog.h ld10k1file.cpp ld10k1file.h \
|
||||||
|
loadpatchdialog.cpp loadpatchdialog.h main.cpp \
|
||||||
|
mainwnd.cpp mainwnd.h patchdialog.cpp patchdialog.h preferences.cpp preferences.h \
|
||||||
|
routingwidget.h routingwidget.cpp structure.cpp structure.h structure_patch.cpp structure_patch.h \
|
||||||
|
structure_io.cpp structure_io.h structure_link.cpp structure_link.h\
|
||||||
|
structure_aa.cpp strglobal.h strglobal.cpp routingwidget_new.cpp routingwidget_menu.cpp \
|
||||||
|
newiodialog.h newiodialog.cpp strparam.h strparam.cpp \
|
||||||
|
aboutdialog.h aboutdialog.cpp transformpatchdialog.h transformpatchdialog.cpp \
|
||||||
|
custom_colors.h
|
||||||
|
# \
|
||||||
|
# $(qlo10k1_UI) \
|
||||||
|
# $(qlo10k1_MOC)
|
||||||
|
|
||||||
|
nodist_qlo10k1_SOURCES = $(qlo10k1_UI) \
|
||||||
|
$(qlo10k1_MOC)
|
||||||
|
|
||||||
|
dlgs/connectionwizardbase.h : dlgs/connectionwizardbase.ui
|
||||||
|
dlgs/connectionwizardbase.cpp : dlgs/connectionwizardbase.h dlgs/connectionwizardbase.ui
|
||||||
|
|
||||||
|
dlgs/filecontroldialogbase.h : dlgs/filecontroldialogbase.ui
|
||||||
|
dlgs/filecontroldialogbase.cpp : dlgs/filecontroldialogbase.h dlgs/filecontroldialogbase.ui
|
||||||
|
|
||||||
|
dlgs/filecontrolsdialogbase.h : dlgs/filecontrolsdialogbase.ui
|
||||||
|
dlgs/filecontrolsdialogbase.cpp : dlgs/filecontrolsdialogbase.h dlgs/filecontrolsdialogbase.ui
|
||||||
|
|
||||||
|
dlgs/loadpatchdialogbase.h : dlgs/loadpatchdialogbase.ui
|
||||||
|
dlgs/loadpatchdialogbase.cpp : dlgs/loadpatchdialogbase.h dlgs/loadpatchdialogbase.ui
|
||||||
|
|
||||||
|
dlgs/transformpatchbase.h : dlgs/transformpatchbase.ui
|
||||||
|
dlgs/transformpatchbase.cpp : dlgs/transformpatchbase.h dlgs/transformpatchbase.ui
|
||||||
|
|
||||||
|
dlgs/mainwndbase.h : dlgs/mainwndbase.ui
|
||||||
|
dlgs/mainwndbase.cpp : dlgs/mainwndbase.h dlgs/mainwndbase.ui
|
||||||
|
|
||||||
|
dlgs/patchdialogbase.h : dlgs/patchdialogbase.ui
|
||||||
|
dlgs/patchdialogbase.cpp : dlgs/patchdialogbase.h dlgs/patchdialogbase.ui
|
||||||
|
|
||||||
|
dlgs/preferencesbase.h : dlgs/preferencesbase.ui
|
||||||
|
dlgs/preferencesbase.cpp : dlgs/preferencesbase.h dlgs/preferencesbase.ui
|
||||||
|
|
||||||
|
dlgs/newiodialogbase.h : dlgs/newiodialogbase.ui
|
||||||
|
dlgs/newiodialogbase.cpp : dlgs/newiodialogbase.h dlgs/newiodialogbase.ui
|
||||||
|
|
||||||
|
dlgs/aboutdialogbase.h : dlgs/aboutdialogbase.ui
|
||||||
|
dlgs/aboutdialogbase.cpp : dlgs/aboutdialogbase.h dlgs/aboutdialogbase.ui
|
||||||
34
qlo10k1/src/aboutdialog.cpp
Normal file
34
qlo10k1/src/aboutdialog.cpp
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
|
||||||
|
#include "aboutdialog.h"
|
||||||
|
|
||||||
|
AboutDlg::AboutDlg()
|
||||||
|
{
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AboutDlg::okClicked()
|
||||||
|
{
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
36
qlo10k1/src/aboutdialog.h
Normal file
36
qlo10k1/src/aboutdialog.h
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ABOUTDIALOG_H
|
||||||
|
#define ABOUTDIALOG_H
|
||||||
|
|
||||||
|
#include "dlgs/aboutdialogbase.h"
|
||||||
|
|
||||||
|
class AboutDlg : public AboutDialogBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
AboutDlg();
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ABOUTDIALOG_H
|
||||||
6
qlo10k1/src/app_global.h
Normal file
6
qlo10k1/src/app_global.h
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef __APP_GLOBAL_H
|
||||||
|
#define __APP_GLOBAL_H
|
||||||
|
|
||||||
|
#define APP_NAME "qlo10k1 - emu10k1 patch loader"
|
||||||
|
|
||||||
|
#endif /* __APP_GLOBAL_H */
|
||||||
324
qlo10k1/src/connectionwizard.cpp
Normal file
324
qlo10k1/src/connectionwizard.cpp
Normal file
|
|
@ -0,0 +1,324 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qcheckbox.h>
|
||||||
|
#include <qlistbox.h>
|
||||||
|
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "connectionwizard.h"
|
||||||
|
|
||||||
|
ConnectionWizard::ConnectionWizard(bool o, StrGlobal *g, RouteInfo *r)
|
||||||
|
: ConnectionWizardBase()
|
||||||
|
{
|
||||||
|
out = o;
|
||||||
|
global = g;
|
||||||
|
route = *r;
|
||||||
|
rptr = r;
|
||||||
|
|
||||||
|
rtype = None;
|
||||||
|
pto = NULL;
|
||||||
|
|
||||||
|
RSItemIO *io = r->getToIO();
|
||||||
|
|
||||||
|
if (io)
|
||||||
|
{
|
||||||
|
RSItemBaseWithType *owner = (RSItemBaseWithType *)io->getOwner();
|
||||||
|
switch (owner->type())
|
||||||
|
{
|
||||||
|
case RSItemBaseWithType::In:
|
||||||
|
rtype = In;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Out:
|
||||||
|
rtype = Out;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::FX:
|
||||||
|
rtype = FX;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Patch:
|
||||||
|
if (io->isOutput())
|
||||||
|
rtype = POut;
|
||||||
|
else
|
||||||
|
rtype = PIn;
|
||||||
|
pto = (StrPatch *)owner;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!out)
|
||||||
|
{
|
||||||
|
rbOutput->hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rbFX->hide();
|
||||||
|
rbInput->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
StrPatch *patch;
|
||||||
|
|
||||||
|
lbPatch->clear();
|
||||||
|
for(patch = global->Patches.first(); patch; patch = global->Patches.next() )
|
||||||
|
{
|
||||||
|
lbPatch->insertItem(patch->name());
|
||||||
|
patchList.append(patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(rbNone, SIGNAL(clicked()), this, SLOT(noneClicked()));
|
||||||
|
connect(rbFX, SIGNAL(clicked()), this, SLOT(fxClicked()));
|
||||||
|
connect(rbInput, SIGNAL(clicked()), this, SLOT(inClicked()));
|
||||||
|
connect(rbOutput, SIGNAL(clicked()), this, SLOT(outClicked()));
|
||||||
|
connect(rbPatch, SIGNAL(clicked()), this, SLOT(patchClicked()));
|
||||||
|
|
||||||
|
connect(lbPatch, SIGNAL(clicked(QListBoxItem *)), this, SLOT(patchListClicked(QListBoxItem *)));
|
||||||
|
connect(lbEnd, SIGNAL(clicked(QListBoxItem *)), this, SLOT(endListClicked(QListBoxItem *)));
|
||||||
|
|
||||||
|
connect(finishButton(), SIGNAL(clicked()), this, SLOT(finishClicked()));
|
||||||
|
|
||||||
|
connect(this, SIGNAL(selected(const QString &)), this, SLOT(selected(const QString &)));
|
||||||
|
helpButton()->hide();
|
||||||
|
|
||||||
|
setFinishEnabled(pageType, true);
|
||||||
|
setNextEnabled(pageType, true);
|
||||||
|
setFinishEnabled(pagePatch, true);
|
||||||
|
setNextEnabled(pagePatch, true);
|
||||||
|
setFinishEnabled(pageEnd, true);
|
||||||
|
setNextEnabled(pageEnd, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::setState(bool patch, bool end, bool back, bool next, bool finish)
|
||||||
|
{
|
||||||
|
setAppropriate(pagePatch, patch ? true : false);
|
||||||
|
setAppropriate(pageEnd, end ? true : false);
|
||||||
|
|
||||||
|
backButton()->setEnabled(back ? true : false);
|
||||||
|
nextButton()->setEnabled(next ? true : false);
|
||||||
|
finishButton()->setEnabled(finish ? true : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::loadEnd(IOType iotype)
|
||||||
|
{
|
||||||
|
lbEnd->clear();
|
||||||
|
ios.clear();
|
||||||
|
|
||||||
|
if (iotype == In)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < (int)global->Inputs.count(); i++)
|
||||||
|
{
|
||||||
|
StrInput *io = global->Inputs.at(i);
|
||||||
|
ios.append(io->getIO(false, 0));
|
||||||
|
lbEnd->insertItem(io->name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (iotype == Out)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < (int)global->Outputs.count(); i++)
|
||||||
|
{
|
||||||
|
StrOutput *io = global->Outputs.at(i);
|
||||||
|
ios.append(io->getIO(true, 0));
|
||||||
|
lbEnd->insertItem(io->name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (iotype == FX)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < (int)global->FXs.count(); i++)
|
||||||
|
{
|
||||||
|
StrFX *io = global->FXs.at(i);
|
||||||
|
ios.append(io->getIO(false, 0));
|
||||||
|
lbEnd->insertItem(io->name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::noneClicked()
|
||||||
|
{
|
||||||
|
setState(false, false, false, false, true);
|
||||||
|
if (rtype != ConnectionWizard::None)
|
||||||
|
{
|
||||||
|
rtype = ConnectionWizard::None;
|
||||||
|
pto = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ConnectionWizard::fxClicked()
|
||||||
|
{
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
if (rtype != ConnectionWizard::FX)
|
||||||
|
{
|
||||||
|
rtype = ConnectionWizard::FX;
|
||||||
|
pto = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::inClicked()
|
||||||
|
{
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
if (rtype != ConnectionWizard::In)
|
||||||
|
{
|
||||||
|
rtype = ConnectionWizard::In;
|
||||||
|
pto = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::outClicked()
|
||||||
|
{
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
if (rtype != ConnectionWizard::Out)
|
||||||
|
{
|
||||||
|
rtype = ConnectionWizard::Out;
|
||||||
|
pto = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::patchClicked()
|
||||||
|
{
|
||||||
|
setState(true, true, false, true, false);
|
||||||
|
if (rtype != ConnectionWizard::PIn && rtype != ConnectionWizard::POut)
|
||||||
|
{
|
||||||
|
if (out)
|
||||||
|
rtype = ConnectionWizard::PIn;
|
||||||
|
else
|
||||||
|
rtype = ConnectionWizard::POut;
|
||||||
|
pto = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::selected(const QString &page)
|
||||||
|
{
|
||||||
|
if (page == "Connection target")
|
||||||
|
{
|
||||||
|
switch (rtype)
|
||||||
|
{
|
||||||
|
case None:
|
||||||
|
rbNone->setChecked(true);
|
||||||
|
setState(false, false, false, false, true);
|
||||||
|
break;
|
||||||
|
case FX:
|
||||||
|
rbFX->setChecked(true);
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
break;
|
||||||
|
case In:
|
||||||
|
rbInput->setChecked(true);
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
break;
|
||||||
|
case Out:
|
||||||
|
rbOutput->setChecked(true);
|
||||||
|
setState(false, true, false, true, false);
|
||||||
|
break;
|
||||||
|
case PIn:
|
||||||
|
case POut:
|
||||||
|
rbPatch->setChecked(true);
|
||||||
|
setState(true, true, false, true, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (page == "Patch")
|
||||||
|
{
|
||||||
|
finishButton()->setEnabled(false);
|
||||||
|
if (pto)
|
||||||
|
{
|
||||||
|
// find patch
|
||||||
|
lbPatch->setCurrentItem(patchList.find(pto));
|
||||||
|
nextButton()->setEnabled(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QListBoxItem *si = lbPatch->selectedItem();
|
||||||
|
if (si)
|
||||||
|
lbPatch->setSelected(si, false);
|
||||||
|
lbPatch->setCurrentItem(-1);
|
||||||
|
nextButton()->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
cbMulti->setChecked(route.getMulti());
|
||||||
|
cbSimple->setChecked(route.getSimple());
|
||||||
|
}
|
||||||
|
else if (page == "End")
|
||||||
|
{
|
||||||
|
nextButton()->setEnabled(false);
|
||||||
|
switch (rtype)
|
||||||
|
{
|
||||||
|
case None:
|
||||||
|
break;
|
||||||
|
case FX:
|
||||||
|
case In:
|
||||||
|
case Out:
|
||||||
|
loadEnd(rtype);
|
||||||
|
break;
|
||||||
|
case PIn:
|
||||||
|
case POut:
|
||||||
|
// load patch in or out
|
||||||
|
ios.clear();
|
||||||
|
lbEnd->clear();
|
||||||
|
|
||||||
|
for (int i = 0; i < (int)pto->getMaxIOIdx(out); i++)
|
||||||
|
{
|
||||||
|
RSItemIO *io = pto->getIO(out, i);
|
||||||
|
if (io)
|
||||||
|
{
|
||||||
|
ios.append(io);
|
||||||
|
lbEnd->insertItem(io->getDesc());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
route.setMulti(cbMulti->isChecked());
|
||||||
|
route.setSimple(cbSimple->isChecked());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (route.getToIO())
|
||||||
|
{
|
||||||
|
lbEnd->setCurrentItem(ios.find(route.getToIO()));
|
||||||
|
finishButton()->setEnabled(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QListBoxItem *si = lbEnd->selectedItem();
|
||||||
|
if (si)
|
||||||
|
lbEnd->setSelected(si, false);
|
||||||
|
lbEnd->setCurrentItem(-1);
|
||||||
|
finishButton()->setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::patchListClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
pto = patchList.at(lbPatch->index(item));
|
||||||
|
route.setToIO(NULL);
|
||||||
|
nextButton()->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::endListClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
route.setToIO(ios.at(lbEnd->index(item)));
|
||||||
|
finishButton()->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConnectionWizard::finishClicked()
|
||||||
|
{
|
||||||
|
*rptr = route;
|
||||||
|
}
|
||||||
128
qlo10k1/src/connectionwizard.h
Normal file
128
qlo10k1/src/connectionwizard.h
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONNECTIONWIZARD_H
|
||||||
|
#define CONNECTIONWIZARD_H
|
||||||
|
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
|
||||||
|
#include "strglobal.h"
|
||||||
|
#include "structure.h"
|
||||||
|
#include "dlgs/connectionwizardbase.h"
|
||||||
|
|
||||||
|
class RouteInfo
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
RSItemIO *toIO;
|
||||||
|
|
||||||
|
bool Multi;
|
||||||
|
bool Simple;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RouteInfo(bool multi, bool simple, RSItemIO *t)
|
||||||
|
{
|
||||||
|
toIO = t;
|
||||||
|
Multi = multi;
|
||||||
|
Simple = simple;
|
||||||
|
}
|
||||||
|
|
||||||
|
RouteInfo(const RouteInfo &from)
|
||||||
|
{
|
||||||
|
toIO = from.toIO;
|
||||||
|
Multi = from.Multi;
|
||||||
|
Simple = from.Simple;
|
||||||
|
}
|
||||||
|
|
||||||
|
RouteInfo()
|
||||||
|
{
|
||||||
|
toIO = NULL;
|
||||||
|
Multi = false;
|
||||||
|
Simple = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *getToIO()
|
||||||
|
{
|
||||||
|
return toIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setToIO(RSItemIO *tio)
|
||||||
|
{
|
||||||
|
toIO = tio;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getMulti()
|
||||||
|
{
|
||||||
|
return Multi;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getSimple()
|
||||||
|
{
|
||||||
|
return Simple;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setMulti(bool multi)
|
||||||
|
{
|
||||||
|
Multi = multi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSimple(bool simple)
|
||||||
|
{
|
||||||
|
Simple = simple;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isValid()
|
||||||
|
{
|
||||||
|
return toIO != NULL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class ConnectionWizard : public ConnectionWizardBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
enum IOType {None, In, Out, FX, PIn, POut} rtype;
|
||||||
|
RouteInfo route;
|
||||||
|
StrPatch *pto;
|
||||||
|
RouteInfo *rptr;
|
||||||
|
StrGlobal *global;
|
||||||
|
bool out;
|
||||||
|
QPtrList <RSItemIO> ios;
|
||||||
|
QPtrList <StrPatch> patchList;
|
||||||
|
StrPatch *selPatch;
|
||||||
|
public:
|
||||||
|
ConnectionWizard(bool o, StrGlobal *g, RouteInfo *r);
|
||||||
|
void loadEnd(IOType iotype);
|
||||||
|
void setState(bool patch, bool end, bool back, bool next, bool finish);
|
||||||
|
public slots:
|
||||||
|
void noneClicked();
|
||||||
|
void fxClicked();
|
||||||
|
void inClicked();
|
||||||
|
void outClicked();
|
||||||
|
void patchClicked();
|
||||||
|
|
||||||
|
void finishClicked();
|
||||||
|
|
||||||
|
void selected(const QString &page);
|
||||||
|
void patchListClicked(QListBoxItem *item);
|
||||||
|
void endListClicked(QListBoxItem *item);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONNECTIONWIZARD_H
|
||||||
39
qlo10k1/src/custom_colors.h
Normal file
39
qlo10k1/src/custom_colors.h
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Eduardo García-Mádico Portabella
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Common colors
|
||||||
|
#define DEF_PAINTING_COLOR QColor(0,0,0)
|
||||||
|
#define LINE_COLOR QColor(125,125,125)
|
||||||
|
#define BOX_COLOR QColor(0,0,255)
|
||||||
|
#define BOX_SELECTED_COLOR QColor(255,0,0)
|
||||||
|
#define POINT_COLOR QColor(0,255,0)
|
||||||
|
#define TEXT_COLOR QColor(0,0,0)
|
||||||
|
|
||||||
|
// IO colors
|
||||||
|
#define IO_BOX_COLOR QColor(0,255,0)
|
||||||
|
#define IO_TEXT_PEN QColor(0,0,0)
|
||||||
|
|
||||||
|
// Pens
|
||||||
|
#define DEF_PAINTING_PEN QPen(DEF_PAINTING_COLOR)
|
||||||
|
#define LINE_PEN QPen(LINE_COLOR)
|
||||||
|
#define BOX_PEN QPen(BOX_COLOR)
|
||||||
|
#define POINT_PEN QPen(POINT_COLOR)
|
||||||
|
#define TEXT_PEN QPen(TEXT_COLOR)
|
||||||
53
qlo10k1/src/dlgs/aboutdialogbase.ui
Normal file
53
qlo10k1/src/dlgs/aboutdialogbase.ui
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>AboutDialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>AboutDialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>450</width>
|
||||||
|
<height>359</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>About</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QTextEdit" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textEdit1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head><meta name="qrichtext" content="1" /></head><body style="font-size:10pt;font-family:Sans">
|
||||||
|
<p align="center"><span style="font-size:12pt;font-weight:600">qlo10k1 - GUI for ld10k1</span></p>
|
||||||
|
<p align="center"><span style="font-size:12pt;font-weight:600">Copyright (C) 2004 by Peter Zubaj</span></p>
|
||||||
|
<p><br /><span style="font-weight:600">This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</span> <br /><br /><span style="font-weight:600">This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</span></p>
|
||||||
|
</body></html>
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<enum>WidgetWidth</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Close</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string>Alt+C</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
181
qlo10k1/src/dlgs/connectionwizardbase.ui
Normal file
181
qlo10k1/src/dlgs/connectionwizardbase.ui
Normal file
|
|
@ -0,0 +1,181 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
|
||||||
|
<class>ConnectionWizardBase</class>
|
||||||
|
<widget class="QWizard">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>ConnectionWizardBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>282</width>
|
||||||
|
<height>229</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Connection</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pageType</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Connection target</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QButtonGroup" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>buttonGroup1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>Plain</enum>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string></string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout17</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>rbNone</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>rbFX</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>FX</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>rbInput</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Input</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>rbOutput</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Output</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QRadioButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>rbPatch</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pagePatch</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Patch</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout5</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbPatch</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout4</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbMulti</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Multi</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbSimple</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Simple</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pageEnd</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>End</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbEnd</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
252
qlo10k1/src/dlgs/filecontroldialogbase.ui
Normal file
252
qlo10k1/src/dlgs/filecontroldialogbase.ui
Normal file
|
|
@ -0,0 +1,252 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>FileControlDialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>FileControlDialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>566</width>
|
||||||
|
<height>363</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>File control</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListBox" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbControls</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout14</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>211</width>
|
||||||
|
<height>21</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbUp</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbDown</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Down</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="3" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout34</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer12</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>141</width>
|
||||||
|
<height>31</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout39</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" row="0" column="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>5</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Index:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel10</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Loaded name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer row="2" column="2" rowspan="1" colspan="3">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer11</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>346</width>
|
||||||
|
<height>21</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QSpinBox" row="0" column="4">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>sbIndex</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maxValue">
|
||||||
|
<number>100000000</number>
|
||||||
|
</property>
|
||||||
|
<property name="minValue">
|
||||||
|
<number>-1</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>-1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leLoadedName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QSpinBox" row="2" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>sbVisible</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel12</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Visible:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel11</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Translation:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" row="1" column="1" rowspan="1" colspan="4">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>None</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Table100</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bass</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Treble</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>On/Off</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbTranslation</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
21
qlo10k1/src/dlgs/filecontrolsdialogbase.ui
Normal file
21
qlo10k1/src/dlgs/filecontrolsdialogbase.ui
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
|
||||||
|
<class>FileControlsDialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>FileControlsDialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>492</width>
|
||||||
|
<height>314</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>File controls</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
375
qlo10k1/src/dlgs/loadpatchdialogbase.ui
Normal file
375
qlo10k1/src/dlgs/loadpatchdialogbase.ui
Normal file
|
|
@ -0,0 +1,375 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>LoadPatchDialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>LoadPatchDialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>608</width>
|
||||||
|
<height>454</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Load patch</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout26</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lePatchName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leFileName</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel6</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>File:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTabWidget" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabOptions</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabControls</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Con&trols</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListBox" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbFileCtrl</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>Single</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel4</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>File controls:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout11</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout10</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Max:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="2" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leMax</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlTransl</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Transl:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leTranslation</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Min:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leMin</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout9</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlVal</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Values:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbValues</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabNames</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Names</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout10</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Inputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbInputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Outputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbOutputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="3" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout17</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>211</width>
|
||||||
|
<height>31</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout16</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>5</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Insert:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Before</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>After</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbBefAfter</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>0</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel8</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>0</hsizetype>
|
||||||
|
<vsizetype>5</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbWhere</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>1</hsizetype>
|
||||||
|
<vsizetype>5</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
179
qlo10k1/src/dlgs/mainwndbase.ui
Normal file
179
qlo10k1/src/dlgs/mainwndbase.ui
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>MainWndBase</class>
|
||||||
|
<widget class="QMainWindow">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>MainWndBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>494</width>
|
||||||
|
<height>360</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>qlo10k1 - emu10k1 patch loader</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QTabWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabMain</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabLoad</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Load</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout11</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListView" row="1" column="0">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Order</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Num</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch name</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lvPatches</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout3</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbLoad</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Load</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>cbFromFile</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>From file</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbUnload</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Unload</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>31</width>
|
||||||
|
<height>71</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlPatches</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patches:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabRouting</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Routing</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<menubar>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>menubar</cstring>
|
||||||
|
</property>
|
||||||
|
</menubar>
|
||||||
|
<toolbars>
|
||||||
|
</toolbars>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
105
qlo10k1/src/dlgs/newiodialogbase.ui
Normal file
105
qlo10k1/src/dlgs/newiodialogbase.ui
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>NewIODialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>NewIODialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>297</width>
|
||||||
|
<height>284</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Form2</string>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QListView">
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Num</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>New Column</string>
|
||||||
|
</property>
|
||||||
|
<property name="clickable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="resizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lvIOs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout1</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string>Alt+O</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string>Alt+C</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>41</width>
|
||||||
|
<height>171</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
247
qlo10k1/src/dlgs/patchdialogbase.ui
Normal file
247
qlo10k1/src/dlgs/patchdialogbase.ui
Normal file
|
|
@ -0,0 +1,247 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
|
||||||
|
<class>PatchDialogBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>PatchDialogBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>600</width>
|
||||||
|
<height>480</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Patch info</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout35</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QTabWidget" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabOptions</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabControls</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Con&trols</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout33</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel5</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Loaded controls:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbLoadedCtrl</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabNames</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Names</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout10</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Inputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbInputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Outputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbOutputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabConnection</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Co&nnection</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout11</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbInputs_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Inputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbConnInputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbInputs_2_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Outputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbConnOutputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout34</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel6</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lePatchName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget" row="2" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout17_2</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>211</width>
|
||||||
|
<height>31</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
394
qlo10k1/src/dlgs/preferencesbase.ui
Normal file
394
qlo10k1/src/dlgs/preferencesbase.ui
Normal file
|
|
@ -0,0 +1,394 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
|
||||||
|
<class>PreferencesBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>PreferencesBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>540</width>
|
||||||
|
<height>329</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Settings</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout10</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QTabWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabSet</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabCard</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Card</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout8</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout7</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout6</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Cards:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer4_2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>51</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbCards</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout4</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>251</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCardAdd</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Add</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCardDel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Delete</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>gbCard</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Card info</string>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout3</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leCardSocket</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leCardName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlCardSocket</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Socket:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlCardName</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout7</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer4_3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>381</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbUpdate</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Update</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabRepository</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Repository</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout15</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout14</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton" row="2" column="2">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbSelUser</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" row="0" column="2" rowspan="2" colspan="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbSelSystem</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>32767</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0" rowspan="2" colspan="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlRepUserDir</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>User dir:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tlRepSysDir</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>System dir:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="1" column="1" rowspan="2" colspan="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leRepUser</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leRepSystem</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer6</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>169</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout9</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer4</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>21</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
306
qlo10k1/src/dlgs/transformpatchbase.ui
Normal file
306
qlo10k1/src/dlgs/transformpatchbase.ui
Normal file
|
|
@ -0,0 +1,306 @@
|
||||||
|
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||||
|
<class>TransformPatchBase</class>
|
||||||
|
<widget class="QDialog">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>TransformPatchBase</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>655</width>
|
||||||
|
<height>496</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="caption">
|
||||||
|
<string>Transform patch</string>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout26</cstring>
|
||||||
|
</property>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" row="1" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lePatchName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" row="0" column="1">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>leFileName</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="1" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel6</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Patch name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel3</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>File:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTabWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabOptions</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabControls</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Con&trols</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout24</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout21</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel4</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>File controls:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbFileCtrl</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>Extended</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout23</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer9</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>41</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCtrlAdd</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>>></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCtrlDel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><<</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer8</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>21</width>
|
||||||
|
<height>30</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout22</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel5</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Transformed controls:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbLoadedCtrl</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>tabNames</cstring>
|
||||||
|
</property>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>&Names</string>
|
||||||
|
</attribute>
|
||||||
|
<grid>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLayoutWidget" row="0" column="0">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout10</cstring>
|
||||||
|
</property>
|
||||||
|
<vbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel2</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Inputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbInputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>textLabel1</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Outputs:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListBox">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>lbOutputs</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
</grid>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLayoutWidget">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>layout17</cstring>
|
||||||
|
</property>
|
||||||
|
<hbox>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>unnamed</cstring>
|
||||||
|
</property>
|
||||||
|
<spacer>
|
||||||
|
<property name="name">
|
||||||
|
<cstring>spacer7</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint">
|
||||||
|
<size>
|
||||||
|
<width>211</width>
|
||||||
|
<height>31</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbOK</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&OK</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string>Alt+O</string>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton">
|
||||||
|
<property name="name">
|
||||||
|
<cstring>pbCancel</cstring>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Cancel</string>
|
||||||
|
</property>
|
||||||
|
<property name="accel">
|
||||||
|
<string>Alt+C</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</hbox>
|
||||||
|
</widget>
|
||||||
|
</vbox>
|
||||||
|
</widget>
|
||||||
|
<pixmapinproject/>
|
||||||
|
<layoutdefaults spacing="6" margin="11"/>
|
||||||
|
</UI>
|
||||||
199
qlo10k1/src/filecontroldialog.cpp
Normal file
199
qlo10k1/src/filecontroldialog.cpp
Normal file
|
|
@ -0,0 +1,199 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qcombobox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qspinbox.h>
|
||||||
|
#include "filecontroldialog.h"
|
||||||
|
|
||||||
|
FileControlDlg::FileControlDlg(QValueList <int> *eselected, EMU10k1File *efile, TranslatedCtrl *etranslated)
|
||||||
|
{
|
||||||
|
file = efile;
|
||||||
|
translated = etranslated;
|
||||||
|
|
||||||
|
int ctrlIdx;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
if (eselected)
|
||||||
|
{
|
||||||
|
selected = *eselected;
|
||||||
|
// insert file controls to listbox
|
||||||
|
for (i = 0; i < selected.count(); i++)
|
||||||
|
{
|
||||||
|
ctrlIdx = selected[i];
|
||||||
|
lbControls->insertItem(getName(ctrlIdx));
|
||||||
|
}
|
||||||
|
|
||||||
|
sbIndex->setValue(-1);
|
||||||
|
|
||||||
|
sbVisible->setMinValue(1);
|
||||||
|
sbVisible->setMaxValue(selected.count());
|
||||||
|
sbVisible->setValue(selected.count());
|
||||||
|
|
||||||
|
// set min, max
|
||||||
|
EMU10k1Ctrl ctrl;
|
||||||
|
file->getCtrl(selected[0], &ctrl);
|
||||||
|
min = ctrl.min;
|
||||||
|
max = ctrl.max;
|
||||||
|
values.append(ctrl.value);
|
||||||
|
for (i = 1; i < selected.count(); i++)
|
||||||
|
{
|
||||||
|
file->getCtrl(selected[i], &ctrl);
|
||||||
|
values.append(ctrl.value);
|
||||||
|
if (ctrl.max > max)
|
||||||
|
max = ctrl.max;
|
||||||
|
if (ctrl.min < min)
|
||||||
|
min = ctrl.min;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (min == 0 && max == 100)
|
||||||
|
cbTranslation->setCurrentItem(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
selected = translated->fileCtrlIdx;
|
||||||
|
for (i = 0; i < translated->fileCtrlIdx.count(); i++)
|
||||||
|
{
|
||||||
|
lbControls->insertItem(getName(translated->fileCtrlIdx[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
sbVisible->setMinValue(1);
|
||||||
|
sbVisible->setMaxValue(translated->fileCtrlIdx.count());
|
||||||
|
sbVisible->setValue(translated->visible);
|
||||||
|
|
||||||
|
leLoadedName->setText(translated->name);
|
||||||
|
sbIndex->setValue(translated->index);
|
||||||
|
|
||||||
|
switch(translated->translation)
|
||||||
|
{
|
||||||
|
case TranslatedCtrl::None:
|
||||||
|
cbTranslation->setCurrentItem(0);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Table100:
|
||||||
|
cbTranslation->setCurrentItem(1);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Bass:
|
||||||
|
cbTranslation->setCurrentItem(2);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Treble:
|
||||||
|
cbTranslation->setCurrentItem(3);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::OnOff:
|
||||||
|
cbTranslation->setCurrentItem(4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < translated->values.count(); i++)
|
||||||
|
values.append(translated->values[i]);
|
||||||
|
min = translated->min;
|
||||||
|
max = translated->max;
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
connect(pbUp, SIGNAL(clicked()), this, SLOT(upClicked()));
|
||||||
|
connect(pbDown, SIGNAL(clicked()), this, SLOT(downClicked()));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString FileControlDlg::getName(int i)
|
||||||
|
{
|
||||||
|
EMU10k1Ctrl ctrl;
|
||||||
|
|
||||||
|
file->getCtrl(i, &ctrl);
|
||||||
|
QString name = QString(ctrl.name) + " - " + QString().setNum(ctrl.value) +
|
||||||
|
" (" + QString().setNum(ctrl.min) + "," + + QString().setNum(ctrl.max) + ")";
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileControlDlg::okClicked()
|
||||||
|
{
|
||||||
|
translated->name = leLoadedName->text();
|
||||||
|
translated->index = sbIndex->value();
|
||||||
|
|
||||||
|
switch(cbTranslation->currentItem())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
translated->translation = TranslatedCtrl::None;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
translated->translation = TranslatedCtrl::Table100;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
translated->translation = TranslatedCtrl::Bass;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
translated->translation = TranslatedCtrl::Treble;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
translated->translation = TranslatedCtrl::OnOff;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
translated->fileCtrlIdx = selected;
|
||||||
|
translated->visible = sbVisible->value();
|
||||||
|
translated->values.clear();
|
||||||
|
for (unsigned int i = 0; i < values.count(); i++)
|
||||||
|
translated->values.append(values[i]);
|
||||||
|
|
||||||
|
translated->min = min;
|
||||||
|
translated->max = max;
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileControlDlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileControlDlg::upClicked()
|
||||||
|
{
|
||||||
|
int idx = lbControls->currentItem();
|
||||||
|
if (idx > 0)
|
||||||
|
{
|
||||||
|
int tmp = selected[idx - 1];
|
||||||
|
selected[idx - 1] = selected[idx];
|
||||||
|
selected[idx] = tmp;
|
||||||
|
|
||||||
|
// update labels
|
||||||
|
lbControls->changeItem(getName(selected[idx - 1]), idx - 1);
|
||||||
|
lbControls->changeItem(getName(selected[idx]), idx);
|
||||||
|
lbControls->setCurrentItem(idx - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileControlDlg::downClicked()
|
||||||
|
{
|
||||||
|
int idx = lbControls->currentItem();
|
||||||
|
if (idx >= 0 && idx < (int)lbControls->count() - 1)
|
||||||
|
{
|
||||||
|
int tmp = selected[idx + 1];
|
||||||
|
selected[idx + 1] = selected[idx];
|
||||||
|
selected[idx] = tmp;
|
||||||
|
|
||||||
|
// update labels
|
||||||
|
lbControls->changeItem(getName(selected[idx]), idx);
|
||||||
|
lbControls->changeItem(getName(selected[idx + 1]), idx + 1);
|
||||||
|
lbControls->setCurrentItem(idx + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
66
qlo10k1/src/filecontroldialog.h
Normal file
66
qlo10k1/src/filecontroldialog.h
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FILECONTROLDIALOG_H
|
||||||
|
#define FILECONTROLDIALOG_H
|
||||||
|
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include "dlgs/filecontroldialogbase.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
class TranslatedCtrl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QString name;
|
||||||
|
int index;
|
||||||
|
|
||||||
|
enum TranslationType {None, Table100, Bass, Treble, OnOff };
|
||||||
|
TranslationType translation;
|
||||||
|
int visible;
|
||||||
|
int min;
|
||||||
|
int max;
|
||||||
|
QValueList <int> fileCtrlIdx;
|
||||||
|
QValueList <int> values;
|
||||||
|
};
|
||||||
|
|
||||||
|
class FileControlDlg : public FileControlDialogBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QValueList <int> selected;
|
||||||
|
EMU10k1File *file;
|
||||||
|
TranslatedCtrl *translated;
|
||||||
|
unsigned int min;
|
||||||
|
unsigned int max;
|
||||||
|
QValueList <int> values;
|
||||||
|
public:
|
||||||
|
FileControlDlg(QValueList <int> *eselected, EMU10k1File *efile, TranslatedCtrl *etranslated);
|
||||||
|
|
||||||
|
QString getName(int i);
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void upClicked();
|
||||||
|
void downClicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FILECONTROLDIALOG_H
|
||||||
50
qlo10k1/src/icons/routing_effect.xpm
Normal file
50
qlo10k1/src/icons/routing_effect.xpm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_effect[]={
|
||||||
|
"22 22 4 1",
|
||||||
|
". c None",
|
||||||
|
"# c #000000",
|
||||||
|
"b c #303030",
|
||||||
|
"a c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"....##############....",
|
||||||
|
"....#aaaaaaaaaaaa#....",
|
||||||
|
"....#aaaaaaaaaaaa#....",
|
||||||
|
"....#aaabb####aaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabbb#baaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaabaaaaaaaa#....",
|
||||||
|
"....#aaa######aaa#....",
|
||||||
|
"....#aaaaaaaaaaaa#....",
|
||||||
|
"....#aaaaaaaaaaaa#....",
|
||||||
|
"....##############....",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
50
qlo10k1/src/icons/routing_effect_stack.xpm
Normal file
50
qlo10k1/src/icons/routing_effect_stack.xpm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_effect_stack[]={
|
||||||
|
"22 22 4 1",
|
||||||
|
"b c None",
|
||||||
|
". c None",
|
||||||
|
"# c #000000",
|
||||||
|
"a c #ffffff",
|
||||||
|
"......................",
|
||||||
|
".##############.......",
|
||||||
|
".#aaaaaaaaaaaa#bb.....",
|
||||||
|
".#aaaaaaaaaaaa###bb...",
|
||||||
|
".#aaa######aaa#a#bb...",
|
||||||
|
".#aaa#aaaaaaaa#a###...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa#####aaaa#a#a#...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa#aaaaaaaa#a#a#...",
|
||||||
|
".#aaa######aaa#a#a#...",
|
||||||
|
".#aaaaaaaaaaaa#a#a#...",
|
||||||
|
".#aaaaaaaaaaaa#a#a#...",
|
||||||
|
".##############a#a#...",
|
||||||
|
"..b#aaaaaaaaaaaa#a#...",
|
||||||
|
"..b##############a#...",
|
||||||
|
"...bb#aaaaaaaaaaaa#...",
|
||||||
|
"...bb##############...",
|
||||||
|
"......................"};
|
||||||
50
qlo10k1/src/icons/routing_fx.xpm
Normal file
50
qlo10k1/src/icons/routing_fx.xpm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_fx[]={
|
||||||
|
"22 22 4 1",
|
||||||
|
". c None",
|
||||||
|
"# c #000000",
|
||||||
|
"b c #303030",
|
||||||
|
"a c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"........#####.........",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
"...#aa####a#aa#aa#....",
|
||||||
|
"...#aa#aaaa#aa#aa#....",
|
||||||
|
"..#aaa#aaaa#aa#aaa#...",
|
||||||
|
"..#aaa#aaaaa##aaaa#...",
|
||||||
|
"..#aaa###.aabbaaaa#...",
|
||||||
|
"..#aaa#aaaaa##aaaa#...",
|
||||||
|
"..#aaa#aaaa#aa#aaa#...",
|
||||||
|
"...#aa#aaaa#aa#aa#....",
|
||||||
|
"...#aa#aaaa#aa#aa#....",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
"........#####.........",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
50
qlo10k1/src/icons/routing_in.xpm
Normal file
50
qlo10k1/src/icons/routing_in.xpm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_in[]={
|
||||||
|
"22 22 4 1",
|
||||||
|
". c None",
|
||||||
|
"# c #000000",
|
||||||
|
"b c #303030",
|
||||||
|
"a c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"........#####.........",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
"...#aabaabaaaabaa#....",
|
||||||
|
"...#aabaabbaaabaa#....",
|
||||||
|
"..#aaabaababaabaaa#...",
|
||||||
|
"..#aaabaababaabaaa#...",
|
||||||
|
"..#aaabaababbabaaa#...",
|
||||||
|
"..#aaabaabaababaaa#...",
|
||||||
|
"..#aaabaabaababaaa#...",
|
||||||
|
"...#aabaabaaabbaa#....",
|
||||||
|
"...#aabaabaaaabaa#....",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
"........#####.........",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
51
qlo10k1/src/icons/routing_normal.xpm
Normal file
51
qlo10k1/src/icons/routing_normal.xpm
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_normal[]={
|
||||||
|
"22 22 5 1",
|
||||||
|
"# c None",
|
||||||
|
". c None",
|
||||||
|
"a c #000000",
|
||||||
|
"b c #303030",
|
||||||
|
"c c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"...#..................",
|
||||||
|
"...###a#########......",
|
||||||
|
"...###ab########......",
|
||||||
|
"...###acb#######......",
|
||||||
|
"...###accb######......",
|
||||||
|
"...###acccb#####......",
|
||||||
|
"...###accccb####......",
|
||||||
|
"...###acccccb###......",
|
||||||
|
"...###accccccb##......",
|
||||||
|
"..####acccccabb#......",
|
||||||
|
"..####accccb#####.....",
|
||||||
|
"..####acbbccb###......",
|
||||||
|
"..###.bb#bccb###......",
|
||||||
|
"...#..b###bccb##......",
|
||||||
|
"......####bccb##......",
|
||||||
|
"......#####bccb#......",
|
||||||
|
"......#####bccb#......",
|
||||||
|
"......######bb##......",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
50
qlo10k1/src/icons/routing_out.xpm
Normal file
50
qlo10k1/src/icons/routing_out.xpm
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_out[]={
|
||||||
|
"22 22 4 1",
|
||||||
|
". c None",
|
||||||
|
"# c #000000",
|
||||||
|
"b c #303030",
|
||||||
|
"a c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"........#####.........",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
"...#aaaaaaaaaaaaa#....",
|
||||||
|
"...#aabaabababbba#....",
|
||||||
|
"..#aababababaabaaa#...",
|
||||||
|
"..#aababababaabaaa#...",
|
||||||
|
"..#aababababaabaaa#...",
|
||||||
|
"..#aababababaabaaa#...",
|
||||||
|
"..#aababababaabaaa#...",
|
||||||
|
"...#aabaaabaaabaa#....",
|
||||||
|
"...#aaaaaaaaaaaaa#....",
|
||||||
|
"....#aaaaaaaaaaa#.....",
|
||||||
|
".....#aaaaaaaaa#......",
|
||||||
|
"......##aaaaa##.......",
|
||||||
|
"........#####.........",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
56
qlo10k1/src/icons/routing_route.xpm
Normal file
56
qlo10k1/src/icons/routing_route.xpm
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_route[]={
|
||||||
|
"22 22 10 1",
|
||||||
|
"# c None",
|
||||||
|
". c None",
|
||||||
|
"e c #000000",
|
||||||
|
"g c #303030",
|
||||||
|
"a c #000000",
|
||||||
|
"h c #191919",
|
||||||
|
"d c #1a1a1a",
|
||||||
|
"b c #333333",
|
||||||
|
"f c #fefefe",
|
||||||
|
"c c #ffffff",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"............#.........",
|
||||||
|
"............a##.......",
|
||||||
|
"...........#abb##.....",
|
||||||
|
"...#########accdd##...",
|
||||||
|
"...eeeeeeeeeaccffeg...",
|
||||||
|
"............accaa##...",
|
||||||
|
"............ahh##.....",
|
||||||
|
"............a##.......",
|
||||||
|
"............##........",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
52
qlo10k1/src/icons/routing_zoom_minus.xpm
Normal file
52
qlo10k1/src/icons/routing_zoom_minus.xpm
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_zoom_minus[]={
|
||||||
|
"22 22 6 1",
|
||||||
|
". c None",
|
||||||
|
"b c #000000",
|
||||||
|
"d c #303030",
|
||||||
|
"# c #a0a0a0",
|
||||||
|
"c c #a8dcff",
|
||||||
|
"a c #dcdcdc",
|
||||||
|
"......................",
|
||||||
|
".....#####............",
|
||||||
|
"....abbbbb#...........",
|
||||||
|
"...abcccccb#..........",
|
||||||
|
"..abcccccccb#.........",
|
||||||
|
".abcccccccccb#........",
|
||||||
|
".abcccccccccb#........",
|
||||||
|
".abccbbbbbccb#........",
|
||||||
|
".abcccccccccb#........",
|
||||||
|
".abcccccccccb#........",
|
||||||
|
"..abcccccccb#.........",
|
||||||
|
"...abcccccbbd#........",
|
||||||
|
"....abbbbbabbb#.......",
|
||||||
|
".....aaaaa.abbb#......",
|
||||||
|
"............abbb#.....",
|
||||||
|
".............abbb#....",
|
||||||
|
"..............abbb#...",
|
||||||
|
"...............add#...",
|
||||||
|
"................aa....",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
53
qlo10k1/src/icons/routing_zoom_plus.xpm
Normal file
53
qlo10k1/src/icons/routing_zoom_plus.xpm
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XPM */
|
||||||
|
static const char *routing_zoom_plus[]={
|
||||||
|
"22 22 7 1",
|
||||||
|
"d c None",
|
||||||
|
". c None",
|
||||||
|
"b c #000000",
|
||||||
|
"e c #303030",
|
||||||
|
"# c #a0a0a0",
|
||||||
|
"c c #a8dcff",
|
||||||
|
"a c #dcdcdc",
|
||||||
|
"......................",
|
||||||
|
".....#####............",
|
||||||
|
"....abbbbb#...........",
|
||||||
|
"...abcccccb#..........",
|
||||||
|
".dabcccccccb#.........",
|
||||||
|
".abccccbccccb#........",
|
||||||
|
".abccccbccccb#........",
|
||||||
|
".abccbbbbbccb#........",
|
||||||
|
".abccccbccccb#........",
|
||||||
|
".abccccbccccb#........",
|
||||||
|
"..abcccccccb#d........",
|
||||||
|
"...abcccccbbe#dd......",
|
||||||
|
"....abbbbbabbb#dd.....",
|
||||||
|
".....aaaaa.abbb#dd....",
|
||||||
|
"............abbb#dd...",
|
||||||
|
".............abbb#d...",
|
||||||
|
".............dabbb#...",
|
||||||
|
"...............aee#...",
|
||||||
|
"................aa....",
|
||||||
|
"......................",
|
||||||
|
"......................",
|
||||||
|
"......................"};
|
||||||
573
qlo10k1/src/ld10k1file.cpp
Normal file
573
qlo10k1/src/ld10k1file.cpp
Normal file
|
|
@ -0,0 +1,573 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
class EMU10k1FilePrivate
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *ep;
|
||||||
|
public:
|
||||||
|
EMU10k1FilePrivate()
|
||||||
|
{
|
||||||
|
ep = liblo10k1_emu_new_patch();
|
||||||
|
}
|
||||||
|
|
||||||
|
~EMU10k1FilePrivate()
|
||||||
|
{
|
||||||
|
if (ep)
|
||||||
|
liblo10k1_emu_free_patch(ep);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNativeStruct(liblo10k1_emu_patch_t *ns)
|
||||||
|
{
|
||||||
|
if (ep)
|
||||||
|
liblo10k1_emu_free_patch(ep);
|
||||||
|
ep = ns;
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1_emu_patch_t *getNativeStruct()
|
||||||
|
{
|
||||||
|
return ep;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
EMU10k1File::EMU10k1File()
|
||||||
|
{
|
||||||
|
privData = new EMU10k1FilePrivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
EMU10k1File::~EMU10k1File()
|
||||||
|
{
|
||||||
|
if (privData)
|
||||||
|
delete (privData);
|
||||||
|
}
|
||||||
|
|
||||||
|
int EMU10k1File::LoadFromFile(QString file, EMU10k1File **ef)
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf;
|
||||||
|
char fn[1000]; // FIXME file name length
|
||||||
|
int err;
|
||||||
|
|
||||||
|
strncpy(fn, file.local8Bit(), 999);
|
||||||
|
fn[999] = '\0';
|
||||||
|
if ((err = liblo10k1_emu_load_patch(fn, &nf)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
EMU10k1File *efi = new EMU10k1File();
|
||||||
|
efi->privData->setNativeStruct(nf);
|
||||||
|
*ef = efi;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EMU10k1File::getCtrl(unsigned int i, EMU10k1Ctrl *ctrl)
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
liblo10k1_emu_ctl_t *ctl;
|
||||||
|
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ctl = &(nf->ctls[i]);
|
||||||
|
|
||||||
|
ctrl->value = ctl->ctl_val;
|
||||||
|
ctrl->min = ctl->ctl_val_min;
|
||||||
|
ctrl->max = ctl->ctl_val_max;
|
||||||
|
ctrl->name = ctl->ctl_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EMU10k1File::setCtrl(unsigned int i, EMU10k1Ctrl *ctrl)
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
liblo10k1_emu_ctl_t *ctl;
|
||||||
|
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ctl = &(nf->ctls[i]);
|
||||||
|
|
||||||
|
ctl->ctl_val = ctrl->value;
|
||||||
|
ctl->ctl_val_min = ctrl->min;
|
||||||
|
ctl->ctl_val_max = ctrl->max;
|
||||||
|
strcpy(ctl->ctl_name, ctrl->name.local8Bit());
|
||||||
|
}
|
||||||
|
|
||||||
|
QString EMU10k1File::getPatchName()
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return QString(nf->patch_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
int EMU10k1File::getCtrlCount()
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return nf->ctl_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int EMU10k1File::getInCount()
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return nf->in_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int EMU10k1File::getOutCount()
|
||||||
|
{
|
||||||
|
liblo10k1_emu_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return nf->out_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
class LD10k1FilePrivate
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *lp;
|
||||||
|
public:
|
||||||
|
LD10k1FilePrivate()
|
||||||
|
{
|
||||||
|
lp = liblo10k1_patch_alloc(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
~LD10k1FilePrivate()
|
||||||
|
{
|
||||||
|
if (lp)
|
||||||
|
liblo10k1_patch_free(lp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNativeStruct(liblo10k1_dsp_patch_t *ns)
|
||||||
|
{
|
||||||
|
if (lp)
|
||||||
|
liblo10k1_patch_free(lp);
|
||||||
|
lp = ns;
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1_dsp_patch_t *getNativeStruct()
|
||||||
|
{
|
||||||
|
return lp;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
LD10k1File::LD10k1File()
|
||||||
|
{
|
||||||
|
privData = new LD10k1FilePrivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
LD10k1File::~LD10k1File()
|
||||||
|
{
|
||||||
|
if (privData)
|
||||||
|
delete (privData);
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1_dsp_patch_t *LD10k1File::getLD10k1Format()
|
||||||
|
{
|
||||||
|
return privData->getNativeStruct();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setLD10k1Format(liblo10k1_dsp_patch_t *patch)
|
||||||
|
{
|
||||||
|
privData->setNativeStruct(patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::transformFromEmuFile(EMU10k1File *ef, LD10k1FileTransfCtl *tc, int tc_count, LD10k1File **lf)
|
||||||
|
{
|
||||||
|
liblo10k1_ctl_transform_t *ntc = (liblo10k1_ctl_transform_t *)malloc(sizeof(liblo10k1_ctl_transform_t) * tc_count);
|
||||||
|
if (!ntc)
|
||||||
|
return LD10K1_ERR_NO_MEM;
|
||||||
|
|
||||||
|
// copy tc to ntc
|
||||||
|
int i, j, err;
|
||||||
|
liblo10k1_dsp_patch_t *np = NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < tc_count; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < tc[i].emu_ctl_count; j++)
|
||||||
|
ntc[i].emu_ctls[j] = tc[i].emu_ctls[j];
|
||||||
|
|
||||||
|
ntc[i].emu_ctl_count = tc[i].emu_ctl_count;
|
||||||
|
strncpy(ntc[i].ctl_name, tc[i].ctl_name.local8Bit(), 43);
|
||||||
|
ntc[i].ctl_name[43] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = liblo10k1_emu_transform_patch(ef->privData->getNativeStruct(), ntc, tc_count, &np)) < 0)
|
||||||
|
{
|
||||||
|
free(ntc);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(ntc);
|
||||||
|
|
||||||
|
LD10k1File *nlf = new LD10k1File();
|
||||||
|
|
||||||
|
nlf->privData->setNativeStruct(np);
|
||||||
|
*lf = nlf;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::getIOCount(bool out)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (out)
|
||||||
|
return nf->out_count;
|
||||||
|
else
|
||||||
|
return nf->in_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString LD10k1File::getIOName(bool out, unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (out)
|
||||||
|
{
|
||||||
|
if (i >= nf->out_count)
|
||||||
|
return "";
|
||||||
|
return QString(nf->outs[i].name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (i >= nf->in_count)
|
||||||
|
return "";
|
||||||
|
return QString(nf->ins[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setIOName(bool out, unsigned int i, QString name)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (out)
|
||||||
|
{
|
||||||
|
if (i >= nf->out_count)
|
||||||
|
return;
|
||||||
|
strncpy(nf->outs[i].name, name.local8Bit(), MAX_NAME_LEN - 1);
|
||||||
|
nf->outs[i].name[MAX_NAME_LEN - 1] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (i >= nf->in_count)
|
||||||
|
return;
|
||||||
|
strncpy(nf->ins[i].name, name.local8Bit(), MAX_NAME_LEN - 1);
|
||||||
|
nf->ins[i].name[MAX_NAME_LEN - 1] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::getCtlCount()
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return nf->ctl_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString LD10k1File::getCtlName(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return "";
|
||||||
|
return QString(nf->ctl[i].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setCtlName(unsigned int i, QString name)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
strncpy(nf->ctl[i].name, name.local8Bit(), 43);
|
||||||
|
nf->ctl[i].name[43] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
LD10k1File::TranslationType LD10k1File::getCtlTranslation(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return None;
|
||||||
|
switch (nf->ctl[i].translation)
|
||||||
|
{
|
||||||
|
case EMU10K1_GPR_TRANSLATION_NONE:
|
||||||
|
return LD10k1File::None;
|
||||||
|
case EMU10K1_GPR_TRANSLATION_TABLE100:
|
||||||
|
return LD10k1File::Table100;
|
||||||
|
case EMU10K1_GPR_TRANSLATION_BASS:
|
||||||
|
return LD10k1File::Bass;
|
||||||
|
case EMU10K1_GPR_TRANSLATION_TREBLE:
|
||||||
|
return LD10k1File::Treble;
|
||||||
|
case EMU10K1_GPR_TRANSLATION_ONOFF:
|
||||||
|
return LD10k1File::OnOff;
|
||||||
|
default:
|
||||||
|
return LD10k1File::None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setCtlTranslation(unsigned int i, LD10k1File::TranslationType t)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case LD10k1File::None:
|
||||||
|
nf->ctl[i].translation = EMU10K1_GPR_TRANSLATION_NONE;
|
||||||
|
break;
|
||||||
|
case LD10k1File::Table100:
|
||||||
|
nf->ctl[i].translation = EMU10K1_GPR_TRANSLATION_TABLE100;
|
||||||
|
break;
|
||||||
|
case LD10k1File::Bass:
|
||||||
|
nf->ctl[i].translation = EMU10K1_GPR_TRANSLATION_BASS;
|
||||||
|
break;
|
||||||
|
case LD10k1File::Treble:
|
||||||
|
nf->ctl[i].translation = EMU10K1_GPR_TRANSLATION_TREBLE;
|
||||||
|
break;
|
||||||
|
case LD10k1File::OnOff:
|
||||||
|
nf->ctl[i].translation = EMU10K1_GPR_TRANSLATION_ONOFF;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::getCtlValCount(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return 0;
|
||||||
|
return nf->ctl[i].count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::getCtlValVCount(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return 0;
|
||||||
|
return nf->ctl[i].vcount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setCtlValVCount(unsigned int i, unsigned int cnt)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
nf->ctl[i].vcount = cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int LD10k1File::getCtlVal(unsigned int i, unsigned int vi)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (vi >= nf->ctl[i].vcount)
|
||||||
|
return 0;
|
||||||
|
return nf->ctl[i].value[vi];
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setCtlVal(unsigned int i, unsigned int vi, unsigned int val)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (vi >= nf->ctl[i].vcount)
|
||||||
|
return;
|
||||||
|
nf->ctl[i].value[vi] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString LD10k1File::getPatchName()
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
return nf->patch_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1File::setPatchName(QString name)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
strncpy(nf->patch_name, name.local8Bit(), MAX_NAME_LEN - 1);
|
||||||
|
nf->patch_name[MAX_NAME_LEN - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::LoadFromFile(QString file, LD10k1File **lf)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = NULL;
|
||||||
|
liblo10k1_file_info_t *fi = NULL;
|
||||||
|
char fn[1000]; // FIXME file name length
|
||||||
|
int err;
|
||||||
|
|
||||||
|
strncpy(fn, file.local8Bit(), 999);
|
||||||
|
fn[999] = '\0';
|
||||||
|
if ((err = liblo10k1lf_load_dsp_patch(&nf, fn, &fi)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
LD10k1File *lfi = new LD10k1File();
|
||||||
|
lfi->privData->setNativeStruct(nf);
|
||||||
|
*lf = lfi;
|
||||||
|
|
||||||
|
lfi->fileName = fi->name;
|
||||||
|
lfi->fileDesc = fi->desc;
|
||||||
|
lfi->fileCreater = fi->creater;
|
||||||
|
lfi->fileAuthor = fi->author;
|
||||||
|
lfi->fileCopyright = fi->copyright;
|
||||||
|
lfi->fileLicense = fi->license;
|
||||||
|
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1File::SaveToFile(QString file)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
|
||||||
|
liblo10k1_file_info_t *fi = liblo10k1lf_file_info_alloc();
|
||||||
|
char fn[1000]; // FIXME file name length
|
||||||
|
int err;
|
||||||
|
|
||||||
|
strncpy(fn, file.local8Bit(), 999);
|
||||||
|
fn[999] = '\0';
|
||||||
|
|
||||||
|
fi->name = strdup(fileName.local8Bit());
|
||||||
|
fi->desc = strdup(fileDesc.local8Bit());
|
||||||
|
fi->creater = strdup(fileCreater.local8Bit());
|
||||||
|
fi->author = strdup(fileAuthor.local8Bit());
|
||||||
|
fi->copyright = strdup(fileCopyright.local8Bit());
|
||||||
|
fi->license = strdup(fileLicense.local8Bit());
|
||||||
|
|
||||||
|
if ((err = liblo10k1lf_save_dsp_patch(nf, fn, fi)) < 0)
|
||||||
|
{
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int LD10k1File::getCtlMin(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return nf->ctl[i].min;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int LD10k1File::getCtlMax(unsigned int i)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *nf = privData->getNativeStruct();
|
||||||
|
if (i >= nf->ctl_count)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return nf->ctl[i].max;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class LD10k1DspFilePrivate
|
||||||
|
{
|
||||||
|
liblo10k1_file_dsp_setup_t *ls;
|
||||||
|
public:
|
||||||
|
LD10k1DspFilePrivate()
|
||||||
|
{
|
||||||
|
ls = liblo10k1lf_dsp_config_alloc();
|
||||||
|
}
|
||||||
|
|
||||||
|
~LD10k1DspFilePrivate()
|
||||||
|
{
|
||||||
|
if (ls)
|
||||||
|
liblo10k1lf_dsp_config_free(ls);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNativeStruct(liblo10k1_file_dsp_setup_t *ns)
|
||||||
|
{
|
||||||
|
if (ls)
|
||||||
|
liblo10k1lf_dsp_config_free(ls);
|
||||||
|
ls = ns;
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1_file_dsp_setup_t *getNativeStruct()
|
||||||
|
{
|
||||||
|
return ls;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
LD10k1DspFile::LD10k1DspFile()
|
||||||
|
{
|
||||||
|
privData = new LD10k1DspFilePrivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
LD10k1DspFile::~LD10k1DspFile()
|
||||||
|
{
|
||||||
|
if (privData)
|
||||||
|
delete (privData);
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1_file_dsp_setup_t *LD10k1DspFile::getLD10k1DspFormat()
|
||||||
|
{
|
||||||
|
return privData->getNativeStruct();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LD10k1DspFile::setLD10k1DspFormat(liblo10k1_file_dsp_setup_t *setup)
|
||||||
|
{
|
||||||
|
privData->setNativeStruct(setup);
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1DspFile::LoadFromFile(QString file, LD10k1DspFile **lf)
|
||||||
|
{
|
||||||
|
liblo10k1_file_dsp_setup_t *nf = NULL;
|
||||||
|
liblo10k1_file_info_t *fi = NULL;
|
||||||
|
char fn[1000]; // FIXME file name length
|
||||||
|
int err;
|
||||||
|
|
||||||
|
strncpy(fn, file.local8Bit(), 999);
|
||||||
|
fn[999] = '\0';
|
||||||
|
if ((err = liblo10k1lf_load_dsp_config(&nf, fn, &fi)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
LD10k1DspFile *lfi = new LD10k1DspFile();
|
||||||
|
lfi->privData->setNativeStruct(nf);
|
||||||
|
*lf = lfi;
|
||||||
|
|
||||||
|
lfi->fileName = fi->name;
|
||||||
|
lfi->fileDesc = fi->desc;
|
||||||
|
lfi->fileCreater = fi->creater;
|
||||||
|
lfi->fileAuthor = fi->author;
|
||||||
|
lfi->fileCopyright = fi->copyright;
|
||||||
|
lfi->fileLicense = fi->license;
|
||||||
|
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int LD10k1DspFile::SaveToFile(QString file)
|
||||||
|
{
|
||||||
|
liblo10k1_file_dsp_setup_t *nf = privData->getNativeStruct();
|
||||||
|
|
||||||
|
liblo10k1_file_info_t *fi = liblo10k1lf_file_info_alloc();
|
||||||
|
char fn[1000]; // FIXME file name length
|
||||||
|
int err;
|
||||||
|
|
||||||
|
strncpy(fn, file.local8Bit(), 999);
|
||||||
|
fn[999] = '\0';
|
||||||
|
|
||||||
|
fi->name = strdup(fileName.local8Bit());
|
||||||
|
fi->desc = strdup(fileDesc.local8Bit());
|
||||||
|
fi->creater = strdup(fileCreater.local8Bit());
|
||||||
|
fi->author = strdup(fileAuthor.local8Bit());
|
||||||
|
fi->copyright = strdup(fileCopyright.local8Bit());
|
||||||
|
fi->license = strdup(fileLicense.local8Bit());
|
||||||
|
|
||||||
|
if ((err = liblo10k1lf_save_dsp_config(nf, fn, fi)) < 0)
|
||||||
|
{
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
liblo10k1lf_file_info_free(fi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
145
qlo10k1/src/ld10k1file.h
Normal file
145
qlo10k1/src/ld10k1file.h
Normal file
|
|
@ -0,0 +1,145 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LD10K1FILE_H
|
||||||
|
#define LD10K1FILE_H
|
||||||
|
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include <lo10k1/lo10k1.h>
|
||||||
|
#include "structure.h"
|
||||||
|
|
||||||
|
class EMU10k1FilePrivate;
|
||||||
|
class LD10k1File;
|
||||||
|
|
||||||
|
struct EMU10k1Ctrl
|
||||||
|
{
|
||||||
|
unsigned int value;
|
||||||
|
unsigned int min;
|
||||||
|
unsigned int max;
|
||||||
|
QString name;
|
||||||
|
};
|
||||||
|
|
||||||
|
class EMU10k1File
|
||||||
|
{
|
||||||
|
EMU10k1FilePrivate *privData;
|
||||||
|
public:
|
||||||
|
EMU10k1File();
|
||||||
|
~EMU10k1File();
|
||||||
|
|
||||||
|
static int LoadFromFile(QString file, EMU10k1File **ef);
|
||||||
|
|
||||||
|
int getInCount();
|
||||||
|
int getOutCount();
|
||||||
|
|
||||||
|
int getCtrlCount();
|
||||||
|
void getCtrl(unsigned int i, EMU10k1Ctrl *ctrl);
|
||||||
|
void setCtrl(unsigned int i, EMU10k1Ctrl *ctrl);
|
||||||
|
QString getPatchName();
|
||||||
|
|
||||||
|
friend class LD10k1File;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class LD10k1FilePrivate;
|
||||||
|
|
||||||
|
class LD10k1FileTransfCtl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int emu_ctls[32];
|
||||||
|
int emu_ctl_count;
|
||||||
|
QString ctl_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
class LD10k1File
|
||||||
|
{
|
||||||
|
LD10k1FilePrivate *privData;
|
||||||
|
QString fileName;
|
||||||
|
QString fileDesc;
|
||||||
|
QString fileCreater;
|
||||||
|
QString fileAuthor;
|
||||||
|
QString fileCopyright;
|
||||||
|
QString fileLicense;
|
||||||
|
public:
|
||||||
|
enum TranslationType {None, Table100, Bass, Treble, OnOff};
|
||||||
|
|
||||||
|
LD10k1File();
|
||||||
|
~LD10k1File();
|
||||||
|
|
||||||
|
QString getPatchName();
|
||||||
|
void setPatchName(QString name);
|
||||||
|
|
||||||
|
int getIOCount(bool out);
|
||||||
|
QString getIOName(bool out, unsigned int i);
|
||||||
|
void setIOName(bool out, unsigned int i, QString name);
|
||||||
|
|
||||||
|
int getCtlCount();
|
||||||
|
QString getCtlName(unsigned int i);
|
||||||
|
void setCtlName(unsigned int i, QString name);
|
||||||
|
|
||||||
|
TranslationType getCtlTranslation(unsigned int i);
|
||||||
|
void setCtlTranslation(unsigned int i, TranslationType t);
|
||||||
|
|
||||||
|
int getCtlValCount(unsigned int i);
|
||||||
|
|
||||||
|
unsigned int getCtlMin(unsigned int i);
|
||||||
|
unsigned int getCtlMax(unsigned int i);
|
||||||
|
|
||||||
|
int getCtlValVCount(unsigned int i);
|
||||||
|
void setCtlValVCount(unsigned int i, unsigned int cnt);
|
||||||
|
|
||||||
|
unsigned int getCtlVal(unsigned int i, unsigned int vi);
|
||||||
|
void setCtlVal(unsigned int i, unsigned int vi, unsigned int val);
|
||||||
|
|
||||||
|
static int transformFromEmuFile(EMU10k1File *ef, LD10k1FileTransfCtl *tc, int tc_count, LD10k1File **lf);
|
||||||
|
liblo10k1_dsp_patch_t *getLD10k1Format();
|
||||||
|
void setLD10k1Format(liblo10k1_dsp_patch_t *patch);
|
||||||
|
|
||||||
|
static int LoadFromFile(QString file, LD10k1File **lf);
|
||||||
|
int SaveToFile(QString file);
|
||||||
|
};
|
||||||
|
|
||||||
|
class LD10k1DspFilePrivate;
|
||||||
|
class CardParam;
|
||||||
|
|
||||||
|
class LD10k1DspFile
|
||||||
|
{
|
||||||
|
LD10k1DspFilePrivate *privData;
|
||||||
|
QString fileName;
|
||||||
|
QString fileDesc;
|
||||||
|
QString fileCreater;
|
||||||
|
QString fileAuthor;
|
||||||
|
QString fileCopyright;
|
||||||
|
QString fileLicense;
|
||||||
|
public:
|
||||||
|
LD10k1DspFile();
|
||||||
|
~LD10k1DspFile();
|
||||||
|
|
||||||
|
liblo10k1_file_dsp_setup_t *getLD10k1DspFormat();
|
||||||
|
void setLD10k1DspFormat(liblo10k1_file_dsp_setup_t *setup);
|
||||||
|
|
||||||
|
static int LoadFromFile(QString file, LD10k1DspFile **lf);
|
||||||
|
int SaveToFile(QString file);
|
||||||
|
|
||||||
|
friend class CardParam;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LD10K1FILE_H
|
||||||
235
qlo10k1/src/loadpatchdialog.cpp
Normal file
235
qlo10k1/src/loadpatchdialog.cpp
Normal file
|
|
@ -0,0 +1,235 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qinputdialog.h>
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qlabel.h>
|
||||||
|
#include <qcheckbox.h>
|
||||||
|
#include <qbuttongroup.h>
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <qcombobox.h>
|
||||||
|
#include <qmap.h>
|
||||||
|
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "loadpatchdialog.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
|
||||||
|
LoadPatchDlg::LoadPatchDlg(StrGlobal *glob, QString efileName, LD10k1File *efile)
|
||||||
|
: LoadPatchDialogBase()
|
||||||
|
{
|
||||||
|
global = glob;
|
||||||
|
fileName = efileName;
|
||||||
|
file = efile;
|
||||||
|
|
||||||
|
leFileName->setText(fileName);
|
||||||
|
lePatchName->setText(file->getPatchName());
|
||||||
|
|
||||||
|
// load controls list
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < file->getCtlCount(); i++)
|
||||||
|
{
|
||||||
|
QString text = getName(i);
|
||||||
|
lbFileCtrl->insertItem(text);
|
||||||
|
ctrlFileList.append(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < file->getIOCount(false); i++)
|
||||||
|
inputNames.append(file->getIOName(false, i));
|
||||||
|
for (i = 0; i < file->getIOCount(true); i++)
|
||||||
|
outputNames.append(file->getIOName(true, i));
|
||||||
|
|
||||||
|
for (i = 0; i < file->getIOCount(false); i++)
|
||||||
|
lbInputs->insertItem(inputNames[i]);
|
||||||
|
|
||||||
|
for (i = 0; i < file->getIOCount(true); i++)
|
||||||
|
lbOutputs->insertItem(outputNames[i]);
|
||||||
|
|
||||||
|
// create sorted patch list
|
||||||
|
sortedPatches.clear();
|
||||||
|
|
||||||
|
for (StrPatch *onePatch = global->Patches.first(); onePatch; onePatch = global->Patches.next())
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
bool found = false;
|
||||||
|
for (StrPatch *secondPatch = sortedPatches.first(); secondPatch; secondPatch = sortedPatches.next())
|
||||||
|
{
|
||||||
|
if (onePatch->order() < secondPatch->order())
|
||||||
|
{
|
||||||
|
sortedPatches.insert(i, onePatch);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
sortedPatches.append(onePatch);
|
||||||
|
}
|
||||||
|
|
||||||
|
// fill combobox
|
||||||
|
cbWhere->clear();
|
||||||
|
|
||||||
|
for (StrPatch *p = sortedPatches.first(); p; p = sortedPatches.next())
|
||||||
|
cbWhere->insertItem(QString().sprintf("%03d %03d ", p->order(), p->num()) + p->name());
|
||||||
|
|
||||||
|
cbWhere->setCurrentItem(sortedPatches.count() - 1);
|
||||||
|
cbBefAfter->setCurrentItem(1);
|
||||||
|
|
||||||
|
setBefore(1, sortedPatches.count() - 1);
|
||||||
|
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
connect(lbInputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(inputsDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbOutputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(outputsDoubleClicked(QListBoxItem *)));
|
||||||
|
|
||||||
|
connect(lbFileCtrl, SIGNAL(selectionChanged()), this, SLOT(fileSelectionChanged()));
|
||||||
|
|
||||||
|
connect(cbBefAfter, SIGNAL(activated(int)), this, SLOT(befAfterActivated(int)));
|
||||||
|
connect(cbWhere, SIGNAL(activated(int)), this, SLOT(whereActivated(int)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString LoadPatchDlg::getName(int i)
|
||||||
|
{
|
||||||
|
return file->getCtlName(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::okClicked()
|
||||||
|
{
|
||||||
|
// load patch
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::inputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int idx = lbInputs->index(item);
|
||||||
|
QString text = inputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Input name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
inputNames[idx] = text;
|
||||||
|
lbInputs->changeItem(text, idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::outputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int idx = lbOutputs->index(item);
|
||||||
|
QString text = outputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Output name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
outputNames[idx] = text;
|
||||||
|
lbOutputs->changeItem(text, idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::fileSelectionChanged()
|
||||||
|
{
|
||||||
|
QListBoxItem *item = lbFileCtrl->selectedItem();
|
||||||
|
if (!item)
|
||||||
|
{
|
||||||
|
leTranslation->setText("");
|
||||||
|
leMin->setText("");
|
||||||
|
leMax->setText("");
|
||||||
|
lbValues->clear();
|
||||||
|
lbValues->setEnabled(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int iidx = lbFileCtrl->index(item);
|
||||||
|
int i;
|
||||||
|
QString transl;
|
||||||
|
|
||||||
|
switch (file->getCtlTranslation(iidx))
|
||||||
|
{
|
||||||
|
case LD10k1File::None:
|
||||||
|
transl = "None";
|
||||||
|
break;
|
||||||
|
case LD10k1File::Table100:
|
||||||
|
transl = "Table100";
|
||||||
|
break;
|
||||||
|
case LD10k1File::Bass:
|
||||||
|
transl = "Bass";
|
||||||
|
break;
|
||||||
|
case LD10k1File::Treble:
|
||||||
|
transl = "Treble";
|
||||||
|
break;
|
||||||
|
case LD10k1File::OnOff:
|
||||||
|
transl = "On/Off";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
leTranslation->setText(transl);
|
||||||
|
leMin->setText(QString().setNum(file->getCtlMin(iidx)));
|
||||||
|
leMax->setText(QString().setNum(file->getCtlMax(iidx)));
|
||||||
|
lbValues->clear();
|
||||||
|
|
||||||
|
for (i = 0; i < file->getCtlValVCount(iidx); i++)
|
||||||
|
lbValues->insertItem(QString("%1 : %2").arg(i).arg(file->getCtlVal(iidx, i)));
|
||||||
|
|
||||||
|
lbValues->setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StrPatch *LoadPatchDlg::whereLoad()
|
||||||
|
{
|
||||||
|
return before;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::setBefore(int i1, int i2)
|
||||||
|
{
|
||||||
|
if (i1)
|
||||||
|
{
|
||||||
|
if (i2 < (int)sortedPatches.count() - 1)
|
||||||
|
before = sortedPatches.at(i2 + 1);
|
||||||
|
else
|
||||||
|
before = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
before = sortedPatches.at(i2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::whereActivated(int index)
|
||||||
|
{
|
||||||
|
setBefore(cbBefAfter->currentItem(), index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadPatchDlg::befAfterActivated(int index)
|
||||||
|
{
|
||||||
|
setBefore(index, cbWhere->currentItem());
|
||||||
|
}
|
||||||
71
qlo10k1/src/loadpatchdialog.h
Normal file
71
qlo10k1/src/loadpatchdialog.h
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOADPATCHDIALOG_H
|
||||||
|
#define LOADPATCHDIALOG_H
|
||||||
|
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include <qptrlist.h>
|
||||||
|
#include "dlgs/loadpatchdialogbase.h"
|
||||||
|
#include "filecontroldialog.h"
|
||||||
|
#include "connectionwizard.h"
|
||||||
|
#include "structure.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
class LoadPatchDlg : public LoadPatchDialogBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
StrGlobal *global;
|
||||||
|
LD10k1File *file;
|
||||||
|
QString fileName;
|
||||||
|
QStringList inputNames;
|
||||||
|
QStringList outputNames;
|
||||||
|
|
||||||
|
QValueList <int> ctrlFileList;
|
||||||
|
QValueList <TranslatedCtrl> translatedList;
|
||||||
|
|
||||||
|
QPtrList <StrPatch> sortedPatches;
|
||||||
|
|
||||||
|
StrPatch *before;
|
||||||
|
|
||||||
|
void setBefore(int i1, int i2);
|
||||||
|
public:
|
||||||
|
|
||||||
|
LoadPatchDlg(StrGlobal *glob, QString efileName, LD10k1File *efile);
|
||||||
|
|
||||||
|
QString getName(int i);
|
||||||
|
StrPatch *whereLoad();
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void inputsDoubleClicked(QListBoxItem *item);
|
||||||
|
void outputsDoubleClicked(QListBoxItem *item);
|
||||||
|
|
||||||
|
void fileSelectionChanged();
|
||||||
|
|
||||||
|
void whereActivated(int index);
|
||||||
|
void befAfterActivated(int index);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LOADPATCHDIALOG_H
|
||||||
32
qlo10k1/src/main.cpp
Normal file
32
qlo10k1/src/main.cpp
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qapplication.h>
|
||||||
|
#include "mainwnd.h"
|
||||||
|
|
||||||
|
int main( int argc, char ** argv )
|
||||||
|
{
|
||||||
|
QApplication a( argc, argv );
|
||||||
|
MainWnd w;
|
||||||
|
w.show();
|
||||||
|
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
|
||||||
|
return a.exec();
|
||||||
|
}
|
||||||
550
qlo10k1/src/mainwnd.cpp
Normal file
550
qlo10k1/src/mainwnd.cpp
Normal file
|
|
@ -0,0 +1,550 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qcombobox.h>
|
||||||
|
#include <qpopupmenu.h>
|
||||||
|
#include <qmenubar.h>
|
||||||
|
#include <qapplication.h>
|
||||||
|
#include <qtabwidget.h>
|
||||||
|
#include <qlistview.h>
|
||||||
|
#include <qfiledialog.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qlayout.h>
|
||||||
|
#include <qsettings.h>
|
||||||
|
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "mainwnd.h"
|
||||||
|
#include "preferences.h"
|
||||||
|
#include "loadpatchdialog.h"
|
||||||
|
#include "transformpatchdialog.h"
|
||||||
|
#include "aboutdialog.h"
|
||||||
|
#include "routingwidget.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "strparam.h"
|
||||||
|
|
||||||
|
class PatchesListViewItem : public QListViewItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StrPatch *patch;
|
||||||
|
|
||||||
|
PatchesListViewItem(StrPatch *p, QListView *parent) : QListViewItem(parent)
|
||||||
|
{
|
||||||
|
patch = p;
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
PatchesListViewItem(StrPatch *p, QListView *parent, PatchesListViewItem *after) : QListViewItem(parent, after)
|
||||||
|
{
|
||||||
|
patch = p;
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateText()
|
||||||
|
{
|
||||||
|
setText(0,QString().sprintf("%03d", patch->order()));
|
||||||
|
setText(1,QString().sprintf("%03d", patch->num()));
|
||||||
|
setText(2,patch->name());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
MainWnd::MainWnd() : MainWndBase()
|
||||||
|
{
|
||||||
|
cardGlobal = new StrCardGlobal();
|
||||||
|
CurrentCard = NULL;
|
||||||
|
|
||||||
|
// try to load settings
|
||||||
|
loadSettings();
|
||||||
|
|
||||||
|
// main menu
|
||||||
|
QPopupMenu *fileMenu = new QPopupMenu();
|
||||||
|
fileMenu->insertItem(tr("&Load DSP config"), this, SLOT(menuLoadDSPConfigActivated(int)));
|
||||||
|
fileMenu->insertItem(tr("&Save DSP config"), this, SLOT(menuSaveDSPConfigActivated(int)));
|
||||||
|
fileMenu->insertSeparator();
|
||||||
|
fileMenu->insertItem(tr("&Quit"), this, SLOT(menuQuitActivated(int)));
|
||||||
|
|
||||||
|
menubar->insertItem(tr("&File"), fileMenu);
|
||||||
|
|
||||||
|
cardMenu = new QPopupMenu();
|
||||||
|
menubar->insertItem(tr("&Card"), cardMenu);
|
||||||
|
cardMenu->setCheckable(true);
|
||||||
|
|
||||||
|
QPopupMenu *settingMenu = new QPopupMenu();
|
||||||
|
settingMenu->insertItem(tr("&Main settings"), this, SLOT(menuSettingsActivated(int)));
|
||||||
|
menubar->insertItem(tr("&Settings"), settingMenu);
|
||||||
|
|
||||||
|
QPopupMenu *helpMenu = new QPopupMenu();
|
||||||
|
helpMenu->insertItem(tr("&About"), this, SLOT(menuHelpAboutActivated(int)));
|
||||||
|
menubar->insertItem(tr("&Help"), helpMenu);
|
||||||
|
|
||||||
|
// connect signals
|
||||||
|
connect((QObject *)tabMain, SIGNAL(currentChanged(QWidget *)), this, SLOT(tabMainCurrentChanged(QWidget *)));
|
||||||
|
|
||||||
|
createCardMenu();
|
||||||
|
enableTabs(false);
|
||||||
|
|
||||||
|
setCaption(tr(APP_NAME));
|
||||||
|
|
||||||
|
connect(pbLoad, SIGNAL(clicked()), this, SLOT(loadClicked()));
|
||||||
|
connect(pbUnload, SIGNAL(clicked()), this, SLOT(unloadClicked()));
|
||||||
|
|
||||||
|
connect(lvPatches, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(patchDoubleClicked(QListViewItem *)));
|
||||||
|
|
||||||
|
routing = new RoutingWidget(tabRouting);
|
||||||
|
|
||||||
|
tabRoutingLayout->addWidget(routing, 0, 0);
|
||||||
|
routing->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWnd::~MainWnd()
|
||||||
|
{
|
||||||
|
CurrentCard = NULL;
|
||||||
|
delete cardGlobal;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::tabMainCurrentChanged(QWidget *tab)
|
||||||
|
{
|
||||||
|
if (!CurrentCard)
|
||||||
|
return;
|
||||||
|
if (tab == tabLoad)
|
||||||
|
{
|
||||||
|
loadPatchesList(lvPatches);
|
||||||
|
}
|
||||||
|
else if (tab == tabRouting)
|
||||||
|
{
|
||||||
|
routing->refreshDrawing(CurrentCard);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::loadPatchesList(QListView *lv)
|
||||||
|
{
|
||||||
|
StrPatch *patch;
|
||||||
|
|
||||||
|
lv->clear();
|
||||||
|
PatchesListViewItem *after = NULL;
|
||||||
|
for(patch = CurrentCard->Patches.first(); patch; patch = CurrentCard->Patches.next() )
|
||||||
|
{
|
||||||
|
if (after)
|
||||||
|
after = new PatchesListViewItem(patch, lv, after);
|
||||||
|
else
|
||||||
|
after = new PatchesListViewItem(patch, lv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::patchesUpdateText()
|
||||||
|
{
|
||||||
|
QListViewItemIterator it(lvPatches);
|
||||||
|
while (it.current())
|
||||||
|
{
|
||||||
|
PatchesListViewItem *i = (PatchesListViewItem *)it.current();
|
||||||
|
i->updateText();
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuQuitActivated(int /*id*/)
|
||||||
|
{
|
||||||
|
qApp->quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuLoadDSPConfigActivated(int id)
|
||||||
|
{
|
||||||
|
if (!CurrentCard)
|
||||||
|
return;
|
||||||
|
QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
|
||||||
|
fd->setMode(QFileDialog::ExistingFile);
|
||||||
|
fd->setFilter("DSP config (*.ld10k1)");
|
||||||
|
fd->setCaption("Save DSP config");
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if (fd->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
fileName = fd->selectedFile();
|
||||||
|
delete fd;
|
||||||
|
|
||||||
|
LD10k1DspFile *dc = NULL;
|
||||||
|
if ((err = dc->LoadFromFile(fileName, &dc)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = CurrentCard->putDspConfig(dc)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't put DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
delete dc;
|
||||||
|
CurrentCard->clear();
|
||||||
|
CurrentCard->loadFromLD();
|
||||||
|
refreshState();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delete fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuSaveDSPConfigActivated(int id)
|
||||||
|
{
|
||||||
|
if (!CurrentCard)
|
||||||
|
return;
|
||||||
|
QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
|
||||||
|
fd->setMode(QFileDialog::AnyFile);
|
||||||
|
fd->setFilter("DSP config (*.ld10k1)");
|
||||||
|
fd->setCaption("Save DSP config");
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if (fd->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
fileName = fd->selectedFile();
|
||||||
|
delete fd;
|
||||||
|
|
||||||
|
if (!fileName.endsWith(".ld10k1"))
|
||||||
|
fileName += ".ld10k1";
|
||||||
|
if (QFile::exists(fileName))
|
||||||
|
{
|
||||||
|
if (QMessageBox::question(0, APP_NAME, QString("File with name %1 exist. Overwite ?").arg(fileName), QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LD10k1DspFile *dc = NULL;
|
||||||
|
if ((err = CurrentCard->getDspConfig(&dc)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't get DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = dc->SaveToFile(fileName)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't save DSP config\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
delete dc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delete fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::refreshState()
|
||||||
|
{
|
||||||
|
tabMainCurrentChanged(tabMain->currentPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuCardActivated(int id)
|
||||||
|
{
|
||||||
|
CardParam *card;
|
||||||
|
CardParam *old_card, *new_card;
|
||||||
|
int item_id = 0, old_item_id = 0;
|
||||||
|
|
||||||
|
new_card = NULL;
|
||||||
|
if (CurrentCard && CurrentCard->Card->isConnected())
|
||||||
|
old_card = CurrentCard->Card;
|
||||||
|
else
|
||||||
|
old_card = NULL;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < cardMenuItems.count(); i++)
|
||||||
|
{
|
||||||
|
item_id = cardMenuItems[i];
|
||||||
|
card = cardGlobal->Cards.at(i);
|
||||||
|
if (cardMenu->isItemChecked(item_id))
|
||||||
|
old_item_id = item_id;
|
||||||
|
|
||||||
|
if (id == item_id)
|
||||||
|
new_card = card;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new_card && new_card != old_card)
|
||||||
|
{
|
||||||
|
if (!new_card->connect())
|
||||||
|
{
|
||||||
|
cardMenu->setItemChecked(id, true);
|
||||||
|
enableTabs(true);
|
||||||
|
CurrentCard = new_card->getStructure();
|
||||||
|
// FIXME - refresh data
|
||||||
|
CurrentCard->loadFromLD();
|
||||||
|
refreshState();
|
||||||
|
|
||||||
|
if (old_card)
|
||||||
|
{
|
||||||
|
old_card->disconnect();
|
||||||
|
cardMenu->setItemChecked(old_item_id, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuSettingsActivated(int /*id*/)
|
||||||
|
{
|
||||||
|
PreferencesDlg d(cardGlobal);
|
||||||
|
int item_id;
|
||||||
|
|
||||||
|
if (CurrentCard && CurrentCard->Card->isConnected())
|
||||||
|
{
|
||||||
|
CurrentCard->Card->disconnect();
|
||||||
|
CurrentCard = NULL;
|
||||||
|
enableTabs(false);
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < cardMenuItems.count(); i++)
|
||||||
|
{
|
||||||
|
item_id = cardMenuItems[i];
|
||||||
|
cardMenu->setItemChecked(item_id, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
saveSettings();
|
||||||
|
createCardMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuHelpAboutActivated(int /* id */)
|
||||||
|
{
|
||||||
|
AboutDlg d;
|
||||||
|
d.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuCardClearDSPActivated(int /* id */)
|
||||||
|
{
|
||||||
|
if (CurrentCard)
|
||||||
|
{
|
||||||
|
CurrentCard->clearDSP();
|
||||||
|
refreshState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::menuCardRefreshActivated(int /* id */)
|
||||||
|
{
|
||||||
|
if (CurrentCard)
|
||||||
|
CurrentCard->loadFromLD();
|
||||||
|
|
||||||
|
refreshState();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::enableTabs(bool en)
|
||||||
|
{
|
||||||
|
if (en)
|
||||||
|
{
|
||||||
|
tabLoad->setEnabled(true);
|
||||||
|
tabRouting->setEnabled(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tabLoad->setEnabled(false);
|
||||||
|
tabRouting->setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::createCardMenu(void)
|
||||||
|
{
|
||||||
|
CardParam *card;
|
||||||
|
int id;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < cardMenuItems.count() ;i++)
|
||||||
|
{
|
||||||
|
cardMenu->disconnectItem(cardMenuItems[i], this, SLOT(menuCardActivated(int)));
|
||||||
|
}
|
||||||
|
|
||||||
|
cardMenuItems.clear();
|
||||||
|
cardMenu->clear();
|
||||||
|
for (unsigned int i = 0; i < cardGlobal->Cards.count() ;i++)
|
||||||
|
{
|
||||||
|
card = cardGlobal->Cards.at(i);
|
||||||
|
id = cardMenu->insertItem(card->CardName);
|
||||||
|
cardMenuItems.append(id);
|
||||||
|
cardMenu->connectItem(id, this, SLOT(menuCardActivated(int)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// special items
|
||||||
|
cardMenu->insertSeparator();
|
||||||
|
cardMenu->insertItem(tr("&Refresh"), this, SLOT(menuCardRefreshActivated(int)));
|
||||||
|
cardMenu->insertItem(tr("&Clear DSP"), this, SLOT(menuCardClearDSPActivated(int)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::loadClicked()
|
||||||
|
{
|
||||||
|
QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
|
||||||
|
fd->setMode(QFileDialog::ExistingFile);
|
||||||
|
fd->setFilter("Patches (*.emu10k1 *.ld10k1)");
|
||||||
|
fd->setCaption("Load patch");
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if ( fd->exec() == QDialog::Accepted )
|
||||||
|
{
|
||||||
|
fileName = fd->selectedFile();
|
||||||
|
delete fd;
|
||||||
|
LD10k1File *ldfile = NULL;
|
||||||
|
if (fileName.endsWith(".emu10k1"))
|
||||||
|
{
|
||||||
|
EMU10k1File *emufile = NULL;
|
||||||
|
if ((err = EMU10k1File::LoadFromFile(fileName, &emufile)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TransformPatchDlg d(fileName, emufile);
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
if ((err = d.transformFile(&ldfile)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't transform patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
delete emufile;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
delete emufile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete emufile;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((err = LD10k1File::LoadFromFile(fileName, &ldfile)) < 0) {
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadPatchDlg d(CurrentCard, fileName, ldfile);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
// and now convert to loader
|
||||||
|
StrPatch *loaded = NULL;
|
||||||
|
if ((err = CurrentCard->load(ldfile, d.whereLoad(), &loaded)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
else
|
||||||
|
refreshState();
|
||||||
|
}
|
||||||
|
delete ldfile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delete fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::unloadClicked()
|
||||||
|
{
|
||||||
|
PatchesListViewItem *current = (PatchesListViewItem *)lvPatches->currentItem();
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (current)
|
||||||
|
{
|
||||||
|
// find patch index
|
||||||
|
StrPatch *p = current->patch;
|
||||||
|
if ((err = CurrentCard->unload(p)))
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't unload patch\n(ld10k1 error:%1)").arg(CurrentCard->errorStr(err)));
|
||||||
|
else
|
||||||
|
refreshState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::patchDoubleClicked(QListViewItem *item)
|
||||||
|
{
|
||||||
|
/*int patch_num = item->text(0).toInt();
|
||||||
|
int err;
|
||||||
|
|
||||||
|
liblo10k1_dsp_patch_t *patch = NULL;
|
||||||
|
if ((err = global->CurrentCard->get(patch_num, &patch)))
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't get patch\n(ld10k1 error:%1)").arg(global->CurrentCard->error_str(err)));
|
||||||
|
return;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::saveSettings()
|
||||||
|
{
|
||||||
|
QSettings settings(QSettings::Ini);
|
||||||
|
settings.setPath("pzad", "qlo10k1", QSettings::User);
|
||||||
|
|
||||||
|
settings.beginGroup("/qlo10k1");
|
||||||
|
settings.writeEntry("/Version", "0.0.1");
|
||||||
|
settings.writeEntry("/RepDirSystem", cardGlobal->RepDirSystem);
|
||||||
|
settings.writeEntry("/RepDirUser", cardGlobal->RepDirUser);
|
||||||
|
|
||||||
|
// first save cards
|
||||||
|
settings.beginGroup("/Cards");
|
||||||
|
settings.writeEntry("/CardCount", (int)cardGlobal->Cards.count());
|
||||||
|
for (unsigned int i = 0; i < cardGlobal->Cards.count(); i++)
|
||||||
|
{
|
||||||
|
settings.beginGroup(QString("/Card_%1").arg(i));
|
||||||
|
CardParam *card = cardGlobal->Cards.at(i);
|
||||||
|
|
||||||
|
settings.writeEntry("/Name", card->CardName);
|
||||||
|
settings.writeEntry("/Socket", card->CardSocket);
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
// write current card
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWnd::loadSettings()
|
||||||
|
{
|
||||||
|
QSettings settings(QSettings::Ini);
|
||||||
|
settings.setPath("pzad", "qlo10k1", QSettings::User);
|
||||||
|
settings.beginGroup("/qlo10k1");
|
||||||
|
|
||||||
|
QString version = settings.readEntry("/Version", "");
|
||||||
|
if (version == "")
|
||||||
|
{
|
||||||
|
// settings doesn't exists
|
||||||
|
cardGlobal->RepDirSystem = "";
|
||||||
|
cardGlobal->RepDirUser = "";
|
||||||
|
|
||||||
|
CardParam *card = new CardParam();
|
||||||
|
card->CardName = "Default card";
|
||||||
|
card->CardSocket = "/tmp/.ld10k1_port";
|
||||||
|
|
||||||
|
if (!card->testConnection())
|
||||||
|
{
|
||||||
|
cardGlobal->Cards.append(card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cardGlobal->RepDirSystem = settings.readEntry("/RepDirSystem", "");
|
||||||
|
cardGlobal->RepDirUser = settings.readEntry("/RepDirUser", "");
|
||||||
|
|
||||||
|
settings.beginGroup("/Cards");
|
||||||
|
|
||||||
|
unsigned int cardCount = settings.readNumEntry("/CardCount", 0);
|
||||||
|
for (unsigned int i = 0; i < cardCount; i++)
|
||||||
|
{
|
||||||
|
settings.beginGroup(QString("/Card_%1").arg(i));
|
||||||
|
|
||||||
|
CardParam *card = new CardParam();
|
||||||
|
card->CardName = settings.readEntry("/Name", "");
|
||||||
|
card->CardSocket = settings.readEntry("/Socket", "");
|
||||||
|
|
||||||
|
if (!card->testConnection())
|
||||||
|
{
|
||||||
|
cardGlobal->Cards.append(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
}
|
||||||
77
qlo10k1/src/mainwnd.h
Normal file
77
qlo10k1/src/mainwnd.h
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MAINWND_H
|
||||||
|
#define MAINWND_H
|
||||||
|
|
||||||
|
#include "dlgs/mainwndbase.h"
|
||||||
|
#include "structure.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
|
||||||
|
class QPopupMenu;
|
||||||
|
class RoutingWidget;
|
||||||
|
|
||||||
|
class MainWnd : public MainWndBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
StrCardGlobal *cardGlobal;
|
||||||
|
StrGlobal *CurrentCard;
|
||||||
|
|
||||||
|
QPopupMenu *cardMenu;
|
||||||
|
QValueList <int> cardMenuItems;
|
||||||
|
RoutingWidget *routing;
|
||||||
|
public:
|
||||||
|
MainWnd(void);
|
||||||
|
~MainWnd(void);
|
||||||
|
|
||||||
|
void enableTabs(bool en);
|
||||||
|
|
||||||
|
void createCardMenu(void);
|
||||||
|
void loadPatchesList(QListView *lv);
|
||||||
|
void refreshState();
|
||||||
|
|
||||||
|
void saveSettings();
|
||||||
|
void loadSettings();
|
||||||
|
|
||||||
|
void patchesUpdateText();
|
||||||
|
public slots:
|
||||||
|
// menu
|
||||||
|
void menuLoadDSPConfigActivated(int id);
|
||||||
|
void menuSaveDSPConfigActivated(int id);
|
||||||
|
void menuQuitActivated(int id);
|
||||||
|
|
||||||
|
|
||||||
|
void menuCardActivated(int id);
|
||||||
|
void menuSettingsActivated(int id);
|
||||||
|
void menuHelpAboutActivated(int id);
|
||||||
|
|
||||||
|
void menuCardClearDSPActivated(int id);
|
||||||
|
void menuCardRefreshActivated(int id);
|
||||||
|
|
||||||
|
void tabMainCurrentChanged(QWidget *tab);
|
||||||
|
|
||||||
|
void loadClicked();
|
||||||
|
void unloadClicked();
|
||||||
|
|
||||||
|
void patchDoubleClicked(QListViewItem *item);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAINWND_H
|
||||||
160
qlo10k1/src/newiodialog.cpp
Normal file
160
qlo10k1/src/newiodialog.cpp
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qlistview.h>
|
||||||
|
|
||||||
|
#include "newiodialog.h"
|
||||||
|
#include "routingwidget.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "strparam.h"
|
||||||
|
|
||||||
|
class IOListViewItem : public QListViewItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int num;
|
||||||
|
QString name;
|
||||||
|
|
||||||
|
IOListViewItem(int n, QString na, QListView *parent) : QListViewItem(parent)
|
||||||
|
{
|
||||||
|
num = n;
|
||||||
|
name = na;
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
IOListViewItem(int n, QString na, QListView *parent, IOListViewItem *after) : QListViewItem(parent, after)
|
||||||
|
{
|
||||||
|
num = n;
|
||||||
|
name = na;
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateText()
|
||||||
|
{
|
||||||
|
setText(0, QString().sprintf("%03d", num));
|
||||||
|
setText(1, name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
NewIODlg::NewIODlg(StrGlobal *glob, DlgType t)
|
||||||
|
: NewIODialogBase()
|
||||||
|
{
|
||||||
|
global = glob;
|
||||||
|
dt = t;
|
||||||
|
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
QString title;
|
||||||
|
QString columnTitle;
|
||||||
|
|
||||||
|
switch (dt)
|
||||||
|
{
|
||||||
|
case In:
|
||||||
|
title = "New input";
|
||||||
|
columnTitle = "Input";
|
||||||
|
break;
|
||||||
|
case Out:
|
||||||
|
title = "New output";
|
||||||
|
columnTitle = "Output";
|
||||||
|
break;
|
||||||
|
case FX:
|
||||||
|
title = "New FX bus";
|
||||||
|
columnTitle = "FX bus";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
IOListViewItem *after = NULL;
|
||||||
|
int cnt;
|
||||||
|
|
||||||
|
lvIOs->clear();
|
||||||
|
|
||||||
|
if (dt == In)
|
||||||
|
global->Card->getInputCount(&cnt);
|
||||||
|
else if (dt == Out)
|
||||||
|
global->Card->getOutputCount(&cnt);
|
||||||
|
else
|
||||||
|
global->Card->getFXCount(&cnt);
|
||||||
|
|
||||||
|
for (int i = 0; i < cnt; i++)
|
||||||
|
{
|
||||||
|
QString ioname;
|
||||||
|
bool used = false;
|
||||||
|
|
||||||
|
if (dt == In)
|
||||||
|
used = global->findInputByNum(i) != NULL;
|
||||||
|
else if (dt == Out)
|
||||||
|
used = global->findOutputByNum(i) != NULL;
|
||||||
|
else
|
||||||
|
used = global->findFXByNum(i) != NULL;
|
||||||
|
|
||||||
|
if (!used)
|
||||||
|
{
|
||||||
|
if (dt == In)
|
||||||
|
global->Card->getInput(i, ioname);
|
||||||
|
else if (dt == Out)
|
||||||
|
global->Card->getOutput(i, ioname);
|
||||||
|
else
|
||||||
|
global->Card->getFX(i, ioname);
|
||||||
|
|
||||||
|
|
||||||
|
if (after)
|
||||||
|
after = new IOListViewItem(i, ioname, lvIOs, after);
|
||||||
|
else
|
||||||
|
after = new IOListViewItem(i, ioname, lvIOs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setCaption(title);
|
||||||
|
lvIOs->setColumnText(1, columnTitle);
|
||||||
|
|
||||||
|
connect(lvIOs, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(ioSelectionChanged(QListViewItem *)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewIODlg::okClicked()
|
||||||
|
{
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewIODlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewIODlg::ioSelectionChanged(QListViewItem *item)
|
||||||
|
{
|
||||||
|
IOListViewItem *ioitem = (IOListViewItem *)item;
|
||||||
|
|
||||||
|
num = ioitem->num;
|
||||||
|
name = ioitem->name;
|
||||||
|
pbOK->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
StrIOBase *NewIODlg::getNewIO()
|
||||||
|
{
|
||||||
|
if (dt == In)
|
||||||
|
return new StrInput(num, name);
|
||||||
|
else if (dt == Out)
|
||||||
|
return new StrOutput(num, name);
|
||||||
|
else
|
||||||
|
return new StrFX(num, name);
|
||||||
|
}
|
||||||
53
qlo10k1/src/newiodialog.h
Normal file
53
qlo10k1/src/newiodialog.h
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NEWIODIALOG_H
|
||||||
|
#define NEWIODIALOG_H
|
||||||
|
|
||||||
|
#include "dlgs/newiodialogbase.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
|
||||||
|
class StrIOBase;
|
||||||
|
|
||||||
|
class NewIODlg : public NewIODialogBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
enum DlgType {In, Out, FX};
|
||||||
|
private:
|
||||||
|
StrGlobal *global;
|
||||||
|
DlgType dt;
|
||||||
|
|
||||||
|
int num;
|
||||||
|
QString name;
|
||||||
|
public:
|
||||||
|
NewIODlg(StrGlobal *glob, DlgType t);
|
||||||
|
|
||||||
|
StrIOBase *getNewIO();
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void ioSelectionChanged(QListViewItem *item);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NEWIODIALOG_H
|
||||||
|
|
||||||
312
qlo10k1/src/patchdialog.cpp
Normal file
312
qlo10k1/src/patchdialog.cpp
Normal file
|
|
@ -0,0 +1,312 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qinputdialog.h>
|
||||||
|
|
||||||
|
#include "patchdialog.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
|
||||||
|
PatchDlg::PatchDlg(StrGlobal *glob, StrPatch *p)
|
||||||
|
: PatchDialogBase()
|
||||||
|
{
|
||||||
|
global = glob;
|
||||||
|
patch = p;
|
||||||
|
|
||||||
|
lePatchName->setText(p->name());
|
||||||
|
|
||||||
|
// load controls list
|
||||||
|
/*
|
||||||
|
FIXME
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < file->ctrl_count; i++)
|
||||||
|
{
|
||||||
|
QString text = getName(i);
|
||||||
|
lbFileCtrl->insertItem(text);
|
||||||
|
ctrlFileList.append(i);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// set default in names
|
||||||
|
/* FIXME
|
||||||
|
switch (file->in_count)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
inputNames.append("I");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
inputNames.append("IRL");
|
||||||
|
inputNames.append("IRR");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
inputNames.append("IRL");
|
||||||
|
inputNames.append("IRR");
|
||||||
|
inputNames.append("IC");
|
||||||
|
inputNames.append("ILFE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for (i = 0; i < file->in_count; i++)
|
||||||
|
inputNames.append("");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set default out names
|
||||||
|
switch (file->out_count)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
outputNames.append("O");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
outputNames.append("ORL");
|
||||||
|
outputNames.append("ORR");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
outputNames.append("ORL");
|
||||||
|
outputNames.append("ORR");
|
||||||
|
outputNames.append("OC");
|
||||||
|
outputNames.append("OLFE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for (i = 0; i < file->out_count; i++)
|
||||||
|
outputNames.append("");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < file->in_count; i++)
|
||||||
|
{
|
||||||
|
lbInputs->insertItem(inputNames[i]);
|
||||||
|
|
||||||
|
RouteInfo r;
|
||||||
|
inRoutes.append(r);
|
||||||
|
|
||||||
|
lbConnInputs->insertItem(getRouteName(false, i));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < file->out_count; i++)
|
||||||
|
{
|
||||||
|
lbOutputs->insertItem(outputNames[i]);
|
||||||
|
|
||||||
|
RouteInfo r;
|
||||||
|
outRoutes.append(r);
|
||||||
|
|
||||||
|
lbConnOutputs->insertItem(getRouteName(true, i));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
connect(lbInputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(inputsDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbOutputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(outputsDoubleClicked(QListBoxItem *)));
|
||||||
|
|
||||||
|
/*connect(pbCtrlAdd, SIGNAL(clicked()), this, SLOT(ctrlAddClicked()));
|
||||||
|
connect(pbCtrlDel, SIGNAL(clicked()), this, SLOT(ctrlDelClicked()));
|
||||||
|
|
||||||
|
connect(lbLoadedCtrl, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(loadedDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbFileCtrl, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(fileDoubleClicked(QListBoxItem *)));
|
||||||
|
*/
|
||||||
|
connect(lbConnInputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(connInputsDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbConnOutputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(connOutputsDoubleClicked(QListBoxItem *)));
|
||||||
|
/*
|
||||||
|
connect(cbInsertInRep, SIGNAL(stateChanged(int)), this, SLOT(insertInRepStateChanged(int)));
|
||||||
|
|
||||||
|
connect(rbArchBoth, SIGNAL(clicked()), this, SLOT(archBothClicked()));
|
||||||
|
connect(rbArchEmu10k1, SIGNAL(clicked()), this, SLOT(archEmu10k1Clicked()));
|
||||||
|
connect(rbArchEmu10k2, SIGNAL(clicked()), this, SLOT(archEmu10k2Clicked()));
|
||||||
|
|
||||||
|
tabRepository2->setEnabled(false);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/*QString LoadPatchDlg::getName(int i)
|
||||||
|
{
|
||||||
|
EMU10k1CtrlReg *ctrl;
|
||||||
|
|
||||||
|
ctrl = &(file->ctrls[i]);
|
||||||
|
QString name = QString(ctrl->name) + " - " + QString().setNum(ctrl->value) +
|
||||||
|
" (" + QString().setNum(ctrl->min) + "," + + QString().setNum(ctrl->max) + ")";
|
||||||
|
return name;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*QString LoadPatchDlg::getRouteName(bool output, int i)
|
||||||
|
{
|
||||||
|
QString name;
|
||||||
|
RouteInfo ri;
|
||||||
|
|
||||||
|
if (output)
|
||||||
|
{
|
||||||
|
name = outputNames[i];
|
||||||
|
ri = outRoutes[i];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
name = inputNames[i];
|
||||||
|
ri = inRoutes[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (ri.io)
|
||||||
|
{
|
||||||
|
case RouteInfo::None:
|
||||||
|
break;
|
||||||
|
case RouteInfo::FX:
|
||||||
|
name += QString(" -> FX:") + global->Registers.at(ri.reg)->name();
|
||||||
|
break;
|
||||||
|
case RouteInfo::In:
|
||||||
|
name += QString(" -> In:") + global->Registers.at(ri.reg)->name();
|
||||||
|
break;
|
||||||
|
case RouteInfo::Out:
|
||||||
|
name += QString(" -> Out:") + global->Registers.at(ri.reg)->name();
|
||||||
|
break;
|
||||||
|
case RouteInfo::PatchIn:
|
||||||
|
case RouteInfo::PatchOut:
|
||||||
|
StrPatch *patch = global->Patches.at(ri.patch);
|
||||||
|
if (ri.io == RouteInfo::PatchIn)
|
||||||
|
name += QString(" -> In:") + patch->name() + "-" + patch->Registers.at(ri.reg)->name();
|
||||||
|
else
|
||||||
|
name += QString(" -> Out:") + patch->name() + "-" + patch->Registers.at(ri.reg)->name();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void PatchDlg::okClicked()
|
||||||
|
{
|
||||||
|
// update routing and rename patch
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PatchDlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PatchDlg::inputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
/*bool ok;
|
||||||
|
int idx = lbInputs->index(item);
|
||||||
|
QString text = inputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Input name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
inputNames[idx] = text;
|
||||||
|
lbInputs->changeItem(text, idx);
|
||||||
|
lbConnInputs->changeItem(getRouteName(false, idx), idx);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void PatchDlg::outputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
/*bool ok;
|
||||||
|
int idx = lbOutputs->index(item);
|
||||||
|
QString text = outputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Output name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
outputNames[idx] = text;
|
||||||
|
lbOutputs->changeItem(text, idx);
|
||||||
|
lbConnOutputs->changeItem(getRouteName(false, idx), idx);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PatchDlg::connInputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
/*int idx = lbConnInputs->index(item);
|
||||||
|
RouteInfo ri = inRoutes[idx];
|
||||||
|
|
||||||
|
ConnectionWizard d(false, global, &ri);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
inRoutes[idx] = ri;
|
||||||
|
lbConnInputs->changeItem(getRouteName(false, idx), idx);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void PatchDlg::connOutputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
/*int idx = lbConnOutputs->index(item);
|
||||||
|
RouteInfo ri = outRoutes[idx];
|
||||||
|
|
||||||
|
ConnectionWizard d(true, global, &ri);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
outRoutes[idx] = ri;
|
||||||
|
lbConnOutputs->changeItem(getRouteName(true, idx), idx);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*LD10k1Route LoadPatchDlg::getRoute(bool out, int idx)
|
||||||
|
{
|
||||||
|
RouteInfo *route;
|
||||||
|
if (out)
|
||||||
|
route = &(outRoutes[idx]);
|
||||||
|
else
|
||||||
|
route = &(inRoutes[idx]);
|
||||||
|
|
||||||
|
LD10k1Route nroute;
|
||||||
|
|
||||||
|
nroute.PatchTo = route->patch;
|
||||||
|
nroute.Multi = route->multi;
|
||||||
|
|
||||||
|
if (route->patch >= 0 && route->reg >= 0)
|
||||||
|
{
|
||||||
|
StrPatch *patch = global->Patches.at(route->patch);
|
||||||
|
StrRegister *reg = patch->Registers.at(route->reg);
|
||||||
|
nroute.RegTo = reg->idx();
|
||||||
|
}
|
||||||
|
else if (route->reg >= 0)
|
||||||
|
{
|
||||||
|
StrRegister *reg = global->Registers.at(route->reg);
|
||||||
|
nroute.RegTo = reg->phIdx();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nroute.RegTo = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nroute;
|
||||||
|
}
|
||||||
|
*/
|
||||||
79
qlo10k1/src/patchdialog.h
Normal file
79
qlo10k1/src/patchdialog.h
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PATCHDIALOG_H
|
||||||
|
#define PATCHDIALOG_H
|
||||||
|
|
||||||
|
#include "dlgs/patchdialogbase.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
|
||||||
|
class PatchDlg : public PatchDialogBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
StrGlobal *global;
|
||||||
|
/*EMU10k1File *file;
|
||||||
|
QString fileName;*/
|
||||||
|
QStringList inputNames;
|
||||||
|
QStringList outputNames;
|
||||||
|
|
||||||
|
/*QValueList <int> ctrlFileList;
|
||||||
|
QValueList <TranslatedCtrl> translatedList;
|
||||||
|
QValueList <RouteInfo> inRoutes;
|
||||||
|
QValueList <RouteInfo> outRoutes;*/
|
||||||
|
|
||||||
|
//LD10k1Route getRoute(bool out, int idx);
|
||||||
|
StrPatch *patch;
|
||||||
|
public:
|
||||||
|
|
||||||
|
PatchDlg(StrGlobal *glob, StrPatch *p);
|
||||||
|
|
||||||
|
QString getName(int i);
|
||||||
|
QString getRouteName(bool output, int i);
|
||||||
|
|
||||||
|
/*void enableSBLive(bool en);
|
||||||
|
void enableAudigy(bool en);
|
||||||
|
|
||||||
|
void transformFile(LD10k1File **outFile, QValueList <LD10k1Route> *routes);*/
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void inputsDoubleClicked(QListBoxItem *item);
|
||||||
|
void outputsDoubleClicked(QListBoxItem *item);
|
||||||
|
|
||||||
|
/*void ctrlAddClicked();
|
||||||
|
void ctrlDelClicked();
|
||||||
|
|
||||||
|
void loadedDoubleClicked(QListBoxItem *item);
|
||||||
|
void fileDoubleClicked(QListBoxItem *item);*/
|
||||||
|
|
||||||
|
void connInputsDoubleClicked(QListBoxItem *item);
|
||||||
|
void connOutputsDoubleClicked(QListBoxItem *item);
|
||||||
|
|
||||||
|
/*void insertInRepStateChanged(int state);
|
||||||
|
|
||||||
|
void archBothClicked();
|
||||||
|
void archEmu10k1Clicked();
|
||||||
|
void archEmu10k2Clicked();*/
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PATCHDIALOG_H
|
||||||
|
|
||||||
175
qlo10k1/src/preferences.cpp
Normal file
175
qlo10k1/src/preferences.cpp
Normal file
|
|
@ -0,0 +1,175 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qgroupbox.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qinputdialog.h>
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include "preferences.h"
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "strparam.h"
|
||||||
|
|
||||||
|
PreferencesDlg::PreferencesDlg(StrCardGlobal *glob)
|
||||||
|
{
|
||||||
|
global = glob;
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
connect(lbCards, SIGNAL(highlighted(int)), this, SLOT(cardHighlighted(int)));
|
||||||
|
|
||||||
|
connect(pbUpdate, SIGNAL(clicked()), this, SLOT(updateClicked()));
|
||||||
|
connect(pbCardAdd, SIGNAL(clicked()), this, SLOT(cardAddClicked()));
|
||||||
|
connect(pbCardDel, SIGNAL(clicked()), this, SLOT(cardDelClicked()));
|
||||||
|
|
||||||
|
// copy card list
|
||||||
|
for (unsigned int i = 0; i < global->Cards.count(); i++)
|
||||||
|
cards.append(new CardParam(global->Cards.at(i)));
|
||||||
|
|
||||||
|
refreshListBox();
|
||||||
|
|
||||||
|
if (cards.count() > 1)
|
||||||
|
pbCardDel->setEnabled(true);
|
||||||
|
repDirSystem = global->RepDirSystem;
|
||||||
|
repDirUser = global->RepDirUser;
|
||||||
|
|
||||||
|
leRepSystem->setText(repDirSystem);
|
||||||
|
leRepUser->setText(repDirUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::okClicked()
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
CardParam *card;
|
||||||
|
for (i = 0; i < cards.count(); i++)
|
||||||
|
{
|
||||||
|
// test connection
|
||||||
|
card = cards.at(i);
|
||||||
|
if (card->testConnection())
|
||||||
|
{
|
||||||
|
// error
|
||||||
|
QMessageBox::critical( 0, APP_NAME,
|
||||||
|
QString("Couldn't connect to socket %1 for card %2").arg(card->CardSocket).arg(card->CardName));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy values to global
|
||||||
|
global->Cards.clear();
|
||||||
|
for (i = 0; i < cards.count(); i++)
|
||||||
|
global->Cards.append(new CardParam(cards.at(i)));
|
||||||
|
|
||||||
|
global->RepDirSystem = repDirSystem;
|
||||||
|
global->RepDirUser = repDirUser;
|
||||||
|
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::refreshListBox(void)
|
||||||
|
{
|
||||||
|
lbCards->clear();
|
||||||
|
|
||||||
|
CardParam *card;
|
||||||
|
QString desc;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < cards.count() ;i++)
|
||||||
|
{
|
||||||
|
card = cards.at(i);
|
||||||
|
desc = card->CardName + " - " + card->CardSocket;
|
||||||
|
lbCards->insertItem(desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::refreshListBox(int idx)
|
||||||
|
{
|
||||||
|
CardParam *card;
|
||||||
|
QString desc;
|
||||||
|
|
||||||
|
card = cards.at(idx);
|
||||||
|
desc = card->CardName + " - " + card->CardSocket;
|
||||||
|
lbCards->changeItem(desc, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PreferencesDlg::cardHighlighted(int index)
|
||||||
|
{
|
||||||
|
CardParam *card;
|
||||||
|
|
||||||
|
if (index >= 0 && (unsigned int)index < cards.count())
|
||||||
|
{
|
||||||
|
card = cards.at(index);
|
||||||
|
leCardName->setText(card->CardName);
|
||||||
|
leCardSocket->setText(card->CardSocket);
|
||||||
|
gbCard->setEnabled(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
leCardName->setText("");
|
||||||
|
leCardSocket->setText("");
|
||||||
|
gbCard->setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::updateClicked()
|
||||||
|
{
|
||||||
|
int idx = lbCards->currentItem();
|
||||||
|
|
||||||
|
if (idx >=0 && (unsigned int)idx < cards.count())
|
||||||
|
{
|
||||||
|
CardParam *card;
|
||||||
|
|
||||||
|
card = cards.at(idx);
|
||||||
|
|
||||||
|
card->CardName = leCardName->text();
|
||||||
|
card->CardSocket = leCardSocket->text();
|
||||||
|
refreshListBox(idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::cardAddClicked()
|
||||||
|
{
|
||||||
|
CardParam *card = new CardParam();
|
||||||
|
card->CardName = "Default card";
|
||||||
|
card->CardSocket = "/tmp/.ld10k1_port";
|
||||||
|
cards.append(card);
|
||||||
|
refreshListBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PreferencesDlg::cardDelClicked()
|
||||||
|
{
|
||||||
|
int idx = lbCards->currentItem();
|
||||||
|
|
||||||
|
if (idx >= 0)
|
||||||
|
{
|
||||||
|
cards.remove(idx);
|
||||||
|
|
||||||
|
if (cards.count() <= 1)
|
||||||
|
pbCardDel->setEnabled(false);
|
||||||
|
refreshListBox();
|
||||||
|
}
|
||||||
|
}
|
||||||
56
qlo10k1/src/preferences.h
Normal file
56
qlo10k1/src/preferences.h
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PREFERENCES_H
|
||||||
|
#define PREFERENCES_H
|
||||||
|
|
||||||
|
#include <qptrlist.h>
|
||||||
|
|
||||||
|
#include "dlgs/preferencesbase.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
|
||||||
|
class PreferencesDlg : public PreferencesBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
StrCardGlobal *global;
|
||||||
|
QPtrList <CardParam> cards;
|
||||||
|
QString repDirSystem;
|
||||||
|
QString repDirUser;
|
||||||
|
public:
|
||||||
|
PreferencesDlg(StrCardGlobal *glob);
|
||||||
|
void refreshListBox(void);
|
||||||
|
void refreshListBox(int idx);
|
||||||
|
|
||||||
|
void refreshRepListBox(void);
|
||||||
|
void refreshRepListBox(int idx);
|
||||||
|
public slots:
|
||||||
|
|
||||||
|
void cardHighlighted(int index);
|
||||||
|
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void updateClicked();
|
||||||
|
void cardAddClicked();
|
||||||
|
void cardDelClicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PREFERENCES_H
|
||||||
1029
qlo10k1/src/routingwidget.cpp
Normal file
1029
qlo10k1/src/routingwidget.cpp
Normal file
File diff suppressed because it is too large
Load diff
170
qlo10k1/src/routingwidget.h
Normal file
170
qlo10k1/src/routingwidget.h
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ROUTINGWIDGET_H
|
||||||
|
#define ROUTINGWIDGET_H
|
||||||
|
|
||||||
|
#include <qwidget.h>
|
||||||
|
#include <qlayout.h>
|
||||||
|
#include <qscrollview.h>
|
||||||
|
|
||||||
|
#include "custom_colors.h"
|
||||||
|
|
||||||
|
class RoutingWidget;
|
||||||
|
class QPushButton;
|
||||||
|
class QSpinBox;
|
||||||
|
class StrGlobal;
|
||||||
|
class RSItemBaseWithType;
|
||||||
|
class RSItemIO;
|
||||||
|
|
||||||
|
class RoutingDrawWidget : public QScrollView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
enum EditMode {None, Select, ResizeTopLeft, ResizeTopRight, ResizeBottomLeft, ResizeBottomRight, HandleMove, Move, DragLink};
|
||||||
|
|
||||||
|
EditMode mode;
|
||||||
|
|
||||||
|
// for select
|
||||||
|
QPoint selectStartPoint;
|
||||||
|
QPoint selectEndPoint;
|
||||||
|
|
||||||
|
RSItemBaseWithType *resizeItem;
|
||||||
|
int linkHandle;
|
||||||
|
|
||||||
|
RSItemIO *linkStart;
|
||||||
|
|
||||||
|
QFont titleFont;
|
||||||
|
public:
|
||||||
|
RoutingDrawWidget(RoutingWidget *parent = 0, const char *name = 0, WFlags f = 0);
|
||||||
|
~RoutingDrawWidget();
|
||||||
|
|
||||||
|
void startLinkDrag(RSItemIO *si, int xp, int yp);
|
||||||
|
void updateDragLink();
|
||||||
|
void stopLinkDrag();
|
||||||
|
void connectLinkDrag(int xp, int yp, int mxp, int myp);
|
||||||
|
bool isDragLink()
|
||||||
|
{
|
||||||
|
return mode == DragLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deleteAllSelected();
|
||||||
|
void deleteOneSelected(RSItemBaseWithType *item);
|
||||||
|
|
||||||
|
QFont &createFont(float zoom);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void drawContents(QPainter* p, int cx, int cy, int cw, int ch);
|
||||||
|
virtual void mousePressEvent(QMouseEvent *e);
|
||||||
|
virtual void mouseMoveEvent(QMouseEvent *e);
|
||||||
|
virtual void mouseReleaseEvent(QMouseEvent *e);
|
||||||
|
virtual void keyPressEvent(QKeyEvent *e);
|
||||||
|
};
|
||||||
|
|
||||||
|
class RoutingWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum EditMode {Normal, FX, In, Out, Route, Effect, EffectStack};
|
||||||
|
enum MenuMode {MenuNone, MenuObjects, MenuIO, MenuPatch, MenuLink};
|
||||||
|
private:
|
||||||
|
RoutingDrawWidget *drawing;
|
||||||
|
QVBoxLayout *RoutingWidgetLayout;
|
||||||
|
|
||||||
|
EditMode widgetMode;
|
||||||
|
|
||||||
|
void untoggleMode(EditMode m);
|
||||||
|
void toggleMode(EditMode m);
|
||||||
|
|
||||||
|
QPushButton *pbRoutingNormal;
|
||||||
|
QPushButton *pbRoutingFX;
|
||||||
|
QPushButton *pbRoutingIn;
|
||||||
|
QPushButton *pbRoutingOut;
|
||||||
|
QPushButton *pbRoutingRoute;
|
||||||
|
QPushButton *pbRoutingEffect;
|
||||||
|
QPushButton *pbRoutingEffectStack;
|
||||||
|
|
||||||
|
QSpinBox *sbRoutingZoom;
|
||||||
|
float zoomLevel;
|
||||||
|
StrGlobal *structure;
|
||||||
|
|
||||||
|
RSItemBaseWithType *itemOn;
|
||||||
|
int posXOn;
|
||||||
|
int posYOn;
|
||||||
|
public:
|
||||||
|
RoutingWidget(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
|
||||||
|
~RoutingWidget();
|
||||||
|
|
||||||
|
void createButtons();
|
||||||
|
StrGlobal *getStructure()
|
||||||
|
{
|
||||||
|
return structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
RoutingDrawWidget *getDrawing()
|
||||||
|
{
|
||||||
|
return drawing;
|
||||||
|
}
|
||||||
|
|
||||||
|
void refreshDrawing(StrGlobal *str);
|
||||||
|
void setZoomLevel(float level);
|
||||||
|
float getZoomLevel();
|
||||||
|
int zoomVal(int val)
|
||||||
|
{
|
||||||
|
return (int)(getZoomLevel() * (float)val);
|
||||||
|
};
|
||||||
|
|
||||||
|
int deZoomVal(int val)
|
||||||
|
{
|
||||||
|
return (int)((float)val / getZoomLevel());
|
||||||
|
};
|
||||||
|
|
||||||
|
void updateZoomLevelCtrl(int level);
|
||||||
|
|
||||||
|
EditMode getWidgetMode();
|
||||||
|
|
||||||
|
void putNewObjectAt(int xp, int yp);
|
||||||
|
RSItemBaseWithType *createNewIO(EditMode em);
|
||||||
|
RSItemBaseWithType *createNewPatch();
|
||||||
|
|
||||||
|
void startLinkDrag(int xp, int yp);
|
||||||
|
|
||||||
|
void openObjectMenuAt(RSItemBaseWithType *item, MenuMode mm, int xp, int yp, int mxp, int myp);
|
||||||
|
|
||||||
|
friend class RoutingDrawWidget;
|
||||||
|
public slots:
|
||||||
|
void modeNormalClicked();
|
||||||
|
void modeFxClicked();
|
||||||
|
void modeInClicked();
|
||||||
|
void modeOutClicked();
|
||||||
|
void modeRouteClicked();
|
||||||
|
void modeEffectClicked();
|
||||||
|
void modeEffectStackClicked();
|
||||||
|
|
||||||
|
|
||||||
|
void zoomValueChanged(int value);
|
||||||
|
void zoomInClicked();
|
||||||
|
void zoomOutClicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ROUTINGWIDGET_H
|
||||||
|
|
||||||
226
qlo10k1/src/routingwidget_menu.cpp
Normal file
226
qlo10k1/src/routingwidget_menu.cpp
Normal file
|
|
@ -0,0 +1,226 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qpopupmenu.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qfiledialog.h>
|
||||||
|
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "routingwidget.h"
|
||||||
|
#include "structure.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "structure_link.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
void RoutingWidget::openObjectMenuAt(RSItemBaseWithType *item, MenuMode mm, int xp, int yp, int mxp, int myp)
|
||||||
|
{
|
||||||
|
QPopupMenu *contextMenu = new QPopupMenu();
|
||||||
|
|
||||||
|
enum Action {Refresh, ClearDSP, Delete, Rename, Disconnect, DelPoint, AddPoint, Connect, Save};
|
||||||
|
|
||||||
|
if (mm == MenuNone)
|
||||||
|
{
|
||||||
|
contextMenu->insertItem(tr("&Refresh"), Refresh);
|
||||||
|
//contextMenu->insertItem(tr("&AutoArange")/*, this, SLOT(menuQuitActivated(int))*/);
|
||||||
|
contextMenu->insertItem(tr("&Clear DSP"), ClearDSP);
|
||||||
|
}
|
||||||
|
else if (mm == MenuObjects)
|
||||||
|
{
|
||||||
|
contextMenu->insertItem(tr("&Delete (Unload)"), Delete);
|
||||||
|
}
|
||||||
|
else if (mm == MenuIO)
|
||||||
|
{
|
||||||
|
//contextMenu->insertItem(tr("&Rename"), Rename);
|
||||||
|
|
||||||
|
bool isConnected = false;
|
||||||
|
|
||||||
|
if (item->type() == RSItemBaseWithType::Out)
|
||||||
|
isConnected = item->getIO(false, 0)->getConnectedTo() != NULL;
|
||||||
|
else
|
||||||
|
isConnected = item->getIO(true, 0)->getConnectedTo() != NULL;
|
||||||
|
|
||||||
|
if (isConnected)
|
||||||
|
contextMenu->insertItem(tr("D&isconnect"), Disconnect);
|
||||||
|
|
||||||
|
contextMenu->insertSeparator();
|
||||||
|
contextMenu->insertItem(tr("&Delete"), Delete);
|
||||||
|
}
|
||||||
|
else if (mm == MenuLink)
|
||||||
|
{
|
||||||
|
int pn = item->getHandlePointNum(xp, yp);
|
||||||
|
if (pn > 0)
|
||||||
|
contextMenu->insertItem(tr("D&elete point"), DelPoint);
|
||||||
|
else if (pn < 0)
|
||||||
|
contextMenu->insertItem(tr("A&dd point"), AddPoint);
|
||||||
|
|
||||||
|
contextMenu->insertItem(tr("D&isconnect"), Disconnect);
|
||||||
|
|
||||||
|
contextMenu->insertSeparator();
|
||||||
|
contextMenu->insertItem(tr("&Delete"), Delete);
|
||||||
|
}
|
||||||
|
else if (mm == MenuPatch)
|
||||||
|
{
|
||||||
|
//contextMenu->insertItem(tr("&Rename"), Rename);
|
||||||
|
|
||||||
|
RSItemIO *io = item->getIOAtPoint(xp, yp);
|
||||||
|
|
||||||
|
if (io)
|
||||||
|
{
|
||||||
|
//contextMenu->insertItem(tr("&IO Rename"), Rename);
|
||||||
|
|
||||||
|
if (io->getConnectedTo())
|
||||||
|
contextMenu->insertItem(tr("D&isconnect"), Disconnect);
|
||||||
|
else
|
||||||
|
contextMenu->insertItem(tr("&Connect"), Connect);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
contextMenu->insertItem(tr("&Save"), Save);
|
||||||
|
|
||||||
|
contextMenu->insertSeparator();
|
||||||
|
contextMenu->insertItem(tr("&Unload"), Delete);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int id = contextMenu->exec(QPoint(mxp, myp));
|
||||||
|
|
||||||
|
delete contextMenu;
|
||||||
|
|
||||||
|
if (id < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (id == AddPoint)
|
||||||
|
{
|
||||||
|
StrLink *l = (StrLink *)item;
|
||||||
|
if (l->addSegmentPoint(xp, yp))
|
||||||
|
{
|
||||||
|
l->updateContents(drawing, getZoomLevel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (id == DelPoint)
|
||||||
|
{
|
||||||
|
StrLink *l = (StrLink *)item;
|
||||||
|
// FIXME - update before del
|
||||||
|
l->updateContents(drawing, getZoomLevel());
|
||||||
|
l->delSegmentPoint(l->getHandlePointNum(xp, yp));
|
||||||
|
l->calcSize();
|
||||||
|
}
|
||||||
|
else if (id == Delete)
|
||||||
|
{
|
||||||
|
drawing->deleteAllSelected();
|
||||||
|
}
|
||||||
|
else if (id == Connect)
|
||||||
|
{
|
||||||
|
StrPatch *p = (StrPatch *)item;
|
||||||
|
RSItemIO *pio = p->getIOAtPoint(xp, yp);
|
||||||
|
if (pio)
|
||||||
|
drawing->startLinkDrag(pio, xp, yp);
|
||||||
|
}
|
||||||
|
else if (id == Disconnect)
|
||||||
|
{
|
||||||
|
RSItemIO *io = NULL;
|
||||||
|
if (item->type() == RSItemBaseWithType::Patch)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
StrPatch *p = (StrPatch *)item;
|
||||||
|
io = p->getIOAtPoint(xp, yp);
|
||||||
|
|
||||||
|
StrLink *l = io->getConnectedTo();
|
||||||
|
// FIXME - update before disconnect
|
||||||
|
l->updateContents(drawing, getZoomLevel());
|
||||||
|
|
||||||
|
if ((err = structure->disconnectFromLink(io)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't disconnect !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (item->type() == RSItemBaseWithType::In)
|
||||||
|
{
|
||||||
|
StrInput *in = (StrInput *)item;
|
||||||
|
io = in->getIO(true, 0);
|
||||||
|
}
|
||||||
|
else if (item->type() == RSItemBaseWithType::Out)
|
||||||
|
{
|
||||||
|
StrOutput *out = (StrOutput *)item;
|
||||||
|
io = out->getIO(false, 0);
|
||||||
|
}
|
||||||
|
if (item->type() == RSItemBaseWithType::FX)
|
||||||
|
{
|
||||||
|
StrFX *fx = (StrFX *)item;
|
||||||
|
io = fx->getIO(true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
StrLink *l = io->getConnectedTo();
|
||||||
|
structure->deleteOneLink(l);
|
||||||
|
drawing->updateContents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (id == ClearDSP)
|
||||||
|
{
|
||||||
|
structure->clearDSP();
|
||||||
|
drawing->updateContents();
|
||||||
|
}
|
||||||
|
else if (id == Refresh)
|
||||||
|
{
|
||||||
|
structure->loadFromLD();
|
||||||
|
drawing->updateContents();
|
||||||
|
}
|
||||||
|
else if (id == Save)
|
||||||
|
{
|
||||||
|
StrPatch *p = (StrPatch *)item;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
|
||||||
|
fd->setMode(QFileDialog::AnyFile);
|
||||||
|
fd->setFilter("Patch (*.ld10k1)");
|
||||||
|
fd->setCaption("Save patch");
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if (fd->exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
fileName = fd->selectedFile();
|
||||||
|
delete fd;
|
||||||
|
|
||||||
|
if (!fileName.endsWith(".ld10k1"))
|
||||||
|
fileName += ".ld10k1";
|
||||||
|
if (QFile::exists(fileName))
|
||||||
|
{
|
||||||
|
if (QMessageBox::question(0, APP_NAME, QString("File with name %1 exist. Overwite ?").arg(fileName), QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LD10k1File *pf = NULL;
|
||||||
|
if ((err = structure->get(p->num(), &pf)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't get patch !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = pf->SaveToFile(fileName)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't save patch\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
delete pf;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
delete fd;
|
||||||
|
}
|
||||||
|
}
|
||||||
293
qlo10k1/src/routingwidget_new.cpp
Normal file
293
qlo10k1/src/routingwidget_new.cpp
Normal file
|
|
@ -0,0 +1,293 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qfiledialog.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qpopupmenu.h>
|
||||||
|
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "routingwidget.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "structure_link.h"
|
||||||
|
#include "newiodialog.h"
|
||||||
|
#include "loadpatchdialog.h"
|
||||||
|
#include "transformpatchdialog.h"
|
||||||
|
|
||||||
|
|
||||||
|
RSItemBaseWithType *RoutingWidget::createNewIO(EditMode em)
|
||||||
|
{
|
||||||
|
// show io dialog
|
||||||
|
NewIODlg::DlgType t = NewIODlg::FX;
|
||||||
|
|
||||||
|
switch (em)
|
||||||
|
{
|
||||||
|
case FX:
|
||||||
|
t = NewIODlg::FX;
|
||||||
|
break;
|
||||||
|
case In:
|
||||||
|
t = NewIODlg::In;
|
||||||
|
break;
|
||||||
|
case Out:
|
||||||
|
t = NewIODlg::Out;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NewIODlg d(structure, t);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
return d.getNewIO();
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBaseWithType *RoutingWidget::createNewPatch()
|
||||||
|
{
|
||||||
|
QFileDialog *fd = new QFileDialog(this, "file dialog", TRUE);
|
||||||
|
fd->setMode(QFileDialog::ExistingFile);
|
||||||
|
fd->setFilter("Patches (*.emu10k1 *.ld10k1)");
|
||||||
|
fd->setCaption("Load patch");
|
||||||
|
|
||||||
|
StrPatch *loaded = NULL;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if ( fd->exec() == QDialog::Accepted )
|
||||||
|
{
|
||||||
|
fileName = fd->selectedFile();
|
||||||
|
delete fd;
|
||||||
|
LD10k1File *ldfile = NULL;
|
||||||
|
if (fileName.endsWith(".emu10k1"))
|
||||||
|
{
|
||||||
|
EMU10k1File *emufile = NULL;
|
||||||
|
if ((err = EMU10k1File::LoadFromFile(fileName, &emufile)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TransformPatchDlg d(fileName, emufile);
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
if ((err = d.transformFile(&ldfile)) < 0)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't transform patch\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
delete emufile;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
delete emufile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete emufile;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((err = LD10k1File::LoadFromFile(fileName, &ldfile)) < 0) {
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadPatchDlg d(structure, fileName, ldfile);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
// and now convert to loader
|
||||||
|
StrPatch *loaded = NULL;
|
||||||
|
if ((err = structure->load(ldfile, d.whereLoad(), &loaded)) < 0) {
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't load patch\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
delete ldfile;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
loaded->calcSize();
|
||||||
|
loaded->updateContents(this->drawing, getZoomLevel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete ldfile;
|
||||||
|
}
|
||||||
|
return loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RoutingWidget::startLinkDrag(int xp, int yp)
|
||||||
|
{
|
||||||
|
// find patch under - only on patch can start drag
|
||||||
|
|
||||||
|
RSItemBaseWithType *item = NULL;
|
||||||
|
|
||||||
|
for(item = structure->UsedItems.first(); item; item = structure->UsedItems.next())
|
||||||
|
{
|
||||||
|
if (item->containsPoint(xp, yp) && item->type() == RSItemBaseWithType::Patch)
|
||||||
|
{
|
||||||
|
// I have patch - find io
|
||||||
|
RSItemIO *pio = ((StrPatch *)item)->getIOAtPoint(xp, yp);
|
||||||
|
if (pio)
|
||||||
|
{
|
||||||
|
drawing->startLinkDrag(pio, xp, yp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RoutingDrawWidget::connectLinkDrag(int xp, int yp, int mxp, int myp)
|
||||||
|
{
|
||||||
|
RoutingWidget *parent = (RoutingWidget *)parentWidget();
|
||||||
|
StrGlobal *structure = parent->getStructure();
|
||||||
|
|
||||||
|
if (!structure)
|
||||||
|
return;
|
||||||
|
|
||||||
|
RSItemBaseWithType *item = NULL;
|
||||||
|
|
||||||
|
for(item = structure->UsedItems.first(); item; item = structure->UsedItems.next())
|
||||||
|
{
|
||||||
|
if (item->containsPoint(xp, yp))
|
||||||
|
{
|
||||||
|
// I have patch - find io
|
||||||
|
RSItemIO *pio = NULL;
|
||||||
|
if (item->type() == RSItemBaseWithType::Patch)
|
||||||
|
pio = ((StrPatch *)item)->getIOAtPoint(xp, yp);
|
||||||
|
else if (item->type() == RSItemBaseWithType::In)
|
||||||
|
pio = ((StrInput *)item)->getIO(true, 0);
|
||||||
|
else if (item->type() == RSItemBaseWithType::Out)
|
||||||
|
pio = ((StrInput *)item)->getIO(false, 0);
|
||||||
|
else if (item->type() == RSItemBaseWithType::FX)
|
||||||
|
pio = ((StrFX *)item)->getIO(true, 0);
|
||||||
|
|
||||||
|
|
||||||
|
if (pio)
|
||||||
|
{
|
||||||
|
// check if connecting in to out or out to in
|
||||||
|
if (pio->isOutput() != linkStart->isOutput())
|
||||||
|
{
|
||||||
|
if (pio->getConnectedTo() == linkStart->getConnectedTo() && pio->getConnectedTo() && linkStart->getConnectedTo())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (pio->getOwner() == linkStart->getOwner())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QPopupMenu *contextMenu = new QPopupMenu();
|
||||||
|
enum Action {Normal, SimpleMulti, Simple, Multi};
|
||||||
|
|
||||||
|
contextMenu->insertItem(tr("&Normal"), Normal);
|
||||||
|
contextMenu->insertItem(tr("&Multi"), Multi);
|
||||||
|
if (((RSItemBaseWithType *)pio->getOwner())->type() == RSItemBaseWithType::Patch)
|
||||||
|
contextMenu->insertItem(tr("S&imple"), Simple);
|
||||||
|
contextMenu->insertItem(tr("&Simple + Multi"), SimpleMulti);
|
||||||
|
|
||||||
|
|
||||||
|
int id = contextMenu->exec(QPoint(mxp, myp));
|
||||||
|
if (id < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int conn_id;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
QValueList <int> actIds;
|
||||||
|
|
||||||
|
actIds.clear();
|
||||||
|
|
||||||
|
StrLink *linkTo = pio->getConnectedTo();
|
||||||
|
if (linkTo && actIds.findIndex(linkTo->id()) < 0)
|
||||||
|
actIds.append(linkTo->id());
|
||||||
|
|
||||||
|
StrLink *linkFrom = linkStart->getConnectedTo();
|
||||||
|
if (linkFrom && actIds.findIndex(linkFrom->id()) < 0)
|
||||||
|
actIds.append(linkFrom->id());
|
||||||
|
|
||||||
|
if (id == Normal && linkTo && ((RSItemBaseWithType *)pio->getOwner())->type() != RSItemBaseWithType::Patch)
|
||||||
|
{
|
||||||
|
if ((err = structure->deleteOneLink(linkTo)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't disconnect !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = structure->conAdd(id != Simple && id != Normal,
|
||||||
|
id != Multi && id != Normal,
|
||||||
|
linkStart, pio, &conn_id)) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't connect !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (actIds.findIndex(conn_id) < 0)
|
||||||
|
actIds.append(conn_id);
|
||||||
|
|
||||||
|
if (linkFrom)
|
||||||
|
linkFrom->updateContents(this, parent->getZoomLevel());
|
||||||
|
if (linkTo)
|
||||||
|
linkTo->updateContents(this, parent->getZoomLevel());
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < actIds.count(); i++)
|
||||||
|
{
|
||||||
|
StrLink *link = NULL;
|
||||||
|
int aid = actIds[i];
|
||||||
|
if ((err = structure->actualizeLink(aid, &link)) < 0 && aid == conn_id)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't actualize link !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
|
||||||
|
if (link)
|
||||||
|
{
|
||||||
|
if (!link->isValid())
|
||||||
|
structure->destroyLink(link);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//wasn't error
|
||||||
|
link->calcSize();
|
||||||
|
link->updateContents(this, parent->getZoomLevel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stopLinkDrag();
|
||||||
|
parent->modeNormalClicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
delete contextMenu;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RoutingDrawWidget::deleteAllSelected()
|
||||||
|
{
|
||||||
|
// through all selected
|
||||||
|
RoutingWidget *parent = (RoutingWidget *)parentWidget();
|
||||||
|
StrGlobal *structure = parent->getStructure();
|
||||||
|
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (!structure)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((err = structure->deleteAllSelected()) < 0)
|
||||||
|
QMessageBox::critical(0, APP_NAME, QString("Couldn't delete selected items !\n(ld10k1 error:%1)").arg(structure->errorStr(err)));
|
||||||
|
|
||||||
|
this->updateContents();
|
||||||
|
}
|
||||||
1038
qlo10k1/src/strglobal.cpp
Normal file
1038
qlo10k1/src/strglobal.cpp
Normal file
File diff suppressed because it is too large
Load diff
112
qlo10k1/src/strglobal.h
Normal file
112
qlo10k1/src/strglobal.h
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRGLOBAL_H
|
||||||
|
#define STRGLOBAL_H
|
||||||
|
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qptrlist.h>
|
||||||
|
|
||||||
|
class StrGlobal;
|
||||||
|
class StrInput;
|
||||||
|
class StrOutput;
|
||||||
|
class StrFX;
|
||||||
|
class StrLink;
|
||||||
|
class StrPatch;
|
||||||
|
class RSItemBaseWithType;
|
||||||
|
class RSItemIO;
|
||||||
|
class CardParam;
|
||||||
|
class LD10k1File;
|
||||||
|
class LD10k1DspFile;
|
||||||
|
|
||||||
|
class StrGlobal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CardParam *Card;
|
||||||
|
|
||||||
|
QPtrList <StrInput> Inputs;
|
||||||
|
QPtrList <StrOutput> Outputs;
|
||||||
|
QPtrList <StrFX> FXs;
|
||||||
|
QPtrList <StrLink> Links;
|
||||||
|
|
||||||
|
QPtrList <StrPatch> Patches;
|
||||||
|
|
||||||
|
StrGlobal(CardParam *card);
|
||||||
|
~StrGlobal(void);
|
||||||
|
|
||||||
|
void clear(void);
|
||||||
|
void clearFlags(void);
|
||||||
|
int loadFromLD(void);
|
||||||
|
StrPatch *findPatchByNum(int num);
|
||||||
|
StrPatch *findPatchById(int id);
|
||||||
|
StrFX *findFXByNum(int num);
|
||||||
|
StrInput *findInputByNum(int num);
|
||||||
|
StrOutput *findOutputByNum(int num);
|
||||||
|
StrLink *findLinkById(int id);
|
||||||
|
|
||||||
|
int load(LD10k1File *ld10k1file, StrPatch *before, StrPatch **loaded);
|
||||||
|
int get(int patch_num, LD10k1File **dc);
|
||||||
|
int unload(StrPatch *p);
|
||||||
|
int conAdd(bool multi, bool simple, RSItemIO *from_io, RSItemIO *to_io, int *id);
|
||||||
|
int conDel(RSItemIO *from_io, int *id);
|
||||||
|
QString errorStr(int err);
|
||||||
|
|
||||||
|
QPtrList <RSItemBaseWithType> UsedItems;
|
||||||
|
|
||||||
|
int getPio(int pnum, bool out, int idx, QString &name);
|
||||||
|
|
||||||
|
int actualizeLink(int id, StrLink **out);
|
||||||
|
int actualizePatch(int pid, int pnum, QString pname, StrPatch **out);
|
||||||
|
|
||||||
|
void destroyLink(StrLink *l);
|
||||||
|
int disconnectFromLink(RSItemIO *io);
|
||||||
|
|
||||||
|
RSItemIO *findPatchIO(bool out, int pid, int ionum);
|
||||||
|
int clearDSP(void);
|
||||||
|
|
||||||
|
static void AutoArange(QPtrList <RSItemBaseWithType> *items);
|
||||||
|
|
||||||
|
void updatePatchesOrder(void);
|
||||||
|
|
||||||
|
int deleteOneLink(StrLink *l);
|
||||||
|
int deleteOneFX(StrFX *fx);
|
||||||
|
int deleteOneIn(StrInput *in);
|
||||||
|
int deleteOneOut(StrOutput *out);
|
||||||
|
int deleteOnePatch(StrPatch *p);
|
||||||
|
int deleteOneItem(RSItemBaseWithType *item);
|
||||||
|
int deleteAllSelected();
|
||||||
|
|
||||||
|
int getDspConfig(LD10k1DspFile **dc);
|
||||||
|
int putDspConfig(LD10k1DspFile *dc);
|
||||||
|
};
|
||||||
|
|
||||||
|
class StrCardGlobal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QPtrList <CardParam> Cards;
|
||||||
|
|
||||||
|
QString RepDirSystem;
|
||||||
|
QString RepDirUser;
|
||||||
|
|
||||||
|
StrCardGlobal();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRGLOBAL_H
|
||||||
314
qlo10k1/src/strparam.cpp
Normal file
314
qlo10k1/src/strparam.cpp
Normal file
|
|
@ -0,0 +1,314 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <lo10k1/lo10k1.h>
|
||||||
|
|
||||||
|
#include "strglobal.h"
|
||||||
|
#include "strparam.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
class CardParamPrivate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
liblo10k1_connection_t card_conn;
|
||||||
|
|
||||||
|
liblo10k1_connection_t *conn()
|
||||||
|
{
|
||||||
|
return &card_conn;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CardParam::CardParam(void)
|
||||||
|
{
|
||||||
|
prv = new CardParamPrivate();
|
||||||
|
liblo10k1_connection_init(prv->conn());
|
||||||
|
Structure = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardParam::~CardParam(void)
|
||||||
|
{
|
||||||
|
disconnect();
|
||||||
|
if (Structure)
|
||||||
|
delete Structure;
|
||||||
|
delete prv;
|
||||||
|
}
|
||||||
|
|
||||||
|
StrGlobal *CardParam::getStructure()
|
||||||
|
{
|
||||||
|
Structure = new StrGlobal(this);
|
||||||
|
return Structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::disconnect(void)
|
||||||
|
{
|
||||||
|
if (liblo10k1_is_open(prv->conn()))
|
||||||
|
return liblo10k1_disconnect(prv->conn());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::isConnected(void)
|
||||||
|
{
|
||||||
|
return liblo10k1_is_open(prv->conn());
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::clearDSP(void)
|
||||||
|
{
|
||||||
|
return liblo10k1_dsp_init(prv->conn());
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::testConnection(void)
|
||||||
|
{
|
||||||
|
int err = connect();
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
disconnect();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::connect(void)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (liblo10k1_is_open(prv->conn()))
|
||||||
|
disconnect();
|
||||||
|
|
||||||
|
liblo10k1_param params;
|
||||||
|
const char *tmp = NULL;
|
||||||
|
|
||||||
|
tmp = CardSocket;
|
||||||
|
|
||||||
|
params.wfc = 500; // FIXME - user selectable
|
||||||
|
params.type = COMM_TYPE_LOCAL; // FIXME
|
||||||
|
params.server = 0;
|
||||||
|
params.name = (char *)tmp;
|
||||||
|
params.port = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_connect(¶ms, prv->conn())) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
return liblo10k1_check_version(prv->conn());
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::load(LD10k1File *ld10k1file, int before, int *loaded, int *loaded_id)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
liblo10k1_dsp_patch_t *patch = ld10k1file->getLD10k1Format();
|
||||||
|
err = liblo10k1_patch_load(prv->conn(), patch, before, loaded, loaded_id);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::unload(int num)
|
||||||
|
{
|
||||||
|
return liblo10k1_patch_unload(prv->conn(), num);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::get(int patch_num, LD10k1File **ld10k1file)
|
||||||
|
{
|
||||||
|
liblo10k1_dsp_patch_t *patch;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_patch_get(prv->conn(), patch_num, &patch)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
LD10k1File *tmp = new LD10k1File();
|
||||||
|
tmp->setLD10k1Format(patch);
|
||||||
|
*ld10k1file = tmp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::conAdd(bool multi, bool simple, int from_type, int from_patch, int from_io, int to_type,int to_patch, int to_io, int *id)
|
||||||
|
{
|
||||||
|
return liblo10k1_con_add(prv->conn(), multi, simple, from_type, from_patch, from_io, to_type, to_patch, to_io, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::conDel(int from_type, int from_patch, int from_io, int *id)
|
||||||
|
{
|
||||||
|
return liblo10k1_con_del(prv->conn(), from_type, from_patch, from_io, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPointsInfo(int **out, int *count)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_points_info(prv->conn(), out, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPointInfo(int point_id, CardParamPointInfo *out)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
liblo10k1_point_info_t pi;
|
||||||
|
if ((err = liblo10k1_get_point_info(prv->conn(), point_id, &pi)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
out->id = pi.id;
|
||||||
|
out->type = pi.type;
|
||||||
|
out->io_idx = pi.io_idx;
|
||||||
|
out->simple = pi.simple;
|
||||||
|
out->multi = pi.multi;
|
||||||
|
out->conn_count = pi.conn_count;
|
||||||
|
|
||||||
|
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT; i++)
|
||||||
|
{
|
||||||
|
out->io_type[i] = pi.io_type[i];
|
||||||
|
out->patch[i] = pi.patch[i];
|
||||||
|
out->io[i] = pi.io[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CardParam::errorStr(int err)
|
||||||
|
{
|
||||||
|
return QString(liblo10k1_error_str(err));
|
||||||
|
}
|
||||||
|
|
||||||
|
CardParam::CardParam(CardParam *from)
|
||||||
|
{
|
||||||
|
prv = new CardParamPrivate();
|
||||||
|
liblo10k1_connection_init(prv->conn());
|
||||||
|
CardName = from->CardName;
|
||||||
|
CardSocket = from->CardSocket;
|
||||||
|
};
|
||||||
|
|
||||||
|
int CardParam::getFXCount(int *cnt)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_fx_count(prv->conn(), cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getInputCount(int *cnt)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_in_count(prv->conn(), cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getOutputCount(int *cnt)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_out_count(prv->conn(), cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getFX(int i, QString &name)
|
||||||
|
{
|
||||||
|
liblo10k1_get_io_t ld_tmp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_fx(prv->conn(), i, &ld_tmp)) < 0)
|
||||||
|
return err;
|
||||||
|
name = ld_tmp.name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getInput(int i, QString &name)
|
||||||
|
{
|
||||||
|
liblo10k1_get_io_t ld_tmp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_in(prv->conn(), i, &ld_tmp)) < 0)
|
||||||
|
return err;
|
||||||
|
name = ld_tmp.name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getOutput(int i, QString &name)
|
||||||
|
{
|
||||||
|
liblo10k1_get_io_t ld_tmp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_out(prv->conn(), i, &ld_tmp)) < 0)
|
||||||
|
return err;
|
||||||
|
name = ld_tmp.name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPInputCount(int pnum, int *cnt)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_pin_count(prv->conn(), pnum, cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPOutputCount(int pnum, int *cnt)
|
||||||
|
{
|
||||||
|
return liblo10k1_get_pout_count(prv->conn(), pnum, cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPInput(int pnum, int i, QString &name)
|
||||||
|
{
|
||||||
|
liblo10k1_get_io_t ld_tmp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_pin(prv->conn(), pnum, i, &ld_tmp)) < 0)
|
||||||
|
return err;
|
||||||
|
name = ld_tmp.name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPOutput(int pnum, int i, QString &name)
|
||||||
|
{
|
||||||
|
liblo10k1_get_io_t ld_tmp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_pout(prv->conn(), pnum, i, &ld_tmp)) < 0)
|
||||||
|
return err;
|
||||||
|
name = ld_tmp.name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getPatchesInfo(CardParamPatchInfo ***pi, int *cnt)
|
||||||
|
{
|
||||||
|
liblo10k1_patches_info_t *ld_patches;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
CardParamPatchInfo **tmppi = NULL;
|
||||||
|
*pi = NULL;
|
||||||
|
|
||||||
|
if ((err = liblo10k1_get_patches_info(prv->conn(), &ld_patches, cnt)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
tmppi = new CardParamPatchInfo *[*cnt];
|
||||||
|
|
||||||
|
for (int i = 0; i < *cnt; i++)
|
||||||
|
{
|
||||||
|
tmppi[i] = new CardParamPatchInfo();
|
||||||
|
tmppi[i]->patch_num = ld_patches[i].patch_num;
|
||||||
|
tmppi[i]->id = ld_patches[i].id;
|
||||||
|
tmppi[i]->patch_name = ld_patches[i].patch_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(ld_patches);
|
||||||
|
*pi = tmppi;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::getDspConfig(LD10k1DspFile **dc)
|
||||||
|
{
|
||||||
|
liblo10k1_file_dsp_setup_t *ds = NULL;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if ((err = liblo10k1lf_get_dsp_config(prv->conn(), &ds)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
LD10k1DspFile *ldc = new LD10k1DspFile();
|
||||||
|
ldc->setLD10k1DspFormat(ds);
|
||||||
|
*dc = ldc;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardParam::putDspConfig(LD10k1DspFile *dc)
|
||||||
|
{
|
||||||
|
return liblo10k1lf_put_dsp_config(prv->conn(), dc->getLD10k1DspFormat());
|
||||||
|
}
|
||||||
104
qlo10k1/src/strparam.h
Normal file
104
qlo10k1/src/strparam.h
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRPARAM_H
|
||||||
|
#define STRPARAM_H
|
||||||
|
|
||||||
|
#include <qstring.h>
|
||||||
|
|
||||||
|
class StrGlobal;
|
||||||
|
class LD10k1File;
|
||||||
|
class LD10k1DspFile;
|
||||||
|
class CardParamPrivate;
|
||||||
|
|
||||||
|
#define POINTINFO_MAX_CONN_PER_POINT 15
|
||||||
|
class CardParamPointInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int id;
|
||||||
|
int type;
|
||||||
|
int io_idx;
|
||||||
|
int simple;
|
||||||
|
int multi;
|
||||||
|
unsigned int conn_count;
|
||||||
|
int io_type[POINTINFO_MAX_CONN_PER_POINT];
|
||||||
|
int patch[POINTINFO_MAX_CONN_PER_POINT];
|
||||||
|
int io[POINTINFO_MAX_CONN_PER_POINT];
|
||||||
|
};
|
||||||
|
|
||||||
|
class CardParamPatchInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int patch_num;
|
||||||
|
int id;
|
||||||
|
QString patch_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CardParam
|
||||||
|
{
|
||||||
|
CardParamPrivate *prv;
|
||||||
|
public:
|
||||||
|
QString CardName;
|
||||||
|
QString CardSocket;
|
||||||
|
|
||||||
|
StrGlobal *Structure;
|
||||||
|
|
||||||
|
CardParam(void);
|
||||||
|
CardParam(CardParam *from);
|
||||||
|
~CardParam(void);
|
||||||
|
StrGlobal *getStructure();
|
||||||
|
|
||||||
|
int connect(void);
|
||||||
|
int disconnect(void);
|
||||||
|
int isConnected(void);
|
||||||
|
int testConnection(void);
|
||||||
|
int clearDSP(void);
|
||||||
|
|
||||||
|
int load(LD10k1File *ld10k1file, int before, int *loaded, int *loaded_id);
|
||||||
|
int unload(int num);
|
||||||
|
int get(int patch_num, LD10k1File **ld10k1file);
|
||||||
|
int getPointsInfo(int **out, int *count);
|
||||||
|
int getPointInfo(int point_id, CardParamPointInfo *out);
|
||||||
|
|
||||||
|
int conAdd(bool multi, bool simple, int from_type, int from_patch, int from_io, int to_type, int to_patch, int to_io, int *id);
|
||||||
|
int conDel(int from_type, int from_patch, int from_io, int *id);
|
||||||
|
QString errorStr(int err);
|
||||||
|
|
||||||
|
int getFXCount(int *cnt);
|
||||||
|
int getInputCount(int *cnt);
|
||||||
|
int getOutputCount(int *cnt);
|
||||||
|
|
||||||
|
int getFX(int i, QString &name);
|
||||||
|
int getInput(int i, QString &name);
|
||||||
|
int getOutput(int i, QString &name);
|
||||||
|
|
||||||
|
int getPInputCount(int pnum, int *cnt);
|
||||||
|
int getPOutputCount(int pnum, int *cnt);
|
||||||
|
int getPInput(int pnum, int i, QString &name);
|
||||||
|
int getPOutput(int pnum, int i, QString &name);
|
||||||
|
|
||||||
|
int getPatchesInfo(CardParamPatchInfo ***pi, int *cnt);
|
||||||
|
|
||||||
|
int getDspConfig(LD10k1DspFile **dc);
|
||||||
|
int putDspConfig(LD10k1DspFile *dc);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRPARAM_H
|
||||||
291
qlo10k1/src/structure.cpp
Normal file
291
qlo10k1/src/structure.cpp
Normal file
|
|
@ -0,0 +1,291 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "structure.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "structure_link.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
RSItemIO::RSItemIO(RSItemBase *o, bool out, int i, QString d)
|
||||||
|
{
|
||||||
|
output = out;
|
||||||
|
idx = i;
|
||||||
|
desc = d;
|
||||||
|
owner = o;
|
||||||
|
connectedTo = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO::~RSItemIO()
|
||||||
|
{
|
||||||
|
if (connectedTo)
|
||||||
|
{
|
||||||
|
int r = connectedTo->findRoute(this);
|
||||||
|
if (r >= 0)
|
||||||
|
connectedTo->setRoutePoint(r, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemIO::isOutput()
|
||||||
|
{
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemIO::setOutput(bool o)
|
||||||
|
{
|
||||||
|
output = o;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemIO::getIdx()
|
||||||
|
{
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemIO::setIdx(int i)
|
||||||
|
{
|
||||||
|
idx = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString RSItemIO::getDesc()
|
||||||
|
{
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemIO::setDesc(QString d)
|
||||||
|
{
|
||||||
|
desc = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBase *RSItemIO::getOwner()
|
||||||
|
{
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemIO::connectTo(StrLink *to)
|
||||||
|
{
|
||||||
|
if (connectedTo)
|
||||||
|
{
|
||||||
|
int r = connectedTo->findRoute(this);
|
||||||
|
if (r >= 0)
|
||||||
|
connectedTo->setRoutePoint(r, NULL);
|
||||||
|
}
|
||||||
|
connectedTo = to;
|
||||||
|
}
|
||||||
|
|
||||||
|
StrLink *RSItemIO::getConnectedTo()
|
||||||
|
{
|
||||||
|
return connectedTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DrawingParams::DrawingParams(float zoom, QWidget *dt, QPaintEvent *pe, QPainter *p)
|
||||||
|
{
|
||||||
|
zoomKoef = (float)zoom;
|
||||||
|
drawTo = dt;
|
||||||
|
paintEvent = pe;
|
||||||
|
painter = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBase::RSItemBase()
|
||||||
|
{
|
||||||
|
fNew = false;
|
||||||
|
fUsed = false;
|
||||||
|
fChanged = false;
|
||||||
|
fSelected = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::x()
|
||||||
|
{
|
||||||
|
return position.x();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::y()
|
||||||
|
{
|
||||||
|
return position.y();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setPosition(int x, int y)
|
||||||
|
{
|
||||||
|
if (x < 0)
|
||||||
|
x = 0;
|
||||||
|
if (y < 0)
|
||||||
|
y = 0;
|
||||||
|
position.setX(x);
|
||||||
|
position.setY(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::width()
|
||||||
|
{
|
||||||
|
return size.width();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::height()
|
||||||
|
{
|
||||||
|
return size.height();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::minWidth()
|
||||||
|
{
|
||||||
|
return minSize.width();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::minHeight()
|
||||||
|
{
|
||||||
|
return minSize.height();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setSize(int w, int h)
|
||||||
|
{
|
||||||
|
if (w > minSize.width())
|
||||||
|
size.setWidth(w);
|
||||||
|
if (h > minSize.height())
|
||||||
|
size.setHeight(h);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::moveRel(int dx, int dy)
|
||||||
|
{
|
||||||
|
setPosition(x() + dx, y() + dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::moveHandleRel(int num, int dx, int dy)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::updateContents(QScrollView *sv, float zoom)
|
||||||
|
{
|
||||||
|
sv->updateContents((int)(x() * zoom),
|
||||||
|
(int)(y() * zoom),
|
||||||
|
(int)(width() * zoom),
|
||||||
|
(int)(height() * zoom));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemBase::containsPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *RSItemBase::getIOAtPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool RSItemBase::containsHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBase::RSItemHandle RSItemBase::getHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBase::getHandlePointNum(int xp, int yp)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemBase::flagUsed()
|
||||||
|
{
|
||||||
|
return fUsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setFlagUsed(bool u)
|
||||||
|
{
|
||||||
|
fUsed = u;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemBase::flagNew()
|
||||||
|
{
|
||||||
|
return fNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setFlagNew(bool n)
|
||||||
|
{
|
||||||
|
fNew = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemBase::flagChanged()
|
||||||
|
{
|
||||||
|
return fNew;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setFlagChanged(bool c)
|
||||||
|
{
|
||||||
|
fChanged = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RSItemBase::flagSelected()
|
||||||
|
{
|
||||||
|
return fSelected;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::setFlagSelected(bool s)
|
||||||
|
{
|
||||||
|
fSelected = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString RSItemBase::getDesc()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::draw(DrawingParams *dp)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBase::calcSize()
|
||||||
|
{
|
||||||
|
minSize = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RSItemBaseWithType::RSItemBaseWithType(ItemType type)
|
||||||
|
{
|
||||||
|
iType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBaseWithType::ItemType RSItemBaseWithType::type()
|
||||||
|
{
|
||||||
|
return iType;
|
||||||
|
}
|
||||||
|
|
||||||
|
int RSItemBaseWithType::getMaxIOIdx(bool out)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *RSItemBaseWithType::getIO(bool out, int idx)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RSItemBaseWithType::getIOPoint(RSItemIO *item, int *xp, int *yp)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBaseWithType::~RSItemBaseWithType()
|
||||||
|
{
|
||||||
|
}
|
||||||
138
qlo10k1/src/structure.h
Normal file
138
qlo10k1/src/structure.h
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRUCTURE_H
|
||||||
|
#define STRUCTURE_H
|
||||||
|
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qptrlist.h>
|
||||||
|
#include <qwidget.h>
|
||||||
|
#include <qscrollview.h>
|
||||||
|
|
||||||
|
class RSItemBase;
|
||||||
|
class StrPatch;
|
||||||
|
class StrInput;
|
||||||
|
class StrOutput;
|
||||||
|
class StrFX;
|
||||||
|
class StrLink;
|
||||||
|
|
||||||
|
class RSItemIO
|
||||||
|
{
|
||||||
|
bool output;
|
||||||
|
int idx;
|
||||||
|
QString desc;
|
||||||
|
RSItemBase *owner;
|
||||||
|
StrLink *connectedTo;
|
||||||
|
public:
|
||||||
|
RSItemIO(RSItemBase *o, bool out, int i, QString d);
|
||||||
|
~RSItemIO();
|
||||||
|
bool isOutput();
|
||||||
|
void setOutput(bool o);
|
||||||
|
int getIdx();
|
||||||
|
void setIdx(int i);
|
||||||
|
QString getDesc();
|
||||||
|
void setDesc(QString d);
|
||||||
|
RSItemBase *getOwner();
|
||||||
|
void connectTo(StrLink *to);
|
||||||
|
StrLink *getConnectedTo();
|
||||||
|
};
|
||||||
|
|
||||||
|
class QWidget;
|
||||||
|
class QPainter;
|
||||||
|
|
||||||
|
class DrawingParams
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
float zoomKoef;
|
||||||
|
DrawingParams(float zoom, QWidget *dt, QPaintEvent *pe, QPainter *p);
|
||||||
|
|
||||||
|
QWidget *drawTo;
|
||||||
|
QPaintEvent *paintEvent;
|
||||||
|
QPainter *painter;
|
||||||
|
};
|
||||||
|
|
||||||
|
class RSItemBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum RSItemHandle {TopLeft, TopRight, BottomLeft, BottomRight, Other, None};
|
||||||
|
private:
|
||||||
|
QPoint position;
|
||||||
|
QSize size;
|
||||||
|
QSize minSize;
|
||||||
|
|
||||||
|
bool fNew;
|
||||||
|
bool fUsed;
|
||||||
|
bool fChanged;
|
||||||
|
|
||||||
|
bool fSelected;
|
||||||
|
public:
|
||||||
|
RSItemBase();
|
||||||
|
|
||||||
|
// position
|
||||||
|
int x();
|
||||||
|
int y();
|
||||||
|
void setPosition(int x, int y);
|
||||||
|
// size
|
||||||
|
int width();
|
||||||
|
int height();
|
||||||
|
// size
|
||||||
|
int minWidth();
|
||||||
|
int minHeight();
|
||||||
|
void setSize(int w, int h);
|
||||||
|
virtual void moveRel(int dx, int dy);
|
||||||
|
virtual void moveHandleRel(int num, int dx, int dy);
|
||||||
|
virtual void updateContents(QScrollView *sv, float zoom);
|
||||||
|
QString getTooltipDecsription();
|
||||||
|
virtual bool containsPoint(int xp, int yp);
|
||||||
|
virtual RSItemIO *getIOAtPoint(int xp, int yp);
|
||||||
|
virtual bool containsHandlePoint(int xp, int yp);
|
||||||
|
virtual RSItemHandle getHandlePoint(int xp, int yp);
|
||||||
|
virtual int getHandlePointNum(int xp, int yp);
|
||||||
|
bool flagUsed();
|
||||||
|
void setFlagUsed(bool u);
|
||||||
|
bool flagNew();
|
||||||
|
void setFlagNew(bool n);
|
||||||
|
bool flagChanged();
|
||||||
|
void setFlagChanged(bool c);
|
||||||
|
bool flagSelected();
|
||||||
|
void setFlagSelected(bool s);
|
||||||
|
virtual QString getDesc();
|
||||||
|
virtual void draw(DrawingParams *dp);
|
||||||
|
virtual void calcSize();
|
||||||
|
};
|
||||||
|
|
||||||
|
class RSItemBaseWithType : public RSItemBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum ItemType {In, Out, FX, Patch, Link};
|
||||||
|
private:
|
||||||
|
ItemType iType;
|
||||||
|
public:
|
||||||
|
RSItemBaseWithType(ItemType type);
|
||||||
|
ItemType type();
|
||||||
|
virtual int getMaxIOIdx(bool out);
|
||||||
|
virtual RSItemIO *getIO(bool out, int idx);
|
||||||
|
virtual void getIOPoint(RSItemIO *item, int *xp, int *yp);
|
||||||
|
virtual ~RSItemBaseWithType();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRUCTURE_H
|
||||||
120
qlo10k1/src/structure_aa.cpp
Normal file
120
qlo10k1/src/structure_aa.cpp
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include "structure.h"
|
||||||
|
#include "strglobal.h"
|
||||||
|
|
||||||
|
// simple, but very far from perfect
|
||||||
|
|
||||||
|
void StrGlobal::AutoArange(QPtrList <RSItemBaseWithType> *items)
|
||||||
|
{
|
||||||
|
int maxx = 0;
|
||||||
|
int maxy = 0;
|
||||||
|
int inc = 0;
|
||||||
|
int pc = 0;
|
||||||
|
int outc = 0;
|
||||||
|
|
||||||
|
// iterate through all
|
||||||
|
RSItemBaseWithType *item;
|
||||||
|
|
||||||
|
for(item = items->first(); item; item = items->next() )
|
||||||
|
{
|
||||||
|
if (item->flagNew())
|
||||||
|
{
|
||||||
|
switch (item->type())
|
||||||
|
{
|
||||||
|
case RSItemBaseWithType::In:
|
||||||
|
case RSItemBaseWithType::FX:
|
||||||
|
inc++;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Out:
|
||||||
|
outc++;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Patch:
|
||||||
|
pc++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int tmpx = item->x() + item->width();
|
||||||
|
int tmpy = item->y() + item->height();
|
||||||
|
|
||||||
|
if (tmpx > maxx)
|
||||||
|
maxx = tmpx;
|
||||||
|
if (tmpy > maxy)
|
||||||
|
maxy = tmpy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int ini = 0;
|
||||||
|
int pi = 0;
|
||||||
|
int outi = 0;
|
||||||
|
|
||||||
|
int sizex = (int)(sqrt(pc) + 1);
|
||||||
|
//int sizey = (int)((float)pc / sizex + 1);
|
||||||
|
|
||||||
|
int offiny = maxy + 20;
|
||||||
|
int offinx = 0 + 20;
|
||||||
|
int offpy = maxy + 20;
|
||||||
|
int offpx = 0 + 20 + 90;
|
||||||
|
int offouty = maxy + 20;
|
||||||
|
int offoutx = sizex * 90 + 20 + 70 + 70;
|
||||||
|
int offheight = 0;
|
||||||
|
int maxoffheight = 0;
|
||||||
|
int heightaccum = 0;
|
||||||
|
|
||||||
|
for(item = items->first(); item; item = items->next() )
|
||||||
|
{
|
||||||
|
if (item->flagNew())
|
||||||
|
{
|
||||||
|
switch (item->type())
|
||||||
|
{
|
||||||
|
case RSItemBaseWithType::In:
|
||||||
|
case RSItemBaseWithType::FX:
|
||||||
|
item->setPosition(offinx, offiny + ini * 40);
|
||||||
|
ini++;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Out:
|
||||||
|
item->setPosition(offoutx, offouty + outi * 40);
|
||||||
|
outi++;
|
||||||
|
break;
|
||||||
|
case RSItemBaseWithType::Patch:
|
||||||
|
item->setPosition(offpx + (pi % sizex) * 90, offpy + (pi / sizex) * 90 + heightaccum);
|
||||||
|
item->calcSize();
|
||||||
|
offheight = item->height() - sizex * 10;
|
||||||
|
if ( offheight > maxoffheight )
|
||||||
|
maxoffheight = offheight;
|
||||||
|
pi++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(offpx + (pi % sizex) * 90 == offpx) {
|
||||||
|
heightaccum += maxoffheight;
|
||||||
|
maxoffheight = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
151
qlo10k1/src/structure_io.cpp
Normal file
151
qlo10k1/src/structure_io.cpp
Normal file
|
|
@ -0,0 +1,151 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qpainter.h>
|
||||||
|
|
||||||
|
#include "structure_io.h"
|
||||||
|
#include "structure_link.h"
|
||||||
|
|
||||||
|
#define IO_WIDTH 70
|
||||||
|
#define IO_HEIGHT 20
|
||||||
|
|
||||||
|
StrIOBase::StrIOBase(RSItemBaseWithType::ItemType it) : RSItemBaseWithType(it)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrIOBase::calcSize()
|
||||||
|
{
|
||||||
|
setSize(IO_WIDTH, IO_HEIGHT);
|
||||||
|
|
||||||
|
RSItemBase::calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
#define IO_SELECT_WH 7
|
||||||
|
#define IO_INNER_SPACE_X 7
|
||||||
|
#define IO_INNER_SPACE_Y 2
|
||||||
|
|
||||||
|
void StrIOBase::draw(DrawingParams *dp)
|
||||||
|
{
|
||||||
|
int xp, yp, wp, hp;
|
||||||
|
xp = (int)(x() * dp->zoomKoef);
|
||||||
|
yp = (int)(y() * dp->zoomKoef);
|
||||||
|
wp = (int)(width() * dp->zoomKoef);
|
||||||
|
hp = (int)(height() * dp->zoomKoef);
|
||||||
|
|
||||||
|
dp->painter->setPen(QPen(IO_BOX_COLOR, 1));
|
||||||
|
dp->painter->drawRoundRect(xp, yp, wp, hp, 20, 50);
|
||||||
|
|
||||||
|
if (flagSelected())
|
||||||
|
{
|
||||||
|
// top left
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp,
|
||||||
|
yp,
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
// top right
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)(xp + wp - IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
yp,
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
// bottom left
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp,
|
||||||
|
(int)(yp + hp - IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
|
||||||
|
// bottom right
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)(xp + wp - IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(yp + hp - IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(IO_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
dp->painter->setPen(IO_TEXT_PEN);
|
||||||
|
dp->painter->drawText(
|
||||||
|
(int)((x() + 2 * IO_INNER_SPACE_X + (width() / 100) * 10) * dp->zoomKoef),
|
||||||
|
(int)((y() + IO_INNER_SPACE_Y + (height() / 100) * 10) * dp->zoomKoef),
|
||||||
|
(int)((width() - 4 * IO_INNER_SPACE_X) * dp->zoomKoef),
|
||||||
|
(int)((height() - 2 * IO_INNER_SPACE_Y) * dp->zoomKoef),
|
||||||
|
Qt::AlignLeft | Qt::WordBreak,
|
||||||
|
getIOName());
|
||||||
|
dp->painter->setPen(DEF_PAINTING_PEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrIOBase::containsPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
// FIXME - round shape
|
||||||
|
return QRect(x(), y(), width(), height()).contains(xp, yp);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrIOBase::containsHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return getHandlePoint(xp, yp) != RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBase::RSItemHandle StrIOBase::getHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
// top left
|
||||||
|
if (QRect(x(), y(), IO_SELECT_WH, IO_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::TopLeft;
|
||||||
|
// top right
|
||||||
|
if (QRect(x() + width() - IO_SELECT_WH, y(), IO_SELECT_WH, IO_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::TopRight;
|
||||||
|
// bottom left
|
||||||
|
if (QRect(x(), y() + height() - IO_SELECT_WH, IO_SELECT_WH, IO_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::BottomLeft;
|
||||||
|
// bottom right
|
||||||
|
if (QRect(x() + width() - IO_SELECT_WH, y() + height() - IO_SELECT_WH, IO_SELECT_WH, IO_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::BottomRight;
|
||||||
|
return RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrIOBase::getIOPoint(RSItemIO *item, int *xp, int *yp)
|
||||||
|
{
|
||||||
|
// for io it is in center
|
||||||
|
*xp = x() + width() / 2;
|
||||||
|
*yp = y() + height() / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrIOBase::updateContents(QScrollView *sv, float zoom)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
RSItemIO *io = getIO(i, 0);
|
||||||
|
if (io)
|
||||||
|
{
|
||||||
|
StrLink *l = io->getConnectedTo();
|
||||||
|
if (l)
|
||||||
|
l->updateOneSegment(sv, l->findRoute(io), zoom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBaseWithType::updateContents(sv, zoom);
|
||||||
|
}
|
||||||
245
qlo10k1/src/structure_io.h
Normal file
245
qlo10k1/src/structure_io.h
Normal file
|
|
@ -0,0 +1,245 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRUCTURE_IO_H
|
||||||
|
#define STRUCTURE_IO_H
|
||||||
|
|
||||||
|
#include "structure.h"
|
||||||
|
#include "custom_colors.h"
|
||||||
|
|
||||||
|
class StrIOBase : public RSItemBaseWithType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StrIOBase(RSItemBaseWithType::ItemType it);
|
||||||
|
|
||||||
|
virtual void calcSize();
|
||||||
|
virtual void draw(DrawingParams *dp);
|
||||||
|
virtual bool containsPoint(int xp, int yp);
|
||||||
|
virtual bool containsHandlePoint(int xp, int yp);
|
||||||
|
virtual RSItemHandle getHandlePoint(int xp, int yp);
|
||||||
|
|
||||||
|
virtual QString getIOName()
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void getIOPoint(RSItemIO *item, int *xp, int *yp);
|
||||||
|
virtual void updateContents(QScrollView *sv, float zoom);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class StrInput : public StrIOBase
|
||||||
|
{
|
||||||
|
QString inputName;
|
||||||
|
int inputNum;
|
||||||
|
|
||||||
|
RSItemIO *io;
|
||||||
|
public:
|
||||||
|
QString name(void)
|
||||||
|
{
|
||||||
|
return inputName;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual QString getIOName()
|
||||||
|
{
|
||||||
|
return "I " + QString().setNum(inputNum) + "\n" + inputName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setName(QString nn)
|
||||||
|
{
|
||||||
|
inputName = nn;
|
||||||
|
io->setDesc(nn);
|
||||||
|
}
|
||||||
|
|
||||||
|
StrInput(int in, QString name) :
|
||||||
|
StrIOBase(RSItemBaseWithType::In)
|
||||||
|
{
|
||||||
|
inputName = name;
|
||||||
|
inputNum = in;
|
||||||
|
|
||||||
|
io = new RSItemIO(this, true, 0, name);
|
||||||
|
calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
int num(void)
|
||||||
|
{
|
||||||
|
return inputNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual int getMaxIOIdx(bool out)
|
||||||
|
{
|
||||||
|
if (out)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual RSItemIO *getIO(bool out, int idx)
|
||||||
|
{
|
||||||
|
if (!out)
|
||||||
|
return NULL;
|
||||||
|
else if (idx == 0)
|
||||||
|
return io;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~StrInput()
|
||||||
|
{
|
||||||
|
RSItemIO *tmp = io;
|
||||||
|
delete io;
|
||||||
|
io = NULL;
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class StrOutput : public StrIOBase
|
||||||
|
{
|
||||||
|
QString outputName;
|
||||||
|
int outputNum;
|
||||||
|
|
||||||
|
RSItemIO *io;
|
||||||
|
public:
|
||||||
|
QString name(void)
|
||||||
|
{
|
||||||
|
return outputName;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual QString getIOName()
|
||||||
|
{
|
||||||
|
return "O " + QString().setNum(outputNum) + "\n" + outputName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setName(QString nn)
|
||||||
|
{
|
||||||
|
outputName = nn;
|
||||||
|
io->setDesc(nn);
|
||||||
|
}
|
||||||
|
|
||||||
|
StrOutput(int on, QString name) :
|
||||||
|
StrIOBase(RSItemBaseWithType::Out)
|
||||||
|
{
|
||||||
|
outputName = name;
|
||||||
|
outputNum = on;
|
||||||
|
|
||||||
|
io = new RSItemIO(this, false, 0, name);
|
||||||
|
calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
int num(void)
|
||||||
|
{
|
||||||
|
return outputNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual int getMaxIOIdx(bool out)
|
||||||
|
{
|
||||||
|
if (out)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual RSItemIO *getIO(bool out, int idx)
|
||||||
|
{
|
||||||
|
if (out)
|
||||||
|
return NULL;
|
||||||
|
else if (idx == 0)
|
||||||
|
return io;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~StrOutput()
|
||||||
|
{
|
||||||
|
RSItemIO *tmp = io;
|
||||||
|
delete io;
|
||||||
|
io = NULL;
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class StrFX : public StrIOBase
|
||||||
|
{
|
||||||
|
QString fxName;
|
||||||
|
int fxNum;
|
||||||
|
|
||||||
|
RSItemIO *io;
|
||||||
|
public:
|
||||||
|
QString name(void)
|
||||||
|
{
|
||||||
|
return fxName;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual QString getIOName()
|
||||||
|
{
|
||||||
|
return "F " + QString().setNum(fxNum) + "\n" + fxName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setName(QString nn)
|
||||||
|
{
|
||||||
|
fxName = nn;
|
||||||
|
io->setDesc(nn);
|
||||||
|
}
|
||||||
|
|
||||||
|
StrFX(int fn, QString name) :
|
||||||
|
StrIOBase(RSItemBaseWithType::FX)
|
||||||
|
{
|
||||||
|
fxName = name;
|
||||||
|
fxNum = fn;
|
||||||
|
|
||||||
|
io = new RSItemIO(this, true, 0, name);
|
||||||
|
calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
int num(void)
|
||||||
|
{
|
||||||
|
return fxNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual int getMaxIOIdx(bool out)
|
||||||
|
{
|
||||||
|
if (out)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual RSItemIO *getIO(bool out, int idx)
|
||||||
|
{
|
||||||
|
if (!out)
|
||||||
|
return NULL;
|
||||||
|
else if (idx == 0)
|
||||||
|
return io;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~StrFX()
|
||||||
|
{
|
||||||
|
RSItemIO *tmp = io;
|
||||||
|
delete io;
|
||||||
|
io = NULL;
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRUCTURE_IO_H
|
||||||
640
qlo10k1/src/structure_link.cpp
Normal file
640
qlo10k1/src/structure_link.cpp
Normal file
|
|
@ -0,0 +1,640 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include <qpainter.h>
|
||||||
|
|
||||||
|
#include "structure_link.h"
|
||||||
|
#include "custom_colors.h"
|
||||||
|
|
||||||
|
StrLink::StrLink(int id, LinkType t)
|
||||||
|
: RSItemBaseWithType(RSItemBaseWithType::Link)
|
||||||
|
{
|
||||||
|
linkId = id;
|
||||||
|
type = t;
|
||||||
|
|
||||||
|
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
routes[i] = NULL;
|
||||||
|
|
||||||
|
useMixPoint = false;
|
||||||
|
|
||||||
|
setSize(0, 0);
|
||||||
|
RSItemBaseWithType::calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
StrLink::~StrLink()
|
||||||
|
{
|
||||||
|
disconnectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setId(int id)
|
||||||
|
{
|
||||||
|
linkId = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrLink::id()
|
||||||
|
{
|
||||||
|
return linkId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setType(LinkType t)
|
||||||
|
{
|
||||||
|
type = t;
|
||||||
|
}
|
||||||
|
|
||||||
|
StrLink::LinkType StrLink::getType()
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::isSimple()
|
||||||
|
{
|
||||||
|
return simple;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setSimple(bool s)
|
||||||
|
{
|
||||||
|
simple = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::isMulti()
|
||||||
|
{
|
||||||
|
return multi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setMulti(bool m)
|
||||||
|
{
|
||||||
|
multi = m;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrLink::findRoute(RSItemIO *r)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i] == r)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *StrLink::getRoutePoint(int r)
|
||||||
|
{
|
||||||
|
if (r >= POINTINFO_MAX_CONN_PER_POINT)
|
||||||
|
return NULL;
|
||||||
|
return routes[r];
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setRoutePoint(int r, RSItemIO *ri)
|
||||||
|
{
|
||||||
|
if (r >= POINTINFO_MAX_CONN_PER_POINT + 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
RSItemIO *tmp = routes[r];
|
||||||
|
routes[r] = NULL;
|
||||||
|
if (tmp)
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
|
||||||
|
routes[r] = ri;
|
||||||
|
if (!ri)
|
||||||
|
routesPoints[r].clear();
|
||||||
|
if (ri)
|
||||||
|
ri->connectTo(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::clearRoutesPoints(int r)
|
||||||
|
{
|
||||||
|
if (r >= POINTINFO_MAX_CONN_PER_POINT + 1)
|
||||||
|
return;
|
||||||
|
routesPoints[r].clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LINK_SELECT_WH 7
|
||||||
|
|
||||||
|
void StrLink::setMinMaxPoint(QPoint p, int *minx, int *maxx, int *miny, int *maxy)
|
||||||
|
{
|
||||||
|
if (p.x() - LINK_SELECT_WH / 2 < *minx)
|
||||||
|
*minx = p.x() - LINK_SELECT_WH / 2;
|
||||||
|
if (p.x() + LINK_SELECT_WH > *maxx)
|
||||||
|
*maxx = p.x() + LINK_SELECT_WH;
|
||||||
|
|
||||||
|
if (p.y() - LINK_SELECT_WH / 2 < *miny)
|
||||||
|
*miny = p.y() - LINK_SELECT_WH / 2;
|
||||||
|
if (p.y() + LINK_SELECT_WH > *maxy)
|
||||||
|
*maxy = p.y() + LINK_SELECT_WH;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::setMinMax()
|
||||||
|
{
|
||||||
|
int minx = 1000000;
|
||||||
|
int maxx = -1;
|
||||||
|
int miny = 1000000;
|
||||||
|
int maxy = -1;
|
||||||
|
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
setMinMaxPoint(mixPoint, &minx, &maxx, &miny, &maxy);
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
setMinMaxPoint(routesEndPoints[i], &minx, &maxx, &miny, &maxy);
|
||||||
|
|
||||||
|
for (j = 0; j < (int)routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
setMinMaxPoint(tmpp, &minx, &maxx, &miny, &maxy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setPosition(minx, miny);
|
||||||
|
setSize(maxx - minx, maxy - miny);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::calcSize()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int cnt = 0;
|
||||||
|
|
||||||
|
int ioxp, ioyp;
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
cnt++;
|
||||||
|
|
||||||
|
((RSItemBaseWithType *)routes[i]->getOwner())->getIOPoint(routes[i], &ioxp, &ioyp);
|
||||||
|
routesEndPoints[i].setX(ioxp);
|
||||||
|
routesEndPoints[i].setY(ioyp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setMinMax();
|
||||||
|
|
||||||
|
if (cnt <= 2)
|
||||||
|
{
|
||||||
|
// not use mixpoint
|
||||||
|
useMixPoint = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// use mixpoint
|
||||||
|
if (!useMixPoint)
|
||||||
|
{
|
||||||
|
mixPoint.setX(x() + width() / 2);
|
||||||
|
mixPoint.setY(y() + height() / 2);
|
||||||
|
|
||||||
|
useMixPoint = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::draw(DrawingParams *dp)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
for (i = useMixPoint ? 0 : 1; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
QPoint fp = routesEndPoints[i];
|
||||||
|
if (flagSelected())
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)((fp.x() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)((fp.y() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
|
||||||
|
for (j = 0; j < (int)routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
if (flagSelected())
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)((tmpp.x() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)((tmpp.y() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
|
||||||
|
dp->painter->setPen(LINE_PEN);
|
||||||
|
dp->painter->drawLine((int)(fp.x() * dp->zoomKoef),
|
||||||
|
(int)(fp.y() * dp->zoomKoef),
|
||||||
|
(int)(tmpp.x() * dp->zoomKoef),
|
||||||
|
(int)(tmpp.y() * dp->zoomKoef));
|
||||||
|
dp->painter->setPen(DEF_PAINTING_PEN);
|
||||||
|
fp = tmpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
dp->painter->setPen(LINE_PEN);
|
||||||
|
dp->painter->drawLine((int)(fp.x() * dp->zoomKoef),
|
||||||
|
(int)(fp.y() * dp->zoomKoef),
|
||||||
|
(int)(mixPoint.x() * dp->zoomKoef),
|
||||||
|
(int)(mixPoint.y() * dp->zoomKoef));
|
||||||
|
dp->painter->setPen(DEF_PAINTING_PEN);
|
||||||
|
|
||||||
|
if (flagSelected())
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)((mixPoint.x() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)((mixPoint.y() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dp->painter->setPen(LINE_PEN);
|
||||||
|
dp->painter->drawLine((int)(fp.x() * dp->zoomKoef),
|
||||||
|
(int)(fp.y() * dp->zoomKoef),
|
||||||
|
(int)(routesEndPoints[0].x() * dp->zoomKoef),
|
||||||
|
(int)(routesEndPoints[0].y() * dp->zoomKoef));
|
||||||
|
dp->painter->setPen(DEF_PAINTING_PEN);
|
||||||
|
|
||||||
|
if (flagSelected())
|
||||||
|
dp->painter->fillRect(
|
||||||
|
(int)((routesEndPoints[0].x() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)((routesEndPoints[0].y() - LINK_SELECT_WH / 2) * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(LINK_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
dp->painter->drawEllipse((int)((mixPoint.x() - 1) * dp->zoomKoef),
|
||||||
|
(int)((mixPoint.y() - 1) * dp->zoomKoef),
|
||||||
|
(int)(3 * dp->zoomKoef),
|
||||||
|
(int)(3 * dp->zoomKoef));
|
||||||
|
dp->painter->drawEllipse((int)((mixPoint.x() - 2) * dp->zoomKoef),
|
||||||
|
(int)((mixPoint.y() - 2) * dp->zoomKoef),
|
||||||
|
(int)(5 * dp->zoomKoef),
|
||||||
|
(int)(5 * dp->zoomKoef));
|
||||||
|
dp->painter->drawEllipse((int)((mixPoint.x() - 3) * dp->zoomKoef),
|
||||||
|
(int)((mixPoint.y() - 3) * dp->zoomKoef),
|
||||||
|
(int)(7 * dp->zoomKoef),
|
||||||
|
(int)(7 * dp->zoomKoef));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::moveRel(int dx, int dy)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned int j;
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
moveRelPoint(&mixPoint, dx, dy);
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
for (j = 0; j < routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
moveRelPoint(&tmpp, dx, dy);
|
||||||
|
routesPoints[i][j] = tmpp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::moveRelPoint(QPoint *p, int dx, int dy)
|
||||||
|
{
|
||||||
|
p->setX(p->x() + dx);
|
||||||
|
p->setY(p->y() + dy);
|
||||||
|
|
||||||
|
if (p->x() < 0)
|
||||||
|
p->setX(0);
|
||||||
|
if (p->y() < 0)
|
||||||
|
p->setY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::updateOneSegment(QScrollView *sv, int r, float zoom)
|
||||||
|
{
|
||||||
|
int ioxp;
|
||||||
|
int ioyp;
|
||||||
|
|
||||||
|
if (r < 0 || r >= POINTINFO_MAX_CONN_PER_POINT + 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (routes[r])
|
||||||
|
{
|
||||||
|
((RSItemBaseWithType *)routes[r]->getOwner())->getIOPoint(routes[r], &ioxp, &ioyp);
|
||||||
|
routesEndPoints[r].setX(ioxp);
|
||||||
|
routesEndPoints[r].setY(ioyp);
|
||||||
|
setMinMax();
|
||||||
|
|
||||||
|
if (routesPoints[r].count())
|
||||||
|
{
|
||||||
|
QPoint rep = routesEndPoints[r];
|
||||||
|
QPoint rp = routesPoints[r][0];
|
||||||
|
|
||||||
|
QRect rect(QPoint(rep.x(), rep.y()), QPoint(rp.x(), rp.y()));
|
||||||
|
rect = rect.normalize();
|
||||||
|
rect.setX(rect.x() - LINK_SELECT_WH);
|
||||||
|
rect.setY(rect.y() - LINK_SELECT_WH);
|
||||||
|
rect.setWidth(rect.width() + 2 * LINK_SELECT_WH);
|
||||||
|
rect.setHeight(rect.height() + 2 * LINK_SELECT_WH);
|
||||||
|
sv->updateContents((int)(rect.x() * zoom),
|
||||||
|
(int)(rect.y() * zoom),
|
||||||
|
(int)(rect.width() * zoom),
|
||||||
|
(int)(rect.height() * zoom));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
QPoint rep = routesEndPoints[r];
|
||||||
|
QRect rect(QPoint(rep.x(), rep.y()), QPoint(mixPoint.x(), mixPoint.y()));
|
||||||
|
rect = rect.normalize();
|
||||||
|
rect.setX(rect.x() - LINK_SELECT_WH);
|
||||||
|
rect.setY(rect.y() - LINK_SELECT_WH);
|
||||||
|
rect.setWidth(rect.width() + 2 * LINK_SELECT_WH);
|
||||||
|
rect.setHeight(rect.height() + 2 * LINK_SELECT_WH);
|
||||||
|
sv->updateContents((int)(rect.x() * zoom),
|
||||||
|
(int)(rect.y() * zoom),
|
||||||
|
(int)(rect.width() * zoom),
|
||||||
|
(int)(rect.height() * zoom));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sv->updateContents((int)((x() - LINK_SELECT_WH) * zoom),
|
||||||
|
(int)((y() - LINK_SELECT_WH) * zoom),
|
||||||
|
(int)((width() + 2 * LINK_SELECT_WH) * zoom),
|
||||||
|
(int)((height() + 2 * LINK_SELECT_WH) * zoom));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::containsPointPoint(QPoint &p, int xp, int yp)
|
||||||
|
{
|
||||||
|
QRect r(p.x() - LINK_SELECT_WH / 2, p.y() - LINK_SELECT_WH / 2,
|
||||||
|
LINK_SELECT_WH + 1, LINK_SELECT_WH + 1);
|
||||||
|
|
||||||
|
return r.contains(xp, yp);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::containsPointSegment(QPoint &p1, QPoint &p2, int xp, int yp)
|
||||||
|
{
|
||||||
|
QRect r(p1, p2);
|
||||||
|
if (!r.normalize().contains(xp, yp))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
float v1 = p2.x() - p1.x();
|
||||||
|
float v2 = p2.y() - p1.y();
|
||||||
|
float a = v2;
|
||||||
|
float b = -v1;
|
||||||
|
|
||||||
|
float c = v1 * p1.y() - v2 * p1.x();
|
||||||
|
|
||||||
|
if (fabs(a * xp + b * yp + c) / sqrt(a * a + b * b) < 4.0)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::containsPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
|
if (xp < x() || xp > x() + width() ||
|
||||||
|
yp < y() || yp > y() + height())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
if (containsPointPoint(mixPoint, xp, yp))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
QPoint fp = routesEndPoints[i];
|
||||||
|
if (containsPointPoint(fp, xp, yp))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
for (j = 0; j < routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
|
||||||
|
if (containsPointPoint(tmpp, xp, yp))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (containsPointSegment(fp, tmpp, xp, yp))
|
||||||
|
return true;
|
||||||
|
fp = tmpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
if (containsPointSegment(fp, mixPoint, xp, yp))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (containsPointSegment(fp, routesEndPoints[0], xp, yp))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::containsHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return getHandlePointNum(xp, yp) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrLink::getHandlePointNum(int xp, int yp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
|
if (xp < x() || xp > x() + width() ||
|
||||||
|
yp < y() || yp > y() + height())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
if (containsPointPoint(mixPoint, xp, yp))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
for (j = 0; j < routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
|
||||||
|
if (containsPointPoint(tmpp, xp, yp))
|
||||||
|
return (i + 1) * 256 + j + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::moveHandleRel(int num, int dx, int dy)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
if (useMixPoint && num == 0)
|
||||||
|
{
|
||||||
|
moveRelPoint(&mixPoint, dx, dy);
|
||||||
|
setMinMax();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
for (j = 0; j < (int)routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
if (num == (i + 1) * 256 + j + 1)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
moveRelPoint(&tmpp, dx, dy);
|
||||||
|
routesPoints[i][j] = tmpp;
|
||||||
|
setMinMax();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrLink::disconnectAll()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
RSItemIO *tmp = routes[i];
|
||||||
|
routes[i] = NULL;
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::isValid()
|
||||||
|
{
|
||||||
|
int cnti = 0;
|
||||||
|
int cnto = 0;
|
||||||
|
for (int i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
if (routes[i]->isOutput())
|
||||||
|
cnto++;
|
||||||
|
else
|
||||||
|
cnti++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getType() == LinkNormal)
|
||||||
|
return cnti + cnto > 1 && (cnti > 0 && cnto > 0);
|
||||||
|
else
|
||||||
|
return cnti + cnto > 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::addSegmentPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
|
if (xp < x() || xp > x() + width() ||
|
||||||
|
yp < y() || yp > y() + height())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (i = 0; i < POINTINFO_MAX_CONN_PER_POINT + 1; i++)
|
||||||
|
{
|
||||||
|
if (routes[i])
|
||||||
|
{
|
||||||
|
QPoint fp = routesEndPoints[i];
|
||||||
|
for (j = 0; j < routesPoints[i].count(); j++)
|
||||||
|
{
|
||||||
|
QPoint tmpp = routesPoints[i][j];
|
||||||
|
|
||||||
|
if (containsPointSegment(fp, tmpp, xp, yp))
|
||||||
|
{
|
||||||
|
// add new point
|
||||||
|
routesPoints[i].insert(routesPoints[i].at(j), QPoint(xp,yp));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
fp = tmpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useMixPoint)
|
||||||
|
{
|
||||||
|
if (containsPointSegment(fp, mixPoint, xp, yp))
|
||||||
|
{
|
||||||
|
routesPoints[i].append(QPoint(xp,yp));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (containsPointSegment(fp, routesEndPoints[0], xp, yp))
|
||||||
|
{
|
||||||
|
routesPoints[i].append(QPoint(xp,yp));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrLink::delSegmentPoint(int num)
|
||||||
|
{
|
||||||
|
if (num <= 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int r = ((num - 1) / 256) - 1;
|
||||||
|
int i = ((num - 1) % 256);
|
||||||
|
|
||||||
|
if (routes[r])
|
||||||
|
{
|
||||||
|
if (i < (int)routesPoints[r].count())
|
||||||
|
{
|
||||||
|
routesPoints[r].remove(routesPoints[r].at(i));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
106
qlo10k1/src/structure_link.h
Normal file
106
qlo10k1/src/structure_link.h
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRUCTURE_LINK_H
|
||||||
|
#define STRUCTURE_LINK_H
|
||||||
|
|
||||||
|
#include "structure.h"
|
||||||
|
#include "strparam.h"
|
||||||
|
|
||||||
|
class StrLink : public RSItemBaseWithType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum LinkType {LinkFX, LinkIn, LinkOut, LinkNormal};
|
||||||
|
enum IOType {IOIn, IOOut};
|
||||||
|
private:
|
||||||
|
int linkId;
|
||||||
|
LinkType type;
|
||||||
|
bool simple;
|
||||||
|
bool multi;
|
||||||
|
|
||||||
|
RSItemIO *routes[POINTINFO_MAX_CONN_PER_POINT + 1];
|
||||||
|
|
||||||
|
QValueList <QPoint> routesPoints[POINTINFO_MAX_CONN_PER_POINT + 1];
|
||||||
|
QPoint routesEndPoints[POINTINFO_MAX_CONN_PER_POINT + 1];
|
||||||
|
|
||||||
|
bool useMixPoint;
|
||||||
|
QPoint mixPoint;
|
||||||
|
bool containsPointPoint(QPoint &p, int xp, int yp);
|
||||||
|
bool containsPointSegment(QPoint &p1, QPoint &p2, int xp, int yp);
|
||||||
|
public:
|
||||||
|
StrLink(int id, LinkType t);
|
||||||
|
virtual ~StrLink();
|
||||||
|
|
||||||
|
void setId(int id);
|
||||||
|
int id();
|
||||||
|
|
||||||
|
void setType(LinkType t);
|
||||||
|
LinkType getType();
|
||||||
|
|
||||||
|
bool isSimple();
|
||||||
|
void setSimple(bool s);
|
||||||
|
|
||||||
|
bool isMulti();
|
||||||
|
void setMulti(bool m);
|
||||||
|
|
||||||
|
int getMaxRoute()
|
||||||
|
{
|
||||||
|
return POINTINFO_MAX_CONN_PER_POINT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void disconnectAll();
|
||||||
|
|
||||||
|
int findRoute(RSItemIO *r);
|
||||||
|
RSItemIO *getRoutePoint(int r);
|
||||||
|
void setRoutePoint(int r, RSItemIO *ri);
|
||||||
|
void clearRoutesPoints(int r);
|
||||||
|
|
||||||
|
virtual void calcSize();
|
||||||
|
virtual void draw(DrawingParams *dp);
|
||||||
|
|
||||||
|
virtual void moveRel(int dx, int dy);
|
||||||
|
|
||||||
|
void setMinMaxPoint(QPoint p, int *minx, int *maxx, int *miny, int *maxy);
|
||||||
|
void setMinMax();
|
||||||
|
void moveRelPoint(QPoint *p, int dx, int dy);
|
||||||
|
void updateOneSegment(QScrollView *sv, int r, float zoom);
|
||||||
|
|
||||||
|
virtual bool containsPoint(int xp, int yp);
|
||||||
|
|
||||||
|
virtual bool containsHandlePoint(int xp, int yp);
|
||||||
|
virtual int getHandlePointNum(int xp, int yp);
|
||||||
|
|
||||||
|
virtual RSItemHandle getHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
if (getHandlePointNum(xp, yp) >= 0)
|
||||||
|
return RSItemBase::Other;
|
||||||
|
else
|
||||||
|
return RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void moveHandleRel(int num, int dx, int dy);
|
||||||
|
|
||||||
|
bool isValid();
|
||||||
|
bool addSegmentPoint(int xp, int yp);
|
||||||
|
bool delSegmentPoint(int num);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRUCTURE_LINK_H
|
||||||
365
qlo10k1/src/structure_patch.cpp
Normal file
365
qlo10k1/src/structure_patch.cpp
Normal file
|
|
@ -0,0 +1,365 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qpainter.h>
|
||||||
|
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "structure_link.h"
|
||||||
|
|
||||||
|
QString StrPatch::name(void)
|
||||||
|
{
|
||||||
|
return patchName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::setName(QString pn)
|
||||||
|
{
|
||||||
|
patchName = pn;
|
||||||
|
}
|
||||||
|
|
||||||
|
StrPatch::StrPatch(int pn, int id, QString name) :
|
||||||
|
RSItemBaseWithType(RSItemBaseWithType::Patch)
|
||||||
|
{
|
||||||
|
patchName = name;
|
||||||
|
patchNum = pn;
|
||||||
|
patchId = id;
|
||||||
|
patchOrder = 0;
|
||||||
|
|
||||||
|
count[0] = 0;
|
||||||
|
count[1] = 0;
|
||||||
|
|
||||||
|
int i, j;
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
for (j = 0; j < 32; j++)
|
||||||
|
ios[i][j] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrPatch::num(void)
|
||||||
|
{
|
||||||
|
return patchNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrPatch::id(void)
|
||||||
|
{
|
||||||
|
return patchId;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrPatch::order(void)
|
||||||
|
{
|
||||||
|
return patchOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::setOrder(int o)
|
||||||
|
{
|
||||||
|
patchOrder = o;
|
||||||
|
}
|
||||||
|
|
||||||
|
int StrPatch::getMaxIOIdx(bool out)
|
||||||
|
{
|
||||||
|
return 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *StrPatch::getIO(bool out, int idx)
|
||||||
|
{
|
||||||
|
if (idx >= 32)
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return ios[out][idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::setIO(bool out, int idx, RSItemIO *io)
|
||||||
|
{
|
||||||
|
if (idx >= 32)
|
||||||
|
return;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ios[out][idx])
|
||||||
|
delete ios[out][idx];
|
||||||
|
ios[out][idx] = io;
|
||||||
|
}
|
||||||
|
getIOCount(&(count[0]), &(count[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
StrPatch::~StrPatch()
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
for (j = 0; j < 32; j++)
|
||||||
|
if (ios[i][j])
|
||||||
|
{
|
||||||
|
RSItemIO *tmp = ios[i][j];
|
||||||
|
delete ios[i][j];
|
||||||
|
ios[i][j] = NULL;
|
||||||
|
tmp->connectTo(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::getIOCount(int *in, int *out)
|
||||||
|
{
|
||||||
|
// get count of inputs and outputs
|
||||||
|
int i, j;
|
||||||
|
int count[2];
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
count[i] = 0;
|
||||||
|
for (j = 0; j < 32; j++)
|
||||||
|
if (ios[i][j])
|
||||||
|
count[i]++;
|
||||||
|
}
|
||||||
|
*in = count[0];
|
||||||
|
*out = count[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PATCH_IO_WIDTH 8
|
||||||
|
#define PATCH_IO_HEIGHT 8
|
||||||
|
|
||||||
|
#define PATCH_WIDTH 70
|
||||||
|
|
||||||
|
#define PATCH_SELECT_WH 7
|
||||||
|
|
||||||
|
void StrPatch::calcSize()
|
||||||
|
{
|
||||||
|
// get count of inputs and outputs
|
||||||
|
int max_count;
|
||||||
|
if (count[0] > count[1])
|
||||||
|
max_count = count[0];
|
||||||
|
else
|
||||||
|
max_count = count[1];
|
||||||
|
|
||||||
|
setSize(PATCH_WIDTH, (max_count * 2 + 2) * PATCH_IO_HEIGHT + PATCH_SELECT_WH * 2);
|
||||||
|
|
||||||
|
RSItemBase::calcSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::draw(DrawingParams *dp)
|
||||||
|
{
|
||||||
|
int xp, yp, wp, hp;
|
||||||
|
xp = (int)(x() * dp->zoomKoef);
|
||||||
|
yp = (int)(y() * dp->zoomKoef);
|
||||||
|
wp = (int)(width() * dp->zoomKoef);
|
||||||
|
hp = (int)(height() * dp->zoomKoef);
|
||||||
|
|
||||||
|
dp->painter->setPen(QPen(BOX_COLOR, 1));
|
||||||
|
dp->painter->drawRect(xp, yp, wp, hp);
|
||||||
|
|
||||||
|
if (flagSelected())
|
||||||
|
{
|
||||||
|
// top left
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp,
|
||||||
|
yp,
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
// top right
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp + wp - (int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
yp,
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
// bottom left
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp,
|
||||||
|
yp + hp - (int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
|
||||||
|
// bottom right
|
||||||
|
dp->painter->fillRect(
|
||||||
|
xp + wp - (int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
yp + hp - (int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_SELECT_WH * dp->zoomKoef),
|
||||||
|
QBrush(BOX_SELECTED_COLOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
float tmpy = PATCH_IO_HEIGHT + PATCH_SELECT_WH;
|
||||||
|
|
||||||
|
float stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[0];
|
||||||
|
|
||||||
|
if (count[0] > 1)
|
||||||
|
stepy = stepy / (count[0] - 1);
|
||||||
|
|
||||||
|
for (i = 0; i < count[0]; i++)
|
||||||
|
{
|
||||||
|
dp->painter->setPen(QPen(BOX_COLOR, 1));
|
||||||
|
dp->painter->drawRect(
|
||||||
|
(int)(x() * dp->zoomKoef),
|
||||||
|
(int)((y() + tmpy ) * dp->zoomKoef),
|
||||||
|
(int)(PATCH_IO_WIDTH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_IO_HEIGHT * dp->zoomKoef)
|
||||||
|
);
|
||||||
|
tmpy += stepy + PATCH_IO_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpy = PATCH_IO_HEIGHT + PATCH_SELECT_WH;
|
||||||
|
|
||||||
|
stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[1];
|
||||||
|
|
||||||
|
if (count[1] > 1)
|
||||||
|
stepy = stepy / (count[1] - 1);
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < count[1]; i++)
|
||||||
|
{
|
||||||
|
dp->painter->setPen(QPen(BOX_COLOR, 1));
|
||||||
|
dp->painter->drawRect(
|
||||||
|
(int)((x() + width() - PATCH_IO_WIDTH) * dp->zoomKoef),
|
||||||
|
(int)((y() + tmpy) * dp->zoomKoef),
|
||||||
|
(int)(PATCH_IO_WIDTH * dp->zoomKoef),
|
||||||
|
(int)(PATCH_IO_HEIGHT * dp->zoomKoef));
|
||||||
|
tmpy += stepy + PATCH_IO_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString pname = QString("%1\n%2").arg(num()).arg(name());
|
||||||
|
|
||||||
|
dp->painter->setPen(QPen(TEXT_COLOR, 1));
|
||||||
|
dp->painter->drawText(
|
||||||
|
(int)((x() + 2 * PATCH_IO_WIDTH) * dp->zoomKoef),
|
||||||
|
(int)((y() + PATCH_IO_HEIGHT) * dp->zoomKoef),
|
||||||
|
(int)((width() - 4 * PATCH_IO_WIDTH) * dp->zoomKoef),
|
||||||
|
(int)((height() - 2 * PATCH_IO_HEIGHT) * dp->zoomKoef),
|
||||||
|
Qt::AlignLeft | Qt::WordBreak,
|
||||||
|
pname);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrPatch::containsPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return QRect(x(), y(), width(), height()).contains(xp, yp);
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemIO *StrPatch::getIOAtPoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
QRect r;
|
||||||
|
|
||||||
|
for (int j = 0; j < 2; j++)
|
||||||
|
for (int i = 0; i < count[j]; i++)
|
||||||
|
{
|
||||||
|
if (ios[j][i])
|
||||||
|
{
|
||||||
|
getIORect(j, i, r);
|
||||||
|
if (r.contains(xp, yp))
|
||||||
|
return ios[j][i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::getIORect(bool out, int idx, QRect &r)
|
||||||
|
{
|
||||||
|
float tmpy = PATCH_IO_HEIGHT + PATCH_SELECT_WH;
|
||||||
|
|
||||||
|
if (!out)
|
||||||
|
{
|
||||||
|
float stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[0];
|
||||||
|
|
||||||
|
if (count[0] > 1)
|
||||||
|
stepy = stepy / (count[0] - 1);
|
||||||
|
|
||||||
|
r.setRect(x(), (int)(y() + tmpy + idx * (stepy + PATCH_IO_HEIGHT)),
|
||||||
|
PATCH_IO_WIDTH, PATCH_IO_HEIGHT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[1];
|
||||||
|
|
||||||
|
if (count[1] > 1)
|
||||||
|
stepy = stepy / (count[1] - 1);
|
||||||
|
|
||||||
|
r.setRect(x() + width() - PATCH_IO_WIDTH, (int)(y() + tmpy + idx * (stepy + PATCH_IO_HEIGHT)),
|
||||||
|
PATCH_IO_WIDTH, PATCH_IO_HEIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StrPatch::containsHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
return getHandlePoint(xp, yp) != RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBase::RSItemHandle StrPatch::getHandlePoint(int xp, int yp)
|
||||||
|
{
|
||||||
|
// top left
|
||||||
|
if (QRect(x(), y(), PATCH_SELECT_WH, PATCH_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::TopLeft;
|
||||||
|
// top right
|
||||||
|
if (QRect(x() + width() - PATCH_SELECT_WH, y(), PATCH_SELECT_WH, PATCH_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::TopRight;
|
||||||
|
// bottom left
|
||||||
|
if (QRect(x(), y() + height() - PATCH_SELECT_WH, PATCH_SELECT_WH, PATCH_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::BottomLeft;
|
||||||
|
// bottom right
|
||||||
|
if (QRect(x() + width() - PATCH_SELECT_WH, y() + height() - PATCH_SELECT_WH, PATCH_SELECT_WH, PATCH_SELECT_WH).contains(xp, yp))
|
||||||
|
return RSItemBase::BottomRight;
|
||||||
|
return RSItemBase::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::getIOPoint(RSItemIO *item, int *xp, int *yp)
|
||||||
|
{
|
||||||
|
// for io it is in center
|
||||||
|
if (item->isOutput())
|
||||||
|
{
|
||||||
|
float tmpy = PATCH_IO_HEIGHT + PATCH_SELECT_WH;
|
||||||
|
|
||||||
|
float stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[1];
|
||||||
|
|
||||||
|
if (count[1] > 1)
|
||||||
|
stepy = stepy / (count[1] - 1);
|
||||||
|
|
||||||
|
*xp = x() + width() - PATCH_IO_WIDTH + PATCH_IO_WIDTH / 2;
|
||||||
|
*yp = (int)(y() + tmpy + (stepy + PATCH_IO_HEIGHT) * item->getIdx() + PATCH_IO_HEIGHT / 2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float tmpy = PATCH_IO_HEIGHT + PATCH_SELECT_WH;
|
||||||
|
|
||||||
|
float stepy = height() - 2 * (PATCH_IO_HEIGHT + PATCH_SELECT_WH) - PATCH_IO_HEIGHT * count[0];
|
||||||
|
|
||||||
|
if (count[0] > 1)
|
||||||
|
stepy = stepy / (count[0] - 1);
|
||||||
|
|
||||||
|
*xp = x() + PATCH_IO_WIDTH / 2;
|
||||||
|
*yp = (int)(y() + tmpy + (stepy + PATCH_IO_HEIGHT)* item->getIdx() + PATCH_IO_HEIGHT / 2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StrPatch::updateContents(QScrollView *sv, float zoom)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < 32; j++)
|
||||||
|
if (ios[i][j])
|
||||||
|
{
|
||||||
|
StrLink *l = ios[i][j]->getConnectedTo();
|
||||||
|
if (l)
|
||||||
|
l->updateOneSegment(sv, l->findRoute(ios[i][j]), zoom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RSItemBaseWithType::updateContents(sv, zoom);
|
||||||
|
}
|
||||||
69
qlo10k1/src/structure_patch.h
Normal file
69
qlo10k1/src/structure_patch.h
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef STRUCTURE_PATCH_H
|
||||||
|
#define STRUCTURE_PATCH_H
|
||||||
|
|
||||||
|
#include "structure.h"
|
||||||
|
#include "custom_colors.h"
|
||||||
|
|
||||||
|
class StrPatch : public RSItemBaseWithType
|
||||||
|
{
|
||||||
|
QString patchName;
|
||||||
|
int patchNum;
|
||||||
|
int patchId;
|
||||||
|
int patchOrder;
|
||||||
|
|
||||||
|
RSItemIO *ios[2][32];
|
||||||
|
int count[2];
|
||||||
|
|
||||||
|
void getIOCount(int *in, int *out);
|
||||||
|
public:
|
||||||
|
QString name(void);
|
||||||
|
void setName(QString pn);
|
||||||
|
StrPatch(int pn, int id, QString name);
|
||||||
|
int num(void);
|
||||||
|
int id(void);
|
||||||
|
|
||||||
|
int order(void);
|
||||||
|
void setOrder(int o);
|
||||||
|
|
||||||
|
void getIORect(bool out, int idx, QRect &r);
|
||||||
|
|
||||||
|
virtual int getMaxIOIdx(bool out);
|
||||||
|
virtual RSItemIO *getIO(bool out, int idx);
|
||||||
|
virtual void setIO(bool out, int idx, RSItemIO *io);
|
||||||
|
virtual ~StrPatch();
|
||||||
|
virtual void calcSize();
|
||||||
|
|
||||||
|
virtual void draw(DrawingParams *dp);
|
||||||
|
|
||||||
|
virtual bool containsPoint(int xp, int yp);
|
||||||
|
virtual RSItemIO *getIOAtPoint(int xp, int yp);
|
||||||
|
virtual bool containsHandlePoint(int xp, int yp);
|
||||||
|
virtual RSItemHandle getHandlePoint(int xp, int yp);
|
||||||
|
|
||||||
|
virtual void getIOPoint(RSItemIO *item, int *xp, int *yp);
|
||||||
|
|
||||||
|
virtual void updateContents(QScrollView *sv, float zoom);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STRUCTURE_PATCH_H
|
||||||
462
qlo10k1/src/transformpatchdialog.cpp
Normal file
462
qlo10k1/src/transformpatchdialog.cpp
Normal file
|
|
@ -0,0 +1,462 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qlistbox.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qinputdialog.h>
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include <qmessagebox.h>
|
||||||
|
#include <qlabel.h>
|
||||||
|
#include <qcheckbox.h>
|
||||||
|
#include <qbuttongroup.h>
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <qcombobox.h>
|
||||||
|
#include <qmap.h>
|
||||||
|
|
||||||
|
#include "app_global.h"
|
||||||
|
#include "transformpatchdialog.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "structure_io.h"
|
||||||
|
|
||||||
|
TransformPatchDlg::TransformPatchDlg(QString efileName, EMU10k1File *efile)
|
||||||
|
: TransformPatchBase()
|
||||||
|
{
|
||||||
|
fileName = efileName;
|
||||||
|
file = efile;
|
||||||
|
|
||||||
|
leFileName->setText(fileName);
|
||||||
|
lePatchName->setText(file->getPatchName());
|
||||||
|
|
||||||
|
// load controls list
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < file->getCtrlCount(); i++)
|
||||||
|
{
|
||||||
|
QString text = getName(i);
|
||||||
|
lbFileCtrl->insertItem(text);
|
||||||
|
ctrlFileList.append(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set default in names
|
||||||
|
switch (file->getInCount())
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
inputNames.append("I");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
inputNames.append("IRL");
|
||||||
|
inputNames.append("IRR");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
inputNames.append("IL");
|
||||||
|
inputNames.append("IR");
|
||||||
|
inputNames.append("IRL");
|
||||||
|
inputNames.append("IRR");
|
||||||
|
inputNames.append("IC");
|
||||||
|
inputNames.append("ILFE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for (i = 0; i < file->getInCount(); i++)
|
||||||
|
inputNames.append("");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set default out names
|
||||||
|
switch (file->getOutCount())
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
outputNames.append("O");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
outputNames.append("ORL");
|
||||||
|
outputNames.append("ORR");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
outputNames.append("OL");
|
||||||
|
outputNames.append("OR");
|
||||||
|
outputNames.append("ORL");
|
||||||
|
outputNames.append("ORR");
|
||||||
|
outputNames.append("OC");
|
||||||
|
outputNames.append("OLFE");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for (i = 0; i < file->getOutCount(); i++)
|
||||||
|
outputNames.append("");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < file->getInCount(); i++)
|
||||||
|
lbInputs->insertItem(inputNames[i]);
|
||||||
|
|
||||||
|
for (i = 0; i < file->getOutCount(); i++)
|
||||||
|
lbOutputs->insertItem(outputNames[i]);
|
||||||
|
|
||||||
|
connect(pbOK, SIGNAL(clicked()), this, SLOT(okClicked()));
|
||||||
|
connect(pbCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
|
||||||
|
|
||||||
|
connect(lbInputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(inputsDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbOutputs, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(outputsDoubleClicked(QListBoxItem *)));
|
||||||
|
|
||||||
|
connect(pbCtrlAdd, SIGNAL(clicked()), this, SLOT(ctrlAddClicked()));
|
||||||
|
connect(pbCtrlDel, SIGNAL(clicked()), this, SLOT(ctrlDelClicked()));
|
||||||
|
|
||||||
|
connect(lbLoadedCtrl, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(loadedDoubleClicked(QListBoxItem *)));
|
||||||
|
connect(lbFileCtrl, SIGNAL(doubleClicked(QListBoxItem *)), this, SLOT(fileDoubleClicked(QListBoxItem *)));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString TransformPatchDlg::getName(int i)
|
||||||
|
{
|
||||||
|
EMU10k1Ctrl ctrl;
|
||||||
|
|
||||||
|
file->getCtrl(i, &ctrl);
|
||||||
|
QString name = QString(ctrl.name) + " - " + QString().setNum(ctrl.value) +
|
||||||
|
" (" + QString().setNum(ctrl.min) + "," + + QString().setNum(ctrl.max) + ")";
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::okClicked()
|
||||||
|
{
|
||||||
|
// load patch
|
||||||
|
done(Accepted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::cancelClicked()
|
||||||
|
{
|
||||||
|
done(Rejected);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::inputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int idx = lbInputs->index(item);
|
||||||
|
QString text = inputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Input name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
inputNames[idx] = text;
|
||||||
|
lbInputs->changeItem(text, idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::outputsDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int idx = lbOutputs->index(item);
|
||||||
|
QString text = outputNames[idx];
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Output name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
outputNames[idx] = text;
|
||||||
|
lbOutputs->changeItem(text, idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::ctrlAddClicked()
|
||||||
|
{
|
||||||
|
QValueList <int> selectedCtrl, *tmpList;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
unsigned int min = 0;
|
||||||
|
unsigned int max = 0;
|
||||||
|
bool first = true;
|
||||||
|
for (i = 0; i < (int)lbFileCtrl->count(); i++)
|
||||||
|
{
|
||||||
|
if (lbFileCtrl->isSelected(i))
|
||||||
|
{
|
||||||
|
selectedCtrl.append(ctrlFileList[i]);
|
||||||
|
|
||||||
|
EMU10k1Ctrl ctrl;
|
||||||
|
file->getCtrl(ctrlFileList[i], &ctrl);
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
min = ctrl.min;
|
||||||
|
max = ctrl.max;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (min != ctrl.min ||
|
||||||
|
max != ctrl.max)
|
||||||
|
{
|
||||||
|
QMessageBox::critical(0, APP_NAME,
|
||||||
|
QString("Wrong range for control %1").arg(ctrl.name));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedCtrl.count() > 0)
|
||||||
|
{
|
||||||
|
TranslatedCtrl ctrl;
|
||||||
|
tmpList = &selectedCtrl;
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
FileControlDlg d(tmpList, file, &ctrl);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
// check name - in translated
|
||||||
|
for (i = 0; i < (int)translatedList.count(); i++)
|
||||||
|
{
|
||||||
|
if (translatedList[i].name == ctrl.name)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check in other
|
||||||
|
for (i = 0; i < (int)ctrlFileList.count(); i++)
|
||||||
|
{
|
||||||
|
EMU10k1Ctrl ctrl1;
|
||||||
|
file->getCtrl(ctrlFileList[i], &ctrl1);
|
||||||
|
if (selectedCtrl.findIndex(ctrlFileList[i]) < 0 && ctrl1.name == ctrl.name)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
QMessageBox::critical( 0, APP_NAME,
|
||||||
|
QString("There already is control with this name %1").arg(ctrl.name));
|
||||||
|
tmpList = NULL;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// add to translated
|
||||||
|
translatedList.append(ctrl);
|
||||||
|
// remove selected controls from ctrlList
|
||||||
|
for (i = 0; i < (int)selectedCtrl.count(); i++)
|
||||||
|
{
|
||||||
|
int fidx = ctrlFileList.findIndex(selectedCtrl[i]);
|
||||||
|
if (fidx >= 0)
|
||||||
|
{
|
||||||
|
ctrlFileList.remove(selectedCtrl[i]);
|
||||||
|
lbFileCtrl->removeItem(fidx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lbLoadedCtrl->insertItem(ctrl.name);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::ctrlDelClicked()
|
||||||
|
{
|
||||||
|
QValueList <int> selectedCtrl;
|
||||||
|
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < (int)lbLoadedCtrl->count(); i++)
|
||||||
|
{
|
||||||
|
if (lbLoadedCtrl->isSelected(i))
|
||||||
|
{
|
||||||
|
selectedCtrl.append(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedCtrl.count() > 0)
|
||||||
|
{
|
||||||
|
// add controls to FileList
|
||||||
|
for (i = 0; i < (int)selectedCtrl.count(); i++)
|
||||||
|
{
|
||||||
|
TranslatedCtrl ctrl = translatedList[selectedCtrl[i]];
|
||||||
|
|
||||||
|
for (j = 0; j < (int)ctrl.fileCtrlIdx.count(); j++)
|
||||||
|
{
|
||||||
|
lbFileCtrl->insertItem(getName(ctrl.fileCtrlIdx[j]));
|
||||||
|
ctrlFileList.append(ctrl.fileCtrlIdx[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete selected
|
||||||
|
for (i = 0; i < (int)selectedCtrl.count(); i++)
|
||||||
|
{
|
||||||
|
translatedList.remove(translatedList.at(selectedCtrl[i]));
|
||||||
|
lbLoadedCtrl->removeItem(selectedCtrl[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::loadedDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
int idx = lbLoadedCtrl->index(item);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
TranslatedCtrl ctrl = translatedList[idx];
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
FileControlDlg d(NULL, file, &ctrl);
|
||||||
|
|
||||||
|
if (d.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
// check name - in translated
|
||||||
|
for (i = 0; i < (int)translatedList.count(); i++)
|
||||||
|
{
|
||||||
|
if (i != idx && translatedList[i].name == ctrl.name)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check in other
|
||||||
|
for (i = 0; i < (int)ctrlFileList.count(); i++)
|
||||||
|
{
|
||||||
|
EMU10k1Ctrl ctrl1;
|
||||||
|
file->getCtrl(ctrlFileList[i], &ctrl1);
|
||||||
|
|
||||||
|
if (ctrl.name == ctrl.name)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
QMessageBox::critical( 0, APP_NAME,
|
||||||
|
QString("There already is control with this name %1").arg(ctrl.name));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// update name
|
||||||
|
lbLoadedCtrl->changeItem(ctrl.name, idx);
|
||||||
|
translatedList[idx] = ctrl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransformPatchDlg::fileDoubleClicked(QListBoxItem *item)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int idx = lbFileCtrl->index(item);
|
||||||
|
EMU10k1Ctrl ctrl;
|
||||||
|
file->getCtrl(ctrlFileList[idx], &ctrl);
|
||||||
|
QString text = ctrl.name;
|
||||||
|
text = QInputDialog::getText(
|
||||||
|
APP_NAME, "Control name:", QLineEdit::Normal,
|
||||||
|
text, &ok, this );
|
||||||
|
if (ok && !text.isEmpty())
|
||||||
|
{
|
||||||
|
ctrl.name= text;
|
||||||
|
file->setCtrl(ctrlFileList[idx], &ctrl);
|
||||||
|
lbFileCtrl->changeItem(getName(idx), idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int TransformPatchDlg::transformFile(LD10k1File **outFile)
|
||||||
|
{
|
||||||
|
// controls - translated
|
||||||
|
int i, j, err;
|
||||||
|
|
||||||
|
LD10k1File *of = NULL;
|
||||||
|
|
||||||
|
LD10k1FileTransfCtl translCtls[32];
|
||||||
|
for (i = 0; i < (int)translatedList.count(); i++)
|
||||||
|
{
|
||||||
|
TranslatedCtrl tctrl = translatedList[i];
|
||||||
|
|
||||||
|
translCtls[i].emu_ctl_count = (int)tctrl.fileCtrlIdx.count();
|
||||||
|
for (j = 0; j < translCtls[i].emu_ctl_count; j++)
|
||||||
|
translCtls[i].emu_ctls[j] = tctrl.fileCtrlIdx[j];
|
||||||
|
|
||||||
|
translCtls[i].ctl_name = tctrl.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((err = LD10k1File::transformFromEmuFile(file, translCtls, (int)translatedList.count(), outFile)) < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
of = *outFile;
|
||||||
|
|
||||||
|
// rename inputs
|
||||||
|
for (i = 0; i < of->getIOCount(false); i++)
|
||||||
|
of->setIOName(false, i, inputNames[i]);
|
||||||
|
|
||||||
|
// rename output
|
||||||
|
for (i = 0; i < of->getIOCount(true); i++)
|
||||||
|
of->setIOName(true, i, outputNames[i]);
|
||||||
|
|
||||||
|
// set others parameters for patch controls
|
||||||
|
for (i = 0; i < (int)translatedList.count(); i++)
|
||||||
|
{
|
||||||
|
TranslatedCtrl tctrl = translatedList[i];
|
||||||
|
|
||||||
|
switch (tctrl.translation)
|
||||||
|
{
|
||||||
|
case TranslatedCtrl::None:
|
||||||
|
of->setCtlTranslation(i, LD10k1File::None);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Table100:
|
||||||
|
of->setCtlTranslation(i, LD10k1File::Table100);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Bass:
|
||||||
|
of->setCtlTranslation(i, LD10k1File::Bass);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::Treble:
|
||||||
|
of->setCtlTranslation(i, LD10k1File::Treble);
|
||||||
|
break;
|
||||||
|
case TranslatedCtrl::OnOff:
|
||||||
|
of->setCtlTranslation(i, LD10k1File::OnOff);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
of->setCtlValVCount(i, tctrl.visible);
|
||||||
|
for (j = 0; j < (int)tctrl.values.count(); j++)
|
||||||
|
of->setCtlVal(i, j, tctrl.values[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
65
qlo10k1/src/transformpatchdialog.h
Normal file
65
qlo10k1/src/transformpatchdialog.h
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* qlo10k1 - GUI frontend for ld10k1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Peter Zubaj
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TRANSFORMPATCHDIALOG_H
|
||||||
|
#define TRANSFORMPATCHDIALOG_H
|
||||||
|
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qvaluelist.h>
|
||||||
|
#include <qptrlist.h>
|
||||||
|
#include "dlgs/transformpatchbase.h"
|
||||||
|
#include "filecontroldialog.h"
|
||||||
|
#include "connectionwizard.h"
|
||||||
|
#include "structure.h"
|
||||||
|
#include "structure_patch.h"
|
||||||
|
#include "ld10k1file.h"
|
||||||
|
|
||||||
|
class TransformPatchDlg : public TransformPatchBase
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
EMU10k1File *file;
|
||||||
|
QString fileName;
|
||||||
|
QStringList inputNames;
|
||||||
|
QStringList outputNames;
|
||||||
|
|
||||||
|
QValueList <int> ctrlFileList;
|
||||||
|
QValueList <TranslatedCtrl> translatedList;
|
||||||
|
public:
|
||||||
|
|
||||||
|
TransformPatchDlg(QString efileName, EMU10k1File *efile);
|
||||||
|
|
||||||
|
QString getName(int i);
|
||||||
|
int transformFile(LD10k1File **outFile);
|
||||||
|
public slots:
|
||||||
|
void okClicked();
|
||||||
|
void cancelClicked();
|
||||||
|
|
||||||
|
void inputsDoubleClicked(QListBoxItem *item);
|
||||||
|
void outputsDoubleClicked(QListBoxItem *item);
|
||||||
|
|
||||||
|
void ctrlAddClicked();
|
||||||
|
void ctrlDelClicked();
|
||||||
|
|
||||||
|
void loadedDoubleClicked(QListBoxItem *item);
|
||||||
|
void fileDoubleClicked(QListBoxItem *item);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TRANSFORMPATCHDIALOG_H
|
||||||
Loading…
Add table
Add a link
Reference in a new issue