Ejemplo n.º 1
0
    def __init__(self, parent=None, tickers=[]):
        super(TickersDialogWindow, self).__init__(parent=parent)

        self.setWindowFlags(QtCore.Qt.Window
                            | QtCore.Qt.FramelessWindowHint
                            | QtCore.Qt.WindowStaysOnTopHint)
        self.setupUi(self)

        # Set the header of the treewidget
        self.trw_all_tickers.set_header()

        # Constants
        self.tickers = tickers
        self.signal = EventHandler()

        # Build widgets data
        self.build_ticker_tree(data=self.tickers)

        # Signals
        self.trw_all_tickers.itemDoubleClicked.connect(self.choose_ticker)
        self.trw_all_tickers.itemChanged.connect(self.favorite_item)

        self.lie_ticker_search.textChanged.connect(
            self.trw_all_tickers.search_items)
        self.pub_close.clicked.connect(self.close)
Ejemplo n.º 2
0
    def __init__(self, parent=None, data=None):
        super(MainWindow, self).__init__(parent=parent)

        self.setupUi(self)
        self.setWindowState(QtCore.Qt.WindowMaximized)

        # Constants
        self.tickers_dialog = None
        self.tool_bar.init_toolbar()

        # Load all components
        self._init_app_home()
        self.tickers_dialog = TickersDialogWindow(parent=self, tickers=data)
        self.busy_indicator = BusyIndicator(parent=self)
        self.thread_pool = ThreadPool()
        self.signals = EventHandler()
        self.favorites_manager = FavoritesManager(parent=self)

        # Signals
        self.lie_ticker.mousePressEvent = self.tickers_dialog.show
        self.tickers_dialog.signal.sig_ticker_choosen.connect(
            self._on_ticker_selected)
        self.tickers_dialog.signal.sig_ticker_added_favorite.connect(
            self.favorites_manager._on_add_ticker_favorite)
        self.tickers_dialog.signal.sig_ticker_removed_favorite.connect(
            self.favorites_manager._on_remove_ticker_favorite)
        self.tickers_dialog.signal.sig_ticker_added_favorite.connect(
            self.wgt_favorites._on_favorite_added)
        self.tickers_dialog.signal.sig_ticker_removed_favorite.connect(
            self.wgt_favorites._on_favorite_removed)
        self.wgt_favorites.signals.sig_favorite_clicked.connect(
            self._on_ticker_selected)
        self.signals.sig_ticker_data_fetched.connect(
            self._on_process_ticker_data)
        self.signals.sig_ticker_infos_fetched.connect(
            self.wgt_company._on_ticker_infos)
        ##
        self.signals.sig_ticker_articles_fetched.connect(
            self.wgt_articles.get_articles)
        self.thread_pool.signals.sig_thread_pre.connect(
            self.busy_indicator.show)
        self.thread_pool.signals.sig_thread_post.connect(
            self.busy_indicator.hide)
        self.wgt_indicators.signals.sig_indicator_switched.connect(
            self._on_indicator_switched)
        self.action_reload_indicators.triggered.connect(
            self.wgt_indicators.reload_indicators)
        self.tool_bar.signals.sig_action_triggered.connect(
            self._on_action_triggered)
        self.favorites_manager.signals.sig_favorite_loaded.connect(
            self.wgt_favorites._on_favorite_loaded)
        self.favorites_manager.signals.sig_favorite_loaded.connect(
            self.tickers_dialog._on_favorite_loaded)

        self.pub_go_welcome.clicked.connect(self.stw_main.slide_in_prev)
        self.pub_go_graph.clicked.connect(self.stw_main.slide_in_next)

        # Action which needs to be loaded after all signals
        self.favorites_manager.load_favorite()
Ejemplo n.º 3
0
    def __init__(self, parent):
        super(FavoritesManager, self).__init__(parent)

        # Constants
        self.signals = EventHandler()
        self._app_home = os.environ.get("APP_HOME")
        self._favorites_path = os.path.join(self._app_home, "favorite",
                                            "favorite.json")
        self._favorites = []
Ejemplo n.º 4
0
    def __init__(self, parent=None):
        super(IndicatorSettingsDialogWindow, self).__init__(parent)

        self.setupUi(self)

        # Constant
        self._current_indicator = None
        self.signals = EventHandler()

        # Signals
        self.pub_cancel.clicked.connect(self._on_canceled)
        self.pub_ok.clicked.connect(self._on_ok)
        self.pub_reset.clicked.connect(self._on_reset)
Ejemplo n.º 5
0
    def __init__(self, parent=None):
        super(FavoritesWidget, self).__init__(parent)

        self.setupUi(self)

        # Constans
        self.signals = EventHandler()

        # Signals
        self.trw_favorites.itemClicked.connect(self._on_favorite_clicked)
        self.lie_search_favorite.textChanged.connect(
            self.trw_favorites.search_items
        )
Ejemplo n.º 6
0
    def __init__(self, parent=None):
        super(ToolBar, self).__init__(parent=parent)

        # CONSTANTS
        self.signals = EventHandler()
        self._actions = []

        self.setIconSize(QtCore.QSize(20, 20))
        self.toolbar_settings_file = os.path.join(
            os.path.dirname(os.path.dirname(os.path.dirname(__file__))),
            "resources",
            "toolbar",
            "toolbar.json",
        )
Ejemplo n.º 7
0
    def __init__(self, parent=None, *args, **kwargs):
        super(IndicatorSettingsPushButton, self).__init__(parent=parent,
                                                          *args,
                                                          **kwargs)

        # Constans
        self.signals = EventHandler()
        self.setFlat(True)
        self.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.setIcon(QtGui.QIcon(":/svg/settings.svg"))
        self.setIconSize(QtCore.QSize(20, 20))

        # Signals
        self.clicked.connect(self._on_clicked)
Ejemplo n.º 8
0
    def __init__(self, parent=None, *args, **kwargs):
        super(IndicatorPushButton, self).__init__(parent=parent,
                                                  *args,
                                                  **kwargs)

        # Constans
        self.signals = EventHandler()
        self.setFlat(True)
        self.setCheckable(True)
        self.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.setIcon(QtGui.QIcon(":/svg/toggle-off.svg"))
        self.setIconSize(QtCore.QSize(30, 30))

        # Init button state
        self.blockSignals(True)
        self.toggle_button()
        self.blockSignals(False)

        # Signals
        self.clicked.connect(self.toggle_button)
Ejemplo n.º 9
0
    def __init__(self, parent=None):
        super(IndicatorsWidget, self).__init__(parent=parent)

        self.setupUi(self)

        # Detect all indicators add-ons
        self._indicators_collection = PluginCollection(
            plugin_package="add_ons",
            plugin_class=Indicator,
        )
        self.indicator_settings_dialog = IndicatorSettingsDialogWindow(
            parent=self)

        # Init customs signals
        self.signals = EventHandler()

        self.tab_indicators.set_header()
        self.build_indicators()

        # Signals
        self.lie_indicators_search.textChanged.connect(
            self.tab_indicators.search_items)
        self.indicator_settings_dialog.signals.sig_indicator_settings_validated.connect(
            self._on_settings_validated)
Ejemplo n.º 10
0
 def __init__(self):
     super(ThreadPool, self).__init__()
     self.setExpiryTimeout(3000)
     self.signals = EventHandler()
Ejemplo n.º 11
0
class TickersDialogWindow(QtWidgets.QDialog,
                          tickers_dialog.Ui_TickersDialogWindow):
    def __init__(self, parent=None, tickers=[]):
        super(TickersDialogWindow, self).__init__(parent=parent)

        self.setWindowFlags(QtCore.Qt.Window
                            | QtCore.Qt.FramelessWindowHint
                            | QtCore.Qt.WindowStaysOnTopHint)
        self.setupUi(self)

        # Set the header of the treewidget
        self.trw_all_tickers.set_header()

        # Constants
        self.tickers = tickers
        self.signal = EventHandler()

        # Build widgets data
        self.build_ticker_tree(data=self.tickers)

        # Signals
        self.trw_all_tickers.itemDoubleClicked.connect(self.choose_ticker)
        self.trw_all_tickers.itemChanged.connect(self.favorite_item)

        self.lie_ticker_search.textChanged.connect(
            self.trw_all_tickers.search_items)
        self.pub_close.clicked.connect(self.close)

    def build_ticker_tree(self, data: list):
        """Build the data inside the treewidget

        :param data: All tickers
        :type data: list
        """
        for ticker, company in data.items():
            item = TreeWidgetItem(
                self.trw_all_tickers,
                [ticker, company],
                checkable=True,
                ticker=ticker,
                name=company,
            )

    def update_ticker_favorite_state(self, favorite):
        """Update the state of the favorite checkbox

        :param favorite: The list of favorite
        :type favorite: list
        """
        self.signal.blockSignals(True)
        for item in self.trw_all_tickers.get_all_items(
                item=self.trw_all_tickers.invisibleRootItem(),
                include_invisible=False,
        ):
            if {"ticker": item.ticker, "name": item.name} in favorite:
                item.setCheckState(0, QtCore.Qt.Checked)
            else:
                item.setCheckState(0, QtCore.Qt.Unchecked)
        self.signal.blockSignals(False)

    def choose_ticker(self, item: QtWidgets.QTreeWidgetItem, column: int):
        """Click on an item inside the treewidget

        :param item: The selected item
        :type item: QTreeWidgetItem
        :param column: The column selected
        :type column: int
        """
        ticker_name = item.text(0)
        self.signal.sig_ticker_choosen.emit(ticker_name)
        self.close()

    def favorite_item(self, item: QtWidgets.QTreeWidgetItem, column: int):
        """Promote or demote an item as favorite

        :param item: The item
        :type item: QtWidgets.QTreeWidgetItem
        :param column: The column clicked
        :type column: int
        """
        ticker = {"ticker": item.ticker, "name": item.name}
        if item.is_checked():
            self.signal.sig_ticker_added_favorite.emit(ticker)
        else:
            self.signal.sig_ticker_removed_favorite.emit(ticker)

    def move_to(self, pos=None):
        if not pos:
            self.move(self.parent().rect().center() - self.rect().center())
        else:
            self.move(pos)

    def show(self, *args, **kwargs):
        self.lie_ticker_search.clear()
        self.lie_ticker_search.setFocus()
        super(TickersDialogWindow, self).show()

    @QtCore.Slot(list)
    def _on_favorite_loaded(self, favorite):
        """Called when the favorite tickers are loaded

        :param favorite: List of favorite
        :type favorite: list
        """
        self.update_ticker_favorite_state(favorite=favorite)