[med-svn] [runcircos-gui] 01/02: New upstream version 0.0+20160403
Andreas Tille
tille at debian.org
Wed Mar 15 12:49:13 UTC 2017
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository runcircos-gui.
commit 725c0acaf787158d03f4157539723119329adb86
Author: Andreas Tille <tille at debian.org>
Date: Wed Mar 15 13:48:34 2017 +0100
New upstream version 0.0+20160403
---
.gitignore | 34 +
.travis.yml | 10 +
Changelog | 1 +
LICENSE | 339 +++++++++
README.md | 20 +
appveyor.yml | 9 +
data/about_image.png | Bin 0 -> 128120 bytes
data/icons.qrc | 30 +
data/icons/application-exit.png | Bin 0 -> 8559 bytes
data/icons/application-pdf.png | Bin 0 -> 9629 bytes
data/icons/application-x-shellscript.png | Bin 0 -> 4892 bytes
data/icons/configure.png | Bin 0 -> 74227 bytes
data/icons/document-edit.png | Bin 0 -> 19381 bytes
data/icons/document-new.png | Bin 0 -> 8084 bytes
data/icons/document-open-folder.png | Bin 0 -> 40112 bytes
data/icons/document-open.png | Bin 0 -> 12971 bytes
data/icons/document-save.png | Bin 0 -> 7705 bytes
data/icons/edit-clear.png | Bin 0 -> 111099 bytes
data/icons/edit-copy.png | Bin 0 -> 11828 bytes
data/icons/edit-cut.png | Bin 0 -> 23071 bytes
data/icons/edit-paste.png | Bin 0 -> 7103 bytes
data/icons/folder.png | Bin 0 -> 2457 bytes
data/icons/help-about.png | Bin 0 -> 4322 bytes
data/icons/help-contents.png | Bin 0 -> 19794 bytes
data/icons/media-playback-start.png | Bin 0 -> 64931 bytes
data/icons/package-install.png | Bin 0 -> 39301 bytes
data/icons/runcircos-gui.ico | Bin 0 -> 105662 bytes
data/icons/runcircos-gui.png | Bin 0 -> 110525 bytes
data/icons/runcircos-gui2.ico | Bin 0 -> 105662 bytes
data/icons/runcircos-gui2.png | Bin 0 -> 110579 bytes
data/icons/stop.png | Bin 0 -> 414 bytes
data/icons/terminal.png | Bin 0 -> 44410 bytes
data/splash.png | Bin 0 -> 372063 bytes
data/treat-png.txt | 6 +
src/aboutbox.cpp | 40 +
src/aboutbox.h | 41 +
src/aboutbox.ui | 132 ++++
src/iconloader.cpp | 46 ++
src/iconloader.h | 31 +
src/main.cpp | 46 ++
src/mainwindow.cpp | 1210 ++++++++++++++++++++++++++++++
src/mainwindow.h | 203 +++++
src/mainwindow.ui | 827 ++++++++++++++++++++
src/moduleinstaller.cpp | 209 ++++++
src/moduleinstaller.h | 46 ++
src/moduleinstaller.ui | 55 ++
src/runcircos-gui.pro | 50 ++
src/setbindir.cpp | 71 ++
src/setbindir.h | 45 ++
src/setbindir.ui | 72 ++
src/utils.cpp | 46 ++
src/utils.h | 40 +
52 files changed, 3659 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..04b7a50
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,34 @@
+# C++ objects and libs
+
+*.slo
+*.lo
+*.o
+*.a
+*.la
+*.lai
+*.so
+*.dll
+*.dylib
+
+# Qt-es
+
+/.qmake.cache
+/.qmake.stash
+*.pro.user
+*.pro.user.*
+*.qbs.user
+*.qbs.user.*
+*.moc
+moc_*.cpp
+qrc_*.cpp
+ui_*.h
+Makefile*
+*build-*
+
+# QtCreator
+
+*.autosave
+
+#QtCtreator Qml
+*.qmlproject.user
+*.qmlproject.user.*
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..fe47846
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,10 @@
+dist: trusty
+language: cpp
+before_install:
+ - sudo apt-get update
+ - sudo apt-get install libqt4-dev qt4-qmake
+
+script:
+ - cd src
+ - qmake
+ - make
diff --git a/Changelog b/Changelog
new file mode 100644
index 0000000..8d1c8b6
--- /dev/null
+++ b/Changelog
@@ -0,0 +1 @@
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..23cb790
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cac36aa
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+# runcircos-gui
+[![Build Status](https://travis-ci.org/narunlifescience/runcircos-gui.svg?branch=master)](https://travis-ci.org/narunlifescience/runcircos-gui) [![Build status](https://ci.appveyor.com/api/projects/status/jq6q44uggvokxmgt?svg=true)](https://ci.appveyor.com/project/narunlifescience/runcircos-gui)
+
+runCircos-gui is a simple yet comprehensive crossplatform software devoloped in QT(C++) to execute Circos http://circos.ca/ from a graphical user interface. The software eliminates the need to use command line for running Circos without compremising the power of complete commandline parameters and options.
+
+runCircos-gui optimize running parameters (both toggle options & options with arguments) and install Perl packages without using command
+
+Compiling from source
+---------------------
+
+Get the code (if you haven't already):
+
+ git clone https://github.com/narunlifescience/runcircos-gui.git
+
+Compile and install:
+
+ cd src
+ qmake
+ make
+ sudo make install
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..1fe0544
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,9 @@
+os: unstable
+install:
+ - set QTDIR=C:\Qt\5.5\mingw492_32
+ - set PATH=%PATH%;%QTDIR%\bin;C:\MinGW\bin
+build_script:
+ - cd src
+ - qmake runcircos-gui.pro
+ - mingw32-make
+
diff --git a/data/about_image.png b/data/about_image.png
new file mode 100644
index 0000000..a9f1e49
Binary files /dev/null and b/data/about_image.png differ
diff --git a/data/icons.qrc b/data/icons.qrc
new file mode 100755
index 0000000..e20d239
--- /dev/null
+++ b/data/icons.qrc
@@ -0,0 +1,30 @@
+<RCC>
+ <qresource prefix="/">
+ <file>about_image.png</file>
+ <file>splash.png</file>
+ <file>icons/application-exit.png</file>
+ <file>icons/application-pdf.png</file>
+ <file>icons/application-x-shellscript.png</file>
+ <file>icons/configure.png</file>
+ <file>icons/document-edit.png</file>
+ <file>icons/document-new.png</file>
+ <file>icons/document-open.png</file>
+ <file>icons/document-open-folder.png</file>
+ <file>icons/document-save.png</file>
+ <file>icons/edit-clear.png</file>
+ <file>icons/edit-copy.png</file>
+ <file>icons/edit-cut.png</file>
+ <file>icons/edit-paste.png</file>
+ <file>icons/folder.png</file>
+ <file>icons/help-about.png</file>
+ <file>icons/help-contents.png</file>
+ <file>icons/media-playback-start.png</file>
+ <file>icons/package-install.png</file>
+ <file>icons/runcircos-gui2.png</file>
+ <file>icons/runcircos-gui2.ico</file>
+ <file>icons/runcircos-gui.png</file>
+ <file>icons/runcircos-gui.ico</file>
+ <file>icons/stop.png</file>
+ <file>icons/terminal.png</file>
+ </qresource>
+</RCC>
diff --git a/data/icons/application-exit.png b/data/icons/application-exit.png
new file mode 100644
index 0000000..58a7864
Binary files /dev/null and b/data/icons/application-exit.png differ
diff --git a/data/icons/application-pdf.png b/data/icons/application-pdf.png
new file mode 100644
index 0000000..98b6309
Binary files /dev/null and b/data/icons/application-pdf.png differ
diff --git a/data/icons/application-x-shellscript.png b/data/icons/application-x-shellscript.png
new file mode 100644
index 0000000..2f94d2f
Binary files /dev/null and b/data/icons/application-x-shellscript.png differ
diff --git a/data/icons/configure.png b/data/icons/configure.png
new file mode 100644
index 0000000..bbd3def
Binary files /dev/null and b/data/icons/configure.png differ
diff --git a/data/icons/document-edit.png b/data/icons/document-edit.png
new file mode 100644
index 0000000..6ab8b24
Binary files /dev/null and b/data/icons/document-edit.png differ
diff --git a/data/icons/document-new.png b/data/icons/document-new.png
new file mode 100644
index 0000000..4515f83
Binary files /dev/null and b/data/icons/document-new.png differ
diff --git a/data/icons/document-open-folder.png b/data/icons/document-open-folder.png
new file mode 100644
index 0000000..5b7088e
Binary files /dev/null and b/data/icons/document-open-folder.png differ
diff --git a/data/icons/document-open.png b/data/icons/document-open.png
new file mode 100644
index 0000000..a15eb68
Binary files /dev/null and b/data/icons/document-open.png differ
diff --git a/data/icons/document-save.png b/data/icons/document-save.png
new file mode 100644
index 0000000..f086a41
Binary files /dev/null and b/data/icons/document-save.png differ
diff --git a/data/icons/edit-clear.png b/data/icons/edit-clear.png
new file mode 100644
index 0000000..b472f0e
Binary files /dev/null and b/data/icons/edit-clear.png differ
diff --git a/data/icons/edit-copy.png b/data/icons/edit-copy.png
new file mode 100644
index 0000000..5956f83
Binary files /dev/null and b/data/icons/edit-copy.png differ
diff --git a/data/icons/edit-cut.png b/data/icons/edit-cut.png
new file mode 100644
index 0000000..74f07ab
Binary files /dev/null and b/data/icons/edit-cut.png differ
diff --git a/data/icons/edit-paste.png b/data/icons/edit-paste.png
new file mode 100644
index 0000000..3a041ac
Binary files /dev/null and b/data/icons/edit-paste.png differ
diff --git a/data/icons/folder.png b/data/icons/folder.png
new file mode 100644
index 0000000..28e6978
Binary files /dev/null and b/data/icons/folder.png differ
diff --git a/data/icons/help-about.png b/data/icons/help-about.png
new file mode 100644
index 0000000..af0a9d4
Binary files /dev/null and b/data/icons/help-about.png differ
diff --git a/data/icons/help-contents.png b/data/icons/help-contents.png
new file mode 100644
index 0000000..deda7aa
Binary files /dev/null and b/data/icons/help-contents.png differ
diff --git a/data/icons/media-playback-start.png b/data/icons/media-playback-start.png
new file mode 100644
index 0000000..d1ec1b1
Binary files /dev/null and b/data/icons/media-playback-start.png differ
diff --git a/data/icons/package-install.png b/data/icons/package-install.png
new file mode 100644
index 0000000..bb57045
Binary files /dev/null and b/data/icons/package-install.png differ
diff --git a/data/icons/runcircos-gui.ico b/data/icons/runcircos-gui.ico
new file mode 100644
index 0000000..967cc18
Binary files /dev/null and b/data/icons/runcircos-gui.ico differ
diff --git a/data/icons/runcircos-gui.png b/data/icons/runcircos-gui.png
new file mode 100644
index 0000000..fbdfd6b
Binary files /dev/null and b/data/icons/runcircos-gui.png differ
diff --git a/data/icons/runcircos-gui2.ico b/data/icons/runcircos-gui2.ico
new file mode 100644
index 0000000..11abe5a
Binary files /dev/null and b/data/icons/runcircos-gui2.ico differ
diff --git a/data/icons/runcircos-gui2.png b/data/icons/runcircos-gui2.png
new file mode 100644
index 0000000..2d4a995
Binary files /dev/null and b/data/icons/runcircos-gui2.png differ
diff --git a/data/icons/stop.png b/data/icons/stop.png
new file mode 100644
index 0000000..847b336
Binary files /dev/null and b/data/icons/stop.png differ
diff --git a/data/icons/terminal.png b/data/icons/terminal.png
new file mode 100644
index 0000000..eaadd96
Binary files /dev/null and b/data/icons/terminal.png differ
diff --git a/data/splash.png b/data/splash.png
new file mode 100644
index 0000000..cfd2217
Binary files /dev/null and b/data/splash.png differ
diff --git a/data/treat-png.txt b/data/treat-png.txt
new file mode 100644
index 0000000..3280fe3
--- /dev/null
+++ b/data/treat-png.txt
@@ -0,0 +1,6 @@
+#Remove iccp chunk to get rid of the warning:
+#libpng warning: iCCP: known incorrect sRGB profile
+ pngcrush -ow -rem allb -reduce <filename.png>
+
+#Batch convert *.svg to *.png using Inkscape
+ for i in *; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done
diff --git a/src/aboutbox.cpp b/src/aboutbox.cpp
new file mode 100755
index 0000000..672c18d
--- /dev/null
+++ b/src/aboutbox.cpp
@@ -0,0 +1,40 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "aboutbox.h"
+#include "ui_aboutbox.h"
+
+#include "iconloader.h"
+
+AboutBox::AboutBox(QWidget *parent)
+ : QDialog(parent),
+ ui(new Ui::AboutBox) {
+ ui->setupUi(this);
+ // Load icons
+ setWindowIcon(IconLoader::load("help-about"));
+
+ // Signal slot connections
+ connect(ui->ok_pushButton, SIGNAL(clicked()), SLOT(close()));
+
+ ui->plainTextEdit->setStyleSheet("QPlainTextEdit { background-color:"
+ " transparent; }");
+ ui->plainTextEdit->setReadOnly(true);
+}
+
+AboutBox::~AboutBox() {
+ delete ui;
+}
diff --git a/src/aboutbox.h b/src/aboutbox.h
new file mode 100755
index 0000000..afb980d
--- /dev/null
+++ b/src/aboutbox.h
@@ -0,0 +1,41 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef ABOUTBOX_H
+#define ABOUTBOX_H
+
+#include <QDialog>
+
+namespace Ui {
+ class AboutBox;
+}
+
+class AboutBox;
+
+class AboutBox : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ explicit AboutBox(QWidget *parent = 0);
+ ~AboutBox();
+
+ private:
+ Ui::AboutBox *ui;
+};
+
+#endif // ABOUTBOX_H
diff --git a/src/aboutbox.ui b/src/aboutbox.ui
new file mode 100755
index 0000000..b1adc72
--- /dev/null
+++ b/src/aboutbox.ui
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutBox</class>
+ <widget class="QDialog" name="AboutBox">
+ <property name="windowModality">
+ <enum>Qt::NonModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>501</width>
+ <height>282</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>About runCircos-gui</string>
+ </property>
+ <widget class="QLabel" name="label">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>161</width>
+ <height>261</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="../data/icons.qrc">:/about_image.png</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ <property name="openExternalLinks">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_2">
+ <property name="geometry">
+ <rect>
+ <x>180</x>
+ <y>10</y>
+ <width>101</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>runcircos-gui</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_3">
+ <property name="geometry">
+ <rect>
+ <x>180</x>
+ <y>50</y>
+ <width>141</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Version v0,1</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_4">
+ <property name="geometry">
+ <rect>
+ <x>180</x>
+ <y>70</y>
+ <width>171</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Copyright © 2014 - 2016</string>
+ </property>
+ </widget>
+ <widget class="QPlainTextEdit" name="plainTextEdit">
+ <property name="geometry">
+ <rect>
+ <x>180</x>
+ <y>90</y>
+ <width>311</width>
+ <height>151</height>
+ </rect>
+ </property>
+ <property name="plainText">
+ <string>Description :
+
+N-Circos is a simple yet comprehensive software package which provides a graphical user interphase (GUI) for running circos. for more details on N-Circos visit :
+
+
+Website</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="ok_pushButton">
+ <property name="geometry">
+ <rect>
+ <x>300</x>
+ <y>250</y>
+ <width>81</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_5">
+ <property name="geometry">
+ <rect>
+ <x>180</x>
+ <y>30</y>
+ <width>311</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>build-runcircos-gui-QT_5_3_GCC_64bit-Release</string>
+ </property>
+ </widget>
+ </widget>
+ <resources>
+ <include location="../data/icons.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/iconloader.cpp b/src/iconloader.cpp
new file mode 100644
index 0000000..7ed794e
--- /dev/null
+++ b/src/iconloader.cpp
@@ -0,0 +1,46 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "iconloader.h"
+
+#include <QtDebug>
+#include <QFile>
+
+QIcon IconLoader::load(const QString &name) {
+ QIcon ret;
+
+ if (name.isEmpty())
+ return ret;
+
+#if QT_VERSION >= 0x040600
+ // Try to load it from the theme initially
+ ret = QIcon::fromTheme(name);
+ if (!ret.isNull())
+ return ret;
+#endif
+
+ // Otherwise use our fallback theme
+ const QString filename(":/icons/" + name + ".png");
+ // TODO: add different size icons 16x16, 22x22 etc..
+
+ if (QFile::exists(filename))
+ ret.addFile(filename);
+
+ if (ret.isNull())
+ qDebug() << "Couldn't load icon" << name;
+ return ret;
+}
diff --git a/src/iconloader.h b/src/iconloader.h
new file mode 100644
index 0000000..6d0e233
--- /dev/null
+++ b/src/iconloader.h
@@ -0,0 +1,31 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef ICONLOADER_H
+#define ICONLOADER_H
+
+#include <QIcon>
+
+class IconLoader {
+public:
+ static QIcon load(const QString& name);
+
+private:
+ IconLoader() {}
+};
+
+#endif // ICONLOADER_H
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100755
index 0000000..01c49e0
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,46 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "mainwindow.h"
+
+#include <QApplication>
+#include <QSplashScreen>
+#include <QTimer>
+
+
+int main(int argc, char *argv[]) {
+ QApplication a(argc, argv);
+
+ // Set application parameters
+ a.setApplicationName("runcircos-gui");
+ a.setApplicationVersion("0.1");
+ a.setOrganizationName("My Company");
+ a.setOrganizationDomain("website");
+
+ // Show splashscreen
+ QPixmap pixmap (":/splash.png");
+ QSplashScreen *splash = new QSplashScreen(pixmap);
+ splash->show();
+
+ MainWindow w;
+
+ // Close splashscreen after 1 sec & show mainwindow
+ QTimer::singleShot(1000, splash, SLOT(close()));
+ QTimer::singleShot(1000, &w, SLOT(show()));
+
+ return a.exec();
+}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
new file mode 100755
index 0000000..00e77d4
--- /dev/null
+++ b/src/mainwindow.cpp
@@ -0,0 +1,1210 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+#include "aboutbox.h"
+#include "setbindir.h"
+#include "iconloader.h"
+#include "moduleinstaller.h"
+#include "utils.h"
+
+#include <QAction>
+#include <QDesktopServices>
+#include <QDesktopWidget>
+#include <QDir>
+#include <QFileDialog>
+#include <QFileInfo>
+#include <QMessageBox>
+#include <QProcess>
+#include <QTextStream>
+
+#include <QtCore>
+
+MainWindow::MainWindow(QWidget *parent)
+ : QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ image_show_status(false) {
+ // start mainwindow
+ ui->setupUi(this);
+
+ // Load icons
+ setWindowIcon(IconLoader::load("runcircos-gui"));
+ ui->circos_bindir_pushButton->setIcon(IconLoader::load(
+ "document-open-folder"));
+ ui->out_folder_pushButton->setIcon(IconLoader::load(
+ "document-open-folder"));
+ ui->conf_file_pushButton->setIcon(IconLoader::load(
+ "document-open"));
+ ui->run_ncircos_button->setIcon(IconLoader::load(
+ "media-playback-start"));
+ ui->Save_stdout_pushButton->setIcon(IconLoader::load(
+ "document-save"));
+ ui->stop_pushButton->setIcon(IconLoader::load("stop"));
+ ui->actionNew->setIcon(IconLoader::load("document-new"));
+ ui->actionOpen_settings->setIcon(IconLoader::load(
+ "document-open"));
+ ui->actionSave_settings->setIcon(IconLoader::load(
+ "document-save"));
+ ui->actionEdit_conf_file->setIcon(IconLoader::load(
+ "configure"));
+ ui->actionEdit_other_files->setIcon(IconLoader::load(
+ "document-edit"));
+ ui->actionClear_exec_status->setIcon(IconLoader::load(
+ "edit-clear"));
+ ui->actionQuit->setIcon(IconLoader::load(
+ "application-exit"));
+ ui->actionCheck_version->setIcon(IconLoader::load(
+ "application-x-shellscript"));
+ ui->actionInstall_perl_package->setIcon(IconLoader::load(
+ "package-install"));
+ ui->actionCommand_line_CMD->setIcon(IconLoader::load(
+ "terminal"));
+ ui->actionSet_circos_bin_directory->setIcon(IconLoader::load(
+ "folder"));
+ ui->actionOnline_documentation->setIcon(IconLoader::load(
+ "help-contents"));
+ ui->actionQuick_referance_manuel_QRM->setIcon(IconLoader::load(
+ "application-pdf"));
+ ui->actionAbout->setIcon(IconLoader::load("help-about"));
+
+ // Signal slot connections
+
+ connect(ui->stop_pushButton, SIGNAL(clicked()),
+ SLOT(stopExecution()));
+ connect(ui->actionInstall_perl_package, SIGNAL(triggered()),
+ SLOT(installPerlModule()));
+ connect(ui->actionQuit, SIGNAL(triggered()),
+ SLOT(quit()));
+ connect(ui->actionCheck_version, SIGNAL(triggered()),
+ SLOT(checkPerlDir()));
+ connect(ui->actionCommand_line_CMD, SIGNAL(triggered()),
+ SLOT(checkRequiredModuleInstallationStatus()));
+ connect(ui->actionSet_circos_bin_directory, SIGNAL(triggered()),
+ SLOT(setBinDir()));
+ connect(ui->actionOnline_documentation, SIGNAL(triggered()),
+ SLOT(onlineDocumentation()));
+ connect(ui->actionQuick_referance_manuel_QRM, SIGNAL(triggered()),
+ SLOT(quickReferanceManuel()));
+ connect(ui->actionAbout, SIGNAL(triggered()),
+ SLOT(about()));
+
+
+ QRect desktopRect = QApplication::desktop()->availableGeometry(this);
+ QPoint center = desktopRect.center();
+ this->move((center.x() - (width()/2)), (center.y() - (height()/2)) );
+ circosbindir = "[circos/bin_dir...]";
+ conffile = "[.conf_file...]";
+ ui->nt_default_radioButton->setChecked(true);
+ ui->t_default_radioButton->setChecked(true);
+ ui->nto_default_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_png_nopng_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_svg_nosvg_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_warnings_nowarnings_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_paranoid_noparanoid_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_showticks_noshowticks_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->nto_showticklabels_noshowticklabels_groupBox->setStyleSheet("QGroupBox {border : 0;}");
+ ui->mandatory_label->setStyleSheet("QLabel { color : red; }");
+ ui->mandatory_circosbindir_label->setStyleSheet("QLabel { color : red; }");
+ ui->mandatory_conffile_label->setStyleSheet("QLabel { color : red; }");
+ ui->exec_status_plainTextEdit->setStyleSheet("QPlainTextEdit { background-color : lightblack; color : green; border-radius: 5px; }");
+ ui->exec_status_err_textEdit->setStyleSheet("QPlainTextEdit { background-color : lightblack; color : red; border-radius: 5px; }");
+ ui->exec_status_plainTextEdit->setReadOnly(true);
+ ui->exec_status_err_textEdit->setReadOnly(true);
+ ui->cmdfinal_textEdit->setReadOnly(true);
+ ui->cmdfinal_textEdit->setStyleSheet("QTextEdit { background-color : lightgrey;}");
+ ui->ext_op_args_plainTextEdit->setReadOnly(true);
+ ui->ext_op_args_plainTextEdit->setStyleSheet("QLineEdit { background-color : lightgrey;}");
+ setcircosbindirdefault ();
+ if (ui->circos_bindir_plainTextEdit->text().trimmed().count() == 0) {
+ ui->circos_bindir_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid red; border-radius: 2px; }");
+ }
+ if (ui->conf_file_plainTextEdit->text().trimmed().count() == 0) {
+ ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid red; border-radius: 2px; }");
+ }
+
+
+ QStringList list=(QStringList()<<"png"<<"svg");
+ ui->comboBox->addItems(list);
+ ui->comboBox->setVisible(false);
+ enableUiControls();
+ update_cmdfinal();
+}
+
+//close main window
+MainWindow::~MainWindow() {
+ delete ui;
+}
+
+
+
+// run Circos with given arguments
+void MainWindow::on_run_ncircos_button_clicked()
+{
+ int del;
+ del = delete_existingfiles ();
+ if (del == 1 || del == 2)
+ {
+ disableUiControls();
+ ui->progressBar->setMaximum(0);
+ ui->exec_status_plainTextEdit->setPlainText("");
+ ui->exec_status_err_textEdit->setPlainText("");
+ extopargs = ui->ext_op_args_plainTextEdit->text();
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(standardOutput()));
+ connect(process, SIGNAL(readyReadStandardError()), this, SLOT(standardError()));
+ connect(process, SIGNAL(finished(int)), this, SLOT(updateExit()));
+ cmdfinal = ui->cmdfinal_textEdit->toPlainText().trimmed();
+ process->start("bash -c \""+ cmdfinal + "\"");
+ }
+}
+
+void MainWindow::updateExit()
+{
+ ui->progressBar->setMaximum(100);
+ ui->progressBar->setValue(100);
+ enableUiControls();
+ if(ui->t_version_radioButton->isChecked() || ui->t_help_radioButton->isChecked() || ui->t_man_radioButton->isChecked()) {disablehelpmanversion();}
+ if (image_show_status == true && !ui->t_help_radioButton->isChecked() && !ui->t_version_radioButton->isChecked() && !ui->t_man_radioButton->isChecked() && !ui->t_cdump_radioButton->isChecked())
+ {
+ if(!ui->exec_status_err_textEdit->toPlainText().contains("*****!!! PROCESS ABORTED BY USER !!!*****")) { viewimage (); }
+ }
+}
+
+// setting up circos/bin directory
+void MainWindow::on_circos_bindir_pushButton_clicked()
+{
+ QString circos_bindir = QFileDialog::getExistingDirectory(0,"Caption",QString(),QFileDialog::ShowDirsOnly);
+ ui->circos_bindir_plainTextEdit->setText(circos_bindir);
+}
+
+// setting up the configuration file
+void MainWindow::on_conf_file_pushButton_clicked()
+{
+ QString conf_fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"/path/to/file/",tr("Configuration Files (*.conf)"));
+ ui->conf_file_plainTextEdit->setText(conf_fileName);
+}
+
+// setting up the circos output directory
+void MainWindow::on_out_folder_pushButton_clicked()
+{
+ QString output_dir = QFileDialog::getExistingDirectory(0,"Caption",QString(),QFileDialog::ShowDirsOnly);
+ ui->out_folder_plainTextEdit->setText(output_dir);
+}
+
+// enabling and disabling extended optional arguments editing
+void MainWindow::on_ext_op_args_enable_checkBox_clicked()
+{
+ if (ui->ext_op_args_enable_checkBox->isChecked())
+ {
+ ui->ext_op_args_plainTextEdit->setReadOnly(false);
+ ui->ext_op_args_plainTextEdit->setStyleSheet("QLinetEdit { background-color : white;}");
+
+ } else
+ {
+ ui->ext_op_args_plainTextEdit->setReadOnly(true);
+ ui->ext_op_args_plainTextEdit->setStyleSheet("QLineEdit { background-color : lightgrey;}");
+ }
+}
+
+
+// enabling and disabling commandline final editing
+void MainWindow::on_edit_cmdline_checkBox_clicked()
+{
+ if(ui->edit_cmdline_checkBox->isChecked())
+ {
+ ui->cmdfinal_textEdit->setReadOnly(false);
+ ui->cmdfinal_textEdit->setStyleSheet("QTextEdit { background-color : white;}");
+ } else
+ {
+ ui->cmdfinal_textEdit->setReadOnly(true);
+ ui->cmdfinal_textEdit->setStyleSheet("QTextEdit { background-color : lightgrey;}");
+ }
+}
+
+// exclusive radiobutton checking and unchecking negatable toggle options (default button click)
+void MainWindow::on_nt_default_radioButton_clicked()
+{
+
+ nto_png = "";
+ nto_svg = "";
+ nto_warnings = "";
+ nto_paranoid = "";
+ nto_showticks = "";
+ nto_showticklabels = "";
+
+ ui->nt_default_radioButton->setChecked(true);
+
+ ui->nt_png_radioButton->setAutoExclusive(false);
+ ui->nt_nopng_radioButton->setAutoExclusive(false);
+ ui->nt_svg_radioButton->setAutoExclusive(false);
+ ui->nt_nosvg_radioButton->setAutoExclusive(false);
+ ui->nt_warnings_radioButton->setAutoExclusive(false);
+ ui->nt_nowarnings_radioButton->setAutoExclusive(false);
+ ui->nt_paranoid_radioButton->setAutoExclusive(false);
+ ui->nt_noparanoid_radioButton->setAutoExclusive(false);
+ ui->nt_showticks_radioButton->setAutoExclusive(false);
+ ui->nt_noshowticks_radioButton->setAutoExclusive(false);
+ ui->nt_showticklabels_radioButton->setAutoExclusive(false);
+ ui->nt_noshowticklabels_radioButton->setAutoExclusive(false);
+
+ ui->nt_png_radioButton->setChecked(false);
+ ui->nt_nopng_radioButton->setChecked(false);
+ ui->nt_svg_radioButton->setChecked(false);
+ ui->nt_nosvg_radioButton->setChecked(false);
+ ui->nt_warnings_radioButton->setChecked(false);
+ ui->nt_nowarnings_radioButton->setChecked(false);
+ ui->nt_paranoid_radioButton->setChecked(false);
+ ui->nt_noparanoid_radioButton->setChecked(false);
+ ui->nt_showticks_radioButton->setChecked(false);
+ ui->nt_noshowticks_radioButton->setChecked(false);
+ ui->nt_showticklabels_radioButton->setChecked(false);
+ ui->nt_noshowticklabels_radioButton->setChecked(false);
+
+ ui->nt_png_radioButton->setAutoExclusive(true);
+ ui->nt_nopng_radioButton->setAutoExclusive(true);
+ ui->nt_svg_radioButton->setAutoExclusive(true);
+ ui->nt_nosvg_radioButton->setAutoExclusive(true);
+ ui->nt_warnings_radioButton->setAutoExclusive(true);
+ ui->nt_nowarnings_radioButton->setAutoExclusive(true);
+ ui->nt_paranoid_radioButton->setAutoExclusive(true);
+ ui->nt_noparanoid_radioButton->setAutoExclusive(true);
+ ui->nt_showticks_radioButton->setAutoExclusive(true);
+ ui->nt_noshowticks_radioButton->setAutoExclusive(true);
+ ui->nt_showticklabels_radioButton->setAutoExclusive(true);
+ ui->nt_noshowticklabels_radioButton->setAutoExclusive(true);
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_png_radioButton_clicked()
+{
+ nto_png = " -png";
+ if ( ui->nt_default_radioButton->isChecked()) { ui->nt_default_radioButton->setChecked(false); }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_nopng_radioButton_clicked()
+{
+ nto_png = " -nopng";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_svg_radioButton_clicked()
+{
+ nto_svg = " -svg";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_nosvg_radioButton_clicked()
+{
+ nto_svg = " -nosvg";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_warnings_radioButton_clicked()
+{
+ nto_warnings = " -warnings";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_nowarnings_radioButton_clicked()
+{
+ nto_warnings = " -nowarnings";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_paranoid_radioButton_clicked()
+{
+ nto_paranoid = " -paranoid";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_noparanoid_radioButton_clicked()
+{
+ nto_paranoid = " -noparanoid";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_showticks_radioButton_clicked()
+{
+ nto_showticks = " -show_ticks";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_noshowticks_radioButton_clicked()
+{
+ nto_showticks = " -noshow_ticks";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_showticklabels_radioButton_clicked()
+{
+ nto_showticklabels = " -show_tick_labels";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+void MainWindow::on_nt_noshowticklabels_radioButton_clicked()
+{
+ nto_showticklabels = " -noshow_tick_labels";
+ if ( ui->nt_default_radioButton->isChecked())
+ {
+ ui->nt_default_radioButton->setChecked(false);
+ }
+ update_cmdfinal();
+}
+
+
+void MainWindow::on_t_default_radioButton_clicked()
+{
+ to = "";
+ ui->t_default_radioButton->setChecked(true);
+ update_cmdfinal();
+ enablehelpmanversion();
+}
+
+void MainWindow::on_t_image_map_use_radioButton_clicked()
+{
+ to = " -param image_map_use";
+ update_cmdfinal();
+ enablehelpmanversion();
+}
+
+void MainWindow::on_t_silent_radioButton_clicked()
+{
+ to = " -silent";
+ update_cmdfinal();
+ enablehelpmanversion();
+}
+
+void MainWindow::on_t_cdump_radioButton_clicked()
+{
+ to = " -cdump";
+ update_cmdfinal();
+ enablehelpmanversion();
+}
+
+void MainWindow::on_t_debug_radioButton_clicked()
+{
+ to = " -debug";
+ update_cmdfinal();
+ enablehelpmanversion();
+}
+
+void MainWindow::on_t_help_radioButton_clicked()
+{
+ to = " -help";
+ update_cmdfinal();
+ disablehelpmanversion();
+}
+
+void MainWindow::on_t_man_radioButton_clicked()
+{
+ to = " -man";
+ update_cmdfinal();
+ disablehelpmanversion();
+}
+
+void MainWindow::on_t_version_radioButton_clicked()
+{
+ to = " -version";
+ update_cmdfinal();
+ disablehelpmanversion();
+}
+
+void MainWindow::update_cmdfinal ()
+{
+ QString tmp = ui->ext_op_args_plainTextEdit->text().trimmed();
+ if(tmp.count() != 0)
+ {
+ extopargs = " " + extopargs.trimmed();
+ }
+ if(ui->t_version_radioButton->isChecked() || ui->t_help_radioButton->isChecked() || ui->t_man_radioButton->isChecked())
+ {
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->setText("perl ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ if(circosbindir.contains("[circos/bin_dir...]")) {ui->cmdfinal_textEdit->setTextColor( QColor( "red" ) );} else {ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );}
+ ui->cmdfinal_textEdit->insertPlainText(circosbindir);
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText("/circos ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText(to);
+ } else
+ {
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->setText("perl ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ if(circosbindir.contains("[circos/bin_dir...]")) {ui->cmdfinal_textEdit->setTextColor( QColor( "red" ) );} else {ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );}
+ ui->cmdfinal_textEdit->insertPlainText(circosbindir);
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText("/circos -conf ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ if(conffile.contains("[.conf_file...]")) {ui->cmdfinal_textEdit->setTextColor( QColor( "red" ) );} else {ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );}
+ ui->cmdfinal_textEdit->insertPlainText(conffile);
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText(outputdir + outfile + to + nto_png + nto_svg + nto_warnings + nto_paranoid + nto_showticks + nto_showticklabels + extopargs);
+ }
+ ui->progressBar->setValue(0);
+ ui->exec_status_plainTextEdit->setPlainText("");
+ ui->exec_status_err_textEdit->setPlainText("");
+}
+
+void MainWindow::on_circos_bindir_plainTextEdit_textChanged()
+{
+ if(ui->circos_bindir_plainTextEdit->text().trimmed().contains(" ") == false)
+ {
+ circosbindir = ui->circos_bindir_plainTextEdit->text();
+ if (ui->circos_bindir_plainTextEdit->text().trimmed().count() == 0)
+ {
+ ui->circos_bindir_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid red; border-radius: 2px; }");
+ circosbindir = "[circos/bin_dir...]";
+ } else
+ {
+ ui->circos_bindir_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid green; border-radius: 2px; }");
+ }
+ update_cmdfinal();
+ } else
+ {
+ QMessageBox msgBox;
+ msgBox.setWindowTitle("No space allowed!");
+ msgBox.setText("'"+ ui->circos_bindir_plainTextEdit->text().trimmed()+ "' "+ "contains blank space. This is not allowed ! Please give a correct circos/bin path.");
+ msgBox.exec();
+ ui->circos_bindir_plainTextEdit->setText("");
+ }
+}
+
+
+
+void MainWindow::on_conf_file_plainTextEdit_textChanged()
+{
+ if(ui->conf_file_plainTextEdit->text().trimmed().contains(" ") == false)
+ {
+ conffile = ui->conf_file_plainTextEdit->text();
+ if (ui->conf_file_plainTextEdit->text().trimmed().count() == 0)
+ {
+ ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid red; border-radius: 2px; }");
+ conffile = "[.conf_file...]";
+ } else
+ {
+ ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid green; border-radius: 2px; }");
+ }
+ update_cmdfinal();
+ } else
+ {
+ QMessageBox msgBox;
+ msgBox.setWindowTitle("No space allowed!");
+ msgBox.setText("'"+ ui->conf_file_plainTextEdit->text().trimmed()+ "' "+ "contains blank space. This is not allowed ! Please give a new .conf file path.");
+ msgBox.exec();
+ ui->conf_file_plainTextEdit->setText("");
+ }
+}
+
+void MainWindow::on_out_folder_plainTextEdit_textChanged()
+{
+ if(ui->out_folder_plainTextEdit->text().trimmed().contains(" ") == false)
+ {
+ if(ui->out_folder_plainTextEdit->text().trimmed().count() != 0)
+ {
+ outputdir = " -outputdir "+ ui->out_folder_plainTextEdit->text().trimmed();
+ update_cmdfinal();
+ } else
+ {
+ outputdir = "";
+ update_cmdfinal();
+ }
+ } else
+ {
+ QMessageBox msgBox;
+ msgBox.setWindowTitle("No space allowed!");
+ msgBox.setText("'"+ ui->out_folder_plainTextEdit->text().trimmed()+ "' "+ "contains blank space. This is not allowed ! Please give a new output directory path.");
+ msgBox.exec();
+ ui->out_folder_plainTextEdit->setText("");
+ }
+}
+
+void MainWindow::on_out_file_plainTextEdit_textChanged()
+{
+ if(ui->out_file_plainTextEdit->text().trimmed().contains(" ") == false)
+ {
+ if(ui->out_file_plainTextEdit->text().trimmed().count() != 0)
+ {
+
+ outfile = " -outputfile "+ ui->out_file_plainTextEdit->text().trimmed();
+ update_cmdfinal();
+ } else
+ {
+ outfile = "";
+ update_cmdfinal();
+ }
+ } else
+ {
+ QMessageBox Msgbox;
+ Msgbox.setWindowTitle("No space allowed!");
+ Msgbox.setText("'"+ ui->out_file_plainTextEdit->text().trimmed()+ "' "+ "contains blank space. This is not allowed ! Please give a new filename.");
+ Msgbox.exec();
+ ui->out_file_plainTextEdit->setText("");
+ }
+}
+
+void MainWindow::on_ext_op_args_plainTextEdit_textChanged()
+{
+ extopargs = ui->ext_op_args_plainTextEdit->text().trimmed();
+ update_cmdfinal();
+}
+
+void MainWindow::on_actionNew_triggered()
+{
+ on_nt_default_radioButton_clicked();
+ on_t_default_radioButton_clicked();
+ ui->ext_op_args_enable_checkBox->setChecked(false);
+ ui->ext_op_args_plainTextEdit->setText("");
+ on_ext_op_args_enable_checkBox_clicked();
+ ui->circos_bindir_plainTextEdit->setText("");
+ ui->conf_file_plainTextEdit->setText("");
+ ui->out_folder_plainTextEdit->setText("");
+ ui->out_file_plainTextEdit->setText("");
+ ui->edit_cmdline_checkBox->setChecked(false);
+ ui->exec_status_plainTextEdit->setPlainText("");
+ ui->exec_status_err_textEdit->setPlainText("");
+ on_edit_cmdline_checkBox_clicked();
+ ui->progressBar->setMaximum(100);
+ ui->progressBar->setValue(0);
+ ui->imageciew_checkBox->setChecked(false);
+ ui->comboBox->setCurrentIndex(0);
+ ui->comboBox->setVisible(false);
+ setcircosbindirdefault ();
+}
+
+void MainWindow::on_actionClear_exec_status_triggered()
+{
+ ui->exec_status_plainTextEdit->setPlainText("");
+ ui->exec_status_err_textEdit->setPlainText("");
+}
+
+void MainWindow::on_Save_stdout_pushButton_clicked()
+{
+ QString output_fileName = QFileDialog::getSaveFileName(this, "Save file", "", "text files(*.txt)");
+ if (output_fileName.contains(".txt") == false)
+ {output_fileName = output_fileName + ".txt";}
+ QFile file( output_fileName );
+ if ( file.open(QIODevice::ReadWrite| QIODevice::Truncate | QIODevice::Text) )
+ {
+ QTextStream stream( &file );
+ stream <<"#########################*** COMMANDLINE ***##########################"<< endl << ui->cmdfinal_textEdit->toPlainText() << endl << endl << "#######################*** STANDARD OUTPUT ***########################"<< endl<< ui->exec_status_plainTextEdit->toPlainText() << endl << "#######################!!! STANDARD ERROR !!!#########################" << endl << ui->exec_status_err_textEdit->toPlainText();
+ file.close();
+ }
+}
+
+void MainWindow::on_actionEdit_conf_file_triggered()
+{
+ QString conf_fileName_edit = QFileDialog::getOpenFileName(this, tr("Open File"),"/path/to/file/",tr("Configuration Files (*.conf)"));
+ QDesktopServices::openUrl(QUrl(conf_fileName_edit));
+}
+
+void MainWindow::on_actionEdit_other_files_triggered()
+{
+ QString other_fileName_edit = QFileDialog::getOpenFileName(this, tr("Open File"),"/path/to/file/",tr("All Files (*.*)"));
+ QDesktopServices::openUrl(QUrl(other_fileName_edit));
+}
+
+void MainWindow::viewimage()
+{
+ QString s, ext, cmdfinaltest, ofile, odir, oconf;
+ cmdfinaltest = ui->cmdfinal_textEdit->toPlainText().trimmed();
+ QStringList query = cmdfinaltest.split(" ");
+ for (int i=0; i < query.size(); i++)
+ {
+ if (query.at(i).contains("-conf"))
+ {
+ oconf = query.at(i+1).trimmed();
+ }
+ if (query.at(i).contains("-outputdir"))
+ {
+ odir = query.at(i+1).trimmed();
+ }
+ if (query.at(i).contains("-outputfile"))
+ {
+ ofile = query.at(i+1).trimmed();
+ }
+ }
+ ext = ui->comboBox->currentText().trimmed();
+ QFileInfo info1(oconf);
+ if (odir.trimmed() == "") { odir = info1.absolutePath();}
+ if (ofile.trimmed() == "") { ofile = "circos";}
+ QFile imagefile(odir + "/" + ofile + "." + ext);
+ if(!imagefile.exists()) { QDesktopServices::openUrl(QUrl(QCoreApplication::applicationDirPath() + "/ncirco_no_image.png")); } else { QDesktopServices::openUrl(QUrl(odir + "/" + ofile + "." + ext)); }
+}
+
+void MainWindow::enablehelpmanversion()
+{
+ ui->ntoggle_groupBox->setEnabled(true);
+ ui->ext_op_args_groupBox->setEnabled(true);
+ ui->conf_file_plainTextEdit->setEnabled(true);
+ ui->conf_file_pushButton->setEnabled(true);
+ ui->out_folder_plainTextEdit->setEnabled(true);
+ ui->out_folder_pushButton->setEnabled(true);
+ ui->out_file_plainTextEdit->setEnabled(true);
+ ui->comboBox->setEnabled(true);
+ ui->imageciew_checkBox->setEnabled(true);
+ ui->conf_file_label->setEnabled(true);
+ ui->out_folder_label->setEnabled(true);
+ ui->out_file_label->setEnabled(true);
+ ui->cmdline_label->setEnabled(true);
+ ui->mandatory_circosbindir_label->setEnabled(true);
+ ui->mandatory_conffile_label->show();
+ if (ui->conf_file_plainTextEdit->text().trimmed().count() == 0)
+ { ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid red; border-radius: 2px; background-color : white;}"); } else
+ { ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid green; border-radius: 2px; background-color : white;}"); }
+}
+
+void MainWindow::disablehelpmanversion()
+{
+ ui->ntoggle_groupBox->setEnabled(false);
+ ui->ext_op_args_groupBox->setEnabled(false);
+ ui->conf_file_plainTextEdit->setEnabled(false);
+ ui->conf_file_pushButton->setEnabled(false);
+ ui->out_folder_plainTextEdit->setEnabled(false);
+ ui->out_folder_pushButton->setEnabled(false);
+ ui->out_file_plainTextEdit->setEnabled(false);
+ ui->comboBox->setEnabled(false);
+ ui->imageciew_checkBox->setEnabled(false);
+ ui->conf_file_label->setEnabled(false);
+ ui->out_folder_label->setEnabled(false);
+ ui->out_file_label->setEnabled(false);
+ ui->cmdline_label->setEnabled(false);
+ ui->mandatory_circosbindir_label->setEnabled(false);
+ ui->mandatory_conffile_label->hide();
+ ui->conf_file_plainTextEdit->setStyleSheet("QLineEdit { border: 1px solid grey; border-radius: 2px; background-color : lightgrey;}");
+}
+
+void MainWindow::on_imageciew_checkBox_clicked()
+{
+ if(ui->imageciew_checkBox->isChecked())
+ {
+ ui->comboBox->setVisible(true);
+ image_show_status = true;
+ } else
+ {
+ ui->comboBox->setVisible(false);
+ image_show_status = false;
+ }
+}
+
+void MainWindow::setcircosbindirdefault ()
+{
+QFile inputFile(QDir::homePath() +"/.ncircos/circosbin.ncd");
+ if (inputFile.open(QIODevice::ReadOnly))
+ {
+ QTextStream in(&inputFile);
+ QString line = in.readLine();
+ ui->circos_bindir_plainTextEdit->setText(line.trimmed());
+ inputFile.close();
+ } else ui->circos_bindir_plainTextEdit->setText("");
+}
+
+void MainWindow::on_actionSave_settings_triggered()
+{
+ QString settings_fileName = QFileDialog::getSaveFileName(this, "Save file", "", "ncircos settings file(*.ncs)");
+ if (settings_fileName.contains(".ncs") == false)
+ {settings_fileName = settings_fileName + ".ncs";}
+ QFile file( settings_fileName );
+ if ( file.open(QIODevice::ReadWrite| QIODevice::Truncate | QIODevice::Text) )
+ {
+ QTextStream stream( &file );
+ stream << to << endl << nto_png << endl << nto_svg << endl << nto_warnings << endl << nto_paranoid << endl << nto_showticks << endl << nto_showticklabels << endl;
+ if (ui->ext_op_args_enable_checkBox->isChecked()) {stream << "true" << endl;} else {stream << "false" << endl;}
+ stream << extopargs << endl << circosbindir << endl << conffile << endl << ui->out_folder_plainTextEdit->text() << endl << ui->out_file_plainTextEdit->text() << endl;
+ if (ui->imageciew_checkBox->isChecked()) {stream << "true" << endl;} else {stream << "false" << endl;}
+ stream << ui->comboBox->currentText()<< endl;
+ if (ui->edit_cmdline_checkBox->isChecked()) {stream << "true" << endl;} else {stream << "false" << endl;}
+ stream << ui->cmdfinal_textEdit->toPlainText();
+ file.close();
+ }
+}
+
+void MainWindow::on_actionOpen_settings_triggered()
+{
+ QString settings_filename = QFileDialog::getOpenFileName(this, tr("Open File"),"/path/to/file/",tr("ncircos settings file(*.ncs)"));
+ QString cnt = "";
+ QFile file( settings_filename );
+ if ( file.open(QIODevice::ReadOnly) )
+ {
+ QTextStream stream( &file );
+ QString line = stream.readLine();
+ if(line.trimmed().count() != 0)
+ {
+ if(line.contains("-image_map_use")) {ui->t_image_map_use_radioButton->setChecked(true); on_t_image_map_use_radioButton_clicked();}
+ else if (line.contains("-silent")) {ui->t_silent_radioButton->setChecked(true); on_t_silent_radioButton_clicked();}
+ else if (line.contains("-cdump")) {ui->t_cdump_radioButton->setChecked(true); on_t_cdump_radioButton_clicked();}
+ else if (line.contains("-debug")) {ui->t_debug_radioButton->setChecked(true); on_t_debug_radioButton_clicked();}
+ else if (line.contains("-help")) {ui->t_help_radioButton->setChecked(true); on_t_help_radioButton_clicked();}
+ else if (line.contains("-man")) {ui->t_man_radioButton->setChecked(true); on_t_man_radioButton_clicked();}
+ else if (line.contains("-version")) {ui->t_version_radioButton->setChecked(true); on_t_version_radioButton_clicked();}
+ } else {ui->t_default_radioButton->setChecked(true); on_t_default_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-png")) {ui->nt_png_radioButton->setChecked(true); on_nt_png_radioButton_clicked();}
+ else if (line.contains("-nopng")) {ui->nt_nopng_radioButton->setChecked(true); on_nt_nopng_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-svg")) {ui->nt_svg_radioButton->setChecked(true); on_nt_svg_radioButton_clicked();}
+ else if (line.contains("-nosvg")) {ui->nt_nosvg_radioButton->setChecked(true); on_nt_nosvg_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-warnings")) {ui->nt_warnings_radioButton->setChecked(true); on_nt_warnings_radioButton_clicked();}
+ else if (line.contains("-nowarnings")) {ui->nt_nowarnings_radioButton->setChecked(true); on_nt_nowarnings_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-paranoid")) {ui->nt_paranoid_radioButton->setChecked(true); on_nt_paranoid_radioButton_clicked();}
+ else if (line.contains("-noparanoid")) {ui->nt_noparanoid_radioButton->setChecked(true); on_nt_noparanoid_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-show_ticks")) {ui->nt_showticks_radioButton->setChecked(true);on_nt_showticks_radioButton_clicked();}
+ else if (line.contains("-noshow_ticks")) {ui->nt_noshowticks_radioButton->setChecked(true); on_nt_noshowticks_radioButton_clicked();}
+ line = stream.readLine();
+ cnt = cnt + line;
+ if(line.contains("-show_tick_labels")) {ui->nt_showticklabels_radioButton->setChecked(true); on_nt_showticklabels_radioButton_clicked();}
+ else if (line.contains("-noshow_tick_labels")) {ui->nt_noshowticklabels_radioButton->setChecked(true); on_nt_noshowticklabels_radioButton_clicked();}
+ if (cnt.trimmed().count() == 0) {ui->nt_default_radioButton->setChecked(true); on_nt_default_radioButton_clicked(); cnt = "";}
+ line = stream.readLine();
+ if (line.contains("true")) {ui->ext_op_args_enable_checkBox->setChecked(true);} else {ui->ext_op_args_enable_checkBox->setChecked(false);}
+ on_ext_op_args_enable_checkBox_clicked();
+ line = stream.readLine();
+ ui->ext_op_args_plainTextEdit->setText(line.trimmed());
+ line = stream.readLine();
+ if(line.contains("[circos/bin_dir...]")) { ui->circos_bindir_plainTextEdit->setText(""); } else { ui->circos_bindir_plainTextEdit->setText(line.trimmed()); }
+ line = stream.readLine();
+ if(line.contains("[.conf_file...]")) {ui->conf_file_plainTextEdit->setText("");} else { ui->conf_file_plainTextEdit->setText(line.trimmed()); }
+ line = stream.readLine();
+ ui->out_folder_plainTextEdit->setText(line.trimmed());
+ line = stream.readLine();
+ ui->out_file_plainTextEdit->setText(line.trimmed());
+ line = stream.readLine();
+ if (line.contains("true")) {ui->imageciew_checkBox->setChecked(true);} else {ui->imageciew_checkBox->setChecked(false);}
+ line = stream.readLine();
+ if (line.contains("png")) {ui->comboBox->setCurrentIndex(0);} else {ui->comboBox->setCurrentIndex(1);}
+ line = stream.readLine();
+ if (line.contains("true")) {ui->edit_cmdline_checkBox->setChecked(true);} else {ui->edit_cmdline_checkBox->setChecked(false);}
+ on_edit_cmdline_checkBox_clicked();
+ line = stream.readLine();
+ QStringList query = line.split(" ");
+ ui->cmdfinal_textEdit->setPlainText("");
+ for (int i=0; i < query.size(); i++)
+ {
+ if (query.at(i).contains("[circos/bin_dir...]/circos"))
+ {
+ QStringList cbind = query.at(i).split("/");
+
+ ui->cmdfinal_textEdit->setTextColor( QColor( "red" ) );
+ ui->cmdfinal_textEdit->insertPlainText(cbind.at(0) + "/");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->insertPlainText(cbind.at(1));
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText("/" + cbind.at(2) + " ");
+ }
+ else if (query.at(i).contains("[.conf_file...]"))
+ {
+ ui->cmdfinal_textEdit->setTextColor( QColor( "red" ) );
+ ui->cmdfinal_textEdit->insertPlainText(query.at(i) + " ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ } else
+ {
+ ui->cmdfinal_textEdit->setTextColor( QColor( "black" ) );
+ ui->cmdfinal_textEdit->insertPlainText(query.at(i) + " ");
+ ui->cmdfinal_textEdit->moveCursor (QTextCursor::End);
+ }
+ }
+ //ui->cmdfinal_textEdit->setText(ui->cmdfinal_textEdit->toPlainText().trimmed());
+ file.close();
+ }
+ //if(ui->nt_png_radioButton->isChecked() || ui->nt_nopng_radioButton->isChecked() || ui->nt_svg_radioButton->isChecked() || ui->nt_nosvg_radioButton->isChecked() || ui->nt_warnings_radioButton->isChecked() || ui->nt_nowarnings_radioButton->isChecked() || ui->nt_paranoid_radioButton->isChecked() || ui->nt_noparanoid_radioButton->isChecked() || ui->nt_showticks_radioButton->isChecked() || ui->nt_noshowticks_radioButton->isChecked() || ui->nt_showticklabels_radioButton->isChecked() || u [...]
+ //{
+ // ui->nt_default_radioButton->setChecked(false);
+ //} else ui->nt_default_radioButton->setChecked(true);
+ if(ui->imageciew_checkBox->isChecked())
+ {
+ ui->comboBox->setVisible(true);
+ image_show_status = true;
+ } else
+ {
+ ui->comboBox->setVisible(false);
+ image_show_status = false;
+ }
+}
+
+int MainWindow::delete_existingfiles ()
+{
+ QString ext, cmdfinaltest, ofile, odir, oconf;
+ int del = 2;
+ cmdfinaltest = ui->cmdfinal_textEdit->toPlainText().trimmed();
+ QStringList query = cmdfinaltest.split(" ");
+ for (int i=0; i < query.size(); i++)
+ {
+ if (query.at(i).contains("-conf"))
+ {
+ oconf = query.at(i+1).trimmed();
+ }
+ if (query.at(i).contains("-outputdir"))
+ {
+ odir = query.at(i+1).trimmed();
+ }
+ if (query.at(i).contains("-outputfile"))
+ {
+ ofile = query.at(i+1).trimmed();
+ }
+ }
+ ext = ui->comboBox->currentText().trimmed();
+ QFileInfo info1(oconf);
+ if (odir.trimmed() == "") { odir = info1.absolutePath();}
+ if (ofile.trimmed() == "") { ofile = "circos";}
+ QFile imagefilepng(odir + "/" + ofile + ".png");
+ QFile imagefilesvg(odir + "/" + ofile + ".svg");
+ if(imagefilepng.exists() && imagefilesvg.exists())
+ {
+ QMessageBox msgBox;
+ msgBox.setText("Delete existing .svg & .png file(s)");
+ msgBox.setWindowModality(Qt::NonModal);
+ msgBox.setInformativeText(odir + "/" + ofile + ".png" + " & " + odir + "/" + ofile + ".svg" + " files exist(s) in the respective directory. Press Ok to delete this file(s) or press Cancel to abort circos run");
+ msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ if (msgBox.exec() == QMessageBox::Ok) { del = 1; imagefilepng.remove(); imagefilesvg.remove();} else { del = 0; }
+ }
+ if(imagefilepng.exists() && !imagefilesvg.exists())
+ {
+ QMessageBox msgBox;
+ msgBox.setText("Delete existing .png file");
+ msgBox.setWindowModality(Qt::NonModal);
+ msgBox.setInformativeText(odir + "/" + ofile + ".png" + " file exist(s) in the respective directory. Press Ok to delete this file or press Cancel to abort circos run");
+ msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ if (msgBox.exec() == QMessageBox::Ok) { del = 1; imagefilepng.remove();} else { del = 0; }
+ }
+ if(!imagefilepng.exists() && imagefilesvg.exists())
+ {
+ QMessageBox msgBox;
+ msgBox.setText("Delete existing .svg file");
+ msgBox.setWindowModality(Qt::NonModal);
+ msgBox.setInformativeText(odir + "/" + ofile + ".svg" + " file exist(s) in the respective directory. Press Ok to delete this file or press Cancel to abort circos run");
+ msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ if (msgBox.exec() == QMessageBox::Ok) { del = 1; imagefilesvg.remove();} else { del = 0; }
+ }
+ return del;
+}
+
+void MainWindow::stopExecution() {
+ process->terminate();
+ if (process->pid() > 0) {
+ ui->exec_status_err_textEdit->appendPlainText(
+ "*****!!! PROCESS ABORTED BY USER !!!*****");
+ }
+}
+
+// ><><><><><><><><>< Runcircos-gui actions ><><><><><><><><><
+
+void MainWindow::quit() {
+ close();
+}
+
+// ><><><><><><><><>< Perl actions ><><><><><><><><><
+
+void MainWindow::checkPerlDir() {
+ clearOutput();
+ disableUiControls();
+ ui->progressBar->setMaximum(0);
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyReadStandardOutput()),
+ this, SLOT(standardOutput()));
+ connect(process, SIGNAL(readyReadStandardError()),
+ this, SLOT(standardError()));
+ connect(process, SIGNAL(finished(int)), this,
+ SLOT(checkPerlVersion()));
+#ifdef Q_OS_WIN
+ process->start("cmd.exe /c perl -e \"print $^X\"");
+ ui->exec_status_plainTextEdit->appendPlainText("><><><><><><><><>< "
+ "PERL BIN DIRECTORY (perl -e print $^X) ><><><><><><><><><");
+#else
+ process->start("bash -c \"which perl\"");
+ ui->exec_status_plainTextEdit->appendPlainText("><><><><><><><><>< "
+ "PERL BIN DIRECTORY (which perl) ><><><><><><><><><");
+#endif
+}
+
+void MainWindow::checkPerlVersion() {
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyReadStandardOutput()), this,
+ SLOT(standardOutput()));
+ connect(process, SIGNAL(readyReadStandardError()), this,
+ SLOT(standardError()));
+ connect(process, SIGNAL(finished(int)), this,
+ SLOT(checkPerlComplete()));
+#ifdef Q_OS_WIN
+ process->start("cmd.exe /c \"perl -v\"");
+#else
+ process->start("bash -c \"perl -v\"");
+#endif
+ ui->exec_status_plainTextEdit->appendPlainText("><><><><><><><><>< "
+ "PERL VERSION (perl -v) ><><><><><><><><><");
+}
+
+void MainWindow::checkPerlComplete() {
+ ui->progressBar->setMaximum(100);
+ ui->progressBar->setValue(100);
+ enableUiControls();
+}
+
+void MainWindow::installPerlModule() {
+ ModuleInstaller moduleinstaller;
+ moduleinstaller.setModal(true);
+ moduleinstaller.exec();
+}
+
+void MainWindow::checkRequiredModuleInstallationStatus() {
+ clearOutput();
+ disableUiControls();
+ ui->progressBar->setMaximum(0);
+ QStringList circosdir = circosbindir.split("/");
+ QString circosdirfinal;
+ for (int i = 0; i<circosdir.size()-1; i++) {
+ circosdirfinal = circosdirfinal + "/" + circosdir.at(i);
+ }
+ ui->exec_status_plainTextEdit->appendPlainText("circos/bin "
+ "directory : " + circosbindir);
+ ui->exec_status_plainTextEdit->appendPlainText("\n Creating "
+ + QDir::homePath() + "/.ncircos/testmobule_bashscript.sh "
+ "bashscript ....");
+ QDir dir(QDir::homePath() + "/.ncircos");
+ if (!dir.exists()) {
+ dir.mkpath(".");
+ }
+
+ QString filename = QDir::homePath() +
+ "/.ncircos/testmobule_bashscript.sh";
+ QFile file(filename);
+ QString first, second, final;
+ first = "#!/bin/bash";
+ second = "echo \"Required Perl Modules For running circos "
+ "and their status :\"";
+ final = "awk '!/^[\\t ]*use /{next};$2~/^(lib|Circos.*|base|"
+ "strict|vars|warnings);?$/{next};{sub(\";\",\"\",$2);"
+ "print $2}' " + circosdirfinal.trimmed() +
+ "/bin/circos " + circosdirfinal.trimmed() +
+ "/lib/Circos/*pm " + circosdirfinal.trimmed() +
+ "/lib/Circos.pm " + circosdirfinal.trimmed() +
+ "/lib/Circos/*/*pm | sort -u | xargs -I MODULE perl "
+ "-I../lib -e 'print eval \"use MODULE;1\"?\"ok "
+ "MODULE\":\"fail MODULE is not usable (it or a "
+ "sub-module is missing)\\n\"'";
+ if ( file.open(QIODevice::ReadWrite| QIODevice::Truncate
+ | QIODevice::Text) ) {
+ QTextStream stream( &file );
+ stream << first << endl << second << endl << final;
+ file.close();
+ ui->exec_status_plainTextEdit->appendPlainText(QDir::homePath()
+ + "/.ncircos/testmobule_bashscript.sh bashscript file "
+ "creation successfull ....");
+ }
+ ui->exec_status_plainTextEdit->appendPlainText("making the bash "
+ "script executable \"chmod a+x " + QDir::homePath() +
+ "/.ncircos/testmobule_bashscript.sh\" ....");
+
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyReadStandardOutput()), this,
+ SLOT(standardOutput()));
+ connect(process, SIGNAL(readyReadStandardError()), this,
+ SLOT(standardError()));
+ connect(process, SIGNAL(finished(int)), this,
+ SLOT(chmodExit()));
+ process->start("bash -c \"chmod a+x "+ filename + "\"");
+}
+
+void MainWindow::chmodExit() {
+ ui->exec_status_plainTextEdit->appendPlainText("bash script "
+ "chmod successfull ....");
+ ui->exec_status_plainTextEdit->appendPlainText("Executing "
+ "the bash script ....");
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyReadStandardOutput()), this,
+ SLOT(standardOutput()));
+ connect(process, SIGNAL(readyReadStandardError()), this,
+ SLOT(standardError()));
+ connect(process, SIGNAL(finished(int)), this,
+ SLOT(modulecheckbashscriptExit()));
+ process->start(QDir::homePath() + "/.ncircos/testmobule_"
+ "bashscript.sh");
+}
+
+void MainWindow::modulecheckbashscriptExit() {
+ enableUiControls();
+ ui->progressBar->setMaximum(100);
+ ui->progressBar->setValue(100);
+ if(ui->exec_status_plainTextEdit->toPlainText().contains("fail")
+ || ui->exec_status_err_textEdit->toPlainText().trimmed().count()
+ != 0) {
+ ui->exec_status_err_textEdit->appendPlainText("Some modules/"
+ "sub-modules are not poperly installed");
+ } else {
+ ui->exec_status_plainTextEdit->appendPlainText("\n All perl "
+ "modules/sub-modules needed to run circos are properly "
+ "installed!");
+ }
+}
+
+// ><><><><><><><><>< Set Circos bin directory ><><><><><><><><><
+
+void MainWindow::setBinDir() {
+ SetBinDir setbindir;
+ setbindir.setModal(true);
+ setbindir.exec();
+}
+
+// ><><><><><><><><>< Help & about ><><><><><><><><><
+
+void MainWindow::onlineDocumentation() {
+ QDesktopServices::openUrl(QUrl("http://www.researcharun.com/"
+ "ncircos_documentation_linux.html"));
+}
+
+void MainWindow::quickReferanceManuel() {
+ QDesktopServices::openUrl(QUrl(Utils::getConfigPath(
+ Utils::Manuel)));
+}
+
+void MainWindow::about() {
+ AboutBox about;
+ about.setModal(true);
+ about.exec();
+}
+
+// ><><><><><><><><>< Supporting functions ><><><><><><><><><
+
+void MainWindow::clearOutput() {
+ ui->exec_status_plainTextEdit->setPlainText("");
+ ui->exec_status_err_textEdit->setPlainText("");
+}
+
+void MainWindow::disableUiControls() {
+ ui->toggle_groupBox->setEnabled(false);
+ ui->ntoggle_groupBox->setEnabled(false);
+ ui->ext_op_args_groupBox->setEnabled(false);
+ ui->circos_bindir_plainTextEdit->setEnabled(false);
+ ui->circos_bindir_pushButton->setEnabled(false);
+ ui->conf_file_plainTextEdit->setEnabled(false);
+ ui->conf_file_pushButton->setEnabled(false);
+ ui->out_folder_plainTextEdit->setEnabled(false);
+ ui->out_folder_pushButton->setEnabled(false);
+ ui->out_file_plainTextEdit->setEnabled(false);
+ ui->edit_cmdline_checkBox->setEnabled(false);
+ ui->cmdfinal_textEdit->setEnabled(false);
+ ui->run_ncircos_button->setEnabled(false);
+ ui->Save_stdout_pushButton->setEnabled(false);
+ ui->menuBar->setEnabled(false);
+ ui->comboBox->setEnabled(false);
+ ui->imageciew_checkBox->setEnabled(false);
+ ui->circos_bindir_label->setEnabled(false);
+ ui->conf_file_label->setEnabled(false);
+ ui->out_folder_label->setEnabled(false);
+ ui->out_file_label->setEnabled(false);
+ ui->cmdline_label->setEnabled(false);
+ ui->mandatory_circosbindir_label->setEnabled(false);
+ ui->mandatory_conffile_label->setEnabled(false);
+ ui->mandatory_label->setEnabled(false);
+ ui->stop_pushButton->setEnabled(true);
+}
+
+void MainWindow::enableUiControls() {
+ ui->toggle_groupBox->setEnabled(true);
+ ui->ntoggle_groupBox->setEnabled(true);
+ ui->ext_op_args_groupBox->setEnabled(true);
+ ui->circos_bindir_plainTextEdit->setEnabled(true);
+ ui->circos_bindir_pushButton->setEnabled(true);
+ ui->conf_file_plainTextEdit->setEnabled(true);
+ ui->conf_file_pushButton->setEnabled(true);
+ ui->out_folder_plainTextEdit->setEnabled(true);
+ ui->out_folder_pushButton->setEnabled(true);
+ ui->out_file_plainTextEdit->setEnabled(true);
+ ui->edit_cmdline_checkBox->setEnabled(true);
+ ui->cmdfinal_textEdit->setEnabled(true);
+ ui->run_ncircos_button->setEnabled(true);
+ ui->Save_stdout_pushButton->setEnabled(true);
+ ui->menuBar->setEnabled(true);
+ ui->comboBox->setEnabled(true);
+ ui->imageciew_checkBox->setEnabled(true);
+ ui->circos_bindir_label->setEnabled(true);
+ ui->conf_file_label->setEnabled(true);
+ ui->out_folder_label->setEnabled(true);
+ ui->out_file_label->setEnabled(true);
+ ui->cmdline_label->setEnabled(true);
+ ui->mandatory_circosbindir_label->setEnabled(true);
+ ui->mandatory_conffile_label->setEnabled(true);
+ ui->mandatory_label->setEnabled(true);
+ ui->stop_pushButton->setEnabled(false);
+}
+
+void MainWindow::standardOutput() {
+ QString appendStdOut(process->readAllStandardOutput());
+ ui->exec_status_plainTextEdit->appendPlainText(appendStdOut);
+}
+
+void MainWindow::standardError() {
+ QString appendStdErr(process->readAllStandardError());
+ ui->exec_status_err_textEdit->appendPlainText(appendStdErr);
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
new file mode 100755
index 0000000..5fe07dd
--- /dev/null
+++ b/src/mainwindow.h
@@ -0,0 +1,203 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QAction>
+#include <QLineEdit>
+#include <QProcess>
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow {
+ Q_OBJECT
+
+ public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+
+ private slots:
+ void on_run_ncircos_button_clicked();
+
+ void on_conf_file_pushButton_clicked();
+
+ void on_circos_bindir_pushButton_clicked();
+
+ void on_out_folder_pushButton_clicked();
+
+ void on_edit_cmdline_checkBox_clicked();
+
+ void on_ext_op_args_enable_checkBox_clicked();
+
+ void on_nt_default_radioButton_clicked();
+
+
+
+ void on_nt_png_radioButton_clicked();
+
+ void on_nt_nopng_radioButton_clicked();
+
+ void on_nt_svg_radioButton_clicked();
+
+ void on_nt_nosvg_radioButton_clicked();
+
+ void on_nt_warnings_radioButton_clicked();
+
+ void on_nt_nowarnings_radioButton_clicked();
+
+ void on_nt_paranoid_radioButton_clicked();
+
+ void on_nt_noparanoid_radioButton_clicked();
+
+ void on_nt_showticks_radioButton_clicked();
+
+ void on_nt_noshowticks_radioButton_clicked();
+
+ void on_nt_showticklabels_radioButton_clicked();
+
+ void on_nt_noshowticklabels_radioButton_clicked();
+
+ void on_t_default_radioButton_clicked();
+
+ void on_t_image_map_use_radioButton_clicked();
+
+ void on_t_silent_radioButton_clicked();
+
+ void on_t_cdump_radioButton_clicked();
+
+ void on_t_debug_radioButton_clicked();
+
+ void on_t_help_radioButton_clicked();
+
+ void on_t_man_radioButton_clicked();
+
+ void on_t_version_radioButton_clicked();
+
+
+
+ void update_cmdfinal();
+
+ void on_circos_bindir_plainTextEdit_textChanged();
+
+ void on_conf_file_plainTextEdit_textChanged();
+
+ void on_out_folder_plainTextEdit_textChanged();
+
+ void on_out_file_plainTextEdit_textChanged();
+
+ void on_ext_op_args_plainTextEdit_textChanged();
+
+
+
+
+ void on_actionNew_triggered();
+
+ void on_actionClear_exec_status_triggered();
+
+
+
+ void updateExit();
+
+
+
+
+
+ void on_Save_stdout_pushButton_clicked();
+
+ void on_actionEdit_conf_file_triggered();
+
+ void on_actionEdit_other_files_triggered();
+
+ void viewimage ();
+
+
+
+ void on_imageciew_checkBox_clicked();
+
+ void setcircosbindirdefault ();
+
+ void on_actionSave_settings_triggered();
+
+ void on_actionOpen_settings_triggered();
+
+ void disablehelpmanversion ();
+
+ void enablehelpmanversion ();
+
+ int delete_existingfiles ();
+
+
+
+ void chmodExit();
+
+ void modulecheckbashscriptExit();
+
+ void stopExecution();
+ void installPerlModule();
+ void quit();
+
+ // Perl actions
+ void checkPerlDir();
+ void checkPerlVersion();
+ void checkPerlComplete();
+ void checkRequiredModuleInstallationStatus();
+
+ // Set Circos bin directory
+ void setBinDir();
+
+ // Help & about
+ void onlineDocumentation();
+ void quickReferanceManuel();
+ void about();
+
+ // Supporting functions
+ void standardOutput();
+ void standardError();
+
+ private:
+ void clearOutput();
+ void disableUiControls();
+ void enableUiControls();
+
+ Ui::MainWindow *ui;
+ QProcess *process;
+
+ enum CircosParam {
+ BinDir,
+ OutputDir,
+ ConfFile,
+ OutputFile,
+ CommandlineFinal,
+ };
+
+ enum ToggleNegatable {
+ Png,
+ Svg,
+ Warnig,
+ ShowTick,
+ AhowTickLabel
+ };
+
+ QString circosbindir, conffile, outputdir, outfile, extopargs, to, nto_png, nto_svg, nto_warnings, nto_paranoid, nto_showticks, nto_showticklabels, cmdfinal;
+ bool image_show_status;
+};
+
+#endif // MAINWINDOW_H
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
new file mode 100755
index 0000000..77ed891
--- /dev/null
+++ b/src/mainwindow.ui
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1024</width>
+ <height>768</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>runCircos-gui v0.1</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="3" column="5">
+ <widget class="QPushButton" name="conf_file_pushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="conf_file_label">
+ <property name="text">
+ <string>Select .conf file :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLabel" name="out_folder_label">
+ <property name="text">
+ <string>Output folder :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QLabel" name="out_file_label">
+ <property name="text">
+ <string>Output file name :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" colspan="5">
+ <widget class="QCheckBox" name="imageciew_checkBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::RightToLeft</enum>
+ </property>
+ <property name="text">
+ <string>Open plot after Circos execution in default photoviewer</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="5">
+ <widget class="QComboBox" name="comboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0" colspan="2">
+ <widget class="QLabel" name="cmdline_label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>CMD line :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="3" colspan="3">
+ <widget class="QCheckBox" name="edit_cmdline_checkBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::RightToLeft</enum>
+ </property>
+ <property name="text">
+ <string>Edit CMD line</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0" colspan="6">
+ <widget class="QTextEdit" name="cmdfinal_textEdit">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="6" rowspan="11">
+ <widget class="QGroupBox" name="exec_status_groupBox">
+ <property name="title">
+ <string>Execution Status :</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QProgressBar" name="progressBar">
+ <property name="maximum">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="Save_stdout_pushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="stop_pushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>24</width>
+ <height>24</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="3">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Standard Output :</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPlainTextEdit" name="exec_status_plainTextEdit"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Standard Error :</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPlainTextEdit" name="exec_status_err_textEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="5" column="2" colspan="3">
+ <widget class="QLineEdit" name="out_file_plainTextEdit"/>
+ </item>
+ <item row="2" column="2" colspan="3">
+ <widget class="QLineEdit" name="circos_bindir_plainTextEdit"/>
+ </item>
+ <item row="10" column="4" colspan="2">
+ <widget class="QPushButton" name="run_ncircos_button">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string> Run N-Circos</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" colspan="3">
+ <widget class="QLineEdit" name="conf_file_plainTextEdit"/>
+ </item>
+ <item row="4" column="2" colspan="3">
+ <widget class="QLineEdit" name="out_folder_plainTextEdit"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="mandatory_conffile_label">
+ <property name="text">
+ <string>*</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="5">
+ <widget class="QPushButton" name="circos_bindir_pushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="6">
+ <widget class="QGroupBox" name="ext_op_args_groupBox">
+ <property name="title">
+ <string>Extended Options with arguments</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QCheckBox" name="ext_op_args_enable_checkBox">
+ <property name="text">
+ <string>Enable</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="ext_op_args_plainTextEdit"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="mandatory_circosbindir_label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>*</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="circos_bindir_label">
+ <property name="text">
+ <string>Circos/bin directory :</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="5">
+ <widget class="QPushButton" name="out_folder_pushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="10" column="0" colspan="2">
+ <widget class="QLabel" name="mandatory_label">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>10</pointsize>
+ </font>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>* mandatory</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QGroupBox" name="toggle_groupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Toggle Options</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_12">
+ <item>
+ <widget class="QRadioButton" name="t_default_radioButton">
+ <property name="text">
+ <string>default</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_image_map_use_radioButton">
+ <property name="text">
+ <string>image_map_use</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_silent_radioButton">
+ <property name="text">
+ <string>silent</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_cdump_radioButton">
+ <property name="text">
+ <string>cdump</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_debug_radioButton">
+ <property name="text">
+ <string>debug</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_help_radioButton">
+ <property name="text">
+ <string>help</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_man_radioButton">
+ <property name="text">
+ <string>man</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="t_version_radioButton">
+ <property name="text">
+ <string>version</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="2" colspan="4">
+ <widget class="QGroupBox" name="ntoggle_groupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Ignored">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Negatable Toggle Options</string>
+ </property>
+ <widget class="QGroupBox" name="nto_showticklabels_noshowticklabels_groupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>150</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_showticklabels_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>131</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>show_tick_labels</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_noshowticklabels_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>151</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no show_tick_labels</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_showticks_noshowticks_groupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>129</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_showticks_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>show_ticks</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_noshowticks_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>111</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no show_ticks</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_paranoid_noparanoid_groupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>109</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_paranoid_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>paranoid</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_noparanoid_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>101</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no paranoid</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_warnings_nowarnings_groupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>89</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_warnings_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>warnings</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_nowarnings_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no warnings</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_svg_nosvg_groupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>69</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_svg_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>svg</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_nosvg_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no svg</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_png_nopng_groupBox">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>50</y>
+ <width>311</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <widget class="QRadioButton" name="nt_png_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>png</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="nt_nopng_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>160</x>
+ <y>20</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>no png</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QGroupBox" name="nto_default_groupBox">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>301</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="contextMenuPolicy">
+ <enum>Qt::DefaultContextMenu</enum>
+ </property>
+ <property name="acceptDrops">
+ <bool>false</bool>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string/>
+ </property>
+ <widget class="QRadioButton" name="nt_default_radioButton">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>30</y>
+ <width>102</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>default</string>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>1024</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menuFile">
+ <property name="title">
+ <string>N-Circos</string>
+ </property>
+ <addaction name="separator"/>
+ <addaction name="actionNew"/>
+ <addaction name="actionOpen_settings"/>
+ <addaction name="actionSave_settings"/>
+ <addaction name="actionEdit_conf_file"/>
+ <addaction name="actionEdit_other_files"/>
+ <addaction name="actionClear_exec_status"/>
+ <addaction name="actionQuit"/>
+ </widget>
+ <widget class="QMenu" name="menuPerl">
+ <property name="title">
+ <string>Perl</string>
+ </property>
+ <addaction name="separator"/>
+ <addaction name="actionCheck_version"/>
+ <addaction name="actionInstall_perl_package"/>
+ <addaction name="actionCommand_line_CMD"/>
+ </widget>
+ <widget class="QMenu" name="menuCircos">
+ <property name="title">
+ <string>Circos</string>
+ </property>
+ <addaction name="actionSet_circos_bin_directory"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionOnline_documentation"/>
+ <addaction name="actionQuick_referance_manuel_QRM"/>
+ <addaction name="actionAbout"/>
+ </widget>
+ <addaction name="menuFile"/>
+ <addaction name="menuPerl"/>
+ <addaction name="menuCircos"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <action name="actionNew">
+ <property name="text">
+ <string>New</string>
+ </property>
+ </action>
+ <action name="actionCut">
+ <property name="text">
+ <string>Cut</string>
+ </property>
+ </action>
+ <action name="actionCopy">
+ <property name="text">
+ <string>Copy</string>
+ </property>
+ </action>
+ <action name="actionPaste">
+ <property name="text">
+ <string>Paste</string>
+ </property>
+ </action>
+ <action name="actionOpen_settings">
+ <property name="text">
+ <string>Open settings</string>
+ </property>
+ </action>
+ <action name="actionSave_settings">
+ <property name="text">
+ <string>Save settings</string>
+ </property>
+ </action>
+ <action name="actionEdit_conf_file">
+ <property name="text">
+ <string>Edit .conf file</string>
+ </property>
+ </action>
+ <action name="actionEdit_other_files">
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Edit other files</string>
+ </property>
+ </action>
+ <action name="actionCheck_version">
+ <property name="text">
+ <string>Check perl</string>
+ </property>
+ </action>
+ <action name="actionInstall_perl_package">
+ <property name="text">
+ <string>Install perl package</string>
+ </property>
+ </action>
+ <action name="actionCommand_line_CMD">
+ <property name="text">
+ <string>Check perl module installation status</string>
+ </property>
+ </action>
+ <action name="actionSet_circos_bin_directory">
+ <property name="text">
+ <string>Set circos/bin directory</string>
+ </property>
+ </action>
+ <action name="actionOnline_documentation">
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Online documentation</string>
+ </property>
+ </action>
+ <action name="actionQuick_referance_manuel_QRM">
+ <property name="text">
+ <string>Quick referance manuel (QRM)</string>
+ </property>
+ </action>
+ <action name="actionAbout">
+ <property name="text">
+ <string>About</string>
+ </property>
+ </action>
+ <action name="actionClear_exec_status">
+ <property name="text">
+ <string>Clear exec status</string>
+ </property>
+ </action>
+ <action name="actionQuit">
+ <property name="text">
+ <string>Quit</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/moduleinstaller.cpp b/src/moduleinstaller.cpp
new file mode 100755
index 0000000..ad6a93b
--- /dev/null
+++ b/src/moduleinstaller.cpp
@@ -0,0 +1,209 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "moduleinstaller.h"
+#include "ui_moduleinstaller.h"
+
+#include "iconloader.h"
+#include "utils.h"
+
+#include <QFileDialog>
+#include <QFileInfo>
+#include <QMessageBox>
+#include <QProcess>
+#include <QTextStream>
+
+ModuleInstaller::ModuleInstaller(QWidget *parent)
+ : QDialog(parent),
+ ui(new Ui::ModuleInstaller) {
+ ui->setupUi(this);
+
+ // Load icons
+ setWindowIcon(IconLoader::load("package-install"));
+
+ // Signal slot connections
+ connect(ui->install_pushButton, SIGNAL(clicked()),
+ SLOT(installPerlModule()));
+}
+
+ModuleInstaller::~ModuleInstaller() {
+ delete ui;
+}
+
+void ModuleInstaller::installPerlModule() {
+#ifdef Q_OS_WIN
+ if (ui->module_lineEdit->text().trimmed().count() != 0) {
+#else
+ // NOTE: GD module cannot be installed from runcircos-gui for
+ // linux at this point. Each distribution provides their own
+ // precompiled custom library. may be in future this can be
+ // added.
+ if (ui->module_lineEdit->text().trimmed() != "GD" &&
+ ui->module_lineEdit->text().trimmed().count() != 0) {
+
+ QDir dir(Utils::getConfigPath(Utils::ConfDir));
+ if (!dir.exists()) {
+ dir.mkpath(".");
+ }
+
+ // Create a perl module installer bash script file.
+ const QString filename = Utils::getConfigPath(Utils::InstallModule);
+ QFile file(filename);
+ QStringList bash_script;
+ bash_script << "#!/bin/bash"
+ << "echo \"Installing " +
+ ui->module_lineEdit->text().trimmed() +
+ " module by CPAN method ....\""
+ << "sudo cpan install " +
+ ui->module_lineEdit->text().trimmed();
+#ifdef Q_OS_UNIX
+ QStringList linux_bash_script_end;
+ linux_bash_script_end << "echo -n \"Close xterm or "
+ "press [ENTER] to exit\""
+ <<"read -n 1 -s";
+#endif
+ if (file.open(QIODevice::ReadWrite| QIODevice::Truncate
+ | QIODevice::Text)) {
+ QTextStream stream(&file);
+ for (int i = 0; i < bash_script.size(); ++i) {
+ stream << bash_script.at(i) << endl;
+ }
+#ifdef Q_OS_UNIX
+ for (int i = 0; i < linux_bash_script_end.size(); ++i) {
+ stream << linux_bash_script_end.at(i) << endl;
+ }
+#endif
+ file.close();
+ }
+
+ // Call external process first to change execution
+ // mode of bash script & then run the script.
+ modinstall = new QProcess(this);
+ connect(modinstall, SIGNAL(finished(int)), this,
+ SLOT(startInstallModuleProcess()));
+ modinstall->start("bash -c \"chmod a+x "+ filename + "\"");
+#endif
+ } else {
+ if (ui->module_lineEdit->text().trimmed().count() == 0) {
+ blankModuleNameMsgbox();
+ } else if (ui->module_lineEdit->text().trimmed() == "GD") {
+ // Q_OS_WIN will never reach this if statement.
+#ifdef Q_OS_UNIX
+ QMessageBox msgbox;
+ msgbox.setWindowTitle(tr("No GD!"));
+ msgbox.setText(tr("GD module cannot be installed!"));
+ msgbox.setInformativeText(tr("You cannot install GD perl module "
+ "using runcircos-gui. Please install "
+ "precompiled GD module from software "
+ "repository of your respective linux "
+ "distribution."));
+ msgbox.setStandardButtons(QMessageBox::Cancel);
+ msgbox.exec();
+#elif defined(Q_OS_DARWIN)
+ // Generate a custom script to install GD.
+ QDir dir(Utils::getConfigPath(Utils::ConfDir));
+ if (!dir.exists()) {
+ dir.mkpath(".");
+ }
+ const QString filename = Utils::getConfigPath(Utils::InstallModule);
+ QFile file(filename);
+ QStringList bash_script;
+ bash_script
+ << "#!/bin/sh"
+ << "echo \"Installing GD module by custom method ....\"";
+ << "cd " + Utils::getConfigPath(Utils::ConfDir);
+ << "curl -O http://www.researcharun.com/narayanankutty/gd.tar.gz";
+ << "tar -zxf gd.tar.gz";
+ << "cd gd";
+ << "echo \"><><><><><><><><><\"";
+ << "echo \"Installing zlib\"";
+ << "echo \"><><><><><><><><><\"";
+ << "tar -zxf zlib-1.2.8.tar.xz";
+ << "cd zlib-1.2.8";
+ << "./configure";
+ << "make";
+ << "sudo make install";
+ << "cd ..";
+ << "echo \"Installing libpng\"";
+ << "tar -zxf libpng-1.6.6.tar.xz";
+ << "cd libpng-1.6.6";
+ << "echo \"Installing libjpeg\"";
+ << "tar -zxf jpegsrc.v9.tar.gz";
+ << "cd jpeg-9";
+ << "echo \"Installing freetype\"";
+ << "tar -zxf freetype-2.5.0.1.tar.bz2";
+ << "cd freetype-2.5.0.1";
+ << "echo \"Installing libgd\"";
+ << "tar -zxf libgd-2.1.0.tar.xz";
+ << "cd libgd-2.1.0";
+ << "./configure --with-zlib=/usr/local --with-jpeg=/usr/local "
+ "--with-png=/usr/local --with-freetype=/usr/local";
+ << "echo \"Installing GD\"";
+ << "tar -zxf GD-2.50.tar.gz";
+ << "cd GD-2.50";
+ << "perl Makefile.PL";
+ << "rm -rf zlib-1.2.8 libpng-1.6.6 jpeg-9 freetype-2.5.0.1 "
+ "libgd-2.1.0 GD-2.50";
+ << "echo \"Check GD Installation Status\"";
+ << "echo \"GD\" | xargs -I MODULE perl -e 'print eval \"use "
+ "MODULE;1\"?\"\\n\\n\\nOK\\n\\n\\n\":\"\\n\\n\\nFail\\n\\n\\n\"'";
+
+ if (file.open(QIODevice::ReadWrite| QIODevice::Truncate |
+ QIODevice::Text)) {
+ QTextStream stream( &file );
+ for (int i = 0; i < bash_script.size(); ++i) {
+ stream << bash_script.at(i) << endl;
+ }
+ file.close();
+ }
+
+ modinstall = new QProcess(this);
+ connect(modinstall, SIGNAL(finished(int)), this,
+ SLOT(startInstallModuleProcess()));
+ modinstall->start("bash -c \"chmod a+x "+ filename + "\"");
+#endif
+ }
+ }
+}
+
+void ModuleInstaller::startInstallModuleProcess() {
+ // Start the terminal as detached process
+ modinstall = new QProcess(this);
+#ifdef Q_OS_UNIX
+ // TODO: use the default terminal available
+ modinstall->startDetached("bash -c \"xterm " +
+ Utils::getConfigPath(Utils::InstallModule) + "\"");
+#elif defined(Q_OS_DARWIN)
+ modinstall->startDetached("open -a Terminal " +
+ Utils::getConfigPath(Utils::InstallModule));
+#elif defined(Q_OS_WIN)
+ modinstall->startDetached("cmd.exe /K cpan " +
+ ui->module_lineEdit->text().trimmed());
+#endif
+ this->close();
+}
+
+void ModuleInstaller::blankModuleNameMsgbox() {
+ QMessageBox msgbox;
+ msgbox.setWindowTitle(tr("Blank module name!"));
+ msgbox.setText("Please give a perl module name!");
+ msgbox.setInformativeText(tr("You cannot leave perl module "
+ "name as blank. Please give a valid "
+ "module name."));
+ msgbox.setWindowModality(Qt::NonModal);
+ msgbox.exec();
+}
diff --git a/src/moduleinstaller.h b/src/moduleinstaller.h
new file mode 100755
index 0000000..de1b95c
--- /dev/null
+++ b/src/moduleinstaller.h
@@ -0,0 +1,46 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef MODULEINSTALLER_H
+#define MODULEINSTALLER_H
+
+#include <QDialog>
+#include <QProcess>
+
+namespace Ui {
+ class ModuleInstaller;
+}
+
+class ModuleInstaller : public QDialog {
+ Q_OBJECT
+
+ public:
+ explicit ModuleInstaller(QWidget *parent = 0);
+ ~ModuleInstaller();
+
+ private slots:
+ void installPerlModule();
+ void startInstallModuleProcess();
+
+ private:
+ void blankModuleNameMsgbox();
+
+ Ui::ModuleInstaller *ui;
+ QProcess *modinstall;
+};
+
+#endif // MODULEINSTALLER_H
diff --git a/src/moduleinstaller.ui b/src/moduleinstaller.ui
new file mode 100755
index 0000000..30929a0
--- /dev/null
+++ b/src/moduleinstaller.ui
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ModuleInstaller</class>
+ <widget class="QDialog" name="ModuleInstaller">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>472</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>CPAN module installer</string>
+ </property>
+ <widget class="QLineEdit" name="module_lineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>10</y>
+ <width>271</width>
+ <height>21</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="install_pushButton">
+ <property name="geometry">
+ <rect>
+ <x>380</x>
+ <y>10</y>
+ <width>81</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Install</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>101</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Module name:</string>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/runcircos-gui.pro b/src/runcircos-gui.pro
new file mode 100755
index 0000000..3b7b475
--- /dev/null
+++ b/src/runcircos-gui.pro
@@ -0,0 +1,50 @@
+#----------------------------------------------------------------------------
+#
+# Project created by QtCreator 2014-07-20T01:15:23
+#
+# This file is part of runcircos-gui.
+# Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+#
+# runcircos-gui is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License 2 as published by
+# the Free Software Foundation. However GPL version 3, or any other GPL
+# version are icompatible with this software.
+#
+# runcircos-gui is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>
+#
+#----------------------------------------------------------------------------
+
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = runcircos-gui
+TEMPLATE = app
+
+SOURCES += main.cpp\
+ mainwindow.cpp \
+ aboutbox.cpp \
+ iconloader.cpp \
+ setbindir.cpp \
+ utils.cpp \
+ moduleinstaller.cpp
+
+HEADERS += mainwindow.h \
+ aboutbox.h \
+ iconloader.h \
+ setbindir.h \
+ utils.h \
+ moduleinstaller.h
+
+FORMS += mainwindow.ui \
+ aboutbox.ui \
+ setbindir.ui \
+ moduleinstaller.ui
+
+RESOURCES += ../data/icons.qrc
diff --git a/src/setbindir.cpp b/src/setbindir.cpp
new file mode 100755
index 0000000..76ae3f6
--- /dev/null
+++ b/src/setbindir.cpp
@@ -0,0 +1,71 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "setbindir.h"
+#include "ui_setbindir.h"
+
+#include "iconloader.h"
+#include "utils.h"
+
+#include <QFileDialog>
+#include <QSettings>
+
+SetBinDir::SetBinDir(QWidget *parent)
+ : QDialog(parent),
+ ui(new Ui::SetBinDir) {
+ ui->setupUi(this);
+
+ // Load icons
+ setWindowIcon(IconLoader::load("folder"));
+ ui->setcircosbindir_pushButton->setIcon(IconLoader::load(
+ "document-open-folder"));
+
+ // Signal slot connections
+ connect(ui->setcircosbindir_pushButton, SIGNAL(clicked()),
+ SLOT(browseBinDir()));
+ connect(ui->ok_pushButton, SIGNAL(clicked()),
+ SLOT(setBinDir()));
+ connect(ui->cancel_pushButton, SIGNAL(clicked()),
+ SLOT(close()));
+
+ // Load settings
+ settingsfile = Utils::getConfigPath(Utils::ConfFile);
+ loadBinDirSettings();
+}
+
+SetBinDir::~SetBinDir() {
+ delete ui;
+}
+
+void SetBinDir::browseBinDir() {
+ QString set_circos_bindir = QFileDialog::getExistingDirectory(0,
+ "Caption",QString(),QFileDialog::ShowDirsOnly);
+ ui->setcircosbindir_plainTextEdit->setText(set_circos_bindir);
+}
+
+void SetBinDir::setBinDir() {
+ QSettings settings(settingsfile, QSettings::NativeFormat);
+ settings.setValue("CircosBinDirectory",
+ ui->setcircosbindir_plainTextEdit->text().trimmed());
+ close();
+}
+
+void SetBinDir::loadBinDirSettings() {
+ QSettings settings(settingsfile, QSettings::NativeFormat);
+ QString bindir = settings.value("CircosBinDirectory", "").toString();
+ ui->setcircosbindir_plainTextEdit->setText(bindir);
+}
diff --git a/src/setbindir.h b/src/setbindir.h
new file mode 100755
index 0000000..a41459c
--- /dev/null
+++ b/src/setbindir.h
@@ -0,0 +1,45 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef SETBINDIR_H
+#define SETBINDIR_H
+
+#include <QDialog>
+
+namespace Ui {
+ class SetBinDir;
+}
+
+class SetBinDir : public QDialog {
+ Q_OBJECT
+
+ public:
+ explicit SetBinDir(QWidget *parent = 0);
+ ~SetBinDir();
+
+ private slots:
+ void browseBinDir();
+ void setBinDir();
+
+ private:
+ void loadBinDirSettings();
+
+ Ui::SetBinDir *ui;
+ QString settingsfile;
+};
+
+#endif // SETBINDIR_H
diff --git a/src/setbindir.ui b/src/setbindir.ui
new file mode 100755
index 0000000..bc41275
--- /dev/null
+++ b/src/setbindir.ui
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SetBinDir</class>
+ <widget class="QDialog" name="SetBinDir">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>481</width>
+ <height>69</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Set default circos/bin directory</string>
+ </property>
+ <widget class="QPushButton" name="setcircosbindir_pushButton">
+ <property name="geometry">
+ <rect>
+ <x>400</x>
+ <y>11</y>
+ <width>71</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Browse</string>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/icons/icons/browse_folder.png</normaloff>:/icons/icons/browse_folder.png</iconset>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="ok_pushButton">
+ <property name="geometry">
+ <rect>
+ <x>150</x>
+ <y>40</y>
+ <width>81</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="setcircosbindir_plainTextEdit">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>381</width>
+ <height>22</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="cancel_pushButton">
+ <property name="geometry">
+ <rect>
+ <x>240</x>
+ <y>40</y>
+ <width>81</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/utils.cpp b/src/utils.cpp
new file mode 100644
index 0000000..09a6945
--- /dev/null
+++ b/src/utils.cpp
@@ -0,0 +1,46 @@
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "utils.h"
+
+#include <QCoreApplication>
+#include <QDir>
+
+QString Utils::getConfigPath(const Path& path) {
+ QString configpath;
+ switch (path) {
+ case ConfFile:
+ configpath = QDir::homePath() +
+ QDir::toNativeSeparators("/.runcircos-gui/runcircos-gui.conf");
+ break;
+ case ConfDir:
+ configpath = QDir::homePath() +
+ QDir::toNativeSeparators("/.runcircos-gui");
+ break;
+ case Manuel:
+ configpath = QCoreApplication::applicationDirPath() +
+ QDir::toNativeSeparators("/manuel/QRF.pdf");
+ break;
+ case InstallModule:
+ configpath = QDir::homePath() +
+ QDir::toNativeSeparators("/.runcircos-gui/installmodule.sh");
+ break;
+ default:
+ break;
+ }
+ return configpath;
+}
diff --git a/src/utils.h b/src/utils.h
new file mode 100644
index 0000000..515baed
--- /dev/null
+++ b/src/utils.h
@@ -0,0 +1,40 @@
+
+/* This file is part of runcircos-gui.
+ Copyright 2014 - 2016, Arun Narayanankutty <n.arun.lifescience at gmail.com>
+
+ runcircos-gui is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 2 as published by
+ the Free Software Foundation. However GPL version 3, or any other GPL
+ version are icompatible with this software.
+
+ runcircos-gui is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with runcircos-gui. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <QString>
+
+class Utils {
+public:
+ enum Path {
+ ConfFile,
+ ConfDir,
+ Manuel,
+ WhichPerl,
+ InstallModule
+ };
+
+ static QString getConfigPath(const Path& path);
+
+private:
+ Utils() {}
+};
+
+#endif // UTILS_H
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/runcircos-gui.git
More information about the debian-med-commit
mailing list