From 3ef6336ba646d7a3beb2d34f2e2f405f3f3729d3 Mon Sep 17 00:00:00 2001 From: vsr Date: Tue, 28 Jun 2005 09:23:56 +0000 Subject: [PATCH] No-CORBA-engine example --- INSTALL | 4 + LICENCE | 504 +++++++++++++++++++++++ Makefile.in | 118 ++++++ README | 167 ++++++++ adm_local/unix/config_files/check_GUI.m4 | 65 +++ adm_local/unix/make_commence.in | 265 ++++++++++++ bin/VERSION | 1 + build_configure | 251 +++++++++++ configure.in.base | 438 ++++++++++++++++++++ resources/queen.txt | 39 ++ src/LIGHTGUI/LIGHTGUI.cxx | 432 +++++++++++++++++++ src/LIGHTGUI/LIGHTGUI.h | 62 +++ src/LIGHTGUI/LIGHTGUI_DataModel.cxx | 430 +++++++++++++++++++ src/LIGHTGUI/LIGHTGUI_DataModel.h | 78 ++++ src/LIGHTGUI/LIGHTGUI_DataObject.cxx | 177 ++++++++ src/LIGHTGUI/LIGHTGUI_DataObject.h | 71 ++++ src/LIGHTGUI/LIGHTGUI_DataOwner.cxx | 64 +++ src/LIGHTGUI/LIGHTGUI_DataOwner.h | 44 ++ src/LIGHTGUI/LIGHTGUI_OBSelector.cxx | 125 ++++++ src/LIGHTGUI/LIGHTGUI_OBSelector.h | 56 +++ src/LIGHTGUI/LIGHTGUI_Selection.cxx | 83 ++++ src/LIGHTGUI/LIGHTGUI_Selection.h | 47 +++ src/LIGHTGUI/LIGHT_images.po | 41 ++ src/LIGHTGUI/LIGHT_msg_en.po | 157 +++++++ src/LIGHTGUI/Makefile.in | 71 ++++ src/Makefile.in | 44 ++ 26 files changed, 3834 insertions(+) create mode 100644 INSTALL create mode 100644 LICENCE create mode 100644 Makefile.in create mode 100755 README create mode 100755 adm_local/unix/config_files/check_GUI.m4 create mode 100644 adm_local/unix/make_commence.in create mode 100755 bin/VERSION create mode 100755 build_configure create mode 100644 configure.in.base create mode 100644 resources/queen.txt create mode 100644 src/LIGHTGUI/LIGHTGUI.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI.h create mode 100644 src/LIGHTGUI/LIGHTGUI_DataModel.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI_DataModel.h create mode 100644 src/LIGHTGUI/LIGHTGUI_DataObject.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI_DataObject.h create mode 100644 src/LIGHTGUI/LIGHTGUI_DataOwner.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI_DataOwner.h create mode 100644 src/LIGHTGUI/LIGHTGUI_OBSelector.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI_OBSelector.h create mode 100644 src/LIGHTGUI/LIGHTGUI_Selection.cxx create mode 100644 src/LIGHTGUI/LIGHTGUI_Selection.h create mode 100644 src/LIGHTGUI/LIGHT_images.po create mode 100644 src/LIGHTGUI/LIGHT_msg_en.po create mode 100644 src/LIGHTGUI/Makefile.in create mode 100644 src/Makefile.in diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..be624a0 --- /dev/null +++ b/INSTALL @@ -0,0 +1,4 @@ +This is the version 0.1 of LIGHT (sample no-corba-engine) SALOME module +Compatible with : + - KERNEL 3.0 + - GUI 3.0 diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..b1e3f5a --- /dev/null +++ b/LICENCE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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 Library or any portion +of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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 with +this License. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. 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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; 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. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..e0aca87 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,118 @@ +######################################################################## +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Julia DOROVSKIKH +# Date : 01/06/2005 +# $Header$ +# +######################################################################## + +# source path +top_srcdir=@top_srcdir@ +top_builddir=. +srcdir=@srcdir@ +VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl:${KERNEL_ROOT_DIR}/idl/salome + + +@COMMENCE@ + +ifeq (@WITHIHM@,no) + SUBDIRS = src +endif +ifeq (@WITHIHM@,yes) + SUBDIRS = src +endif + +RESOURCES_FILES = \ + LIGHT.png \ + line_icon.png \ + paragraph_icon.png \ + queen.txt + +BIN_SCRIPT= \ + VERSION + +LDFLAGS= -L$(top_builddir)/lib/salome +LDFLAGSFORBIN= -L$(top_builddir)/lib/salome + +# copy header files in common directory +ifeq ($(HAVE_SSTREAM),yes) + include_list=include/salome/SALOMEconfig.h +else + include_list=include/salome/SALOMEconfig.h include/salome/sstream +endif + +inc: $(include_list) + +include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref + -$(RM) $@ + $(LN_S) ../../$< $@ + +# test if SALOMEconfig.h has changed (contents) +salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h + @if ! [ -a $@ ]; then \ + cp -p -f $< $@; \ + fi; \ + if ! cmp $< $@; then \ + cp -p -f $< $@; \ + fi; \ + +include/salome/sstream: salome_adm/unix/sstream + -$(RM) $@ + $(LN_S) ../../$< $@ + +depend: + +install-end: +# finish libtool install +# @$(LT) --mode=finish $(libdir) + +install-include: $(include_list) + $(INSTALL) -d $(includedir) +# @for f in X $(include_list); do \ +# if test $$f != X; then \ +# (cp -p $$f $(includedir) || exit 1); \ +# fi; \ + done + +# install script in $(bindir) : +install-bin: $(BIN_SCRIPT) + $(INSTALL) -d $(bindir) + for f in X $(BIN_SCRIPT); do \ + if test $$f != X; then \ + (cp -p -f ./bin/salome/$$f $(bindir) || exit 1); \ + fi; \ + done + +uninstall: + +distclean: distclean-other + +distclean-other: + -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old + -$(RM) salome_adm/unix/make_* + -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h + -$(RM) config.cache config.log config.status + +@MODULE@ + +install: install-bin install-include install-end diff --git a/README b/README new file mode 100755 index 0000000..4a0e302 --- /dev/null +++ b/README @@ -0,0 +1,167 @@ +-------------------------------------- +LIGHT module : README file +-------------------------------------- + +Contents: + +1. General description +2. Functionality +3. Implementation +4. Building +5. Launching + +---------------------- +1. General description +---------------------- + +The LIGHT module presents a simple no-CORBA-engine SALOME 3 compliant module. +This module proposes a way how to create a modules which have only GUI library but nevertheless +should be integrated into SALOME 3 CORBA-based architecture. + +The LIGHT module uses default SALOMEDS-based persistence mechanism provided by SALOME GUI library +in order to store/load it's data. + +This sample module is a simple text file reader. Each empty line in the file read from the file +is presented in the data tree as the beginning of new paragraph. Paragraphs can be empty. +So the data tree hierarchy has tree levels: + +Root + |__ Paragraph + | |____ Text line + | |____ Text line + | |____ ... + |__ Paragraph + |__ Paragraph + | |____ Text line + | |____ ... + |__ ... + + +---------------------- +2. Functionality +---------------------- + +The module functionality includes the following user actions: + +- "File" menu: + + - "Load text file" : reads and loads the contents of text file to the data model; + the previous contents of data model is erased. + + - "Save text flie" : dumps the contents of the data model to the text file. + +- "LIGHT" menu: + + - "Edit selected line" : allows user to edit the selected text line. + + - "Insert new text line" : inserts the new text line entered by the user before the selected one; + if there is no selection, new line is added to the end of the data tree. + + - "Remove line" : removes the selected line. + + - "Clear all" : clears all the contents of the data model. + + +All these actions except saving of the text file change the structure of the underlying text file, so the data tree is +rebuilt correspondingly. +Some of these commands are also avaiable via the context popup menu for the selected in the Object Browser data objects. + +Saving/restoring of the data is performed by using of default SALOMEDS-based persistence mechanism provided by SALOME GUI +via embedded SalomeApp engine. +Note: immediately after opening of the sudy file the LIGHT module data are not displayed in the Object Browser. To see it +you should activate the module. Such behaviour takes place because the LIGHT module does not publish any data in the SALOMEDS study. + +---------------------- +3. Implementation +---------------------- + +Here below is a short description of classes implemented in this package. + +* LIGHTGUI.h + LIGHTGUI.cxx : + +LIGHTGUI class : This class presents a GUI module itself, exported by the static function. +inherits SalomeApp_Module : SALOME GUI application loads it when user activates the module by clicking the + : corresponding button on the components toolbar. + : The LIGHTGUI class is responsible for the creation of the data model. It creates + : user actions and then dispatches them to the corresponding slots. + : Method engineIOR() of this class returns empty string which means that this + : module uses default persistence mechanism provided by the SALOME GUI via SalomeApp + : engine (ensure that your configuration file SalomeApp.xml or .SalomeApprc.3.x.x + : includes "SalomeAppEngine" module in the parameter of the section. + +* LIGHTGUI_DataModel.h + LIGHTGUI_DataModel.cxx : + +LIGHTGUI_DataModel class : This class defines an internal organization of the module's data and the way how these +inherits SalomeApp_DataModel : data should be presented in the study (e.g. in the Object Browser). In addition this class + : includes methods which modify the data tree: loading/saving of the text file, + : inserting/removing of the text line, etc. + +* LIGHTGUI_DataObject.h + LIGHTGUI_DataObject.cxx : + +LIGHTGUI_DataObject class : This class presents an elementary unit of the data model. It includes presentation methods +inherits CAM_DataObject : like: name(), icon(), toolTip(), etc. + : Take an attention on the virtual inheritance of this class. + +LIGHTGUI_ModuleObject class : This class presents a root object of the module's data tree. +inherits LIGHTGUI_DataObject,: LIGHTGUI_ModuleObject inherits SUIT_DataObject through the different branches, so virtual + CAM_RootObject : inheritance is needed here (see above). + +* LIGHTGUI_DataOwner.h + LIGHTGUI_DataOwner.cxx : + +LIGHTGUI_DataOwner class : The instances of this class are engaged in the selection mechanism allowing the identification +inherits SUIT_DataOwner : of the data objects. + +* LIGHTGUI_OBSelector.h + LIGHTGUI_OBSelector.cxx : + +LIGHTGUI_OBSelector class : This class allows the interacting with the LIGHT module's data objects in the Object Browser. +inherits SUIT_Selector : When activating the LIGHT module replaces the Object Browser selector by it's own one and + : restores the previous selector back when deactivating. The main goal of this class is to pick up + : selected objects and notify the application when selection is changed by the user. + +* LIGHTGUI_Selection.h + LIGHTGUI_Selection.cxx + +LIGHTGUI_Selection class : This class provides the methods of defining the context popup menu contents for the selected +inherits Selection : objects by using of popup menu manager from the Qtx library. + from QtxPopupMgr : + +* LIGHT_msg_en.po + LIGHT_images.po : + : Text and graphic resources of the module.. + +---------------------- +4. Building +---------------------- + +The building process of the LIGHT module is inherited from standard SALOME packages and includes the following steps: + +>> cd LIGHT_SRC +>> mkdir ../LIGHT_BUILD +>> cd ../LIGHT_BUILD +>> ../LIGHT_SRC/build_configure +>> ../LIGHT_SRC/configure [ configure-flags ] +>> make +>> make install (optional) + +---------------------- +5. Launching +---------------------- + +Set the LIGHT_ROOT_DIR environment variable to point to your LIGHT module binary distribution. +Then append the following parameters in your configuration file (SalomeApp.xml in ${GUI_ROOT_DIR}/share/salome/resources +folder or .SalomeApprc.3.x.x in your home directory, where 3.x.x is a your SALOME distribution version number): + +... +
+ +
+
+ +
+
+ + +
+... + +The launch SALOME in a usual way: + +${KERNEL_ROOT_DIR}/bin/salome/runSalome diff --git a/adm_local/unix/config_files/check_GUI.m4 b/adm_local/unix/config_files/check_GUI.m4 new file mode 100755 index 0000000..73a026e --- /dev/null +++ b/adm_local/unix/config_files/check_GUI.m4 @@ -0,0 +1,65 @@ +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +#------------------------------------------------------------ +# Check availability of Salome binary distribution +# +# Author : Marc Tajchman (CEA, 2002) +#------------------------------------------------------------ + +AC_DEFUN([CHECK_SALOME_GUI],[ + +AC_CHECKING(for Salome GUI) + +SalomeGUI_ok=no + +AC_ARG_WITH(gui, + --with-salome_gui=DIR root directory path of SALOME GUI installation, + SALOME_GUI_DIR="$withval",SALOME_GUI_DIR="") + +if test "x$SALOME_GUI_DIR" = "x" ; then + if test "x$GUI_ROOT_DIR" != "x" ; then + SALOME_GUI_DIR=$GUI_ROOT_DIR + else + # search Salome binaries in PATH variable + AC_PATH_PROG(TEMP, SUITApp) + if test "x$TEMP" != "x" ; then + SALOME_GUI_BIN_DIR=`dirname $TEMP` + SALOME_GUI_DIR=`dirname $SALOME_GUI_BIN_DIR` + fi + fi +fi + +if test "x$SALOME_GUI_DIR" != "x" ; then + if test -f ${SALOME_GUI_DIR}/bin/salome/SUITApp ; then + SalomeGUI_ok=yes + AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR}) + GUI_ROOT_DIR=${SALOME_GUI_DIR} + fi +fi +if test "x$SalomeGUI_ok" == "xno" ; then + AC_MSG_WARN("Cannot find compiled SALOME GUI distribution") +fi + +AC_SUBST(GUI_ROOT_DIR) + +AC_MSG_RESULT(for SALOME GUI: $SalomeGUI_ok) + +])dnl + diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in new file mode 100644 index 0000000..4ece646 --- /dev/null +++ b/adm_local/unix/make_commence.in @@ -0,0 +1,265 @@ +# common directories to put headerfiles +inc_builddir=$(top_builddir)/include/salome + +@SET_MAKE@ +SHELL=@SHELL@ + +# header missing + +HAVE_SSTREAM=@HAVE_SSTREAM@ + + +LIBS=@LIBS@ +LIBSFORBIN=@LIBS@ +LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome +LDFLAGSFORBIN=@LDFLAGS@ -L$(top_builddir)/lib/salome +# add libstdc++ to link c++ library with libtool ! +LDFLAGS+= @STDLIB@ +LDFLAGSFORBIN+= @STDLIB@ + +CP=@CP@ + +# CPP + +CPP=@CPP@ +CXXCPP=@CXXCPP@ +CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# C + +CC = @CC@ +CFLAGS = @CFLAGS@ +C_DEPEND_FLAG = @C_DEPEND_FLAG@ + +# C++ + +CXX = @CXX@ +CXXFLAGS = @CXXFLAGS@ +CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@ + +# BOOST Library + +BOOST_CPPFLAGS = @BOOST_CPPFLAGS@ + +# JAVA + +JAVA_INCLUDES = @JAVA_INCLUDES@ +JAVA_LIBS = @JAVA_LIBS@ +JAVA_LDPATH = @JAVA_LDPATH@ + +# PYTHON + +PYTHON = @PYTHON@ +PYTHONHOME = @PYTHONHOME@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_VERSION = @PYTHON_VERSION@ +# Changes from the SalomePro V1.2c +#PYTHON_SITE = @PYTHON_SITE@ +#PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@ +PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages +PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome + +# QT + +QT_ROOT = @QT_ROOT@ +QT_INCLUDES = @QT_INCLUDES@ +QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT +QT_LIBS = @QT_LIBS@ +QT_MT_LIBS = @QT_MT_LIBS@ + +MOC = @MOC@ +UIC = @UIC@ + +# msg2qm +MSG2QM = @MSG2QM@ + +#QWT + +QWT_INCLUDES=@QWT_INCLUDES@ +QWT_LIBS=@QWT_LIBS@ + +# SIP +SIP = @SIP@ +SIP_INCLUDES = @SIP_INCLUDES@ +SIP_LIBS = @SIP_LIBS@ + +# PYQT +PYQT_SIPS = @PYQT_SIPS@ +PYQT_LIBS = @PYQT_LIBS@ + +# openGL +OGL_INCLUDES=@OGL_INCLUDES@ +OGL_LIBS=@OGL_LIBS@ + +# VTK +VTK_INCLUDES=@VTK_INCLUDES@ +VTK_LIBS=@VTK_LIBS@ + +# HDF5 + +HDF5_INCLUDES=@HDF5_INCLUDES@ +HDF5_LIBS=@HDF5_LIBS@ +HDF5_MT_LIBS=@HDF5_MT_LIBS@ + +# OpenCasCade + +OCC_INCLUDES=@CAS_CPPFLAGS@ +OCC_CXXFLAGS=@CAS_CXXFLAGS@ + +#OCC_KERNEL_LIBS=@CAS_KERNEL@ +#OCC_OCAF_LIBS=@CAS_OCAF@ +#OCC_VIEWER_LIBS=@CAS_VIEWER@ +#OCC_MODELER_LIBS=@CAS_MODELER@ +#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ +#OCC_LIBS=@CAS_LDFLAGS@ +CAS_KERNEL=@CAS_KERNEL@ +CAS_OCAF=@CAS_OCAF@ +CAS_VIEWER=@CAS_VIEWER@ +CAS_MODELER=@CAS_MODELER@ +CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@ +CAS_LDPATH=@CAS_LDPATH@ + +# MPICH + +MPICH_INCLUDES=@MPICH_INCLUDES@ +MPICH_LIBS=@MPICH_LIBS@ + +# Swig C++ Python + +SWIG = @SWIG@ +SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I. + +# OMNIORB + +OMNIORB_ROOT = @OMNIORB_ROOT@ +OMNIORB_INCLUDES = @OMNIORB_INCLUDES@ +OMNIORB_LIBS = @OMNIORB_LIBS@ +OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@ + +OMNIORB_IDL = @OMNIORB_IDL@ +OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ +OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/salome/idl \ + -I$(KERNEL_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome + +OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@ +OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@ +OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@ + +OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@ +OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@ +OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@ + +# Default ORB + +CORBA_ROOT = @CORBA_ROOT@ +CORBA_INCLUDES = @CORBA_INCLUDES@ +CORBA_LIBS = @CORBA_LIBS@ +CORBA_CXXFLAGS = @CORBA_CXXFLAGS@ + +IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl/salome \ + -I$(KERNEL_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome +IDLPYFLAGS = @IDLPYFLAGS@ + +IDL = @IDL@ + +IDL_CLN_H = @IDL_CLN_H@ +IDL_CLN_CXX = @IDL_CLN_CXX@ +IDL_CLN_OBJ = @IDL_CLN_OBJ@ + +IDL_SRV_H = @IDL_SRV_H@ +IDL_SRV_CXX = @IDL_SRV_CXX@ +IDL_SRV_OBJ = @IDL_SRV_OBJ@ + +CPPFLAGS+= $(CORBA_INCLUDES) +CXXFLAGS+= $(CORBA_CXXFLAGS) + +# add corba libs when link salome application ! +#LDFLAGS+= $(CORBA_LIBS) +LIBS+=$(CORBA_LIBS) + +DOXYGEN = @DOXYGEN@ + +## Shared libraries +LT_STATIC_EXEC=@LT_STATIC_EXEC@ +DYNAMIC_DIRS=@DYNAMIC_DIRS@ +LT_LIB=libtool +LT=$(top_builddir)/libtool +LT_COMPILE=$(LT) --mode=compile $(CC) +LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir) +LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) +LT_RUN=$(LT) --mode=execute +LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) +LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) +LT_UNINSTALL=$(LT) --mode=uninstall $(RM) + +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DATA=@INSTALL_DATA@ + +# create a symbolic link (or a copie ?) +LN_S=@LN_S@ + +## Installation points +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@/salome +libdir=@libdir@/salome +# warning : if user give this path in configure we could have salome/salome :-( +includedir=@includedir@/salome +datadir=@datadir@/salome +idldir=${prefix}/idl/salome +sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules +incmakedir=${prefix}/salome_adm/unix + +docdir=${prefix}/doc/salome + +# +# begin of package rules +# + +.PHONY: all lib bin inc resources data docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean + +.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm + +all: + $(MAKE) inc + $(MAKE) depend_idl + $(MAKE) depend + $(MAKE) lib + $(MAKE) bin + $(MAKE) resources + +# +# add target to build administrative files +# + +Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in + cd $(top_builddir) ; ./config.status + +$(top_builddir)/config.status: $(top_srcdir)/configure + cd $(top_builddir) ; ./config.status --recheck + +# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) +ifneq ($(top_srcdir),$(srcdir)) +configure: $(top_srcdir)/configure +endif + +$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4 + cd $(top_srcdir) ; autoconf + +$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base + cd $(top_srcdir) && ./build_configure + + +ACLOCAL_SRC = \ +ac_cxx_bool.m4 check_corba.m4 check_vtk.m4 \ +ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ +ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ +ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ +ac_cxx_partial_specialization.m4 check_opengl.m4 python.m4 \ +ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ +ac_cc_warnings.m4 check_qt.m4 check_swig.m4 + +$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) + cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files diff --git a/bin/VERSION b/bin/VERSION new file mode 100755 index 0000000..baa54d9 --- /dev/null +++ b/bin/VERSION @@ -0,0 +1 @@ +THIS IS SAMPLE LIGHT (NO-CORBA-ENGINE) MODULE : VERSION: 0.1 diff --git a/build_configure b/build_configure new file mode 100755 index 0000000..82a5c67 --- /dev/null +++ b/build_configure @@ -0,0 +1,251 @@ +#!/bin/bash + +######################################################################## +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Marc Tajchman - CEA +# Date : 10/10/2002 +# $Header$ +# +# Tool for updating list of .in file for the SALOME project +# and regenerating configure script +# +######################################################################## + +ORIG_DIR=`pwd` +CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` + +######################################################################## +# Test if the KERNEL_ROOT_DIR is set correctly + +if test ! -d "${KERNEL_ROOT_DIR}"; then + echo "failed : KERNEL_ROOT_DIR variable is not correct !" + exit +fi + +# Test if the KERNEL_SRC is set correctly + +#if test ! -d "${KERNEL_SRC}"; then +# echo "failed : KERNEL_SRC variable is not correct !" +# exit +#fi +######################################################################## +# find_in - utility function +# +# usage : +# find_in directory filename +# +# Finds files following the *.in pattern, recursively in the +# directory (first argument). +# Results are appended into the file (second argument) +# +# Difference from the standard unix find is that files are tested +# before directories +# + +find_in() +{ + i=0 + f=$2 + +# if the first argument is not a directory, returns + + if [ ! -d "$1" ] ; then + return + fi + +# dont look in the CVS directories + + case $1 in + */CVS) return ;; + *) ;; + esac + +# for each regular file contained in the directory +# test if it's a .in file + + for i in "$1"/* + do + if [ -f "$i" ] ; then + case $i in + *.in) echo " "$i" \\" >> $f;; + *) ;; + esac + fi + done + +# for each subdirectory of the first argument, proceeds recursively + + for i in "$1"/* + do + if [ -d "$i" ] ; then + find_in "$i" "$f" + fi + done +} + + +####################################################################### +# Generate list of .in files (Makefile.in, config.h.in, etc) +# appending it in file configure.in + +cd ${CONF_DIR} +ABS_CONF_DIR=`pwd` + +# +# Common part of the configure.in file +# +chmod u+w configure.in.base +if \cp -f configure.in.base configure.in_tmp1 +then + echo +else + echo + echo "error : can't create files in" ${CONF_DIR} + echo "aborting ..." + chmod u-w configure.in.base + exit +fi +chmod u-w configure.in.base + +if [ -e "${CONF_DIR}/salome_adm" ] ; then + \rm -f ${CONF_DIR}/salome_adm +fi + +# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files +echo "" >> configure.in_tmp1 +echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/.' >> configure.in_tmp1 + +echo "" >> configure.in_tmp1 +echo "AC_OUTPUT([ \\" >> configure.in_tmp1 + +# +# List of .in files in the adm/unix directory +# These files MUST be on top of AC_OUTPUT list so we +# put them "manually" +# +# Attention, l'ordre d'entrée des fichiers doit être choisi avec +# précision +# +echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 + +echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/make_omniorb \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 + +# _CS_gbo Pour assurer ls construction correct de la chaîne de +# dépendance, il apparaît nécessaire de surcharger le make_conclude +# (resp. make_commence) pardéfaut, c'est à dire le make_conclude de +# salome_adm, par le make_conclude (resp. make_commence) du module, +# c'est à dire le make_conclude (resp. make_commence) du répertoire +# adm_local +echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 +echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1 + +\rm -f configure.in_tmp2 configure.in_tmp3 +touch configure.in_tmp2 + +find_in . configure.in_tmp2 + +# _CS_gbo_100204 Mise à jour du filtre pour prise en compte des +# restrictions imposées par les versions récente de autoconf. + sed -e '/^ \.\/salome_adm/d' \ + -e '/configure.in/d' \ + -e '/^ \.\/adm_local/d' \ + -e 's/.in / /' configure.in_tmp2 >> configure.in_tmp1 + +echo "])" >> configure.in_tmp1 + +# delete the link created for AC_OUTPUT +echo "" >> configure.in_tmp1 +#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1 +\mv configure.in_tmp1 configure.in_new +\rm -f configure.in_tmp2 configure.in_tmp3 + + +######################################################################## +# Create new (or replace old) configure.in file +# Print a message if the file is write protected +# + +echo +if test ! -f configure.in +then + echo -n "Creating new file 'configure.in' ... " + if \mv configure.in_new configure.in >& /dev/null + then + echo "done" + else + echo "error, check your file permissions" + fi +else + echo -n "Updating 'configure.in' file ... " + if \cp configure.in configure.in_old >& /dev/null + then + echo + else + echo + echo + echo "Can't backup previous configure.in" + echo -n "Continue (you will not be able to revert) - (Y/N) ? " + read R + case "x$R" in + xn*) exit;; + xN*) exit;; + esac + echo + echo -n " " + fi + if \cp configure.in_new configure.in >& /dev/null + then + echo "done" + else + echo + echo "error, can't update previous configure.in" + fi +fi + +######################################################################## +# Use autoconf to rebuild the configure script +# + +if test -f configure +then + echo -n "Updating 'configure' script ... " +else + echo -n "Creating 'configure' script ... " +fi + +aclocal --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files +if autoconf +then + echo "done" +else + echo "failed (check file permissions and/or user quotas ...)" +fi + +cd ${ORIG_DIR} + +echo diff --git a/configure.in.base b/configure.in.base new file mode 100644 index 0000000..20c4477 --- /dev/null +++ b/configure.in.base @@ -0,0 +1,438 @@ +######################################################################## +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Marc Tajchman (CEA) +# Date : 28/06/2001 +# $Header$ +# +######################################################################## +# +# PLEASE DO NOT MODIFY configure.in FILE +# +# ALL CHANGES WILL BE DISCARDED BY THE NEXT +# build_configure COMMAND +# +# CHANGES MUST BE MADE IN configure.in.base FILE +# +######################################################################## + +AC_INIT(src) +AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files) +AC_CANONICAL_HOST + +PACKAGE=salome +AC_SUBST(PACKAGE) + +VERSION=0.0.1 +AC_SUBST(VERSION) + +dnl +dnl Initialize source and build root directories +dnl + +ROOT_BUILDDIR=`pwd` +ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +cd $ROOT_SRCDIR +ROOT_SRCDIR=`pwd` +cd $ROOT_BUILDDIR + +AC_SUBST(ROOT_SRCDIR) +AC_SUBST(ROOT_BUILDDIR) + +echo +echo Source root directory : $ROOT_SRCDIR +echo Build root directory : $ROOT_BUILDDIR +echo +echo + +dnl Modification B. Secher portage sur osf CCRT +AC_CHECK_PROG(SHELL,sh,,) +AC_SUBST(SHELL) + +if test -z "$AR"; then + AC_CHECK_PROGS(AR,ar xar,:,$PATH) +fi +AC_SUBST(AR) + +dnl Export the AR macro so that it will be placed in the libtool file +dnl correctly. +export AR + +echo +echo --------------------------------------------- +echo testing make +echo --------------------------------------------- +echo + +AC_PROG_MAKE_SET +AC_PROG_INSTALL +dnl +dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques ! + +AC_ENABLE_DEBUG(yes) +AC_DISABLE_PRODUCTION + +echo --------------------------------------------- +echo testing libtool +echo --------------------------------------------- + +dnl first, we set static to no! +dnl if we want it, use --enable-static +AC_ENABLE_STATIC(no) + +AC_LIBTOOL_DLOPEN +AC_PROG_LIBTOOL + +dnl Fix up the INSTALL macro if it s a relative path. We want the +dnl full-path to the binary instead. +case "$INSTALL" in + *install-sh*) + INSTALL="\${KERNEL_ROOT_DIR}/salome_adm/unix/config_files/install-sh -c" + ;; +esac + +echo +echo --------------------------------------------- +echo testing C/C++ +echo --------------------------------------------- +echo + +cc_ok=no +dnl inutil car libtool +dnl AC_PROG_CC +AC_PROG_CXX +AC_CXX_WARNINGS +AC_CXX_TEMPLATE_OPTIONS +AC_DEPEND_FLAG +# AC_CC_WARNINGS([ansi]) +cc_ok=yes + +dnl Library libdl : +AC_CHECK_LIB(dl,dlopen) + +dnl add library libm : +AC_CHECK_LIB(m,ceil) + +dnl Library librt : for alpha/osf +AC_CHECK_LIB(rt,nanosleep) + +dnl +dnl Check if we use std iostream by default or if we must add +dnl a compiler directive for that +dnl + +AC_CXX_USE_STD_IOSTREAM + +dnl +dnl Well we use sstream which is not in gcc pre-2.95.3 +dnl We must test if it exists. If not, add it in include ! +dnl + +AC_CXX_HAVE_SSTREAM + +dnl +dnl --------------------------------------------- +dnl testing linker +dnl --------------------------------------------- +dnl + +AC_LINKER_OPTIONS + +dnl +dnl --------------------------------------------- +dnl testing MPICH +dnl --------------------------------------------- +dnl + +CHECK_MPI +CHECK_MPICH + +dnl +dnl --------------------------------------------- +dnl testing WITHIHM +dnl --------------------------------------------- +dnl + +CHECK_WITHIHM + +echo +echo --------------------------------------------- +echo testing LEX \& YACC +echo --------------------------------------------- +echo + +lex_yacc_ok=no +AC_PROG_YACC +AC_PROG_LEX +lex_yacc_ok=yes + +echo +echo --------------------------------------------- +echo testing python +echo --------------------------------------------- +echo + +CHECK_PYTHON + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing java +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_JAVA + +echo +echo --------------------------------------------- +echo testing swig +echo --------------------------------------------- +echo + +CHECK_SWIG + +echo +echo --------------------------------------------- +echo testing threads +echo --------------------------------------------- +echo + +ENABLE_PTHREADS + +echo +echo --------------------------------------------- +echo testing omniORB +echo --------------------------------------------- +echo + +CHECK_OMNIORB + +dnl echo +dnl echo --------------------------------------------- +dnl echo testing mico +dnl echo --------------------------------------------- +dnl echo + +dnl CHECK_MICO + +echo +echo --------------------------------------------- +echo default ORB : omniORB +echo --------------------------------------------- +echo + +DEFAULT_ORB=omniORB +CHECK_CORBA + +AC_SUBST_FILE(CORBA) +corba=make_$ORB +CORBA=adm_local/unix/$corba + +echo +echo --------------------------------------------- +echo testing openGL +echo --------------------------------------------- +echo + +CHECK_OPENGL + +echo +echo --------------------------------------------- +echo testing QT +echo --------------------------------------------- +echo + +CHECK_QT + +echo +echo --------------------------------------------- +echo testing MSG2QM +echo --------------------------------------------- +echo + +CHECK_MSG2QM + +echo +echo --------------------------------------------- +echo testing VTK +echo --------------------------------------------- +echo + +CHECK_VTK + +echo +echo --------------------------------------------- +echo testing HDF5 +echo --------------------------------------------- +echo + +CHECK_HDF5 + +echo +echo --------------------------------------------- +echo testing MED2 +echo --------------------------------------------- +echo + +CHECK_MED2 + +echo +echo --------------------------------------------- +echo Testing OpenCascade +echo --------------------------------------------- +echo + +CHECK_CAS + +echo +echo --------------------------------------------- +echo Testing html generators +echo --------------------------------------------- +echo + +CHECK_HTML_GENERATORS + +echo +echo --------------------------------------------- +echo Testing Kernel +echo --------------------------------------------- +echo + +CHECK_KERNEL + +echo +echo --------------------------------------------- +echo Testing GUI +echo --------------------------------------------- +echo + +CHECK_SALOME_GUI + +echo +echo --------------------------------------------- +echo Summary +echo --------------------------------------------- +echo + +echo Configure +variables="cc_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok med2_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok SalomeGUI_ok" + +for var in $variables +do + printf " %10s : " `echo \$var | sed -e "s,_ok,,"` + eval echo \$$var +done + +echo +echo "Default ORB : $DEFAULT_ORB" +echo + +dnl generals files which could be included in every makefile + +AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence +AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude +AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module + +dnl les dependences +AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend + +dnl We don t need to say when we re entering directories if we re using +dnl GNU make becuase make does it for us. +if test "X$GMAKE" = "Xyes"; then + AC_SUBST(SETX) SETX=":" +else + AC_SUBST(SETX) SETX="set -x" +fi + +# make other build directories +for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources idl +do +# if test ! -d $rep ; then +# eval mkdir $rep +# fi +# $INSTALL -d $rep + mkdir -p $rep +done + +echo +echo --------------------------------------------- +echo copying resource files, shell scripts, and +echo xml files +echo --------------------------------------------- +echo + + +dnl copy resources directories + +#for i in `find $ROOT_SRCDIR -name 'resources' -print` +#do +# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` +# mkdir -p $local_res_dir +# cd $local_res_dir +# ln -fs $i +# echo $local_res +# cd $ROOT_BUILDDIR +#done + +dnl copy shells and utilities contained in the bin directory +dnl excluding .in files (treated in AC-OUTPUT below) and CVS +dnl directory + +mkdir -p bin/salome +cd bin/salome + +for i in $ROOT_SRCDIR/bin/* +do + local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` + case "$local_bin" in + *.in | *~) ;; + ./bin/CVS | ./bin/salome) ;; + *) ln -fs $i .; echo $local_bin ;; + esac +done +cd $ROOT_BUILDDIR + +AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript + +dnl copy xml files to the build tree (lib directory) +dnl pourquoi ???? + +#cd lib +#for i in `find $ROOT_SRCDIR -name "*.xml" -print` +#do +# ln -fs $i +# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"` +#done +#cd $ROOT_BUILDDIR + + +echo +echo --------------------------------------------- +echo generating Makefiles and configure files +echo --------------------------------------------- +echo + +AC_OUTPUT_COMMANDS([ \ + chmod +x ./bin/* \ +]) + +## do not delete this line diff --git a/resources/queen.txt b/resources/queen.txt new file mode 100644 index 0000000..1c45d6d --- /dev/null +++ b/resources/queen.txt @@ -0,0 +1,39 @@ +Love of my life, You hurt me. +You've broken my heart, +And now you leave me. + +Love of my life, can't you see ... +Bring it back, bring it back, +Don't take it away from me. + +Because you don't know +What it means to me. + +Love of my life, You leave me. +You've stolen my love, +You now desert me. + +Love of my life, can't you see ... +Bring it back, bring it back, +Don't take it away from me. + +Because you don't know +What it means to me. + +Don't you remember +How this is blown over +And everythings all by the way. +When I'll get older +I will be there, At your side +To remind you +How I still love you. + I still love you ... + +Back, hurry back, +Don't take it away from me. +'Cause you don't know +What it means to me. + +Love of my life ... +Love of my life ... +Oh Oh Yeh ... diff --git a/src/LIGHTGUI/LIGHTGUI.cxx b/src/LIGHTGUI/LIGHTGUI.cxx new file mode 100644 index 0000000..39cdf5a --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI.cxx @@ -0,0 +1,432 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +using namespace std; + +#include "LIGHTGUI.h" + +#include "LIGHTGUI_Selection.h" +#include "LIGHTGUI_DataModel.h" +#include "LIGHTGUI_OBSelector.h" +#include "LIGHTGUI_DataOwner.h" + +#include +#include +#include + +#include +#include + +//================================================================================= +// function : LIGHTGUI() +// purpose : Constructor : sets the default name for the module +//================================================================================= +LIGHTGUI::LIGHTGUI() + : SalomeApp_Module( "LIGHTGUI" ) +{ +} + +//================================================================================= +// function : initialize() +// purpose : module intitialization: creates menus, prepares context menu, etc. +//================================================================================= +void LIGHTGUI::initialize ( CAM_Application* app ) +{ + SalomeApp_Module::initialize( app ); + + QWidget* parent = application()->desktop(); + + createAction( lgLoadFile, tr( "TOP_LOAD_FILE" ), QIconSet(), tr( "MEN_LOAD_FILE" ), + tr( "STB_LOAD_FILE" ), 0, parent, false, this, SLOT( onLoadFile() ) ); + createAction( lgSaveFile, tr( "TOP_SAVE_FILE" ), QIconSet(), tr( "MEN_SAVE_FILE" ), + tr( "STB_SAVE_FILE" ), 0, parent, false, this, SLOT( onSaveFile() ) ); + createAction( lgEditLine, tr( "TOP_EDIT_LINE" ), QIconSet(), tr( "MEN_EDIT_LINE" ), + tr( "STB_EDIT_LINE" ), 0, parent, false, this, SLOT( onEditLine() ) ); + createAction( lgAddLine, tr( "TOP_ADD_LINE" ), QIconSet(), tr( "MEN_ADD_LINE" ), + tr( "STB_ADD_LINE" ), 0, parent, false, this, SLOT( onAddLine() ) ); + createAction( lgDelLine, tr( "TOP_DEL_LINE" ), QIconSet(), tr( "MEN_DEL_LINE" ), + tr( "STB_DEL_LINE" ), 0, parent, false, this, SLOT( onDelLine() ) ); + createAction( lgClear, tr( "TOP_CLEAR_ALL" ), QIconSet(), tr( "MEN_CLEAR_ALL" ), + tr( "STB_CLEAR_ALL" ), 0, parent, false, this, SLOT( onClear() ) ); + + int aFileMnu = createMenu( tr( "MEN_FILE" ), -1, -1 ); + createMenu( separator(), aFileMnu, -1, 10 ); + createMenu( lgLoadFile, aFileMnu, 10 ); + createMenu( lgSaveFile, aFileMnu, 10 ); + + int aLightMnu = createMenu( tr( "MEN_LIGHT" ), -1, -1, 50 ); + createMenu( lgEditLine, aLightMnu, 10 ); + createMenu( lgAddLine, aLightMnu, 10 ); + createMenu( separator(), aLightMnu, -1, 10 ); + createMenu( lgDelLine, aLightMnu, 10 ); + createMenu( lgClear, aLightMnu, 10 ); + + // popup for object browser + int parentId = -1; + QString rule = "client='ObjectBrowser' and selcount=1 and type='TextLine'"; + + popupMgr()->insert ( action( lgEditLine ), parentId, 0 ); + popupMgr()->setRule( action( lgEditLine ), rule, true ); + + popupMgr()->insert ( action( lgAddLine ), parentId, 0 ); + popupMgr()->setRule( action( lgAddLine ), rule, true ); + + popupMgr()->insert ( separator(), parentId, 0 ); + + popupMgr()->insert ( action( lgDelLine ), parentId, 0 ); + popupMgr()->setRule( action( lgDelLine ), rule, true ); + + popupMgr()->insert ( action( lgClear ), parentId, 0 ); +} + +//================================================================================= +// function : contextMenuPopup() +// purpose : defines context popup menu +//================================================================================= +void LIGHTGUI::contextMenuPopup ( const QString& client, QPopupMenu* menu, QString& ) +{ + LIGHTGUI_Selection sel ( client, getApp()->selectionMgr() ); + popupMgr()->updatePopup( menu, &sel ); +} + +//================================================================================= +// function : windows() +// purpose : gets a list of compliant dockable GUI elements +//================================================================================= +void LIGHTGUI::windows ( QMap& aMap ) const +{ + aMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::DockLeft ); + aMap.insert( SalomeApp_Application::WT_PyConsole, Qt::DockBottom ); +} + +//================================================================================= +// function : engineIOR() +// purpose : Returns empty string. It means that this module +// should use default engine for its persistence. +//================================================================================= +QString LIGHTGUI::engineIOR() const +{ + return QString( "" ); +} + +//================================================================================= +// function : createDataModel() +// purpose : create data model +//================================================================================= +CAM_DataModel* LIGHTGUI::createDataModel() +{ + return new LIGHTGUI_DataModel( this ); +} + +//================================================================================= +// function : selectedLine() +// purpose : get the number of selected line (multiple selection is not supported) +//================================================================================= +int LIGHTGUI::selectedLine() +{ + int aPosition = 0; // bad value + + // Look for selected lines + SalomeApp_Application* app = getApp(); + SalomeApp_SelectionMgr* mgr = app ? app->selectionMgr() : NULL; + if ( mgr ) { + SUIT_DataOwnerPtrList anOwnersList; + mgr->selected( anOwnersList ); + + // Get index of the single selected line + if ( anOwnersList.size() == 1 ) { + const LIGHTGUI_DataOwner* owner = + dynamic_cast( anOwnersList[0].get() ); + aPosition = owner->lineNb(); + } + } + return aPosition; +} + +//================================================================================= +// function : activateModule() +// purpose : module's activation +//================================================================================= +bool LIGHTGUI::activateModule ( SUIT_Study* study ) +{ + bool isDone = SalomeApp_Module::activateModule( study ); + if ( !isDone ) return false; + + setMenuShown( true ); + + // enable own ObjectBrowser selector an disable another ones + bool isOwnSelector = false; + QPtrList lst; + getApp()->selectionMgr()->selectors( lst ); + for ( QPtrListIterator it( lst ); it.current(); ++it ) { + if ( it.current()->type() == "ObjectBrowser" ) { + LIGHTGUI_OBSelector* anOwnSelector = dynamic_cast( it.current() ); + // restore own selector + if ( anOwnSelector ) { + // enable own + anOwnSelector->setEnabled( true ); + isOwnSelector = true; + } + else { + // disable other + it.current()->setEnabled( false ); + } + } + } + + // create own selector, if it was not found in selection manager + if ( !isOwnSelector ) { + new LIGHTGUI_OBSelector ( getApp()->objectBrowser(), getApp()->selectionMgr() ); + } + + return isDone; +} + +//================================================================================= +// function : deactivateModule() +// purpose : module's deactivation +//================================================================================= +bool LIGHTGUI::deactivateModule ( SUIT_Study* study ) +{ + // hide menus + setMenuShown( false ); + + // disable own ObjectBrowser selector an enable another ones + QPtrList lst; + getApp()->selectionMgr()->selectors( lst ); + for ( QPtrListIterator it( lst ); it.current(); ++it ) { + if ( it.current()->type() == "ObjectBrowser" ) { + LIGHTGUI_OBSelector* anOwnSelector = dynamic_cast( it.current() ); + if ( anOwnSelector ) { + // disable own selector + anOwnSelector->setEnabled( false ); + } + else { + // enable other + it.current()->setEnabled( true ); + } + } + } + + return SalomeApp_Module::deactivateModule( study ); +} + +//================================================================================= +// function : onLoadFile() +// purpose : "Load File" action slot +//================================================================================= +void LIGHTGUI::onLoadFile() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + QStringList filtersList; + filtersList.append( tr( "LIGHTGUI_MEN_TXT_FILES" ) ); + filtersList.append( tr( "LIGHTGUI_MEN_ALL_FILES" ) ); + + // Select a file to be loaded + QString aFileName = getApp()->getFileName( true, QString::null, filtersList.join( ";;" ), tr( "LIGHTGUI_MEN_LOAD" ), 0 ); + if ( !aFileName.isEmpty() ) { + // Load the file + if ( dm->loadFile( aFileName ) ) { + updateObjBrowser( true ); + } + else { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_LOAD_FAILED" ), + tr( "BUT_OK" ) ); + } + } +} + +//================================================================================= +// function : onSaveFile() +// purpose : "Save File" action slot +//================================================================================= +void LIGHTGUI::onSaveFile() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + QStringList filtersList; + filtersList.append( tr( "LIGHTGUI_MEN_TXT_FILES" ) ); + filtersList.append( tr( "LIGHTGUI_MEN_ALL_FILES" ) ); + + // Select a file name to dump the lines into + QString aFileName = getApp()->getFileName( false, dm->fileName(), filtersList.join( ";;" ), tr( "LIGHTGUI_MEN_DUMP" ), 0 ); + if ( !aFileName.isEmpty() ) { + // Dump the file + if ( !dm->dumpFile( aFileName ) ) { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_DUMP_FAILED" ), + tr( "BUT_OK" ) ); + } + } +} + +//================================================================================= +// function : onEditLine() +// purpose : "Edit Line" action slot +//================================================================================= +void LIGHTGUI::onEditLine() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + // Define position + int aPosition = selectedLine(); + + // Check, that position is defined + if ( !aPosition ) { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_SELECT_LINE" ), + tr( "BUT_OK" ) ); + return; + } + + // Get new text + bool isOk; + QString aText = QInputDialog::getText( tr( "LIGHTGUI_EDIT_LINE" ), + QString::null, + QLineEdit::Normal, + dm->getLineText( aPosition ), + &isOk, + getApp()->desktop() ); + if ( !isOk ) return; + + // try to change a text of the selected line + isOk = dm->setLineText( aPosition, aText ); + if ( isOk ) { + updateObjBrowser( true ); + } + else { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_EDIT_FAILED" ), + tr( "BUT_OK") ); + } +} + +//================================================================================= +// function : onAddLine() +// purpose : "Insert Line" action slot +//================================================================================= +void LIGHTGUI::onAddLine() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + // Define position + int aPosition = selectedLine(); + + // Get new text + bool isOk; + QString aText = QInputDialog::getText( tr( "LIGHTGUI_ADD_LINE" ), + QString::null, + QLineEdit::Normal, + QString::null, + &isOk, + getApp()->desktop() ); + if ( !isOk ) return; + + // try to insert/add text line + isOk = dm->insertLineBefore( aPosition, aText ); + + if ( isOk ) { + updateObjBrowser( true ); + } + else { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_ADD_FAILED" ), + tr( "BUT_OK") ); + } +} + +//================================================================================= +// function : onDelLine() +// purpose : "Delete Line" action slot +//================================================================================= +void LIGHTGUI::onDelLine() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + // Define position + int aPosition = selectedLine(); + + // Check, that position is defined + if ( !aPosition ) { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_SELECT_LINE" ), + tr( "BUT_OK" ) ); + return; + } + + // try to delete line + bool isOk = dm->deleteTextLine( aPosition ); + if ( isOk ) { + updateObjBrowser( true ); + } + else { + SUIT_MessageBox::warn1 ( application()->desktop(), + tr( "WRN_WARNING" ), + tr( "WRN_DELETE_FAILED" ), + tr( "BUT_OK") ); + } +} + +//================================================================================= +// function : onClear() +// purpose : "Clear Text" action slot +//================================================================================= +void LIGHTGUI::onClear() +{ + LIGHTGUI_DataModel* dm = dynamic_cast( dataModel() ); + if ( !dm ) return; + + dm->clearAll(); + updateObjBrowser( true ); +} + +//================================================================================= +// function : createModule() +// purpose : exports module object +//================================================================================= +#ifdef WNT +#define LIGHTGUI_EXPORT __declspec(dllexport) +#else // WNT +#define LIGHTGUI_EXPORT +#endif // WNT + +extern "C" { + LIGHTGUI_EXPORT CAM_Module* createModule() { + return new LIGHTGUI(); + } +} diff --git a/src/LIGHTGUI/LIGHTGUI.h b/src/LIGHTGUI/LIGHTGUI.h new file mode 100644 index 0000000..1fbbea1 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI.h @@ -0,0 +1,62 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_H +#define LIGHTGUI_H + +#include + +class LIGHTGUI: public SalomeApp_Module +{ + Q_OBJECT + enum { lgLoadFile = 931, lgSaveFile, lgEditLine, lgAddLine, lgDelLine, lgClear }; + +public: + LIGHTGUI(); + + virtual void initialize ( CAM_Application* ); + virtual void contextMenuPopup ( const QString&, QPopupMenu*, QString& ); + virtual void windows ( QMap& ) const; + + virtual QString engineIOR() const; + +protected: + virtual CAM_DataModel* createDataModel(); + int selectedLine(); + +public slots: + virtual bool activateModule ( SUIT_Study* ); + virtual bool deactivateModule ( SUIT_Study* ); + +private slots: + void onLoadFile(); + void onSaveFile(); + void onEditLine(); + void onAddLine (); + void onDelLine (); + void onClear (); +}; + +#endif // LIGHTGUI_H diff --git a/src/LIGHTGUI/LIGHTGUI_DataModel.cxx b/src/LIGHTGUI/LIGHTGUI_DataModel.cxx new file mode 100644 index 0000000..675fcbe --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataModel.cxx @@ -0,0 +1,430 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#include "LIGHTGUI_DataModel.h" +#include "LIGHTGUI_DataObject.h" + +#include +#include +#include + +#include +#include + +//================================================================================= +// function : LIGHTGUI_DataModel() +// purpose : constructor +//================================================================================= +LIGHTGUI_DataModel::LIGHTGUI_DataModel ( CAM_Module* theModule ) + : SalomeApp_DataModel( theModule ), + myFileName( "" ), + myStudyURL( "" ) +{ +} + +//================================================================================= +// function : ~LIGHTGUI_DataModel() +// purpose : destructor +//================================================================================= +LIGHTGUI_DataModel::~LIGHTGUI_DataModel() +{ +} + +//================================================================================= +// function : open() +// purpose : Open data model operation +//================================================================================= +bool LIGHTGUI_DataModel::open ( const QString& theURL, CAM_Study* study ) +{ + SalomeApp_Study* aDoc = dynamic_cast( study ); + if ( !aDoc ) + return false; + + SalomeApp_DataModel::open( theURL, study ); + + // Get list of files, created for this module by SalomeApp_Engine_i::Load(). + std::vector aListOfFiles = GetListOfFiles(); + + // The first list item contains path to a temporary + // directory, where the persistent files was placed + if ( aListOfFiles.size() > 0 ) { + QString aTmpDir ( aListOfFiles[0] ); + + // This module operates with a single persistent file + if ( aListOfFiles.size() == 2 ) { + myStudyURL = theURL; + QString aFileName ( aListOfFiles[1] ); + QString aFullPath = SUIT_Tools::addSlash( aTmpDir ) + aFileName; + + loadFile( aFullPath, study ); + } + + // Remove the files and temporary directory, created + // for this module by SalomeApp_Engine_i::Load() + bool isMultiFile = false; // TODO: decide, how to access this parameter + RemoveTemporaryFiles( isMultiFile ); + } + + return true; +} + +//================================================================================= +// function : save() +// purpose : Save data model operation +//================================================================================= +bool LIGHTGUI_DataModel::save() +{ + // 1. Save data to temporary files + bool isMultiFile = false; // TODO: decide, how to access this parameter + + QString aTmpDir ( SalomeApp_DataModel::GetTmpDir( myStudyURL.latin1(), isMultiFile ) ); + QString aFileName = SUIT_Tools::file( myStudyURL, false ) + "_LIGHTGUI.txt"; + QString aFullPath = aTmpDir + aFileName; + dumpFile( aFullPath ); + + // 2. Set list of temporary files to Engine + std::vector aListOfFiles ( 2 ); + aListOfFiles[0] = aTmpDir.latin1(); + aListOfFiles[1] = aFileName.latin1(); + SetListOfFiles( aListOfFiles ); + + return true; +} + +//================================================================================= +// function : saveAs() +// purpose : SaveAs data model operation +//================================================================================= +bool LIGHTGUI_DataModel::saveAs ( const QString& theURL, CAM_Study* ) +{ + myStudyURL = theURL; + return save(); +} + +//================================================================================= +// function : close() +// purpose : Close data model operation +//================================================================================= +bool LIGHTGUI_DataModel::close() +{ + return true; +} + +//================================================================================= +// function : create() +// purpose : Create data model operation +//================================================================================= +bool LIGHTGUI_DataModel::create( CAM_Study* study ) +{ + buildTree( study->root(), QStringList() ); + return true; +} + +//================================================================================= +// function : isModified() +// purpose : default implementation, always returns false so as not to mask study's isModified() +//================================================================================= +bool LIGHTGUI_DataModel::isModified() const +{ + return false; +} + +//================================================================================= +// function : isSaved() +// purpose : default implementation, always returns true so as not to mask study's isSaved() +//================================================================================= +bool LIGHTGUI_DataModel::isSaved() const +{ + return true; +} + +//================================================================================= +// function : update() +// purpose : updates data model +//================================================================================= +void LIGHTGUI_DataModel::update ( SalomeApp_DataObject*, SalomeApp_Study* ) +{ + // Nothing to do here: we always keep the data tree in the up-to-date state + // The only goal of this method is to hide default behavior from SalomApp_DataModel + return; +} + +//================================================================================= +// function : loadFile() +// purpose : loads text data from the file +//================================================================================= +bool LIGHTGUI_DataModel::loadFile ( const QString& theFileName, CAM_Study* study ) +{ + if ( theFileName.isEmpty() ) return false; + + myFileName = theFileName; + + QStringList lines; + QFile file ( myFileName ); + if ( file.open( IO_ReadOnly ) ) { + QTextStream stream ( &file ); + QString line; + while ( !stream.eof() ) { + line = stream.readLine(); // line of text excluding '\n' + lines += line; + } + file.close(); + + if ( !study ) + study = getStudy(); + buildTree( study->root(), lines ); + + return true; + } + + return false; +} + +//================================================================================= +// function : dumpFile() +// purpose : saves text data to the file +//================================================================================= +bool LIGHTGUI_DataModel::dumpFile ( const QString& theFileName ) +{ + QString aFileName = theFileName; + if ( aFileName.isEmpty() ) + aFileName = myFileName; + + if ( aFileName.isEmpty() ) return false; + + QStringList lines; + for ( SUIT_DataObjectIterator it( root(), SUIT_DataObjectIterator::DepthLeft ); it.current(); ++it ) { + LIGHTGUI_DataObject* obj = dynamic_cast( it.current() ); + if ( obj && obj->lineNb() > 0 ) + lines.insert( lines.at( obj->lineNb()-1 ), obj->lineText() ); + } + + QFile file ( aFileName ); + if ( file.open( IO_WriteOnly ) ) { + QTextStream stream ( &file ); + QStringList::Iterator it = lines.begin(); + for ( ; it != lines.end(); ++it ) { + stream << *it << "\n"; + } + file.close(); + + myFileName = aFileName; + return true; + } + + return false; +} + +//================================================================================= +// function : fileName() +// purpose : gets a name of text file previously loaded or saved +//================================================================================= +QString LIGHTGUI_DataModel::fileName () const +{ + return myFileName; +} + +//================================================================================= +// function : getLineText() +// purpose : gets text from the given line +//================================================================================= +QString LIGHTGUI_DataModel::getLineText ( const int thePosition ) const +{ + QString aText; + + LIGHTGUI_DataObject* obj = findObject( thePosition ); + if ( obj ) + aText = obj->lineText(); + + return aText; +} + +//================================================================================= +// function : setLineText() +// purpose : sets new text to the given line +//================================================================================= +bool LIGHTGUI_DataModel::setLineText ( const int thePosition, const QString& theText ) +{ + if ( thePosition <= 0 ) return false; + LIGHTGUI_DataObject* obj = findObject( thePosition ); + if ( obj ) { + if ( theText.stripWhiteSpace().isEmpty() && !obj->lineText().stripWhiteSpace().isEmpty() || + !theText.stripWhiteSpace().isEmpty() && obj->lineText().stripWhiteSpace().isEmpty() ) { + if ( obj->lineText().stripWhiteSpace().isEmpty() ) { + // paragraph becomes a text line + SUIT_DataObject* newParent = obj->prevBrother(); + if ( newParent ) { + obj->setParent( newParent ); + while ( SUIT_DataObject* first = obj->firstChild() ) + first->setParent( newParent ); + } + } + else { + // text line becomes a paragraph + SUIT_DataObject* parent = obj->parent(); + SUIT_DataObject* modelRoot = parent ? parent->parent() : 0; + if ( modelRoot && parent ) { + int pos = parent->childPos( obj ); + modelRoot->insertChild( obj, modelRoot->childPos( parent )+1 ); + while ( SUIT_DataObject* next = parent->childObject( pos ) ) + obj->appendChild( next ); + } + } + } + obj->setLineText( theText ); + return true; + } + return false; +} + +//================================================================================= +// function : insertLineBefore() +// purpose : inserts the text line before the given one or appends a new line +//================================================================================= +bool LIGHTGUI_DataModel::insertLineBefore ( const int thePosition, const QString& theText ) +{ + // Insert new line before the item at thePosition in the list, + // or at the end() if thePosition is out of range + LIGHTGUI_ModuleObject* modelRoot = dynamic_cast( root() ); + if ( !modelRoot ) + return false; + if ( thePosition > 0 ) { + LIGHTGUI_DataObject* obj = findObject( thePosition ); + if ( !obj || !obj->parent() ) + return false; + SUIT_DataObject* parent = obj->parent(); + if ( theText.stripWhiteSpace().isEmpty() ) { + // insert new paragraph + if ( obj->lineText().stripWhiteSpace().isEmpty() ) { + int pos = modelRoot->childPos( obj ); + modelRoot->insertChild( new LIGHTGUI_DataObject( theText, 0 ), pos ); + } + else { + int pos = parent->childPos( obj ); + LIGHTGUI_DataObject* newObj = new LIGHTGUI_DataObject( theText, 0 ); + modelRoot->insertChild( newObj, modelRoot->childPos( parent )+1 ); + while ( SUIT_DataObject* next = parent->childObject( pos ) ) + newObj->appendChild( next ); + } + } + else { + // insert new text line + if ( obj->lineText().stripWhiteSpace().isEmpty() ) { + SUIT_DataObject* prevParent = obj->prevBrother(); + if ( prevParent ) + prevParent->appendChild( new LIGHTGUI_DataObject( theText, prevParent ) ); + } + else { + int pos = parent->childPos( obj ); + parent->insertChild( new LIGHTGUI_DataObject( theText, 0 ), pos ); + } + } + } + else { + // append new paragraph/line + theText.stripWhiteSpace().isEmpty() ? new LIGHTGUI_DataObject( theText, modelRoot ) : + new LIGHTGUI_DataObject( theText, modelRoot->lastChild() ); + } + return true; +} + +//================================================================================= +// function : deleteTextLine() +// purpose : remove text line at the given position +//================================================================================= +bool LIGHTGUI_DataModel::deleteTextLine( const int thePosition ) +{ + LIGHTGUI_ModuleObject* modelRoot = dynamic_cast( root() ); + if ( !modelRoot ) + return false; + if ( thePosition <= 0 ) + return false; + LIGHTGUI_DataObject* obj = findObject( thePosition ); + if ( !obj || !obj->parent() ) + return false; + + if ( obj->lineText().stripWhiteSpace().isEmpty() ) { + // if paragraph : put all child lines to the previous paragraph + SUIT_DataObject* newParent = obj->prevBrother(); + if ( newParent ) { + while ( SUIT_DataObject* first = obj->firstChild() ) + first->setParent( newParent ); + } + } + obj->parent()->removeChild( obj ); + return true; +} + +//================================================================================= +// function : clearAll() +// purpose : removes all text lines +//================================================================================= +void LIGHTGUI_DataModel::clearAll() +{ + buildTree( getStudy()->root(), QStringList() ); +} + +//================================================================================= +// function : buildTree() +// purpose : rebuilds data tree +//================================================================================= +void LIGHTGUI_DataModel::buildTree ( SUIT_DataObject* studyRoot, const QStringList& lines ) +{ + if ( !studyRoot ) + return; + + LIGHTGUI_ModuleObject* modelRoot = new LIGHTGUI_ModuleObject( this, studyRoot ); + CAM_DataObject* aParaObject, aLineObject; + + aParaObject = new LIGHTGUI_DataObject ( "", modelRoot ); + + QStringList::ConstIterator it1 = lines.begin(), + it2 = lines.end(); + for ( ; it1 != it2; ++it1 ) { + if ( (*it1).stripWhiteSpace().isEmpty() ) { + aParaObject = new LIGHTGUI_DataObject ( *it1, modelRoot ); + } + else { + aLineObject = new LIGHTGUI_DataObject ( *it1, aParaObject ); + } + } + + modelRoot->setDataModel( this ); + setRoot( modelRoot ); +} + +//================================================================================= +// function : findObject() +// purpose : finds a data object corresponding to the given line number +//================================================================================= +LIGHTGUI_DataObject* LIGHTGUI_DataModel::findObject( const int thePosition ) const +{ + for ( SUIT_DataObjectIterator it( root(), SUIT_DataObjectIterator::DepthLeft ); it.current(); ++it ) { + LIGHTGUI_DataObject* obj = dynamic_cast( it.current() ); + if ( obj && obj->lineNb() == thePosition ) + return obj; + } + return 0; +} diff --git a/src/LIGHTGUI/LIGHTGUI_DataModel.h b/src/LIGHTGUI/LIGHTGUI_DataModel.h new file mode 100644 index 0000000..4cf4c57 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataModel.h @@ -0,0 +1,78 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_DATAMODEL_H +#define LIGHTGUI_DATAMODEL_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include + +class CAM_Module; +class SalomeApp_Study; +class LIGHTGUI_DataObject; + +class LIGHTGUI_DataModel : public SalomeApp_DataModel +{ + Q_OBJECT + +public: + LIGHTGUI_DataModel ( CAM_Module* theModule ); + virtual ~LIGHTGUI_DataModel(); + + virtual bool open ( const QString&, CAM_Study* ); + virtual bool save (); + virtual bool saveAs ( const QString&, CAM_Study* ); + virtual bool close (); + virtual bool create ( CAM_Study* ); + + virtual bool isModified () const; + virtual bool isSaved () const; + + virtual void update ( SalomeApp_DataObject* = 0, SalomeApp_Study* = 0 ); + + bool loadFile ( const QString&, CAM_Study* study = 0 ); + bool dumpFile ( const QString& = QString::null ); + QString fileName () const; + + QString getLineText ( const int thePosition ) const; + bool setLineText ( const int thePosition, const QString& theText ); + bool insertLineBefore ( const int thePosition, const QString& theText ); + bool deleteTextLine ( const int thePosition ); + + void clearAll (); + +private: + void buildTree ( SUIT_DataObject*, const QStringList& ); + LIGHTGUI_DataObject* findObject ( const int ) const; + +private: + QString myFileName; + QString myStudyURL; +}; + +#endif // LIGHTGUI_DATAMODEL_H diff --git a/src/LIGHTGUI/LIGHTGUI_DataObject.cxx b/src/LIGHTGUI/LIGHTGUI_DataObject.cxx new file mode 100644 index 0000000..457cbc9 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataObject.cxx @@ -0,0 +1,177 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#include "LIGHTGUI_DataObject.h" +#include +#include + +/*! + * Class: LIGHTGUI_DataObject + * Description: LIGHT module's data object + */ + +//================================================================================= +// function : LIGHTGUI_DataObject() +// purpose : default constructor +//================================================================================= +LIGHTGUI_DataObject::LIGHTGUI_DataObject ( SUIT_DataObject* parent ) + : CAM_DataObject( parent ) +{ +} + +//================================================================================= +// function : LIGHTGUI_DataObject() +// purpose : constructor +//================================================================================= +LIGHTGUI_DataObject::LIGHTGUI_DataObject ( const QString& line_text, SUIT_DataObject* parent ) + : CAM_DataObject( parent ), + myLineTxt( line_text ) +{ +} + +//================================================================================= +// function : ~LIGHTGUI_DataObject() +// purpose : destructor +//================================================================================= +LIGHTGUI_DataObject::~LIGHTGUI_DataObject() +{ +} + +//================================================================================= +// function : name() +// purpose : gets an name of the object +//================================================================================= +QString LIGHTGUI_DataObject::name() const +{ + return myLineTxt.stripWhiteSpace().isEmpty() ? QObject::tr( "LIGHT_PARAGRAPH" ) : myLineTxt ; +} + +//================================================================================= +// function : icon() +// purpose : gets an icon for the data object +//================================================================================= +QPixmap LIGHTGUI_DataObject::icon() const +{ + static QPixmap pxp = SUIT_Session::session()->resourceMgr()->loadPixmap( "LIGHT", QObject::tr( "ICON_PARAGRAPH" ), false ); + static QPixmap pxl = SUIT_Session::session()->resourceMgr()->loadPixmap( "LIGHT", QObject::tr( "ICON_LINE" ), false ); + return myLineTxt.stripWhiteSpace().isEmpty() ? pxp : pxl; +} + +//================================================================================= +// function : toolTip() +// purpose : gets a tooltip for the object (to be displayed in the Object Browser) +//================================================================================= +QString LIGHTGUI_DataObject::toolTip() const +{ + return lineText().stripWhiteSpace().isEmpty() ? + QString( QObject::tr( "LIGHT_PARAGRAPH") + " %1" ).arg( parent()->childPos( this ) + 1 ) : + QString( QObject::tr( "LIGHT_LINE" ) + " %1: %2" ).arg( lineNb() ).arg( lineText() ); +} + +//================================================================================= +// function : lineText() +// purpose : gets line text +//================================================================================= +QString LIGHTGUI_DataObject::lineText() const +{ + return myLineTxt; +} + +//================================================================================= +// function : setLineText() +// purpose : sets line text +//================================================================================= +void LIGHTGUI_DataObject::setLineText( const QString& text ) +{ + myLineTxt = text; +} + +//================================================================================= +// function : lineNb() +// purpose : gets the line number +//================================================================================= +int LIGHTGUI_DataObject::lineNb() const +{ + if ( level() == 1 ) // root object + return -1; + int pos = 0; + if ( parent() ) { + SUIT_DataObject* o = (SUIT_DataObject*)this; + if ( level() == 3 ) { + pos += parent()->childPos( this ) + 1; + o = parent(); + } + o = o->prevBrother(); + while ( o ) { + pos += o->childCount() + 1; + o = o->prevBrother(); + } + } + return pos; +} + +/*! + * Class: LIGHTGUI_ModuleObject + * Description: LIGHT module's root data object + */ + +//================================================================================= +// function : LIGHTGUI_ModuleObject() +// purpose : one more constructor +//================================================================================= +LIGHTGUI_ModuleObject::LIGHTGUI_ModuleObject ( CAM_DataModel* dm, SUIT_DataObject* parent ) + : LIGHTGUI_DataObject( parent ), + CAM_RootObject( dm, parent ), + CAM_DataObject( parent ) +{ +} + +//================================================================================= +// function : name() +// purpose : gets an name of the root object +//================================================================================= +QString LIGHTGUI_ModuleObject::name() const +{ + return QObject::tr( "LIGHT_LIGHT" ); +} + +//================================================================================= +// function : icon() +// purpose : gets an icon for the root object +//================================================================================= +QPixmap LIGHTGUI_ModuleObject::icon() const +{ + static QPixmap px = SUIT_Session::session()->resourceMgr()->loadPixmap( "LIGHT", QObject::tr( "ICON_LIGHT" ), false ); + return px; +} + +//================================================================================= +// function : toolTip() +// purpose : gets a tootip for the root object +//================================================================================= +QString LIGHTGUI_ModuleObject::toolTip() const +{ + return QObject::tr( "LIGHT_ROOT_TOOLTIP" ); +} diff --git a/src/LIGHTGUI/LIGHTGUI_DataObject.h b/src/LIGHTGUI/LIGHTGUI_DataObject.h new file mode 100644 index 0000000..0a942e4 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataObject.h @@ -0,0 +1,71 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_DATAOBJECT_H +#define LIGHTGUI_DATAOBJECT_H + +#include +#include + +#include + +/*! + * LIGHTGUI_DataObject - LIGHT module's data object class + */ +class LIGHTGUI_DataObject : public virtual CAM_DataObject +{ +public: + LIGHTGUI_DataObject ( SUIT_DataObject* = 0 ); + LIGHTGUI_DataObject ( const QString&, SUIT_DataObject* = 0 ); + virtual ~LIGHTGUI_DataObject(); + + QString name() const; + QPixmap icon() const; + QString toolTip() const; + + QString lineText() const; + void setLineText( const QString& ); + int lineNb() const; + +private: + QString myLineTxt; +}; + +/*! + * LIGHTGUI_ModuleObject - LIGHT module's root data object class + */ + +class LIGHTGUI_ModuleObject : public LIGHTGUI_DataObject, + public CAM_RootObject +{ +public: + LIGHTGUI_ModuleObject ( CAM_DataModel*, SUIT_DataObject* = 0 ); + + QString name() const; + QPixmap icon() const; + QString toolTip() const; +}; + +#endif // LIGHTGUI_DATAOBJECT_H diff --git a/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx b/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx new file mode 100644 index 0000000..a3df0e7 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataOwner.cxx @@ -0,0 +1,64 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#include "LIGHTGUI_DataOwner.h" + +//================================================================================= +// function : LIGHTGUI_DataOwner() +// purpose : constructor +//================================================================================= +LIGHTGUI_DataOwner::LIGHTGUI_DataOwner ( const int theLineNb ) + : myLineNb( theLineNb ) +{ +} + +//================================================================================= +// function : ~LIGHTGUI_DataOwner() +// purpose : destructor +//================================================================================= +LIGHTGUI_DataOwner::~LIGHTGUI_DataOwner() +{ +} + +//================================================================================= +// function : isEqual() +// purpose : compares two owners +//================================================================================= +bool LIGHTGUI_DataOwner::isEqual ( const SUIT_DataOwner& obj ) const +{ + const LIGHTGUI_DataOwner* other = + dynamic_cast( &obj ); + + return other && lineNb() == other->lineNb(); +} + +//================================================================================= +// function : lineNb() +// purpose : returns owner id +//================================================================================= +int LIGHTGUI_DataOwner::lineNb() const +{ + return myLineNb; +} diff --git a/src/LIGHTGUI/LIGHTGUI_DataOwner.h b/src/LIGHTGUI/LIGHTGUI_DataOwner.h new file mode 100644 index 0000000..e8b3c3b --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_DataOwner.h @@ -0,0 +1,44 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_DATAOWNER_H +#define LIGHTGUI_DATAOWNER_H + +#include + +class LIGHTGUI_DataOwner : public SUIT_DataOwner +{ +public: + LIGHTGUI_DataOwner ( const int ); + virtual ~LIGHTGUI_DataOwner (); + + virtual bool isEqual ( const SUIT_DataOwner& ) const; + int lineNb () const; + +private: + int myLineNb; +}; + +#endif // LIGHTGUI_DATAOWNER_H diff --git a/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx b/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx new file mode 100644 index 0000000..e1e3e11 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_OBSelector.cxx @@ -0,0 +1,125 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#include "LIGHTGUI_OBSelector.h" +#include "LIGHTGUI_DataOwner.h" +#include "LIGHTGUI_DataObject.h" + +#include + +#include + +//================================================================================= +// function : LIGHTGUI_OBSelector() +// purpose : constructor +//================================================================================= +LIGHTGUI_OBSelector::LIGHTGUI_OBSelector ( OB_Browser* ob, SUIT_SelectionMgr* mgr ) + : SUIT_Selector( mgr, ob ), + myBrowser( ob ) +{ + if ( myBrowser ) { + connect( myBrowser, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) ); + } +} + +//================================================================================= +// function : ~LIGHTGUI_OBSelector() +// purpose : destructor +//================================================================================= +LIGHTGUI_OBSelector::~LIGHTGUI_OBSelector() +{ +} + +//================================================================================= +// function : browser() +// purpose : gets object browser +//================================================================================= +OB_Browser* LIGHTGUI_OBSelector::browser() const +{ + return myBrowser; +} + +//================================================================================= +// function : getSelection() +// purpose : gets selection +//================================================================================= +void LIGHTGUI_OBSelector::getSelection ( SUIT_DataOwnerPtrList& aList ) const +{ + if ( !myBrowser ) + return; + + DataObjectList objlist; + myBrowser->getSelected( objlist ); + for ( DataObjectListIterator it ( objlist ); it.current(); ++it ) + { + LIGHTGUI_DataObject* obj = dynamic_cast( it.current() ); + if ( obj ) + aList.append( SUIT_DataOwnerPtr( new LIGHTGUI_DataOwner( obj->lineNb() ) ) ); + } +} + +//================================================================================= +// function : setSelection() +// purpose : sets selection +//================================================================================= +void LIGHTGUI_OBSelector::setSelection ( const SUIT_DataOwnerPtrList& aList ) +{ + if ( !myBrowser ) + return; + + // Fill map of all data objects + QMap aMap; + + SUIT_DataObjectIterator objit ( myBrowser->getRootObject(), + SUIT_DataObjectIterator::DepthLeft ); + for ( ; objit.current(); ++objit ) + { + LIGHTGUI_DataObject* obj = dynamic_cast( objit.current() ); + if ( obj ) + aMap.insert( obj->lineNb(), obj ); + } + + // Fill list with all selected data objects + DataObjectList objList; + SUIT_DataOwnerPtrList::const_iterator ownit = aList.begin(); + for ( ; ownit != aList.end(); ++ownit ) + { + const LIGHTGUI_DataOwner* owner = + dynamic_cast( (*ownit).get() ); + if ( owner && aMap.contains( owner->lineNb() ) ) + objList.append( aMap[owner->lineNb()] ); + } + + myBrowser->setSelected( objList ); +} + +//================================================================================= +// function : onSelectionChanged() +// purpose : called when selection is changed in the Object Browser +//================================================================================= +void LIGHTGUI_OBSelector::onSelectionChanged() +{ + selectionChanged(); +} diff --git a/src/LIGHTGUI/LIGHTGUI_OBSelector.h b/src/LIGHTGUI/LIGHTGUI_OBSelector.h new file mode 100644 index 0000000..1a0687a --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_OBSelector.h @@ -0,0 +1,56 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_OBSELECTOR_H +#define LIGHTGUI_OBSELECTOR_H + +#include + +class OB_Browser; + +class LIGHTGUI_OBSelector : public SUIT_Selector +{ + Q_OBJECT + +public: + LIGHTGUI_OBSelector ( OB_Browser*, SUIT_SelectionMgr* ); + virtual ~LIGHTGUI_OBSelector (); + + OB_Browser* browser () const; + + virtual QString type () const { return "ObjectBrowser"; } + +private slots: + void onSelectionChanged (); + +protected: + virtual void getSelection ( SUIT_DataOwnerPtrList& ) const; + virtual void setSelection ( const SUIT_DataOwnerPtrList& ); + +private: + OB_Browser* myBrowser; +}; + +#endif // LIGHTGUI_OBSELECTOR_H diff --git a/src/LIGHTGUI/LIGHTGUI_Selection.cxx b/src/LIGHTGUI/LIGHTGUI_Selection.cxx new file mode 100644 index 0000000..82db12c --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_Selection.cxx @@ -0,0 +1,83 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#include "LIGHTGUI_Selection.h" +#include "LIGHTGUI_DataOwner.h" + +#include + +//================================================================================= +// function : LIGHTGUI_Selection() +// purpose : constructor +//================================================================================= +LIGHTGUI_Selection::LIGHTGUI_Selection ( const QString& client, + SalomeApp_SelectionMgr* mgr ) +{ + myPopupClient = client; + + if ( mgr ) { + SUIT_DataOwnerPtrList sel; + mgr->selected( sel); + SUIT_DataOwnerPtrList::const_iterator anIt = sel.begin(), + aLast = sel.end(); + for ( ; anIt != aLast; anIt++ ) { + SUIT_DataOwner* owner = (SUIT_DataOwner*)( (*anIt).get() ); + LIGHTGUI_DataOwner* sowner = dynamic_cast( owner ); + if ( sowner && sowner->lineNb() > 0 ) + myTypes.append( "TextLine" ); + else + myTypes.append( "Unknown" ); + } + } +} + +//================================================================================= +// function : ~LIGHTGUI_Selection() +// purpose : destructor +//================================================================================= +LIGHTGUI_Selection::~LIGHTGUI_Selection() +{ +} + +//================================================================================= +// function : count() +// purpose : returns number of supported types +//================================================================================= +int LIGHTGUI_Selection::count() const +{ + return myTypes.count(); +} + +//================================================================================= +// function : param() +// purpose : returns selection parameter value +//================================================================================= +QtxValue LIGHTGUI_Selection::param ( const int ind, const QString& p ) const +{ + if ( p == "client" ) + return myPopupClient; + else + return myTypes[ind]; +} diff --git a/src/LIGHTGUI/LIGHTGUI_Selection.h b/src/LIGHTGUI/LIGHTGUI_Selection.h new file mode 100644 index 0000000..f28cd78 --- /dev/null +++ b/src/LIGHTGUI/LIGHTGUI_Selection.h @@ -0,0 +1,47 @@ +// LIGHT : sample (no-corba-engine) SALOME module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// Author : Julia DOROVSKIKH +// Date : 01/01/2005 +// $Header$ + +#ifndef LIGHTGUI_SELECTION_H +#define LIGHTGUI_SELECTION_H + +#include + +class SalomeApp_SelectionMgr; + +class LIGHTGUI_Selection : public QtxPopupMgr::Selection +{ +public: + LIGHTGUI_Selection ( const QString&, SalomeApp_SelectionMgr* ); + virtual ~LIGHTGUI_Selection (); + + virtual int count () const; + virtual QtxValue param ( const int, const QString& ) const; + +private: + QString myPopupClient; + QStringList myTypes; +}; + +#endif // LIGHTGUI_SELECTION_H diff --git a/src/LIGHTGUI/LIGHT_images.po b/src/LIGHTGUI/LIGHT_images.po new file mode 100644 index 0000000..c0e5b0a --- /dev/null +++ b/src/LIGHTGUI/LIGHT_images.po @@ -0,0 +1,41 @@ +# LIGHT : sample (no-corba-engine) SALOME component +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Julia DOROVSKIKH +# Date : 01/06/2005 +# $Header$ + +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2001-06-14 09:11:49 PM CEST\n" +"PO-Revision-Date: YYYY-MM-DD\n" +"Last-Translator: FULLNAME \n" +"Content-Type: text/plain; charset=iso-8859-1\n" + +msgid "ICON_PARAGRAPH" +msgstr "paragraph_icon.png" + +msgid "ICON_LINE" +msgstr "line_icon.png" + +msgid "ICON_LIGHT" +msgstr "LIGHT.png" diff --git a/src/LIGHTGUI/LIGHT_msg_en.po b/src/LIGHTGUI/LIGHT_msg_en.po new file mode 100644 index 0000000..f99176a --- /dev/null +++ b/src/LIGHTGUI/LIGHT_msg_en.po @@ -0,0 +1,157 @@ +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Julia DOROVSKIKH +# Date : 01/06/2005 +# $Header$ + +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2001-09-21 14:31:28 METDST\n" +"PO-Revision-Date: YYYY-MM-DD\n" +"Last-Translator: FULLNAME \n" +"Content-Type: text/plain; charset=iso-8859-1\n" + + +# Menu items + +msgid "TOP_LOAD_FILE" +msgstr "Load text file" + +msgid "MEN_LOAD_FILE" +msgstr "Load text file" + +msgid "STB_LOAD_FILE" +msgstr "Load text file" + + +msgid "TOP_SAVE_FILE" +msgstr "Save text file" + +msgid "MEN_SAVE_FILE" +msgstr "Save text file" + +msgid "STB_SAVE_FILE" +msgstr "Save text file" + + +msgid "TOP_EDIT_LINE" +msgstr "Edit line" + +msgid "MEN_EDIT_LINE" +msgstr "Edit selected line" + +msgid "STB_EDIT_LINE" +msgstr "Edit selected line" + + +msgid "TOP_ADD_LINE" +msgstr "Add line" + +msgid "MEN_ADD_LINE" +msgstr "Insert new text line" + +msgid "STB_ADD_LINE" +msgstr "Insert new line before the selected one" + + +msgid "TOP_DEL_LINE" +msgstr "Remove line" + +msgid "MEN_DEL_LINE" +msgstr "Remove line" + +msgid "STB_DEL_LINE" +msgstr "Remove selected line" + + +msgid "TOP_CLEAR_ALL" +msgstr "Clear all" + +msgid "MEN_CLEAR_ALL" +msgstr "Clear all" + +msgid "STB_CLEAR_ALL" +msgstr "Remove all text lines" + + +msgid "MEN_FILE" +msgstr "&File" + +msgid "MEN_LIGHT" +msgstr "LIGHT" + +# File dialog + +msgid "LIGHTGUI::LIGHTGUI_MEN_TXT_FILES" +msgstr "Text Files ( *.txt )" + +msgid "LIGHTGUI::LIGHTGUI_MEN_ALL_FILES" +msgstr "All Files ( * )" + +msgid "LIGHTGUI::LIGHTGUI_MEN_LOAD" +msgstr "Load" + +msgid "LIGHTGUI::LIGHTGUI_MEN_DUMP" +msgstr "Dump" + +msgid "LIGHTGUI::LIGHTGUI_EDIT_LINE" +msgstr "Edit selected line" + +msgid "LIGHTGUI::LIGHTGUI_ADD_LINE" +msgstr "Add new line before the selected one" + +msgid "LIGHT_LIGHT" +msgstr "LIGHT" + +msgid "WRN_WARNING" +msgstr "Warning!" + +msgid "WRN_LOAD_FAILED" +msgstr "Loading file is failed!" + +msgid "BUT_OK" +msgstr "&OK" + +msgid "WRN_DUMP_FAILED" +msgstr "Dumping file is failed!" + +msgid "WRN_SELECT_LINE" +msgstr "Wrong selection!" + +msgid "WRN_EDIT_FAILED" +msgstr "Can't edit line!" + +msgid "WRN_UNKNOWN_COMMAND" +msgstr "Unrecognized command!" + +msgid "WRN_DELETE_FAILED" +msgstr "Can't delete line" + +msgid "LIGHT_PARAGRAPH" +msgstr "Paragraph" + +msgid "LIGHT_LINE" +msgstr "Line" + +msgid "LIGHT_ROOT_TOOLTIP" +msgstr "LIGHT module root object" \ No newline at end of file diff --git a/src/LIGHTGUI/Makefile.in b/src/LIGHTGUI/Makefile.in new file mode 100644 index 0000000..0528404 --- /dev/null +++ b/src/LIGHTGUI/Makefile.in @@ -0,0 +1,71 @@ +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Julia DOROVSKIKH +# Date : 01/06/2005 +# $Header$ + +top_srcdir=@top_srcdir@ +top_builddir=../.. +srcdir=@srcdir@ +VPATH=.:$(srcdir) + +@COMMENCE@ + +# header files +EXPORT_HEADERS = + +# .po resources files +PO_FILES = \ + LIGHT_images.po \ + LIGHT_msg_en.po + +# Library target +LIB = libLIGHT.la + +# Library sources +LIB_SRC = \ + LIGHTGUI.cxx \ + LIGHTGUI_Selection.cxx \ + LIGHTGUI_DataObject.cxx \ + LIGHTGUI_DataOwner.cxx \ + LIGHTGUI_DataModel.cxx \ + LIGHTGUI_OBSelector.cxx + +# MOC pre-processing +LIB_MOC = \ + LIGHTGUI.h \ + LIGHTGUI_DataModel.h \ + LIGHTGUI_OBSelector.h + +# additionnal compilation flags +CPPFLAGS += \ + $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) -I${BOOSTDIR} \ + -I${KERNEL_ROOT_DIR}/include/salome \ + -I${GUI_ROOT_DIR}/include/salome + +# additionnal linkage flags +LDFLAGS += \ + -lSalomeApp \ + -L${KERNEL_ROOT_DIR}/lib/salome \ + -L${GUI_ROOT_DIR}/lib/salome + +@CONCLUDE@ diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..cfb50ca --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,44 @@ +# LIGHT : sample (no-corba-engine) SALOME module +# +# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +# +# Author : Julia DOROVSKIKH +# Date : 01/06/2005 +# $Header$ + +top_srcdir=@top_srcdir@ +top_builddir=.. +srcdir=@srcdir@ +VPATH=.:@srcdir@ + +@COMMENCE@ + +ifeq (@WITHIHM@,yes) +SUBDIRS = LIGHTGUI +endif + +ifeq (@WITHIHM@,no) +SUBDIRS = +endif + +LDFLAGS= -L$(top_builddir)/lib/salome +LDFLAGSFORBIN= -L$(top_builddir)/lib/salome + +@MODULE@ -- 2.39.2