Skip to content
xsa_app_main.py 2.97 KiB
Newer Older
"""

:Author: Franziska Koehn
:Created: 2015/01/13

This module contains the window-class and the method for starting the GUI.

"""

import gtk

class XsaApp(gtk.Window):
    """Main Window of xsa"""
    """Arguments from command-line"""

    def init_connection_fields(self):
Franziska Koehn's avatar
Franziska Koehn committed
        """Sets args (given Command-Line-Arguments) to their fields"""
        self.controller.host = self.args.host
        self.controller.credentials = self.args.user

    def __init__(self, args):
Franziska Koehn's avatar
Franziska Koehn committed
        Creates the Window and its views. Initializes xsagtk.main_controller.
Franziska Koehn's avatar
Franziska Koehn committed
            :args: Namespace, Command-Line-Arguments from argparse
        super(XsaApp, self).__init__()

        self.args = args

        self.set_size_request(1000, 500)
        self.set_position(gtk.WIN_POS_CENTER)
        self.connect("destroy", gtk.main_quit)
        self.set_title("xsa")

        def on_delete_event(*_):
            import xsa.queries
            xsa.queries.disconnect_xnat_server()

        self.connect("delete-event", on_delete_event)

        vbox_root = gtk.VBox(False, 1)

        # Toolbar

        from xsagtk.menu_view import MenuView
        self.menu = MenuView()
        vbox_root.pack_start(self.menu, False, False, 0)

        # Body

        hpaned = gtk.HPaned()
        hpaned.set_position(400)
        vbox_root.pack_start(hpaned, True, True, 5)

        # left side

        from xsagtk.query_view import QueryView
        self.queryview = QueryView(homogeneous=False, spacing=1)
        hpaned.add1(self.queryview)

        # right site

        vpaned = gtk.VPaned()
        vpaned.set_position(200)
        hpaned.add2(vpaned)

        # results-table

        from xsagtk.results_view import ResultsDownloadView
        self.resultsview = ResultsDownloadView(False,1)
        vpaned.add1(self.resultsview)

        notebook = gtk.Notebook()
        vpaned.add2(notebook)
        notebook.show()

        # work area: chart
        from xsagtk.chart_view import ChartView
        self.chartview = ChartView()
        notebook.append_page(self.chartview, gtk.Label("Chart"))

        # work area: additonal data
        from xsagtk.adddata_view import AdddataView
        self.adddataview = AdddataView()
        notebook.append_page(self.adddataview, gtk.Label("Comparison"))

        # statusbar

        self.statusbar = gtk.Statusbar()
        vbox_root.pack_start(self.statusbar, False, False, 0)

        self.add(vbox_root)

        from xsagtk.main_controller import QueryController
        self.controller = QueryController(self, self.queryview, self.menu, self.chartview, self.resultsview, self.adddataview, self.statusbar)

        self.init_connection_fields()

        self.show_all()

def start_xsa_gui(args):
Franziska Koehn's avatar
Franziska Koehn committed
    Creates the Window and passes it all CommandLine-Arguments.
Franziska Koehn's avatar
Franziska Koehn committed
        :args: Namespace, Command-Line-Arguments from argparse
    XsaApp(args)
    gtk.gdk.threads_init()
    gtk.main()