mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-05 23:27:38 +03:00
92 lines
3.0 KiB
Python
92 lines
3.0 KiB
Python
from calibre.utils.config import JSONConfig
|
|
from qt.core import (
|
|
QCheckBox,
|
|
QDialog,
|
|
QDialogButtonBox,
|
|
QFormLayout,
|
|
QHBoxLayout,
|
|
QLineEdit,
|
|
QPlainTextEdit,
|
|
QPushButton,
|
|
QSpinBox,
|
|
QVBoxLayout,
|
|
QWidget,
|
|
)
|
|
|
|
from .log import get_log_text
|
|
|
|
|
|
PREFS = JSONConfig('plugins/crosspoint_reader')
|
|
PREFS.defaults['host'] = '192.168.4.1'
|
|
PREFS.defaults['port'] = 81
|
|
PREFS.defaults['path'] = '/'
|
|
PREFS.defaults['chunk_size'] = 2048
|
|
PREFS.defaults['debug'] = False
|
|
PREFS.defaults['fetch_metadata'] = False
|
|
|
|
|
|
class CrossPointConfigWidget(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
layout = QFormLayout(self)
|
|
self.host = QLineEdit(self)
|
|
self.port = QSpinBox(self)
|
|
self.port.setRange(1, 65535)
|
|
self.path = QLineEdit(self)
|
|
self.chunk_size = QSpinBox(self)
|
|
self.chunk_size.setRange(512, 65536)
|
|
self.debug = QCheckBox('Enable debug logging', self)
|
|
self.fetch_metadata = QCheckBox('Fetch metadata (slower device list)', self)
|
|
|
|
self.host.setText(PREFS['host'])
|
|
self.port.setValue(PREFS['port'])
|
|
self.path.setText(PREFS['path'])
|
|
self.chunk_size.setValue(PREFS['chunk_size'])
|
|
self.debug.setChecked(PREFS['debug'])
|
|
self.fetch_metadata.setChecked(PREFS['fetch_metadata'])
|
|
|
|
layout.addRow('Host', self.host)
|
|
layout.addRow('Port', self.port)
|
|
layout.addRow('Upload path', self.path)
|
|
layout.addRow('Chunk size', self.chunk_size)
|
|
layout.addRow('', self.debug)
|
|
layout.addRow('', self.fetch_metadata)
|
|
|
|
self.log_view = QPlainTextEdit(self)
|
|
self.log_view.setReadOnly(True)
|
|
self.log_view.setPlaceholderText('Discovery log will appear here when debug is enabled.')
|
|
self._refresh_logs()
|
|
|
|
refresh_btn = QPushButton('Refresh Log', self)
|
|
refresh_btn.clicked.connect(self._refresh_logs)
|
|
log_layout = QHBoxLayout()
|
|
log_layout.addWidget(refresh_btn)
|
|
|
|
layout.addRow('Log', self.log_view)
|
|
layout.addRow('', log_layout)
|
|
|
|
def save(self):
|
|
PREFS['host'] = self.host.text().strip() or PREFS.defaults['host']
|
|
PREFS['port'] = int(self.port.value())
|
|
PREFS['path'] = self.path.text().strip() or PREFS.defaults['path']
|
|
PREFS['chunk_size'] = int(self.chunk_size.value())
|
|
PREFS['debug'] = bool(self.debug.isChecked())
|
|
PREFS['fetch_metadata'] = bool(self.fetch_metadata.isChecked())
|
|
|
|
def _refresh_logs(self):
|
|
self.log_view.setPlainText(get_log_text())
|
|
|
|
|
|
class CrossPointConfigDialog(QDialog):
|
|
def __init__(self, parent=None):
|
|
super().__init__(parent)
|
|
self.setWindowTitle('CrossPoint Reader')
|
|
self.widget = CrossPointConfigWidget()
|
|
layout = QVBoxLayout(self)
|
|
layout.addWidget(self.widget)
|
|
buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok |
|
|
QDialogButtonBox.StandardButton.Cancel)
|
|
buttons.accepted.connect(self.accept)
|
|
buttons.rejected.connect(self.reject)
|
|
layout.addWidget(buttons)
|