Exemple #1
0
    def _init_menu_widgets(self):
        self.setObjectName('root')
        self.title = factories.atomic_widget_factory(component='title',
                                                     title=settings.APP_NAME)

        self.function_menu = factories.layout_factory(layout='vertical-box')
        self.function_menu.setObjectName('grand-child')
        self.function_title_container = factories.layout_factory(
            layout='horizontal-box')
        self.function_title = factories.atomic_widget_factory(
            component='heading', title='Functions')
        self.function_hide_button = factories.atomic_widget_factory(
            component='hide-button', title=None)

        self.widget_buttons = [
            factories.atomic_widget_factory(component='button',
                                            title=function['name'])
            for function in definitions.FUNC_WIDGETS.values()
        ]
        self.exit_button = factories.atomic_widget_factory(component='button',
                                                           title="Exit")

        self.function_widgets = [
            function['class']('great-grand-child', self)
            for function in definitions.FUNC_WIDGETS.values()
        ]

        self.display_pane = factories.layout_factory(layout='vertical-box')
        self.display_pane.setObjectName('grand-child')

        self.container_pane = factories.layout_factory(layout='horizontal-box')
        self.container_pane.setObjectName('child')

        self.setLayout(QtWidgets.QVBoxLayout())
Exemple #2
0
    def _init_widgets(self, mode: str) -> None:
        """
        Creates child widgets by calling factory methods from `scrilla.gui.widgets.factories`. This method will iterate over `self.controls` and initialize the optional input widget accordingly. `self.optional_pane` and `self.required_pane`, the container widgets for the input elements, are initialized with a style tag on the same layer as the `scrilla.gui.widgets.components.ArgumentWidget`.
        """
        self.title = factories.atomic_widget_factory(
            component='subtitle', title='Function Input')
        self.optional_title = factories.atomic_widget_factory(
            component='label', title='Optional Arguments')
        self.error_message = factories.atomic_widget_factory(
            component='error', title="Error Message Goes Here")
        self.calculate_button = factories.atomic_widget_factory(
            component='calculate-button', title='Calculate')
        self.clear_button = factories.atomic_widget_factory(
            component='clear-button', title='Clear')

        if mode == SYMBOLS_LIST:
            self.required_title = factories.atomic_widget_factory(
                component='label', title='Required Arguments')
            self.symbol_hint = factories.atomic_widget_factory(
                component='text', title="Separate Tickers With Commas")
            self.required_pane = factories.layout_factory(
                layout='vertical-box')
            self.required_pane.setObjectName(self.layer)
            self.symbol_widget = factories.argument_widget_factory(
                component='symbols', title="Asset Tickers :", optional=False)
        elif mode == SYMBOLS_SINGLE:
            self.required_title = factories.atomic_widget_factory(
                component='label', title='Required Argument')
            self.symbol_hint = factories.atomic_widget_factory(
                component='text', title="Enter a Single Symbol")
            self.required_pane = factories.layout_factory(
                layout='vertical-box')
            self.required_pane.setObjectName(self.layer)
            self.symbol_widget = factories.argument_widget_factory(
                component='symbol', title="Symbol: ", optional=False)
        else:
            self.symbol_widget = None

        self.group_definitions = None
        for control in self.controls:
            if self.controls[control]:
                if self.controls[control]:
                    if definitions.ARG_DICT[control]["widget_type"] != "group":
                        self.control_widgets[control] = factories.argument_widget_factory(definitions.ARG_DICT[control]['widget_type'],
                                                                                          f'{definitions.ARG_DICT[control]["name"]} :',
                                                                                          optional=True)
                    else:
                        if self.group_definitions is None:
                            self.group_definitions = {}
                        self.group_definitions[definitions.ARG_DICT[control]
                                               ['name']] = definitions.ARG_DICT[control]
            else:
                self.control_widgets[control] = None

        self.optional_pane = factories.layout_factory(layout='vertical-box')
        self.optional_pane.setObjectName(self.layer)
        self.setLayout(QtWidgets.QVBoxLayout())
Exemple #3
0
    def _generate_splash(self):
        self.splash_container = factories.layout_factory(layout='vertical-box')
        self.source_button = factories.atomic_widget_factory(
            component='source-button', title=None)
        self.package_button = factories.atomic_widget_factory(
            component='package-button', title=None)
        self.documentation_button = factories.atomic_widget_factory(
            component='documentation-button', title=None)
        self.splash = factories.atomic_widget_factory(component='splash',
                                                      title=None)

        self.splash_button_panel = factories.layout_factory(
            layout='horizontal-box')

        self.splash_button_panel.layout().addStretch()
        self.splash_button_panel.layout().addWidget(self.source_button)
        self.splash_button_panel.layout().addWidget(self.package_button)
        self.splash_button_panel.layout().addWidget(self.documentation_button)
        self.splash_button_panel.layout().addStretch()
Exemple #4
0
 def _init_widgets(self):
     self.tab_container = factories.layout_factory(layout='vertical-box')
     self.tab_widget = QtWidgets.QTabWidget()
     self.arg_widget = components.ArgumentWidget(
         calculate_function=self.calculate,
         clear_function=self.clear,
         controls=self.controls,
         layer=utilities.get_next_layer(self.objectName()))
     # TODO: restrict arg symbol input to one symbol somehow
     self.setLayout(QtWidgets.QHBoxLayout())
Exemple #5
0
 def _init_widgets(self, widget_title: str) -> None:
     self.title_container = factories.layout_factory(
         layout='horizontal-box')
     self.title = factories.atomic_widget_factory(
         component='heading', title=widget_title)
     self.download_button = factories.atomic_widget_factory(
         component='download-button', title=None)
     self.figure = factories.atomic_widget_factory(
         component='figure', title=None)
     self.setLayout(QtWidgets.QVBoxLayout())
Exemple #6
0
 def _init_widgets(self):
     self.arg_widget = components.ArgumentWidget(
         calculate_function=self.calculate,
         clear_function=self.clear,
         controls=self.controls,
         layer=utilities.get_next_layer(self.objectName()))
     self.title = factories.atomic_widget_factory(
         component='heading', title='Distribution of Returns')
     self.tab_container = factories.layout_factory(layout='vertical-box')
     self.tab_widget = QtWidgets.QTabWidget()
     self.setLayout(QtWidgets.QHBoxLayout())
Exemple #7
0
 def _init_widgets(self, widget_title: str) -> None:
     """Creates child widgets and their layouts"""
     self.title_container = factories.layout_factory(
         layout='horizontal-box')
     self.title = factories.atomic_widget_factory(
         component='heading', title=widget_title)
     self.download_button = factories.atomic_widget_factory(
         component='download-button', title=None)
     self.table = factories.atomic_widget_factory(
         component='table', title=None)
     self.setLayout(QtWidgets.QVBoxLayout())