[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