def update_widget(self): print("update_widget") clear_layout(self.master_hbox) self.clear_bt = PixmapButton(parent=self) self.init_button() self.master_hbox.addLayout(self.get_content()) if self.data_type != "bobine": self.master_hbox.addWidget(self.clear_bt)
def __init__(self, parent): super(DayMenu, self).__init__(parent=parent) self.set_background_color(color_bleu_gris) self.master_hbox = QHBoxLayout() self.left_hbox = QHBoxLayout() self.center_hbox = QHBoxLayout() self.right_hbox = QHBoxLayout() self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.label_date = QLabel() self.init_widget()
def __init__(self, parent=None): super(TeamGestionMenu, self).__init__(parent=parent) self.background_color = color_bleu_gris self.hbox = QHBoxLayout(self) self.bt_plus = PixmapButton(parent=self) self.bt_moins = PixmapButton(parent=self) self.label_date = QLabel() self.label_type_stat = QLabel("Gestion des équipes") self.init_button() self.init_widget() self.update_button() self.update_label()
def __init__(self, data_type, callback, parent=None): super(BlocSelected, self).__init__(parent=parent) self.background_color = color_blanc self.set_border(color=color_noir) self.data_type = data_type self.parent = parent self.callback = callback self.master_hbox = QHBoxLayout() self.master_hbox.setContentsMargins(0, 0, 10, 0) self.clear_bt = PixmapButton(parent=self) self.init_button() self.init_ui()
def __init__(self, bobine, amount, parent=None): super(LineBobineSelected, self).__init__(parent=parent) self.parent = parent self.set_border(color=color_noir) self.bobine = bobine self.amount = amount self.clear_bt = PixmapButton(parent=self) self.init_button() self.stock_prev_value = 0 self.production = QLabel() self.stock_prev = QLabel() self.etat = QLabel() self.init_widget() self.update_widget() self.setFixedHeight(30)
def __init__(self, parent): super(ChartMenu, self).__init__(parent=parent) self.set_background_color(color_bleu_gris) self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.bt_zoom_plus = PixmapButton(parent=self) self.bt_zoom_moins = PixmapButton(parent=self) self.bt_live = QPushButton("En direct") self.label_date = QLabel() self.live_speed = LiveSpeed(self) self.init_widget() self.update_label() self.update_button()
def create_line_raison(self, raison, first_type): """ S'occupe de créer une ligne associé a une raison :return: Le layout de la ligne """ hbox = QHBoxLayout() # On met le label et la croix en couleur en fonction du type if raison.type == "Prévu": label_stylesheet = blue_title_label_stylesheet bt_cross_stylesheet = button_blue_cross_stylesheet elif raison.type == "Imprévu": label_stylesheet = red_title_label_stylesheet bt_cross_stylesheet = button_red_cross_stylesheet else: label_stylesheet = gray_title_label_stylesheet bt_cross_stylesheet = button_gray_cross_stylesheet # On regarde si le type est égale au first type pour ajouter le radiobutton si besoin if raison.type == first_type and raison.type != "Nettoyage": radio_bt = RadioButton(parent=self) radio_bt.is_selected = raison.primaire == 1 radio_bt.setStyleSheet(bt_cross_stylesheet) self.radio_button_manager.add(radio_bt) radio_bt.setFixedSize(self.HEIGHT_LINE, self.HEIGHT_LINE) hbox.addWidget(radio_bt, alignment=Qt.AlignVCenter) # Création du label type type_label = QLabel(raison.type) type_label.setStyleSheet(label_stylesheet) type_label.setAlignment(Qt.AlignCenter) type_label.setFixedWidth(self.WIDTH_TYPE) type_label.setFixedHeight(self.HEIGHT_LINE) # On ajoute le label au layout hbox.addWidget(type_label) # Création du label raison raison_label = QLabel(raison.raison) # On met le label en couleur en fonction du type et on définit la largeur raison_label.setStyleSheet(label_stylesheet) raison_label.setFixedHeight(self.HEIGHT_LINE) # On ajoute le label au layout hbox.addWidget(raison_label) # On crée un bouton pour supprimer la ligne bt_cross = PixmapButton(parent=self) bt_cross.setFixedSize(self.HEIGHT_LINE, self.HEIGHT_LINE) bt_cross.addImage("commun/assets/images/white_cross.png") bt_cross.setStyleSheet(bt_cross_stylesheet) bt_cross.clicked.connect( lambda: self.delete_line_raison(raison.raison)) # On ajoute le bouton au layout hbox.addWidget(bt_cross) hbox.setSpacing(0) return hbox
def __init__(self, parent=None): super(RapportMenu, self).__init__(parent=parent) self.background_color = color_bleu_gris self.bt_impression = PixmapButton(parent=self) self.bt_save = PixmapButton(parent=self) self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.bt_live = QPushButton("Aujourd'hui") self.label_date = QLabel() self.rapport = Rapport(parent=self) self.rapport.hide() self.init_button() self.init_widget() self.update_button() self.update_label()
class TrackerWindow(QMainWindow): BT_SIZE = QSize(30, 30) MARGIN = QMargins(5, 5, 5, 5) PADDING = 10 def __init__(self, on_close): super(TrackerWindow, self).__init__(None) self.on_close = on_close self.live_speed = LiveSpeed(parent=self) self.bt_retour = PixmapButton(parent=self) self.init_widget() def init_widget(self): central_widget = QWidget(self) central_widget.setContentsMargins(self.MARGIN) hbox = QHBoxLayout() hbox.addWidget(self.live_speed) self.bt_retour.setFixedSize(self.BT_SIZE) self.bt_retour.setStyleSheet(button_stylesheet) self.bt_retour.clicked.connect(self.new_main_window) self.bt_retour.addImage("commun/assets/images/fleche_precedent.png") hbox.addWidget(self.bt_retour) central_widget.setLayout(hbox) self.setCentralWidget(central_widget) @staticmethod def new_main_window(): app.create_main_window() def closeEvent(self, event): self.on_close() def draw_fond(self, p): """ Dessine un rectangle de la taille du bloc :param p: parametre de dessin """ draw_rectangle(p, self.PADDING, self.PADDING, self.width() - self.PADDING * 2, self.height() - self.PADDING * 2, color_bleu_gris) def paintEvent(self, event): p = QPainter() p.begin(self) self.draw(p) p.end() def draw(self, p): self.draw_fond(p)
class TeamGestionMenu(MondonWidget): MINIMUN_WIDTH_LABEL = 200 PIXMAPBUTTON_SIZE = QSize(30, 30) def __init__(self, parent=None): super(TeamGestionMenu, self).__init__(parent=parent) self.background_color = color_bleu_gris self.hbox = QHBoxLayout(self) self.bt_plus = PixmapButton(parent=self) self.bt_moins = PixmapButton(parent=self) self.label_date = QLabel() self.label_type_stat = QLabel("Gestion des équipes") self.init_button() self.init_widget() self.update_button() self.update_label() def init_widget(self): self.hbox.setSpacing(20) left_hbox = QHBoxLayout() left_hbox.addStretch(1) self.hbox.addLayout(left_hbox) center_hbox = QHBoxLayout() center_hbox.addStretch(4) center_hbox.addWidget(self.bt_moins) center_hbox.addStretch(1) self.label_date.setStyleSheet(white_22_label_stylesheet) self.label_date.setMinimumWidth(self.MINIMUN_WIDTH_LABEL) self.label_date.setAlignment(Qt.AlignCenter) center_hbox.addWidget(self.label_date) center_hbox.addStretch(1) center_hbox.addWidget(self.bt_plus) center_hbox.addStretch(4) self.hbox.addLayout(center_hbox) right_hbox = QHBoxLayout() right_hbox.addStretch(1) self.label_type_stat.setStyleSheet(green_maj_label_stylesheet) right_hbox.addWidget(self.label_type_stat) self.hbox.addLayout(right_hbox) self.setLayout(self.hbox) def on_settings_team_gestion_changed(self): self.update_button() self.update_label() def update_label(self): self.label_date.setText(settings_team_gestion_store.time_stat) def update_button(self): disabled_bt_moins = False disabled_bt_plus = False if settings_team_gestion_store.week_ago >= LIMIT_JOURS_GESTION_EQUIPE: disabled_bt_plus = True limit_week_stat = 1508709600 if timestamp_at_week_ago( settings_team_gestion_store.week_ago) == limit_week_stat: disabled_bt_moins = True self.bt_moins.setDisabled(disabled_bt_moins) self.bt_plus.setDisabled(disabled_bt_plus) def init_button(self): # Bouton time plus self.bt_plus.clicked.connect(self.time_more) self.bt_plus.setStyleSheet(button_stylesheet) self.bt_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_plus.addImage("commun/assets/images/fleche_suivant.png") # Bouton time moins self.bt_moins.clicked.connect(self.time_less) self.bt_moins.setStyleSheet(button_stylesheet) self.bt_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_moins.addImage("commun/assets/images/fleche_precedent.png") @staticmethod def time_more(): settings_team_gestion_store.update_week_ago(-1) @staticmethod def time_less(): settings_team_gestion_store.update_week_ago(1)
class BlocSelected(MondonWidget): def __init__(self, data_type, callback, parent=None): super(BlocSelected, self).__init__(parent=parent) self.background_color = color_blanc self.set_border(color=color_noir) self.data_type = data_type self.parent = parent self.callback = callback self.master_hbox = QHBoxLayout() self.master_hbox.setContentsMargins(0, 0, 10, 0) self.clear_bt = PixmapButton(parent=self) self.init_button() self.init_ui() def init_ui(self): self.master_hbox.addLayout(self.get_content()) if self.data_type != "bobine": self.master_hbox.addWidget(self.clear_bt) else: self.clear_bt.hide() self.master_hbox.setContentsMargins(0, 0, 0, 0) self.setLayout(self.master_hbox) def init_button(self): self.clear_bt.clicked.connect(self.handle_clicked_bt_delete) self.clear_bt.setStyleSheet(button_delete_bobine_selected_stylesheet) self.clear_bt.setContentsMargins(0) self.clear_bt.setFixedSize(15, 15) self.clear_bt.add_image("commun/assets/images/delete.png") def update_widget(self): print("update_widget") clear_layout(self.master_hbox) self.clear_bt = PixmapButton(parent=self) self.init_button() self.master_hbox.addLayout(self.get_content()) if self.data_type != "bobine": self.master_hbox.addWidget(self.clear_bt) def get_content(self): content_layout = QVBoxLayout() content_layout.setContentsMargins(0, 0, 0, 0) if self.data_type == "perfo": if self.parent.plan_prod.perfo_selected: perfo_ui = PerfoUi(perfo=self.parent.plan_prod.perfo_selected) content_ui = QHBoxLayout() content_ui.setContentsMargins(1, 5, 0, 5) content_ui.addWidget(perfo_ui) content_ui.addStretch(0) content_layout.addLayout(content_ui) else: self.clear_bt.hide() content_layout.setContentsMargins(0, 15, 0, 15) content_layout.addLayout( self.get_ui_select(text="une campagne de perforation")) return content_layout if self.data_type == "papier": if self.parent.plan_prod.bobine_papier_selected: if self.parent.plan_prod.refente_selected: refente = self.parent.plan_prod.refente_selected content_ui = QHBoxLayout() content_ui.setSpacing(0) content_ui.setContentsMargins(1, 5, 0, 5) space = QWidget() space.setFixedWidth(980 - refente.laize - refente.dec) content_ui.addWidget(space) content_ui.addWidget( BobineMereUI(bobine=self.parent.plan_prod. bobine_papier_selected)) refente = self.parent.plan_prod.refente_selected content_ui.addWidget(DecBobineRefente(dec=refente.dec)) content_ui.addStretch(0) content_layout.addLayout(content_ui) else: content_ui = BobineMereUI( bobine=self.parent.plan_prod.bobine_papier_selected) content_layout.addWidget(content_ui) else: self.clear_bt.hide() content_layout.setContentsMargins(0, 15, 0, 15) content_layout.addLayout( self.get_ui_select(text="une bobine mère papier")) return content_layout if self.data_type == "poly": if self.parent.plan_prod.bobine_poly_selected: if self.parent.plan_prod.refente_selected: refente = self.parent.plan_prod.refente_selected content_ui = QHBoxLayout() content_ui.setSpacing(0) content_ui.setContentsMargins(1, 5, 0, 5) space = QWidget() space.setFixedWidth(980 - refente.laize - refente.dec) content_ui.addWidget(space) content_ui.addWidget( BobineMereUI( bobine=self.parent.plan_prod.bobine_poly_selected)) refente = self.parent.plan_prod.refente_selected content_ui.addWidget(DecBobineRefente(dec=refente.dec)) content_ui.addStretch(0) content_layout.addLayout(content_ui) else: content_ui = BobineMereUI( bobine=self.parent.plan_prod.bobine_poly_selected) content_layout.addWidget(content_ui) else: self.clear_bt.hide() content_layout.addLayout( self.get_ui_select(text="une bobine mère polypro")) content_layout.setContentsMargins(0, 15, 0, 15) return content_layout if self.data_type == "refente": if self.parent.plan_prod.refente_selected: refente = self.parent.plan_prod.refente_selected content_ui = QHBoxLayout() content_ui.setSpacing(0) content_ui.setContentsMargins(0, 0, 0, 0) space = QWidget() space.setFixedWidth(980 - refente.laize - refente.dec) content_ui.addWidget(space) content_ui.addWidget( RefenteUi(refente=refente, bobines_selected=self.parent.plan_prod. bobines_filles_selected)) content_ui.addWidget(DecBobineRefente(dec=refente.dec)) content_ui.addStretch(0) content_layout.addLayout(content_ui) else: self.clear_bt.hide() content_layout.setContentsMargins(0, 15, 0, 15) content_layout.addLayout( self.get_ui_select(text="une refente")) return content_layout if self.data_type == "bobine": content_layout.setContentsMargins(0, 0, 0, 0) content_layout.setSpacing(2) if self.parent.plan_prod.bobines_filles_selected: content_layout.addWidget(LegendBobineSelected()) for value in group_bobine(bobines=self.parent.plan_prod. bobines_filles_selected).values(): content_layout.addWidget( LineBobineSelected(bobine=value[0], amount=value[1])) self.set_border(color=None) else: self.clear_bt.hide() content_layout.setContentsMargins(0, 15, 0, 15) content_layout.addLayout( self.get_ui_select(text="une bobine fille")) self.set_border(color=color_noir) return content_layout def is_selected(self): if self.data_type == "refente" and self.parent.plan_prod.refente_selected: return True if self.data_type == "papier" and self.parent.plan_prod.bobine_papier_selected: return True if self.data_type == "poly" and self.parent.plan_prod.bobine_poly_selected: return True if self.data_type == "perfo" and self.parent.plan_prod.perfo_selected: return True if self.data_type == "bobine" and self.parent.plan_prod.bobines_filles_selected: return True return False def handle_clicked_bt_delete(self): if self.data_type == "refente" and self.parent.plan_prod.refente_selected: self.parent.plan_prod.del_refente_selected() if self.data_type == "papier" and self.parent.plan_prod.bobine_papier_selected: self.parent.plan_prod.del_papier_selected() if self.data_type == "poly" and self.parent.plan_prod.bobine_poly_selected: self.parent.plan_prod.del_poly_selected() if self.data_type == "perfo" and self.parent.plan_prod.perfo_selected: self.parent.plan_prod.del_perfo_selected() self.parent.update() @staticmethod def get_ui_select(text): hbox = QHBoxLayout() label = QLabel("Double click pour sélectionner {}".format(text)) label.setStyleSheet(gray_18_label_stylesheet) hbox.addWidget(label, alignment=Qt.AlignCenter) return hbox def mouseDoubleClickEvent(self, e): filter_store.set_data_type(self.data_type) self.callback() super(BlocSelected, self).mouseDoubleClickEvent(e)
def init_widget(self): self.hbox.setContentsMargins(0, 0, 0, 0) self.hbox.setSpacing(0) bt_acceuil = PixmapButton("Production") bt_acceuil.setFixedWidth(self.WIDTH_BT) self.list_bt["prod"] = bt_acceuil bt_acceuil.clicked.connect(lambda: self.on_click("prod")) self.hbox.addWidget(bt_acceuil) self.bt_stat.setFixedWidth(self.WIDTH_BT) self.bt_stat.hide() self.list_bt["chart_stat"] = self.bt_stat self.bt_stat.clicked.connect(lambda: self.on_click("chart_stat")) self.hbox.addWidget(self.bt_stat) self.bt_rapport.setFixedWidth(self.WIDTH_BT) self.bt_rapport.hide() self.list_bt["rapport"] = self.bt_rapport self.bt_rapport.clicked.connect(lambda: self.on_click("rapport")) self.hbox.addWidget(self.bt_rapport) # self.bt_team_gestion.setFixedWidth(self.WIDTH_BT) # self.bt_team_gestion.hide() # self.list_bt["team_gestion"] = self.bt_team_gestion # self.bt_team_gestion.clicked.connect(lambda: self.on_click("team_gestion")) # self.hbox.addWidget(self.bt_team_gestion) self.hbox.addStretch(1) self.label_user.setStyleSheet(white_16_label_stylesheet) self.hbox.addWidget(self.label_user) bt_user = PixmapButton(parent=self) bt_user.addImage("commun/assets/images/user_icon.png") bt_user.setStyleSheet(button_green_stylesheet) bt_user.setFixedSize(self.height(), self.height()) bt_user.clicked.connect(self.on_click_user) self.hbox.addWidget(bt_user) self.setLayout(self.hbox)
class LineBobineSelected(MondonWidget): def __init__(self, bobine, amount, parent=None): super(LineBobineSelected, self).__init__(parent=parent) self.parent = parent self.set_border(color=color_noir) self.bobine = bobine self.amount = amount self.clear_bt = PixmapButton(parent=self) self.init_button() self.stock_prev_value = 0 self.production = QLabel() self.stock_prev = QLabel() self.etat = QLabel() self.init_widget() self.update_widget() self.setFixedHeight(30) def init_button(self): # Bouton jour plus self.clear_bt.setToolTip("Suppression bobine fille") self.clear_bt.clicked.connect(self.handle_clicked_bt_delete) self.clear_bt.setStyleSheet(button_delete_bobine_selected_stylesheet) self.clear_bt.setContentsMargins(0) self.clear_bt.setFixedSize(15, 15) self.clear_bt.add_image("commun/assets/images/delete.png") def init_widget(self): hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 5, 0) code = QLabel(str(self.bobine.code)) code.setAlignment(Qt.AlignVCenter) code.setStyleSheet(black_14_label_stylesheet) code.setFixedWidth(200) hbox.addWidget(code) laize = QLabel(str(int(self.bobine.laize))) laize.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) laize.setStyleSheet(black_14_label_stylesheet) laize.setFixedWidth(80) hbox.addWidget(laize) amount = QLabel(str(int(self.amount))) amount.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) amount.setStyleSheet(black_14_label_stylesheet) amount.setFixedWidth(80) hbox.addWidget(amount) stock_value = str(int(self.bobine.stock_at_time)) stock = QLabel(stock_value) stock.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) stock.setStyleSheet(black_14_label_stylesheet) hbox.addWidget(stock) stock_therme_value = str(int(self.bobine.stock_therme_at_time)) stock_therme = QLabel(stock_therme_value) stock_therme.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) stock_therme.setStyleSheet(black_14_label_stylesheet) hbox.addWidget(stock_therme) self.production.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) self.production.setStyleSheet(black_14_bold_label_stylesheet) hbox.addWidget(self.production) self.stock_prev.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) self.stock_prev.setStyleSheet(black_14_bold_label_stylesheet) hbox.addWidget(self.stock_prev) self.etat.setAlignment(Qt.AlignVCenter | Qt.AlignCenter) hbox.addWidget(self.etat) hbox.addWidget(self.clear_bt) self.setLayout(hbox) def get_etat(self): if self.bobine.vente_mensuelle > self.stock_prev_value: return "RUPTURE" elif self.bobine.vente_annuelle < self.stock_prev_value: return "SURSTOCK" return "OK" def get_production(self): tours = settings_store_gestion.plan_prod.tours production = self.amount * tours return production def update_widget(self): self.production.setText("+{}".format(self.get_production())) self.stock_prev_value = int(self.get_production() + self.bobine.stock_therme_at_time) self.stock_prev.setText(str(self.stock_prev_value)) etat_value = self.get_etat() self.etat.setText(etat_value) if etat_value == "RUPTURE": etat_label_stylesheet = black_14_bold_label_stylesheet elif etat_value == "SURSTOCK": etat_label_stylesheet = red_14_bold_label_stylesheet else: etat_label_stylesheet = black_14_label_stylesheet self.etat.setStyleSheet(etat_label_stylesheet) def handle_clicked_bt_delete(self): from gestion.stores.settings_store import settings_store_gestion settings_store_gestion.plan_prod.del_bobine_selected( bobine=self.bobine)
def __init__(self, on_close): super(TrackerWindow, self).__init__(None) self.on_close = on_close self.live_speed = LiveSpeed(parent=self) self.bt_retour = PixmapButton(parent=self) self.init_widget()
class ChartMenu(MondonWidget): PIXMAPBUTTON_SIZE = QSize(40, 40) BUTTON_HEIGHT = 40 BUTTON_WIDTH = 100 MINIMUN_WIDTH_LABEL = 350 def __init__(self, parent): super(ChartMenu, self).__init__(parent=parent) self.set_background_color(color_bleu_gris) self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.bt_zoom_plus = PixmapButton(parent=self) self.bt_zoom_moins = PixmapButton(parent=self) self.bt_live = QPushButton("En direct") self.label_date = QLabel() self.live_speed = LiveSpeed(self) self.init_widget() self.update_label() self.update_button() def init_widget(self): self.init_button() self.update_label() master_hbox = QHBoxLayout() left_hbox = QHBoxLayout() left_hbox.addWidget(self.bt_live) self.live_speed.mouseDoubleClickEvent = self.create_window_live_speed left_hbox.addWidget(self.live_speed) left_hbox.addStretch(1) master_hbox.addLayout(left_hbox) center_hbox = QHBoxLayout() center_hbox.addWidget(self.bt_jour_moins) center_hbox.addStretch(1) center_hbox.addWidget(self.label_date) self.label_date.setStyleSheet(white_22_label_stylesheet) center_hbox.addStretch(1) center_hbox.addWidget(self.bt_jour_plus) master_hbox.addLayout(center_hbox) right_hbox = QHBoxLayout() right_hbox.addStretch(1) right_hbox.addWidget(self.bt_zoom_moins) right_hbox.addWidget(self.bt_zoom_plus) master_hbox.addLayout(right_hbox) self.setLayout(master_hbox) def init_button(self): # Bouton jour plus self.bt_jour_plus.clicked.connect(self.jour_plus) self.bt_jour_plus.setStyleSheet(button_stylesheet) self.bt_jour_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_plus.addImage("commun/assets/images/fleche_suivant.png") # Bouton jour moins self.bt_jour_moins.clicked.connect(self.jour_moins) self.bt_jour_moins.setStyleSheet(button_stylesheet) self.bt_jour_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_moins.addImage("commun/assets/images/fleche_precedent.png") # Bouton zoom plus self.bt_zoom_plus.clicked.connect(self.zoom_plus) self.bt_zoom_plus.setStyleSheet(button_stylesheet) self.bt_zoom_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_zoom_plus.addImage("commun/assets/images/zoom_plus.png") # Bouton zoom moins self.bt_zoom_moins.clicked.connect(self.zoom_moins) self.bt_zoom_moins.setStyleSheet(button_stylesheet) self.bt_zoom_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_zoom_moins.addImage("commun/assets/images/zoom_moins.png") # Bouton live self.bt_live.clicked.connect(self.live) self.bt_live.setFixedSize(self.BUTTON_WIDTH, self.BUTTON_HEIGHT) self.bt_live.setStyleSheet(button_little_stylesheet) def on_settings_changed(self, prev_live, prev_day_ago, prev_zoom): self.update_button() self.update_label() def update_button(self): self.bt_live.hide() if settings_store.day_ago == 0 else self.bt_live.show() self.live_speed.show() if settings_store.day_ago == 0 else self.live_speed.hide() self.bt_jour_plus.setEnabled(settings_store.day_ago > 0) self.bt_zoom_moins.setEnabled(settings_store.zoom > 1) self.bt_zoom_plus.setEnabled(32 > settings_store.zoom) def update_label(self): ts = timestamp_at_day_ago(settings_store.day_ago) date = timestamp_to_date(ts).capitalize() self.label_date.setMinimumWidth(self.MINIMUN_WIDTH_LABEL) self.label_date.setAlignment(Qt.AlignCenter) self.label_date.setText(date) @staticmethod def zoom_moins(): new_zoom = max(1, int(settings_store.zoom/2)) settings_store.set_zoom(new_zoom) @staticmethod def zoom_plus(): settings_store.set_zoom(settings_store.zoom * 2) @staticmethod def jour_moins(): settings_store.set_day_ago(settings_store.day_ago + 1) @staticmethod def jour_plus(): settings_store.set_day_ago(settings_store.day_ago - 1) @staticmethod def live(): settings_store.set_day_ago(0) @staticmethod def create_window_live_speed(event): app.create_tracker_window()
class RapportMenu(MondonWidget): PIXMAPBUTTON_SIZE = QSize(40, 40) BUTTON_HEIGHT = 40 BUTTON_WIDTH = 100 PAGE_W = 770 PAGE_H = 1100 MINIMUN_WIDTH_LABEL = 350 def __init__(self, parent=None): super(RapportMenu, self).__init__(parent=parent) self.background_color = color_bleu_gris self.bt_impression = PixmapButton(parent=self) self.bt_save = PixmapButton(parent=self) self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.bt_live = QPushButton("Aujourd'hui") self.label_date = QLabel() self.rapport = Rapport(parent=self) self.rapport.hide() self.init_button() self.init_widget() self.update_button() self.update_label() def on_settings_changed(self, prev_live, prev_day_ago, prev_zoom): self.update_button() self.update_label() def init_widget(self): menu_hbox = QHBoxLayout() left_hbox = QHBoxLayout() left_hbox.addWidget(self.bt_live) left_hbox.addStretch(1) menu_hbox.addLayout(left_hbox) date_hbox = QHBoxLayout() date_hbox.addStretch(1) date_hbox.addWidget(self.bt_jour_moins) self.label_date.setStyleSheet(white_22_label_stylesheet) date_hbox.addWidget(self.label_date) date_hbox.addWidget(self.bt_jour_plus) date_hbox.addStretch(1) menu_hbox.addLayout(date_hbox) right_hbox = QHBoxLayout() right_hbox.addStretch(1) right_hbox.addWidget(self.bt_save) right_hbox.addWidget(self.bt_impression) menu_hbox.addLayout(right_hbox) self.setLayout(menu_hbox) def init_button(self): # Bouton sauvegarder self.bt_save.clicked.connect(self.get_pdf) self.bt_save.setStyleSheet(button_stylesheet) self.bt_save.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_save.setContentsMargins(8) self.bt_save.addImage("commun/assets/images/save_as.png") # Bouton impression self.bt_impression.clicked.connect(self.impression) self.bt_impression.setStyleSheet(button_stylesheet) self.bt_impression.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_impression.addImage("commun/assets/images/impression.png") # Bouton jour plus self.bt_jour_plus.clicked.connect(self.jour_plus) self.bt_jour_plus.setStyleSheet(button_stylesheet) self.bt_jour_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_plus.addImage("commun/assets/images/fleche_suivant.png") # Bouton jour moins self.bt_jour_moins.clicked.connect(self.jour_moins) self.bt_jour_moins.setStyleSheet(button_stylesheet) self.bt_jour_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_moins.addImage( "commun/assets/images/fleche_precedent.png") # Bouton live self.bt_live.clicked.connect(self.live) self.bt_live.setFixedSize(self.BUTTON_WIDTH, self.BUTTON_HEIGHT) self.bt_live.setStyleSheet(button_little_stylesheet) def update_button(self): self.bt_jour_plus.setEnabled(settings_store.day_ago > 0) self.bt_live.setEnabled(settings_store.day_ago > 0) def update_label(self): ts = timestamp_at_day_ago(settings_store.day_ago) date = timestamp_to_date(ts).capitalize() self.label_date.setMinimumWidth(self.MINIMUN_WIDTH_LABEL) self.label_date.setAlignment(Qt.AlignCenter) self.label_date.setText(date) @staticmethod def live(): settings_store.set_day_ago(0) def get_pdf(self): defaut_path = 'I:\Programme mondon\Rapport production bobines' ts = timestamp_at_day_ago(settings_store.day_ago) defaut_name = "{} Rapport production bobines".format( timestamp_to_inverse_date(ts)) file_names = QFileDialog.getSaveFileName(self, caption='Enregistrer sous', directory='{}\{}.pdf'.format( defaut_path, defaut_name), filter="Fichiers pdf (*.pdf)") if not file_names[0]: return save_pdf(self.rapport, filename=file_names[0], preview=True) def externat_get_pdf(self): ts = timestamp_at_day_ago(settings_store.day_ago) file_names =\ 'I:\Programme mondon/rp_prod/{} Rapport production bobines.pdf'.format(timestamp_to_inverse_date(ts)) save_pdf(self.rapport, filename=file_names, preview=False) def impression(self): # Creation du printer printer = QPrinter() dialog = QPrintDialog(printer, self) if dialog.exec_() != QDialog.Accepted: return printer.setPageMargins(10, 10, 10, 10, QPrinter.Point) # Calcul le ratio de redimensionnement page_width = printer.pageRect().width() page_height = printer.pageRect().height() widget_width = self.rapport.width() widget_height = self.rapport.height() ratio = min(page_width / widget_width, page_height / widget_height) # Calcul du positionnement pos_x = max(0, (page_width - ratio * widget_width) / 2) pos_y = max(0, (page_height - ratio * widget_height) / 2) # Render le widget dans une image QPicture pour stocker # les directives de dessin picture = QPicture() widget_painter = QPainter(picture) widget_painter.scale(ratio, ratio) self.rapport.render(widget_painter) widget_painter.end() # Render la QPicture en utilisant le QPrinter picture_painter = QPainter() picture_painter.begin(printer) picture_painter.drawPicture(QPointF(pos_x, pos_y), picture) picture_painter.end() @staticmethod def jour_moins(): settings_store.set_day_ago(settings_store.day_ago + 1) @staticmethod def jour_plus(): settings_store.set_day_ago(settings_store.day_ago - 1)
class DayMenu(MondonWidget): PIXMAPBUTTON_SIZE = QSize(40, 40) BUTTON_HEIGHT = 40 BUTTON_WIDTH = 100 MINIMUN_WIDTH_LABEL = 350 def __init__(self, parent): super(DayMenu, self).__init__(parent=parent) self.set_background_color(color_bleu_gris) self.master_hbox = QHBoxLayout() self.left_hbox = QHBoxLayout() self.center_hbox = QHBoxLayout() self.right_hbox = QHBoxLayout() self.bt_jour_plus = PixmapButton(parent=self) self.bt_jour_moins = PixmapButton(parent=self) self.label_date = QLabel() self.init_widget() def init_widget(self): self.init_button() self.setLayout(self.master_hbox) self.left_hbox.addStretch(1) self.master_hbox.addLayout(self.left_hbox) self.center_hbox.addWidget(self.bt_jour_moins) self.center_hbox.addStretch(0) self.center_hbox.addWidget(self.label_date) self.label_date.setStyleSheet(white_22_label_stylesheet) self.center_hbox.addStretch(0) self.center_hbox.addWidget(self.bt_jour_plus) self.master_hbox.addLayout(self.center_hbox) self.right_hbox.addStretch(1) self.master_hbox.addLayout(self.right_hbox) self.update_widget() def update_widget(self): self.update_label() def init_button(self): # Bouton jour plus self.bt_jour_plus.setToolTip("Changement jour suivant") self.bt_jour_plus.clicked.connect(self.jour_plus) self.bt_jour_plus.setStyleSheet(button_stylesheet) self.bt_jour_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_plus.add_image("commun/assets/images/fleche_suivant.png") # Bouton jour moins self.bt_jour_moins.setToolTip("Changement jour précédent") self.bt_jour_moins.clicked.connect(self.jour_moins) self.bt_jour_moins.setStyleSheet(button_stylesheet) self.bt_jour_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_jour_moins.add_image("commun/assets/images/fleche_precedent.png") def on_settings_gestion_changed(self): self.update_widget() def update_label(self): ts = timestamp_at_day_ago(settings_store_gestion.day_ago) date = timestamp_to_date(ts).capitalize() self.label_date.setMinimumWidth(self.MINIMUN_WIDTH_LABEL) self.label_date.setAlignment(Qt.AlignCenter) self.label_date.setText(date) def jour_moins(self): settings_store_gestion.set_day_ago(settings_store_gestion.day_ago + 1) self.update_label() def jour_plus(self): settings_store_gestion.set_day_ago(settings_store_gestion.day_ago - 1) self.update_label()
class ChartBarMenu(MondonWidget): MINIMUN_WIDTH_LABEL = 200 PIXMAPBUTTON_SIZE = QSize(30, 30) def __init__(self, parent=None): super(ChartBarMenu, self).__init__(parent=parent) self.background_color = color_bleu_gris self.hbox = QHBoxLayout(self) self.bt_plus = PixmapButton(parent=self) self.bt_moins = PixmapButton(parent=self) self.label_date = QLabel() self.label_type_stat = QLabel() self.init_button() self.init_widget() self.update_button() self.update_label() def init_widget(self): self.hbox.setSpacing(20) left_hbox = QHBoxLayout() left_hbox.addStretch(1) self.hbox.addLayout(left_hbox) center_hbox = QHBoxLayout() center_hbox.addStretch(4) center_hbox.addWidget(self.bt_moins) center_hbox.addStretch(1) self.label_date.setStyleSheet(white_22_label_stylesheet) self.label_date.setMinimumWidth(self.MINIMUN_WIDTH_LABEL) self.label_date.setAlignment(Qt.AlignCenter) center_hbox.addWidget(self.label_date) center_hbox.addStretch(1) center_hbox.addWidget(self.bt_plus) center_hbox.addStretch(4) self.hbox.addLayout(center_hbox) right_hbox = QHBoxLayout() right_hbox.addStretch(1) self.label_type_stat.setStyleSheet(green_maj_label_stylesheet) right_hbox.addWidget(self.label_type_stat) self.hbox.addLayout(right_hbox) self.setLayout(self.hbox) def on_settings_stat_changed(self): self.update_button() self.update_label() def update_label(self): self.label_date.setText(settings_stat_store.time_stat) self.label_type_stat.setText(settings_stat_store.data_type.upper()) def update_button(self): self.bt_plus.setEnabled(settings_stat_store.week_ago > 0 or settings_stat_store.month_ago > 0) disabled_bt_moins = False limit_week_stat = 1508709600 if settings_stat_store.data_type == "métrage" else 1514761200 if timestamp_at_week_ago( settings_stat_store.week_ago ) == limit_week_stat and settings_stat_store.week_ago >= 0: disabled_bt_moins = True limit_month_stat = 1509490800 if settings_stat_store.data_type == "métrage" else 1514761200 if timestamp_at_month_ago(settings_stat_store.month_ago) == limit_month_stat \ and settings_stat_store.month_ago >= 0: disabled_bt_moins = True limit_year_stat = 1514761200 if timestamp_at_year_ago(settings_stat_store.year_ago) == limit_year_stat \ and settings_stat_store.year_ago >= 0: disabled_bt_moins = True self.bt_moins.setDisabled(disabled_bt_moins) def init_button(self): # Bouton time plus self.bt_plus.clicked.connect(self.time_more) self.bt_plus.setStyleSheet(button_stylesheet) self.bt_plus.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_plus.addImage("commun/assets/images/fleche_suivant.png") # Bouton time moins self.bt_moins.clicked.connect(self.time_less) self.bt_moins.setStyleSheet(button_stylesheet) self.bt_moins.setFixedSize(self.PIXMAPBUTTON_SIZE) self.bt_moins.addImage("commun/assets/images/fleche_precedent.png") @staticmethod def time_more(): settings_stat_store.update_time_ago(-1) @staticmethod def time_less(): settings_stat_store.update_time_ago(1)