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)
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)
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()
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)
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)
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')
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)
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)
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)
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)