Sistematično poimenovanje Projektor besedil oz. Projektor. Besedo pesem dopolnil z 'ali drugo besedilo' oz. jo nadomeščal z besedilo, kjer je bilo možno ali pa se celo v celoti izognil temu poimenovanju. #8

This commit is contained in:
2026-03-20 22:53:03 +01:00
parent 91bff12ed7
commit d5354b8757
7 changed files with 21 additions and 21 deletions

View File

@@ -1,4 +1,4 @@
# Projektor pesmi (Song Projector) # Projekcija besedil (Lyrics Projector)
A Tkinter-based song projector application with optional Flask web interface for remote control. A Tkinter-based song projector application with optional Flask web interface for remote control.
@@ -17,7 +17,7 @@ A Tkinter-based song projector application with optional Flask web interface for
## Project Structure ## Project Structure
``` ```
Projekcija/ projekcija/
├── projector.py # Main Tkinter application ├── projector.py # Main Tkinter application
├── nastavitve.py # Settings defaults and initialization ├── nastavitve.py # Settings defaults and initialization
├── add_song.py # Utility to import songs into database ├── add_song.py # Utility to import songs into database

View File

@@ -250,7 +250,7 @@ class SongProjector:
self.next_page() self.next_page()
# ------------------------------------------------------ # ------------------------------------------------------
# Nalaganje in obdelava pesmi # Nalaganje in obdelava besedila
# ------------------------------------------------------ # ------------------------------------------------------
def load_song(self): def load_song(self):
if not self.song_number: if not self.song_number:
@@ -436,7 +436,7 @@ class SongProjector:
self.song_info_label.config(text="") self.song_info_label.config(text="")
# ------------------------------------------------------ # ------------------------------------------------------
# Iskanje pesmi # Iskanje po naslovu
# ------------------------------------------------------ # ------------------------------------------------------
def search_song(self, event=None): def search_song(self, event=None):
self.clear_screen() self.clear_screen()

View File

@@ -1,12 +1,12 @@
@echo off @echo off
cls cls
set "TARGET=%USERPROFILE%\OneDrive\Namizje\Projekcije cerkev" set "TARGET=%USERPROFILE%\Projekcija"
set "BACKUP_DIR=%TARGET%\backup" set "BACKUP_DIR=%TARGET%\backup"
:: Najprej preveri ali obstaja mapa Projekcije cerkev na USB (D:) :: Najprej preveri ali obstaja mapa Projekcija na USB (D:)
IF EXIST "D:\Projekcije cerkev" ( IF EXIST "D:\Projekcija" (
echo Mapa 'Projekcije cerkev' na USB pogonu obstaja. echo Mapa 'Projekcija' na USB pogonu obstaja.
:: 1. Ustvari backup obstoječe baze na namizju, če obstaja :: 1. Ustvari backup obstoječe baze na namizju, če obstaja
IF EXIST "%TARGET%\songs.db" ( IF EXIST "%TARGET%\songs.db" (
@@ -38,7 +38,7 @@ IF EXIST "D:\Projekcije cerkev" (
echo Kopiram nove datoteke z USB na namizje... echo Kopiram nove datoteke z USB na namizje...
:: Kopiranje z robocopy (/E - vse podmape, /XO - samo novejše datoteke, da ne povozimo backupa če ni treba) :: Kopiranje z robocopy (/E - vse podmape, /XO - samo novejše datoteke, da ne povozimo backupa če ni treba)
robocopy "D:\Projekcije cerkev" "%TARGET%" /E robocopy "D:\Projekcija" "%TARGET%" /E
echo Zagon projector.py ... echo Zagon projector.py ...
pushd "%TARGET%" pushd "%TARGET%"

View File

@@ -1,11 +1,11 @@
#!/bin/bash #!/bin/bash
# Ciljna mapa na Linuxu (v uporabnikovem home-u) # Ciljna mapa na Linuxu (v uporabnikovem home-u)
TARGET="$HOME/Projekcije cerkev" TARGET="$HOME/Projekcija"
BACKUP_DIR="$TARGET/backup" BACKUP_DIR="$TARGET/backup"
# Iskanje vira na vseh priklopljenih medijih (USB ključek) # Iskanje vira na vseh priklopljenih medijih (USB ključek)
SOURCE=$(find /media/$USER -maxdepth 2 -type d -name "Projekcije cerkev" 2>/dev/null | head -n 1) SOURCE=$(find /media/$USER -maxdepth 2 -type d -name "Projekcija" 2>/dev/null | head -n 1)
if [ -n "$SOURCE" ]; then if [ -n "$SOURCE" ]; then
echo "Najden ključek: $SOURCE" echo "Najden ključek: $SOURCE"

View File

@@ -65,7 +65,7 @@ def get_state():
can_prev = _projector_app.current_page_index > 0 can_prev = _projector_app.current_page_index > 0
can_next = _projector_app.current_page_index + 1 < len(_projector_app.pages) can_next = _projector_app.current_page_index + 1 < len(_projector_app.pages)
else: else:
current_text = "Pripravljeno. Vpiši številko pesmi." current_text = "Pripravljeno. Vpiši številko pesmi ali drugega besedila."
return jsonify({ return jsonify({
'current_text': current_text, 'current_text': current_text,
@@ -133,7 +133,7 @@ def toggle_caps():
@app.route('/api/search_songs', methods=['POST']) @app.route('/api/search_songs', methods=['POST'])
def search_songs(): def search_songs():
"""Iskanje pesmi po naslovu""" """Iskanje besedil po naslovu"""
if _projector_app is None: if _projector_app is None:
return jsonify({'results': []}) return jsonify({'results': []})

View File

@@ -77,7 +77,7 @@ async function updateState(force = false) {
lastStateSignature = signature; lastStateSignature = signature;
displayArea.textContent = data.current_text || 'Pripravljeno. Vpiši številko pesmi.'; displayArea.textContent = data.current_text || 'Pripravljeno. Vpiši številko pesmi ali drugega besedila.';
lastPageInfo = data.page_info || ''; lastPageInfo = data.page_info || '';
updatePageInfoDisplay(); updatePageInfoDisplay();
@@ -147,7 +147,7 @@ async function loadSong() {
} }
} }
// Iskanje pesmi // Iskanje besedil po naslovu
async function searchSongs() { async function searchSongs() {
const query = searchInput.value.trim(); const query = searchInput.value.trim();
if (!query) { if (!query) {
@@ -237,11 +237,11 @@ async function openEditor() {
editModal.style.display = 'block'; editModal.style.display = 'block';
menuDropdown.classList.remove('show'); menuDropdown.classList.remove('show');
} else { } else {
alert(data.message || 'Za urejanje najprej naložite skladbo.'); alert(data.message || 'Za urejanje najprej naložite besedilo.');
menuDropdown.classList.remove('show'); menuDropdown.classList.remove('show');
} }
} catch (error) { } catch (error) {
console.error('Napaka pri pridobivanju podatkov pesmi:', error); console.error('Napaka pri pridobivanju podatkov:', error);
alert('Napaka pri povezavi s strežnikom.'); alert('Napaka pri povezavi s strežnikom.');
} }
} }
@@ -281,7 +281,7 @@ async function saveSongEdit() {
alert('Napaka pri shranjevanju: ' + data.message); alert('Napaka pri shranjevanju: ' + data.message);
} }
} catch (error) { } catch (error) {
console.error('Napaka pri shranjevanju pesmi:', error); console.error('Napaka pri shranjevanju besedila:', error);
alert('Napaka pri povezavi s strežnikom.'); alert('Napaka pri povezavi s strežnikom.');
} }
} }

View File

@@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">
<title>Projektor pesmi</title> <title>Projekcija besedil</title>
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head> </head>
@@ -15,7 +15,7 @@
<div class="status-bar"> <div class="status-bar">
<span id="page-info" class="page-info"></span> <span id="page-info" class="page-info"></span>
<div class="search-container"> <div class="search-container">
<input type="text" id="search-input" placeholder="Išči pesem..." autocomplete="off"> <input type="text" id="search-input" placeholder="Išči po naslovu ..." autocomplete="off">
<div id="search-results" class="search-results"></div> <div id="search-results" class="search-results"></div>
</div> </div>
<div class="menu-container"> <div class="menu-container">
@@ -51,7 +51,7 @@
<div class="content"> <div class="content">
<div id="display-area" class="lyrics-display"> <div id="display-area" class="lyrics-display">
<span class="status-message">Pripravljeno. Vpiši številko pesmi.</span> <span class="status-message">Pripravljeno. Vpiši številko pesmi ali drugega besedila.</span>
</div> </div>
</div> </div>