VICON: Sistema de Visión configurable V1.0
Trabajo Fin de Master Carlos Manuel Gomez Jimenez
Loading...
Searching...
No Matches
recortar_json_wavedrom Namespace Reference

Functions

Variables

Function Documentation

◆ limpiar_formato_wavedrom()

limpiar_formato_wavedrom ( texto)

Limpia el formato flexible de WaveDrom para hacerlo JSON estándar.

Definition at line 27 of file recortar_json_wavedrom.py.

27def limpiar_formato_wavedrom(texto):
28 """Limpia el formato flexible de WaveDrom para hacerlo JSON estándar."""
29 texto = re.sub(r'//.*', '', texto)
30 texto = re.sub(r',\s*([\]}])', r'\1', texto)
31 texto = re.sub(r'([{,]\s*)([a-zA-Z_]\w*)\s*:', r'\1"\2":', texto)
32 texto = texto.replace("'", '"')
33 return texto
34

◆ obtener_info_archivo()

obtener_info_archivo ( path)

Calcula la duración máxima de las señales.

Definition at line 35 of file recortar_json_wavedrom.py.

35def obtener_info_archivo(path):
36 """Calcula la duración máxima de las señales."""
37 try:
38 with open(path, 'r', encoding='utf-8') as f:
39 data = json.loads(limpiar_formato_wavedrom(f.read()))
40 max_ticks = 0
41 for sig in data.get('signal', []):
42 if 'wave' in sig:
43 max_ticks = max(max_ticks, len(sig['wave']))
44 return max_ticks
45 except:
46 return 0
47

◆ procesar()

procesar ( abrir_navegador = False)

Genera el JSON y opcionalmente lo abre en la web.

Definition at line 85 of file recortar_json_wavedrom.py.

85def procesar(abrir_navegador=False):
86 """Genera el JSON y opcionalmente lo abre en la web."""
87 path = entry_file.get()
88 if not path:
89 messagebox.showwarning("Aviso", "Por favor, selecciona un archivo.")
90 return
91
92 try:
93 with open(path, 'r', encoding='utf-8') as f:
94 data = json.loads(limpiar_formato_wavedrom(f.read()))
95
96 config_ui = {
97 'titulo': entry_title.get(),
98 'pie': entry_foot.get(),
99 'hscale': spin_hscale.get(),
100 'skin': combo_skin.get(),
101 'every': int(spin_every.get())
102 }
103
104 resultado = recortar_wavedrom(data, int(entry_start.get()), int(entry_end.get()), config_ui)
105 json_str = json.dumps(resultado, indent=2)
106
107 if abrir_navegador:
108
109 codigo_url = urllib.parse.quote(json_str)
110 webbrowser.open(f"https://wavedrom.com/editor.html?{codigo_url}")
111 else:
112 save_path = filedialog.asksaveasfilename(defaultextension=".json")
113 if save_path:
114 with open(save_path, 'w', encoding='utf-8') as f:
115 f.write(json_str)
116 messagebox.showinfo("Éxito", "Archivo guardado correctamente.")
117
118 except Exception as e:
119 messagebox.showerror("Error", f"Ocurrió un problema:\n{e}")
120
121

◆ recortar_wavedrom()

recortar_wavedrom ( data,
tick_start,
tick_end,
config_ui )

Aplica recorte, sincronización de datos y configuración visual.

Definition at line 48 of file recortar_json_wavedrom.py.

48def recortar_wavedrom(data, tick_start, tick_end, config_ui):
49 """Aplica recorte, sincronización de datos y configuración visual."""
50 data_chars = "23456789="
51 for sig in data.get('signal', []):
52 if 'wave' in sig:
53 wave_full = sig['wave']
54 skipped_data = sum(1 for char in wave_full[:tick_start] if char in data_chars)
55 new_wave = wave_full[tick_start:tick_end]
56 keep_data = sum(1 for char in new_wave if char in data_chars)
57 sig['wave'] = new_wave
58 if 'data' in sig and isinstance(sig['data'], list):
59 sig['data'] = sig['data'][skipped_data : skipped_data + keep_data]
60
61 if 'head' not in data: data['head'] = {}
62 if 'foot' not in data: data['foot'] = {}
63
64 data['head']['text'] = config_ui['titulo']
65 data['foot']['text'] = config_ui['pie']
66
67 if 'config' not in data: data['config'] = {}
68 data['config']['hscale'] = int(config_ui['hscale'])
69 data['config']['skin'] = config_ui['skin']
70 data['head']['every'] = config_ui['every']
71
72 return data
73

◆ seleccionar_archivo()

seleccionar_archivo ( )

Función corregida para evitar el error UnboundLocalError.

Definition at line 74 of file recortar_json_wavedrom.py.

74def seleccionar_archivo():
75 """Función corregida para evitar el error UnboundLocalError."""
76 archivo = filedialog.askopenfilename(filetypes=[("JSON files", "*.json"), ("All files", "*.*")])
77 if archivo:
78 entry_file.delete(0, tk.END)
79 entry_file.insert(0, archivo)
80 duracion = obtener_info_archivo(archivo)
81 lbl_info.config(text=f"Duración: {duracion} ticks", fg="#1b5e20")
82 entry_end.delete(0, tk.END)
83 entry_end.insert(0, str(duracion))
84

Variable Documentation

◆ bg

bg

Definition at line 171 of file recortar_json_wavedrom.py.

◆ btn_frame

btn_frame = tk.Frame(root)

Definition at line 168 of file recortar_json_wavedrom.py.

◆ column

column

Definition at line 147 of file recortar_json_wavedrom.py.

◆ combo_skin

combo_skin = ttk.Combobox(frame_params, values=["default", "narrow"], width=10)

Definition at line 148 of file recortar_json_wavedrom.py.

◆ command

command

Definition at line 132 of file recortar_json_wavedrom.py.

◆ entry_end

entry_end = tk.Entry(frame_params, width=7); entry_end.insert(0, "20")

Definition at line 160 of file recortar_json_wavedrom.py.

◆ entry_file

entry_file = tk.Entry(frame_file, width=45)

Definition at line 130 of file recortar_json_wavedrom.py.

◆ entry_foot

entry_foot = tk.Entry(root, width=50); entry_foot.pack()

Definition at line 141 of file recortar_json_wavedrom.py.

◆ entry_start

entry_start = tk.Entry(frame_params, width=7); entry_start.insert(0, "0")

Definition at line 156 of file recortar_json_wavedrom.py.

◆ entry_title

entry_title = tk.Entry(root, width=50); entry_title.pack()

Definition at line 139 of file recortar_json_wavedrom.py.

◆ fg

fg

Definition at line 171 of file recortar_json_wavedrom.py.

◆ font

font

Definition at line 127 of file recortar_json_wavedrom.py.

◆ frame_file

frame_file = tk.Frame(root)

Definition at line 128 of file recortar_json_wavedrom.py.

◆ frame_params

frame_params = tk.LabelFrame(root, text=" 3. Ajustes de Recorte y Estilo ", padx=10, pady=10)

Definition at line 144 of file recortar_json_wavedrom.py.

◆ lbl_info

lbl_info = tk.Label(root, text="Sin archivo cargado")

Definition at line 133 of file recortar_json_wavedrom.py.

◆ LEFT

LEFT

Definition at line 131 of file recortar_json_wavedrom.py.

◆ padx

padx

Definition at line 131 of file recortar_json_wavedrom.py.

◆ pady

pady

Definition at line 127 of file recortar_json_wavedrom.py.

◆ root

root = tk.Tk()

Definition at line 122 of file recortar_json_wavedrom.py.

◆ row

row

Definition at line 147 of file recortar_json_wavedrom.py.

◆ side

side

Definition at line 131 of file recortar_json_wavedrom.py.

◆ spin_every

spin_every = tk.Spinbox(frame_params, from_=1, to=100, width=7)

Definition at line 164 of file recortar_json_wavedrom.py.

◆ spin_hscale

spin_hscale = tk.Spinbox(frame_params, from_=1, to=10, width=5)

Definition at line 152 of file recortar_json_wavedrom.py.

◆ text

text

Definition at line 127 of file recortar_json_wavedrom.py.