chore: Update URLManager layout and date formatting
This commit is contained in:
56
app.py
56
app.py
@ -5,19 +5,18 @@ from PyQt5.QtWidgets import (
|
|||||||
QApplication, QWidget, QVBoxLayout, QHBoxLayout,
|
QApplication, QWidget, QVBoxLayout, QHBoxLayout,
|
||||||
QLineEdit, QPushButton, QTextEdit, QComboBox,
|
QLineEdit, QPushButton, QTextEdit, QComboBox,
|
||||||
QMessageBox, QSpacerItem, QSizePolicy, QLabel, QFileDialog, QDialog, QFormLayout, QTableWidget, QTableWidgetItem,
|
QMessageBox, QSpacerItem, QSizePolicy, QLabel, QFileDialog, QDialog, QFormLayout, QTableWidget, QTableWidgetItem,
|
||||||
QHeaderView # Import QHeaderView from PyQt5.QtWidgets
|
QHeaderView, QDateTimeEdit # Import QDateTimeEdit for date formatting
|
||||||
)
|
)
|
||||||
from PyQt5.QtGui import QIcon, QPixmap
|
from PyQt5.QtGui import QIcon, QPixmap
|
||||||
from PyQt5.QtCore import Qt, QDateTime, QUrl
|
from PyQt5.QtCore import Qt, QDateTime, QUrl
|
||||||
from PyQt5.QtSvg import QSvgWidget
|
from PyQt5.QtSvg import QSvgWidget
|
||||||
from PyQt5.QtGui import QDesktopServices
|
|
||||||
|
|
||||||
class URLManager(QWidget):
|
class URLManager(QWidget):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.setWindowTitle('tabRemember - URL Manager')
|
self.setWindowTitle('tabRemember - URL Manager')
|
||||||
self.setGeometry(100, 100, 800, 600) # Set a larger initial size
|
self.setGeometry(100, 100, 600, 800) # Set a larger initial size
|
||||||
|
|
||||||
# Set the application icon
|
# Set the application icon
|
||||||
self.setWindowIcon(QIcon('assets/logo.png'))
|
self.setWindowIcon(QIcon('assets/logo.png'))
|
||||||
@ -177,10 +176,22 @@ class URLManager(QWidget):
|
|||||||
if urls is None:
|
if urls is None:
|
||||||
urls = self.urls
|
urls = self.urls
|
||||||
|
|
||||||
|
# Fetch date format from settings
|
||||||
|
date_format = self.date_format
|
||||||
|
|
||||||
self.url_list.setRowCount(len(urls))
|
self.url_list.setRowCount(len(urls))
|
||||||
for row, url in enumerate(urls):
|
for row, url in enumerate(urls):
|
||||||
self.url_list.setItem(row, 0, QTableWidgetItem(url['url']))
|
self.url_list.setItem(row, 0, QTableWidgetItem(url['url']))
|
||||||
self.url_list.setItem(row, 1, QTableWidgetItem(url['date']))
|
|
||||||
|
# Format date according to selected date format
|
||||||
|
if date_format == "Nerdy":
|
||||||
|
date_str = url['date']
|
||||||
|
elif date_format == "Normal":
|
||||||
|
date_str = QDateTime.fromString(url['date'], Qt.ISODate).toString("dd/MM/yy - hh:mm")
|
||||||
|
elif date_format == "Murica!":
|
||||||
|
date_str = QDateTime.fromString(url['date'], Qt.ISODate).toString("MM/dd/yy - hh:mmap")
|
||||||
|
|
||||||
|
self.url_list.setItem(row, 1, QTableWidgetItem(date_str))
|
||||||
|
|
||||||
# Action buttons
|
# Action buttons
|
||||||
actions_layout = QHBoxLayout()
|
actions_layout = QHBoxLayout()
|
||||||
@ -210,20 +221,15 @@ class URLManager(QWidget):
|
|||||||
actions_widget.setLayout(actions_layout)
|
actions_widget.setLayout(actions_layout)
|
||||||
self.url_list.setCellWidget(row, 2, actions_widget)
|
self.url_list.setCellWidget(row, 2, actions_widget)
|
||||||
|
|
||||||
# Hide row numbers in the first column
|
# Hide row numbers in the table
|
||||||
self.url_list.verticalHeader().setVisible(False)
|
vertical_header = self.url_list.verticalHeader()
|
||||||
|
vertical_header.setVisible(False)
|
||||||
|
|
||||||
def edit_url(self, row):
|
def edit_url(self, row):
|
||||||
url = self.urls[row]
|
|
||||||
self.url_input.setText(url['url'])
|
|
||||||
self.description_input.setPlainText(url['description'])
|
|
||||||
self.urls.pop(row)
|
|
||||||
|
|
||||||
def search_url(self, row):
|
|
||||||
url = self.urls[row]['url']
|
url = self.urls[row]['url']
|
||||||
search_engine = self.search_engines[self.search_engine_combobox.currentText()]
|
description = self.urls[row]['description']
|
||||||
search_url = search_engine + QUrl(url).toString(QUrl.FullyEncoded)
|
self.url_input.setText(url)
|
||||||
QDesktopServices.openUrl(QUrl(search_url))
|
self.description_input.setPlainText(description)
|
||||||
|
|
||||||
def load_settings(self):
|
def load_settings(self):
|
||||||
settings_path = 'data/settings.json'
|
settings_path = 'data/settings.json'
|
||||||
@ -232,10 +238,12 @@ class URLManager(QWidget):
|
|||||||
settings = json.load(file)
|
settings = json.load(file)
|
||||||
self.data_directory = settings['data_directory']
|
self.data_directory = settings['data_directory']
|
||||||
self.search_engine = settings['search_engine']
|
self.search_engine = settings['search_engine']
|
||||||
|
self.date_format = settings.get('date_format', 'Nerdy') # Default to 'Nerdy' if not present
|
||||||
else:
|
else:
|
||||||
# Default settings
|
# Default settings
|
||||||
self.data_directory = 'data/'
|
self.data_directory = 'data/'
|
||||||
self.search_engine = 'Google'
|
self.search_engine = 'Google'
|
||||||
|
self.date_format = 'Nerdy'
|
||||||
self.save_settings()
|
self.save_settings()
|
||||||
|
|
||||||
def save_settings(self):
|
def save_settings(self):
|
||||||
@ -244,7 +252,8 @@ class URLManager(QWidget):
|
|||||||
with open(settings_path, 'w') as file:
|
with open(settings_path, 'w') as file:
|
||||||
settings = {
|
settings = {
|
||||||
'data_directory': self.data_directory,
|
'data_directory': self.data_directory,
|
||||||
'search_engine': self.search_engine
|
'search_engine': self.search_engine,
|
||||||
|
'date_format': self.date_format # Save date format setting
|
||||||
}
|
}
|
||||||
json.dump(settings, file)
|
json.dump(settings, file)
|
||||||
|
|
||||||
@ -273,12 +282,12 @@ class URLManager(QWidget):
|
|||||||
layout.addWidget(svg_widget, alignment=Qt.AlignCenter)
|
layout.addWidget(svg_widget, alignment=Qt.AlignCenter)
|
||||||
|
|
||||||
# Written by label
|
# Written by label
|
||||||
written_by_label = QLabel("Written by Axel Rafn Benediktsson")
|
written_by_label = QLabel("Developed by Axel Rafn")
|
||||||
layout.addWidget(written_by_label, alignment=Qt.AlignCenter)
|
layout.addWidget(written_by_label, alignment=Qt.AlignCenter)
|
||||||
|
|
||||||
# Link label
|
# Link label
|
||||||
link_label = QLabel()
|
link_label = QLabel()
|
||||||
link_label.setText('<a href="https://git.axelrafn.is/axelrafn/tabRemember">https://git.axelrafn.is/axelrafn/tabRemember</a>')
|
link_label.setText('<a href="https://git.axelrafn.is/axelrafn/tabRemember">git.axelrafn.is</a>')
|
||||||
link_label.setOpenExternalLinks(True)
|
link_label.setOpenExternalLinks(True)
|
||||||
layout.addWidget(link_label, alignment=Qt.AlignCenter)
|
layout.addWidget(link_label, alignment=Qt.AlignCenter)
|
||||||
|
|
||||||
@ -287,7 +296,9 @@ class URLManager(QWidget):
|
|||||||
|
|
||||||
def show_settings_dialog(self):
|
def show_settings_dialog(self):
|
||||||
dialog = SettingsDialog(self)
|
dialog = SettingsDialog(self)
|
||||||
dialog.exec_()
|
if dialog.exec_() == QDialog.Accepted:
|
||||||
|
self.load_settings() # Reload settings if they were updated
|
||||||
|
self.update_url_list() # Update URL list to reflect new date format
|
||||||
|
|
||||||
|
|
||||||
class SettingsDialog(QDialog):
|
class SettingsDialog(QDialog):
|
||||||
@ -324,6 +335,12 @@ class SettingsDialog(QDialog):
|
|||||||
self.search_engine_combobox.setCurrentText(self.parent.search_engine)
|
self.search_engine_combobox.setCurrentText(self.parent.search_engine)
|
||||||
form_layout.addRow("Search Engine:", self.search_engine_combobox)
|
form_layout.addRow("Search Engine:", self.search_engine_combobox)
|
||||||
|
|
||||||
|
# Date format selection
|
||||||
|
self.date_format_combobox = QComboBox()
|
||||||
|
self.date_format_combobox.addItems(["Nerdy", "Normal", "Murica!"])
|
||||||
|
self.date_format_combobox.setCurrentText(self.parent.date_format)
|
||||||
|
form_layout.addRow("Date Format:", self.date_format_combobox)
|
||||||
|
|
||||||
layout.addLayout(form_layout)
|
layout.addLayout(form_layout)
|
||||||
|
|
||||||
# Save button
|
# Save button
|
||||||
@ -341,6 +358,7 @@ class SettingsDialog(QDialog):
|
|||||||
def save_settings(self):
|
def save_settings(self):
|
||||||
self.parent.data_directory = self.directory_input.text()
|
self.parent.data_directory = self.directory_input.text()
|
||||||
self.parent.search_engine = self.search_engine_combobox.currentText()
|
self.parent.search_engine = self.search_engine_combobox.currentText()
|
||||||
|
self.parent.date_format = self.date_format_combobox.currentText()
|
||||||
self.parent.save_settings()
|
self.parent.save_settings()
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user