コード例 #1
0
    def __init__(self, listeners_pool, show_classify_button, *args, **kwargs):
        super(Classifier, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'classificator', listeners_pool)

        self.combo_service = ComboBoxService()
        self.expenses_service = PendingExpensesService()

        widget_creator = WidgetCreator()

        self.categories = widget_creator.create_combobox(
            self.combo_service, 'get_categories')
        self.classify_button = widget_creator.create_button(
            'Clasificar elementos', 'ok', self.classify_elements)

        layout = QVBoxLayout()
        self.setLayout(layout)

        inner_layout = QVBoxLayout()
        inner_layout.addWidget(self.categories)

        if show_classify_button:
            inner_layout.addWidget(self.classify_button)

        group_box_title = 'Clasificar por tipo' if show_classify_button else 'Tipo de gasto'

        group_box = QGroupBox(group_box_title)
        group_box.setLayout(inner_layout)

        layout.addWidget(group_box)
コード例 #2
0
    def init_table(self, table_info_file):
        self.table_info = ConfigLoader().load_table(table_info_file)
        column_labels = list(map(lambda x: x['field_text'], self.table_info))

        ListenerNode.__init__(self, self.table_id, self.listeners_pool)
        super().__init__(1, len(self.table_info))

        self.setHorizontalHeaderLabels(column_labels)
コード例 #3
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(DateFilter, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'date-filter', listeners_pool)

        widget_creator = WidgetCreator()

        self.__combobox_service = ComboBoxService()
        self.expenses_service = PendingExpensesService()

        self.cbx = {
            'from': {
                'day':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_days'),
                'month':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_months'),
                'year':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_years')
            },
            'to': {
                'day':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_days'),
                'month':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_months'),
                'year':
                widget_creator.create_combobox(self.__combobox_service,
                                               'get_years')
            }
        }

        layout = QVBoxLayout()
        self.setLayout(layout)

        from_layout = self.create_date_layout('Desde', self.cbx['from'])
        to_layout = self.create_date_layout('Hasta', self.cbx['to'])

        inner_layout = QVBoxLayout()
        inner_layout.addLayout(from_layout)
        inner_layout.addLayout(to_layout)

        group_box = QGroupBox("Fechas")
        group_box.setLayout(inner_layout)

        layout.addWidget(group_box)

        self.cbx['from']['day'].currentIndexChanged.connect(self.date_changed)
        self.cbx['from']['month'].currentIndexChanged.connect(
            self.date_changed)
        self.cbx['from']['year'].currentIndexChanged.connect(self.date_changed)
        self.cbx['to']['day'].currentIndexChanged.connect(self.date_changed)
        self.cbx['to']['month'].currentIndexChanged.connect(self.date_changed)
        self.cbx['to']['year'].currentIndexChanged.connect(self.date_changed)

        self.update_top_dates()
コード例 #4
0
    def __init__(self, listeners_pool):
        ListenerNode.__init__(self, 'pending-expenses-table', listeners_pool)

        self.expenses_service = PendingExpensesService()
        self.expenses = []

        self.table_info = ConfigLoader().load_table('pending-expenses')
        column_labels = list(map(lambda x: x['field_text'], self.table_info))

        super().__init__(1, len(self.table_info))

        self.setHorizontalHeaderLabels(column_labels)
コード例 #5
0
    def __init__(self, screen_type, listeners_pool, *args, **kwargs):
        super(FilterWidget, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'filter-widget', listeners_pool)

        self.table_name = screen_type + '-expenses-table'

        self.filter = {
            'date': {
                'from': None,
                'to': None
            },
            'search_value': None
        }

        self.date_filter = DateFilter(listeners_pool)
        self.text_filter = TextFilter(listeners_pool)
        self.summatory = Summatory(listeners_pool)
        self.secondary_filters = SecondaryFilters(listeners_pool)

        show_classify_button = screen_type == 'pending'
        self.classifier = Classifier(listeners_pool, show_classify_button)

        column1 = QVBoxLayout()
        column1.addWidget(self.date_filter)

        if screen_type != 'chart':
            column1.addWidget(self.text_filter)

            if screen_type == 'pending':
                column2 = QVBoxLayout()
                column2.addWidget(self.classifier)

        column3 = QVBoxLayout()
        column3.addWidget(self.summatory)

        main_part = QHBoxLayout()
        main_part.addLayout(column1)

        if screen_type == 'pending':
            main_part.addLayout(column2)

        main_part.addLayout(column3)

        main_layout = QVBoxLayout()
        main_layout.addLayout(main_part)

        if screen_type != 'chart':
            secondary_part = QHBoxLayout()
            secondary_part.addWidget(self.secondary_filters)

            main_layout.addLayout(secondary_part)

        self.setLayout(main_layout)
コード例 #6
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(ViewExpensesScreen, self).__init__(*args, **kwargs)

        self.listeners_pool = listeners_pool
        ListenerNode.__init__(self, 'view-expenses-screen', self.listeners_pool)

        self.classified_expenses_table = None

        self.layout = QVBoxLayout()
        self.setLayout(self.layout)

        self.filter_widget = FilterWidget('classified', listeners_pool)
        self.layout.addWidget(self.filter_widget)

        self.add_table('expenses_raw')
        self.send_event('sum-text', 'show_records_no')
コード例 #7
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(TextFilter, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'text-filter', listeners_pool)

        self.line_edit = QLineEdit()

        layout = QVBoxLayout()
        self.setLayout(layout)

        inner_layout = QVBoxLayout()
        inner_layout.addWidget(self.line_edit)

        group_box = QGroupBox("Texto a buscar")
        group_box.setLayout(inner_layout)

        layout.addWidget(group_box)

        self.line_edit.textEdited.connect(self.text_changed)
コード例 #8
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(ViewChartsScreen, self).__init__(*args, **kwargs)

        self.listeners_pool = listeners_pool
        ListenerNode.__init__(self, 'view-charts-screen', self.listeners_pool)

        self.layout = QVBoxLayout()
        self.setLayout(self.layout)

        self.filter_widget = FilterWidget('chart', listeners_pool)
        self.layout.addWidget(self.filter_widget)

        self.filter = self.filter_widget.filter

        self.chart_service = ChartService()

        self.pie_chart = PieChart()
        self.layout.addWidget(self.pie_chart)

        self.reload_charts(self.filter)
コード例 #9
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(SecondaryFilters, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'secondary-filters', listeners_pool)

        self.group_by_month = QCheckBox('Por mes')
        self.group_by_type = QCheckBox('Por tipo de gasto')

        layout = QVBoxLayout()
        self.setLayout(layout)

        inner_layout = QHBoxLayout()
        inner_layout.addWidget(self.group_by_month)
        inner_layout.addWidget(self.group_by_type)

        group_box = QGroupBox('Agrupaciones')
        group_box.setLayout(inner_layout)

        layout.addWidget(group_box)

        self.group_by_month.stateChanged.connect(self.grouping_changed)
        self.group_by_type.stateChanged.connect(self.grouping_changed)
コード例 #10
0
    def __init__(self, listeners_pool, *args, **kwargs):
        super(Summatory, self).__init__(*args, **kwargs)
        ListenerNode.__init__(self, 'sum-text', listeners_pool)

        self.lbl = self.create_label(22)
        self.lbl2 = self.create_label(12)

        layout = QVBoxLayout()
        self.setLayout(layout)

        inner_layout = QVBoxLayout()
        inner_layout.addWidget(self.lbl)
        inner_layout.addWidget(self.lbl2)

        group_box = QGroupBox("Sumatorio")
        group_box.setLayout(inner_layout)

        layout.addWidget(group_box)

        self.set_sum_value(0.0)
        self.set_records_no_value(0)