Carregar ficheiros para "/"
This commit is contained in:
176
preferences.py
Normal file
176
preferences.py
Normal file
@ -0,0 +1,176 @@
|
||||
from PySide6.QtWidgets import (QDialog, QWidget, QVBoxLayout, QHBoxLayout, QFormLayout,
|
||||
QCheckBox, QPushButton, QSpinBox, QComboBox, QColorDialog,
|
||||
QMessageBox, QLineEdit, QLabel, QFileDialog)
|
||||
from PySide6.QtCore import QSettings, Qt
|
||||
import os
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
class Preferences:
|
||||
def __init__(self):
|
||||
self.settings = QSettings("Codeium", "GestaoDocumentos")
|
||||
self.load_defaults()
|
||||
|
||||
def load_defaults(self):
|
||||
if not self.settings.contains("default_save_path"):
|
||||
self.settings.setValue("default_save_path", "")
|
||||
if not self.settings.contains("auto_preview"):
|
||||
self.settings.setValue("auto_preview", True)
|
||||
if not self.settings.contains("max_recent_docs"):
|
||||
self.settings.setValue("max_recent_docs", 10)
|
||||
if not self.settings.contains("theme"):
|
||||
self.settings.setValue("theme", "light")
|
||||
if not self.settings.contains("preview_size"):
|
||||
self.settings.setValue("preview_size", "medium")
|
||||
if not self.settings.contains("auto_version"):
|
||||
self.settings.setValue("auto_version", True)
|
||||
if not self.settings.contains("backup_reminder_days"):
|
||||
self.settings.setValue("backup_reminder_days", 7)
|
||||
|
||||
def get(self, key, type=None):
|
||||
return self.settings.value(key, type=type)
|
||||
|
||||
def set(self, key, value):
|
||||
self.settings.setValue(key, value)
|
||||
|
||||
def get_save_path(self):
|
||||
return self.settings.value("default_save_path", type=str)
|
||||
|
||||
def get_auto_save(self):
|
||||
return bool(self.settings.value("auto_preview", type=bool))
|
||||
|
||||
def get_recent_limit(self):
|
||||
return self.settings.value("max_recent_docs", type=int)
|
||||
|
||||
def get_theme(self):
|
||||
return self.settings.value("theme", type=str)
|
||||
|
||||
class PreferencesDialog(QDialog):
|
||||
def __init__(self, preferences, parent=None):
|
||||
super().__init__(parent)
|
||||
self.preferences = preferences
|
||||
self.setWindowTitle("Preferências")
|
||||
self.setup_ui()
|
||||
|
||||
def setup_ui(self):
|
||||
layout = QVBoxLayout(self)
|
||||
|
||||
# Save path settings
|
||||
save_path_layout = QHBoxLayout()
|
||||
self.save_path_edit = QLineEdit(self.preferences.get_save_path())
|
||||
save_path_layout.addWidget(self.save_path_edit)
|
||||
|
||||
browse_btn = QPushButton("Procurar...")
|
||||
browse_btn.clicked.connect(self.browse_save_path)
|
||||
save_path_layout.addWidget(browse_btn)
|
||||
|
||||
layout.addLayout(save_path_layout)
|
||||
|
||||
# Auto-save settings
|
||||
auto_save_check = QCheckBox("Salvar automaticamente")
|
||||
auto_save_check.setChecked(self.preferences.get_auto_save())
|
||||
layout.addWidget(auto_save_check)
|
||||
|
||||
# Recent documents limit
|
||||
recent_limit_layout = QHBoxLayout()
|
||||
recent_limit_layout.addWidget(QLabel("Número de documentos recentes:"))
|
||||
recent_limit_spin = QSpinBox()
|
||||
recent_limit_spin.setRange(5, 50)
|
||||
recent_limit_spin.setValue(self.preferences.get_recent_limit())
|
||||
recent_limit_layout.addWidget(recent_limit_spin)
|
||||
layout.addLayout(recent_limit_layout)
|
||||
|
||||
# Theme selection
|
||||
theme_layout = QHBoxLayout()
|
||||
theme_layout.addWidget(QLabel("Tema:"))
|
||||
theme_combo = QComboBox()
|
||||
theme_combo.addItems(["Claro", "Escuro"])
|
||||
theme_combo.setCurrentText(self.preferences.get_theme())
|
||||
theme_layout.addWidget(theme_combo)
|
||||
layout.addLayout(theme_layout)
|
||||
|
||||
# Buttons
|
||||
button_layout = QHBoxLayout()
|
||||
save_btn = QPushButton("Salvar")
|
||||
save_btn.clicked.connect(self.save_preferences)
|
||||
button_layout.addWidget(save_btn)
|
||||
|
||||
cancel_btn = QPushButton("Cancelar")
|
||||
cancel_btn.clicked.connect(self.reject)
|
||||
button_layout.addWidget(cancel_btn)
|
||||
|
||||
layout.addLayout(button_layout)
|
||||
|
||||
def browse_save_path(self):
|
||||
path = QFileDialog.getExistingDirectory(
|
||||
self,
|
||||
"Selecionar Pasta Padrão",
|
||||
self.save_path_edit.text()
|
||||
)
|
||||
if path:
|
||||
self.save_path_edit.setText(path)
|
||||
|
||||
def save_preferences(self):
|
||||
try:
|
||||
self.preferences.set("default_save_path", self.save_path_edit.text())
|
||||
# self.preferences.set("auto_save", self.auto_save_check.isChecked())
|
||||
# self.preferences.set("max_recent_docs", self.recent_limit_spin.value())
|
||||
# self.preferences.set("theme", self.theme_combo.currentText())
|
||||
|
||||
QMessageBox.information(self, "Sucesso",
|
||||
"Preferências salvas com sucesso!")
|
||||
self.close()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self, "Erro",
|
||||
f"Erro ao salvar preferências: {str(e)}")
|
||||
|
||||
class RecentDocuments:
|
||||
def __init__(self, preferences):
|
||||
self.preferences = preferences
|
||||
self.recent_file = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"recent_docs.json"
|
||||
)
|
||||
self.load_recent_docs()
|
||||
|
||||
def load_recent_docs(self):
|
||||
try:
|
||||
if os.path.exists(self.recent_file):
|
||||
with open(self.recent_file, 'r') as f:
|
||||
self.recent_docs = json.load(f)
|
||||
else:
|
||||
self.recent_docs = []
|
||||
except Exception:
|
||||
self.recent_docs = []
|
||||
|
||||
def save_recent_docs(self):
|
||||
try:
|
||||
with open(self.recent_file, 'w') as f:
|
||||
json.dump(self.recent_docs, f)
|
||||
except Exception as e:
|
||||
print(f"Error saving recent documents: {str(e)}")
|
||||
|
||||
def add_document(self, doc_id, doc_name):
|
||||
# Remove if already exists
|
||||
self.recent_docs = [doc for doc in self.recent_docs
|
||||
if doc['id'] != doc_id]
|
||||
|
||||
# Add to start of list
|
||||
self.recent_docs.insert(0, {
|
||||
'id': doc_id,
|
||||
'name': doc_name,
|
||||
'timestamp': datetime.now().isoformat()
|
||||
})
|
||||
|
||||
# Trim list
|
||||
max_recent = int(self.preferences.get("max_recent_docs"))
|
||||
self.recent_docs = self.recent_docs[:max_recent]
|
||||
|
||||
self.save_recent_docs()
|
||||
|
||||
def get_recent_docs(self):
|
||||
return self.recent_docs
|
||||
|
||||
def clear_recent_docs(self):
|
||||
self.recent_docs = []
|
||||
self.save_recent_docs()
|
||||
Reference in New Issue
Block a user