diff --git a/projector.py b/projector.py index 350bc74..fdb3a32 100755 --- a/projector.py +++ b/projector.py @@ -276,8 +276,7 @@ class SongProjector: elif event.keysym == "BackSpace": self.song_number = self.song_number[:-1] elif event.char == "*": - self.all_caps_mode = not self.all_caps_mode - self.show_page() + self.toggle_split_mode() def enter_pressed(self, event=None): if self.song_number: @@ -285,6 +284,21 @@ class SongProjector: elif not self.waiting_for_song: self.next_page() + def toggle_split_mode(self): + """Preklopi med načinom preloma po kiticah in prostim prelomom.""" + self.settings["split_by_stanza"] = not self.settings.get("split_by_stanza", False) + # Shranimo v settings.json, da se ohrani ob ponovnem zagonu + try: + with open(SETTINGS_PATH, "w", encoding="utf-8") as f: + json.dump(self.settings, f, indent=4, ensure_ascii=False) + except Exception as e: + print(f"Napaka pri shranjevanju nastavitev: {e}") + + # Ponovno naložimo trenutno pesem, da se osveži prelom + if self.song_number_last: + self.song_number = self.song_number_last + self.load_song() + # ------------------------------------------------------ # Nalaganje in obdelava besedila # ------------------------------------------------------ diff --git a/web/server.py b/web/server.py index b7c1998..f1cb92d 100644 --- a/web/server.py +++ b/web/server.py @@ -62,6 +62,7 @@ def get_state(): 'current_text': 'Napaka: Aplikacija ni inicijalizirana', 'page_info': '', 'caps_mode': False, + 'split_by_stanza': False, 'can_prev': False, 'can_next': False }) @@ -89,6 +90,7 @@ def get_state(): 'current_text': current_text, 'page_info': page_info, 'caps_mode': _projector_app.all_caps_mode, + 'split_by_stanza': _projector_app.settings.get("split_by_stanza", False), 'can_prev': can_prev, 'can_next': can_next }) @@ -149,6 +151,15 @@ def toggle_caps(): return jsonify({'status': 'ok'}) +@app.route('/api/toggle_split', methods=['POST']) +def toggle_split(): + """Preklop med načinom preloma po kiticah in prostim prelomom""" + if _projector_app is not None: + _projector_app.toggle_split_mode() + + return jsonify({'status': 'ok'}) + + @app.route('/api/search_songs', methods=['POST']) def search_songs(): """Iskanje besedil po naslovu""" diff --git a/web/static/script.js b/web/static/script.js index 601ceeb..a774af0 100644 --- a/web/static/script.js +++ b/web/static/script.js @@ -7,6 +7,7 @@ const displayArea = document.getElementById('display-area'); const prevBtn = document.getElementById('prev-btn'); const nextBtn = document.getElementById('next-btn'); const darkBtn = document.getElementById('dark-btn'); +const splitBtn = document.getElementById('split-btn'); const pageInfo = document.getElementById('page-info'); const clearBtn = document.getElementById('clear-btn'); const keypadButtons = document.querySelectorAll('.btn-key'); @@ -37,6 +38,7 @@ const infoMessage = document.getElementById('info-message'); const infoOkBtn = document.getElementById('info-ok-btn'); let capsMode = false; +let splitByStanza = false; let wakeLock = null; let lastStateSignature = ""; let lastPageInfo = ""; @@ -81,6 +83,7 @@ async function updateState(force = false) { current_text: data.current_text || '', page_info: data.page_info || '', caps_mode: data.caps_mode || false, + split_by_stanza: data.split_by_stanza || false, can_prev: !!data.can_prev }); @@ -102,6 +105,13 @@ async function updateState(force = false) { darkBtn.classList.remove('active'); } + splitByStanza = data.split_by_stanza || false; + if (splitByStanza) { + splitBtn.classList.add('active'); + } else { + splitBtn.classList.remove('active'); + } + prevBtn.disabled = !data.can_prev; } catch (error) { console.error('Napaka pri posodabljanju stanja:', error); @@ -237,6 +247,16 @@ async function toggleCaps() { } } +// Preklop načina preloma po kiticah +async function toggleSplit() { + try { + await fetch('/api/toggle_split', { method: 'POST' }); + await updateState(true); + } catch (error) { + console.error('Napaka pri preklopu načina preloma:', error); + } +} + // Odpri urejevalnik async function openEditor(songId = null) { try { @@ -383,6 +403,14 @@ darkBtn.addEventListener('click', () => { toggleCaps(); }); +// Prelom po kiticah +if (splitBtn) { + splitBtn.addEventListener('click', () => { + vibrate(); + toggleSplit(); + }); +} + // Skrij/Pokaži tipkovnico if (toggleKeypadBtn) { toggleKeypadBtn.addEventListener('click', (e) => { @@ -551,10 +579,10 @@ document.addEventListener('keydown', (e) => { return; } - // AAaa + // preklopi prelom if (e.key === '*' || e.code === 'NumpadMultiply') { e.preventDefault(); - toggleCaps(); + toggleSplit(); return; } diff --git a/web/templates/index.html b/web/templates/index.html index 7a938ae..0edac2c 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -26,6 +26,7 @@