From 4dc02d52a2e2a1bdc2929cf085e58261e07f6d0d Mon Sep 17 00:00:00 2001 From: Javanaut Date: Fri, 7 Nov 2025 15:14:55 +0100 Subject: [PATCH] Adds notes field for patterns --- src/ffx/model/pattern.py | 4 +++- src/ffx/pattern_controller.py | 3 ++- src/ffx/pattern_details_screen.py | 36 ++++++++++++++++++++++++++++--- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/ffx/model/pattern.py b/src/ffx/model/pattern.py index c612cc5..9fc8595 100644 --- a/src/ffx/model/pattern.py +++ b/src/ffx/model/pattern.py @@ -1,6 +1,6 @@ import click -from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy import Column, Integer, String, Text, ForeignKey from sqlalchemy.orm import relationship from .show import Base, Show @@ -35,6 +35,8 @@ class Pattern(Base): quality = Column(Integer, default=0) + notes = Column(Text, default='') + def getId(self): diff --git a/src/ffx/pattern_controller.py b/src/ffx/pattern_controller.py index 956cf76..089c30c 100644 --- a/src/ffx/pattern_controller.py +++ b/src/ffx/pattern_controller.py @@ -45,11 +45,12 @@ class PatternController(): if q.count(): - pattern = q.first() + pattern: Pattern = q.first() pattern.show_id = int(patternObj['show_id']) pattern.pattern = str(patternObj['pattern']) pattern.quality = str(patternObj['quality']) + pattern.notes = str(patternObj['notes']) s.commit() return True diff --git a/src/ffx/pattern_details_screen.py b/src/ffx/pattern_details_screen.py index 5e78330..697aac0 100644 --- a/src/ffx/pattern_details_screen.py +++ b/src/ffx/pattern_details_screen.py @@ -2,7 +2,7 @@ import click, re from typing import List from textual.screen import Screen -from textual.widgets import Header, Footer, Static, Button, Input, DataTable +from textual.widgets import Header, Footer, Static, Button, Input, DataTable, TextArea from textual.containers import Grid from ffx.model.pattern import Pattern @@ -40,7 +40,7 @@ class PatternDetailsScreen(Screen): Grid { grid-size: 7 13; - grid-rows: 2 2 2 2 2 2 8 2 2 8 2 2 2 2; + grid-rows: 2 2 2 2 2 2 6 2 2 8 2 2 8 2 2 2 2; grid-columns: 25 25 25 25 25 25 25; height: 100%; width: 100%; @@ -89,6 +89,12 @@ class PatternDetailsScreen(Screen): column-span: 7; } + + .four_box { + min-height: 6; + } + + .box { height: 100%; border: solid green; @@ -258,6 +264,9 @@ class PatternDetailsScreen(Screen): if self.__pattern and self.__pattern.quality: self.query_one("#quality_input", Input).value = str(self.__pattern.quality) + if self.__pattern and self.__pattern.notes: + self.query_one("#notes_textarea", Input).value = str(self.__pattern.notes) + self.updateTags() self.updateTracks() @@ -305,12 +314,29 @@ class PatternDetailsScreen(Screen): # 3 yield Static(" ", classes="seven") + + # 4 yield Static("Quality") yield Input(type="integer", id="quality_input") yield Static(' ', classes="five") - # 4 + + # 5 + yield Static(" ", classes="seven") + + + # 6 + yield Static("Notes") + yield Static(" ", classes="six") + + # 7 + yield TextArea(id="notes_textarea", classes="four_box seven") + + + + + # 4 -> 8 yield Static(" ", classes="seven") # 5 @@ -381,6 +407,9 @@ class PatternDetailsScreen(Screen): return int(self.query_one("#quality_input", Input).value) except ValueError: return 0 + + def getNotesFromInput(self): + return str(self.query_one("#notes_textarea", Input).value) def getSelectedTrackDescriptor(self): @@ -443,6 +472,7 @@ class PatternDetailsScreen(Screen): patternDescriptor['show_id'] = self.__showDescriptor.getId() patternDescriptor['pattern'] = self.getPatternFromInput() patternDescriptor['quality'] = self.getQualityFromInput() + patternDescriptor['notes'] = self.getNotesFromInput() if self.__pattern is not None: