""" column_defs.py — dizionario centralizzato colonne Linker. Fonte unica di verità per: colore intestazione, larghezza, label. Tutti i fogli (ott_sheet, linker_sheet, diritti_tab, …) importano da qui. Struttura FIELDS: key → identificatore semantico univoco del campo (es. 'EM_RETE' ≠ 'TEM_RETE') label → testo intestazione visualizzato width → larghezza colonna in pixel color → colore intestazione (istanza HC) """ from PyQt6.QtGui import QColor # ── Palette canonica intestazioni ───────────────────────────────────────── class HC: """HeaderColor — tutti i fogli Linker usano solo questi colori.""" SEGNALAZ = QColor('#AAFF00') # verde acido — segnalazioni automatiche OTT = QColor('#9DC3E6') # blu chiaro — dati OTT / piattaforme EDITABILE = QColor('#00E5FF') # ciano vivo — colonne editabili dall'utente IMDB = QColor('#00BFFF') # ciano — IMDB read-only da parquet GREY = QColor('#D9D9D9') # grigio — metadati secondari (voto, votanti) ORANGE = QColor('#FFB347') # arancione — anagrafica ONAIR + emesso generaliste YELLOW = QColor('#FFFF00') # giallo — valutazioni rete / box office VAL = QColor('#FFF59D') # giallo pastello — valutazioni Gemma DIRITTI = QColor('#90EE90') # verde — diritti PURPLE = QColor('#C39BD3') # viola — emesso tematiche LIGHT_RED = QColor('#FFAAAA') # rosso chiaro — RETE SLOT / OTT FUCHSIA = QColor('#FF91C4') # fucsia — feeder (decorrenza listino) DEFAULT = QColor('#CCCCCC') # grigio chiaro — non classificato BORDER = QColor('#A0A0A0') # bordo intestazioni # ── Campi condivisi tra tutti i fogli Linker ───────────────────────────── # Key: identificatore semantico univoco (es. 'EM_RETE' ≠ 'TEM_RETE') # label: testo intestazione — può non essere univoco, il key lo è # width: larghezza default in pixel # color: colore intestazione (HC.*) FIELDS: dict[str, dict] = { # ── Anagrafica / ONAIR ────────────────────────────────────────────── 'RIFER': {'label': 'RIFER', 'width': 61, 'color': HC.ORANGE}, 'IMDB': {'label': 'IMDB', 'width': 61, 'color': HC.IMDB}, 'TIPOL': {'label': 'TIPOL', 'width': 75, 'color': HC.ORANGE}, 'TI': {'label': 'TI', 'width': 200, 'color': HC.ORANGE}, 'TO': {'label': 'TO', 'width': 200, 'color': HC.ORANGE}, 'ANNO': {'label': 'ANNO', 'width': 61, 'color': HC.ORANGE}, 'PAESE': {'label': 'PAESE', 'width': 61, 'color': HC.ORANGE}, 'GENERE': {'label': 'GENERE', 'width': 100, 'color': HC.ORANGE}, 'EPIS': {'label': 'EPIS', 'width': 47, 'color': HC.ORANGE}, 'DURATA': {'label': 'DURATA', 'width': 60, 'color': HC.ORANGE}, 'SUPERSERIE': {'label': 'SUPERSERIE', 'width': 110, 'color': HC.ORANGE}, 'VEG_FREE': {'label': 'VEG', 'width': 40, 'color': HC.ORANGE}, 'REGISTA': {'label': 'REGISTA', 'width': 131, 'color': HC.ORANGE}, 'ATTORI': {'label': 'ATTORI', 'width': 131, 'color': HC.ORANGE}, # ── Diritti ───────────────────────────────────────────────────────── 'SD': {'label': 'SD', 'width': 35, 'color': HC.DIRITTI}, 'DECOR': {'label': 'DECOR.', 'width': 68, 'color': HC.DIRITTI}, 'SCAD': {'label': 'SCAD.', 'width': 68, 'color': HC.DIRITTI}, 'DISTRIBUTORE': {'label': 'DISTRIBUTORE', 'width': 120, 'color': HC.DIRITTI}, 'PERC': {'label': '%', 'width': 40, 'color': HC.DIRITTI}, 'PASS_CONS': {'label': 'P.CONS.', 'width': 40, 'color': HC.DIRITTI}, 'PASS_EFF': {'label': 'P.EFF.', 'width': 40, 'color': HC.DIRITTI}, 'CAUS': {'label': 'CAUS.', 'width': 40, 'color': HC.DIRITTI}, 'DECOR_FUT': {'label': 'DECOR. FUT.', 'width': 90, 'color': HC.DIRITTI}, 'SCAD_FUT': {'label': 'SCAD. FUT.', 'width': 90, 'color': HC.DIRITTI}, 'RETE_SLOT': {'label': 'RETE SLOT', 'width': 89, 'color': HC.DIRITTI}, # ── Emesso generaliste ────────────────────────────────────────────── 'EM_RETE': {'label': 'RETE', 'width': 45, 'color': HC.ORANGE}, 'EM_DATA': {'label': 'DATA', 'width': 68, 'color': HC.ORANGE}, 'EM_INIZIO': {'label': 'INIZIO', 'width': 55, 'color': HC.ORANGE}, 'EM_FASCIA': {'label': 'FASCIA', 'width': 47, 'color': HC.ORANGE}, 'EM_AUD': {'label': 'AUD', 'width': 55, 'color': HC.ORANGE}, 'EM_SHA': {'label': 'SHA', 'width': 50, 'color': HC.ORANGE}, # ── Emesso tematiche (.T suffix distingue dai generaliste) ────────── 'TEM_RETE': {'label': 'RETE.T', 'width': 45, 'color': HC.PURPLE}, 'TEM_DATA': {'label': 'DATA.T', 'width': 68, 'color': HC.PURPLE}, 'TEM_INIZIO': {'label': 'INIZIO.T', 'width': 55, 'color': HC.PURPLE}, 'TEM_FASCIA': {'label': 'FASCIA.T', 'width': 47, 'color': HC.PURPLE}, 'TEM_AUD': {'label': 'AUD.T', 'width': 55, 'color': HC.PURPLE}, 'TEM_SHA': {'label': 'SHA.T', 'width': 50, 'color': HC.PURPLE}, # ── Box Office ────────────────────────────────────────────────────── 'BO_DEB': {'label': 'DEBUTTO', 'width': 68, 'color': HC.YELLOW}, 'BO_INCASSO': {'label': 'INCASSO', 'width': 61, 'color': HC.YELLOW}, 'BO_SPETT': {'label': 'SPETTATORI', 'width': 61, 'color': HC.YELLOW}, 'BO_DIST': {'label': 'DIST. CINEMA', 'width': 120, 'color': HC.YELLOW}, # ── Valutazioni Gemma (slot 0–15) ──────────────────────────────────── 'VAL_FORNITORE': {'label': 'FORNITORE', 'width': 120, 'color': HC.VAL}, 'VAL_RDA': {'label': 'RDA', 'width': 120, 'color': HC.VAL}, 'VAL_C5': {'label': 'C5', 'width': 45, 'color': HC.VAL}, 'VAL_I1': {'label': 'I1', 'width': 45, 'color': HC.VAL}, 'VAL_R4': {'label': 'R4', 'width': 45, 'color': HC.VAL}, 'VAL_LA5': {'label': 'LA5', 'width': 45, 'color': HC.VAL}, 'VAL_I2': {'label': 'I2', 'width': 45, 'color': HC.VAL}, 'VAL_IRIS': {'label': 'IRIS', 'width': 45, 'color': HC.VAL}, 'VAL_TOP': {'label': 'TOP CRIME', 'width': 70, 'color': HC.VAL}, 'VAL_FOC': {'label': 'FOCUS', 'width': 55, 'color': HC.VAL}, 'VAL_C20': {'label': 'C20', 'width': 45, 'color': HC.VAL}, 'VAL_CI34': {'label': 'CINE34', 'width': 55, 'color': HC.VAL}, 'VAL_C27': {'label': 'TWENTY SEVEN', 'width': 80, 'color': HC.VAL}, 'VAL_SUPPORTO': {'label': 'SUPPORTO', 'width': 120, 'color': HC.VAL}, 'VAL_DATA': {'label': 'DATA VAL.', 'width': 80, 'color': HC.VAL}, 'VAL_GEM_SIN': {'label': 'GEM SIN', 'width': 60, 'color': HC.VAL}, } def fl(key: str) -> str: """Label intestazione del campo.""" return FIELDS[key]['label'] def fw(key: str) -> int: """Larghezza default del campo in pixel.""" return FIELDS[key]['width'] def fc(key: str) -> QColor: """Colore intestazione del campo.""" return FIELDS[key]['color']