Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package vdu_controls for openSUSE:Factory checked in at 2024-08-22 18:13:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vdu_controls (Old) and /work/SRC/openSUSE:Factory/.vdu_controls.new.2698 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vdu_controls" Thu Aug 22 18:13:45 2024 rev:6 rq:1195207 version:2.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/vdu_controls/vdu_controls.changes 2024-05-09 12:14:10.791616954 +0200 +++ /work/SRC/openSUSE:Factory/.vdu_controls.new.2698/vdu_controls.changes 2024-08-22 18:14:08.751843991 +0200 @@ -1,0 +2,8 @@ +Thu Aug 22 01:21:40 UTC 2024 - Michael Hamilton <mich...@actrix.gen.nz> + +- Version 2.0.4 + * The About-Dialog now refreshes the ddcutil version info on each invocation. + * Increased dbus timeout to 10 seconds (in case numerous VDUs or errors slow down VDU detection). + * Dynamically enable a scroll-area when the main-panel exceeds the available screen height. + +------------------------------------------------------------------- Old: ---- vdu_controls-2.0.3.tar.gz New: ---- vdu_controls-2.0.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vdu_controls.spec ++++++ --- /var/tmp/diff_new_pack.NE58GQ/_old 2024-08-22 18:14:09.303866950 +0200 +++ /var/tmp/diff_new_pack.NE58GQ/_new 2024-08-22 18:14:09.307867117 +0200 @@ -18,7 +18,7 @@ Name: vdu_controls -Version: 2.0.3 +Version: 2.0.4 Release: 0 Summary: Visual Display Unit virtual control panel License: GPL-3.0-or-later ++++++ vdu_controls-2.0.3.tar.gz -> vdu_controls-2.0.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/PKGBUILD new/vdu_controls-2.0.4/PKGBUILD --- old/vdu_controls-2.0.3/PKGBUILD 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/PKGBUILD 2024-07-02 02:48:57.000000000 +0200 @@ -1,5 +1,5 @@ pkgname=vdu_controls -pkgver=2.0.3 +pkgver=2.0.4 pkgrel=1 pkgdesc="Visual Display Unit virtual control panel" arch=('i686' 'x86_64') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/README.md new/vdu_controls-2.0.4/README.md --- old/vdu_controls-2.0.3/README.md 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/README.md 2024-07-02 02:48:57.000000000 +0200 @@ -311,6 +311,10 @@ Version History --------------- +* 2.0.4 + * The About-Dialog now refreshes the ddcutil version info on each invocation. + * Increased dbus timeout to 10 seconds (in case numerous VDUs or errors slow down VDU detection). + * Dynamically enable a scroll-area when the main-panel exceeds the available screen height. * 2.0.3 * Reduce the number of writes to VDU NVRAM by sliders, spinners, and ambient brightness adjustments. * Slider and spin-box controls now only update the VDU when adjustments become slow or stop (when diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/docs/_build/man/vdu_controls.1 new/vdu_controls-2.0.4/docs/_build/man/vdu_controls.1 --- old/vdu_controls-2.0.3/docs/_build/man/vdu_controls.1 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/docs/_build/man/vdu_controls.1 2024-07-02 02:48:57.000000000 +0200 @@ -27,7 +27,7 @@ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "VDU_CONTROLS" "1" "May 08, 2024" "" "vdu_controls" +.TH "VDU_CONTROLS" "1" "Jun 22, 2024" "" "vdu_controls" .SH NAME vdu_controls \- vdu_controls 1.11.0 .SH VDU_CONTROLS - A DDC CONTROL PANEL FOR MONITORS @@ -916,6 +916,9 @@ .B VDU_CONTROLS_DEVELOPER Changes some search paths to be more convenient in a development scenario. (\fBno\fP or yes) +.TP +.B VDU_CONTROLS_DBUS_TIMEOUT_MILLIS +Dbus call wait timeout. Default is 10000, 10 seconds. .UNINDENT .UNINDENT .UNINDENT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/docs/_build/man/vdu_controls.1.html new/vdu_controls-2.0.4/docs/_build/man/vdu_controls.1.html --- old/vdu_controls-2.0.3/docs/_build/man/vdu_controls.1.html 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/docs/_build/man/vdu_controls.1.html 2024-07-02 02:48:57.000000000 +0200 @@ -698,7 +698,10 @@ VDU_CONTROLS_DEVELOPER Changes some search paths to be more convenient in a development - scenario. (``no`` or yes)</code></pre> + scenario. (``no`` or yes) + +VDU_CONTROLS_DBUS_TIMEOUT_MILLIS + Dbus call wait timeout. Default is 10000, 10 seconds.</code></pre> <h1 id="files">Files</h1> <pre><code>$HOME/.config/vdu_controls/ Location for config files, Presets, and other persistent data. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/setup.cfg new/vdu_controls-2.0.4/setup.cfg --- old/vdu_controls-2.0.3/setup.cfg 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/setup.cfg 2024-07-02 02:48:57.000000000 +0200 @@ -1,6 +1,6 @@ [metadata] name = vdu_controls-digitaltrails -version = 2.0.3 +version = 2.0.4 author = Michael Hamilton author_email = mich...@actrix.gen.nz description = A GUI for controlling Visual Display Units diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/vdu_controls.py new/vdu_controls-2.0.4/vdu_controls.py --- old/vdu_controls-2.0.3/vdu_controls.py 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/vdu_controls.py 2024-07-02 02:48:57.000000000 +0200 @@ -699,6 +699,9 @@ Changes some search paths to be more convenient in a development scenario. (``no`` or yes) + VDU_CONTROLS_DBUS_TIMEOUT_MILLIS + Dbus call wait timeout. Default is 10000, 10 seconds. + Files ===== $HOME/.config/vdu_controls/ @@ -793,10 +796,11 @@ from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QSlider, QMessageBox, QLineEdit, QLabel, \ QSplashScreen, QPushButton, QProgressBar, QComboBox, QSystemTrayIcon, QMenu, QStyle, QTextEdit, QDialog, QTabWidget, \ QCheckBox, QPlainTextEdit, QGridLayout, QSizePolicy, QAction, QMainWindow, QToolBar, QToolButton, QFileDialog, \ - QWidgetItem, QScrollArea, QGroupBox, QFrame, QSplitter, QSpinBox, QDoubleSpinBox, QInputDialog, QStatusBar, qApp, QShortcut + QWidgetItem, QScrollArea, QGroupBox, QFrame, QSplitter, QSpinBox, QDoubleSpinBox, QInputDialog, QStatusBar, qApp, QShortcut, \ + QDesktopWidget APPNAME = "VDU Controls" -VDU_CONTROLS_VERSION = '2.0.3' +VDU_CONTROLS_VERSION = '2.0.4' VDU_CONTROLS_VERSION_TUPLE = tuple(int(i) for i in VDU_CONTROLS_VERSION.split('.')) assert sys.version_info >= (3, 8), f'{APPNAME} utilises python version 3.8 or greater (your python is {sys.version}).' @@ -1195,8 +1199,6 @@ VduStableId = NewType('VduStableId', str) -about_supporting_versions = "" - def is_dark_theme() -> bool: # Heuristic for checking for a dark theme. Is the sample text lighter than the background? @@ -1344,13 +1346,13 @@ self.ddcutil_version = tuple(int(i) for i in version_match.groups()[0:3]) self.version_suffix = version_match.groups()[3] # self.version = (1, 2, 2) # for testing for 1.2.2 compatibility - global about_supporting_versions - about_supporting_versions = \ - f"ddcutil-interface: {self.ddcutil_impl.get_interface_version_string()}; ddcutil: {version_info}" log_info(f"ddcutil version {self.ddcutil_version} " f"{self.version_suffix}(dynamic-sleep={self.ddcutil_version >= (2, 0, 0)}) " f"- interface {self.ddcutil_impl.get_interface_version_string()}") + def ddcutil_version_info(self) -> (str, str): + return self.ddcutil_impl.get_interface_version_string(), self.ddcutil_impl.get_ddcutil_version_string() + def refresh_connection(self): self.ddcutil_impl.refresh_connection() @@ -1715,7 +1717,7 @@ self.common_args = env_args + common_args if common_args else [] self.service_access_lock = Lock() self.listener_callback: Callable | None = callback - self.dbus_timeout_millis = int(os.getenv("VDU_CONTROLS_DBUS_TIMEOUT_MILLIS", default='5000')) + self.dbus_timeout_millis = int(os.getenv("VDU_CONTROLS_DBUS_TIMEOUT_MILLIS", default='10000')) self._status_values: Dict[int, str] = {} for try_count in range(1, 32): # Approximating an infinite loop self.ddcutil_proxy, self.ddcutil_props_proxy = self._connect_to_service() @@ -3802,8 +3804,9 @@ warn_omitted.setInformativeText(tr('The monitor will be omitted from the control panel.')) warn_omitted.exec() + controllers_layout.addStretch(0); for control in extra_controls: - controllers_layout.addWidget(control) + controllers_layout.addWidget(control, 0, Qt.AlignBottom) if len(self.vdu_control_panels) == 0: no_vdu_widget = QWidget() @@ -3823,7 +3826,7 @@ controllers_layout.addWidget(no_vdu_widget) self.bottom_toolbar = VduPanelBottomToolBar(tool_buttons=tool_buttons, app_context_menu=app_context_menu, parent=self) - self.layout().addWidget(self.bottom_toolbar) + controllers_layout.addWidget(self.bottom_toolbar, 0, Qt.AlignBottom) def open_context_menu(position: QPoint) -> None: assert app_context_menu is not None @@ -7188,15 +7191,16 @@ class AboutDialog(QMessageBox, DialogSingletonMixin): @staticmethod - def invoke() -> None: + def invoke(main_controller: VduAppController) -> None: if AboutDialog.exists(): AboutDialog.get_instance().refresh_content() AboutDialog.show_existing_dialog() else: - AboutDialog() + AboutDialog(main_controller) - def __init__(self) -> None: + def __init__(self, main_controller: VduAppController) -> None: super().__init__() + self.main_controller = main_controller self.refresh_content() self.setModal(False) self.show() @@ -7215,7 +7219,9 @@ WEATHER_FORECAST_URL=WEATHER_FORECAST_URL) else: about_text = ABOUT_TEXT - about_text += f"<hr><p><small>{about_supporting_versions}</small>" + if self.main_controller and self.main_controller.ddcutil: + about_text += "<hr><p><small>ddcutil-interface: {}; ddcutil: {}</small>".format( + *self.main_controller.ddcutil.ddcutil_version_info()) self.setInformativeText(about_text) self.setIcon(QMessageBox.Information) @@ -7902,6 +7908,7 @@ self.qt_state_key = self.objectName() + "_window_state" self.qt_settings = QSettings('vdu_controls.qt.state', 'vdu_controls') self.main_panel: VduControlsMainPanel | None = None + self.scroll_area: QScrollArea | None = None self.main_config = main_config self.hide_shortcuts = True @@ -7922,7 +7929,9 @@ self.app_context_menu = ContextMenu( app_controller=main_controller, main_window_action=partial(self.show_main_window, True) if gnome_tray_behaviour else None, - about_action=AboutDialog.invoke, help_action=HelpDialog.invoke, gray_scale_action=GreyScaleDialog, + about_action=partial(AboutDialog.invoke, self.main_controller), + help_action=HelpDialog.invoke, + gray_scale_action=GreyScaleDialog, lux_auto_action=self.main_controller.lux_auto_action if main_config.is_set(ConfOption.LUX_OPTIONS_ENABLED) else None, lux_check_action=self.main_controller.lux_check_action if main_config.is_set(ConfOption.LUX_OPTIONS_ENABLED) else None, lux_meter_action=partial(LuxDialog.invoke, self.main_controller) if main_config.is_set( @@ -8083,6 +8092,9 @@ if self.main_panel is not None: self.main_panel.deleteLater() self.main_panel = None + if self.scroll_area is not None: + self.scroll_area.deleteLater() + self.scroll_area = None self.main_panel = VduControlsMainPanel() self.main_controller.initialize_vdu_controllers() refresh_button = ToolButton(REFRESH_ICON_SOURCE, tr("Refresh settings from monitors")) @@ -8105,7 +8117,27 @@ # Wire-up after successful init to avoid deadlocks self.main_panel.vdu_vcp_changed_qtsignal.connect(self.respond_to_changes_handler) self.indicate_busy(True) - self.setCentralWidget(self.main_panel) + available_height = QDesktopWidget().availableGeometry().height() - 200 # Minus allowance for panel/tray + #self.main_panel.adjustSize() + hint_height = self.main_panel.sizeHint().height() # The hint is the actual required layout space + hint_width = self.main_panel.sizeHint().width() + log_debug(f" {hint_height=} {available_height=} {self.minimumHeight()=}") + if hint_height > available_height: + log_debug(f"Main panel too high, adding scroll-area {hint_height=} {available_height=}") if log_debug_enabled else None + self.setMaximumHeight(available_height) + self.setMinimumWidth(hint_width + 20) # Allow extra space for disappearing scrollbars + + else: # Don't mess with the size unnecessarily - let the user determine it? + self.setMinimumHeight(hint_height + 20) + self.setMinimumWidth(hint_width + 20) + if hint_height > self.height(): + self.adjustSize() + self.scroll_area = QScrollArea() + self.scroll_area.setWidgetResizable(True) + self.scroll_area.setWidget(self.main_panel) + #self.scroll_area.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)) + + self.setCentralWidget(self.scroll_area) self.splash_message_qtsignal.emit(tr("Checking Presets")) def get_main_panel(self) -> VduControlsMainPanel: @@ -8447,7 +8479,6 @@ app.installTranslator(translator) log_info(tr("Using {} translations from {}").format(locale_name, qm_path.as_posix())) - def main() -> None: # Allow control-c to terminate the program signal.signal(signal.SIGINT, signal.SIG_DFL) @@ -8515,12 +8546,13 @@ if main_config.is_set(ConfOption.TRANSLATIONS_ENABLED): initialise_locale_translations(app) - if args.about: - AboutDialog.invoke() - main_controller = VduAppController(main_config) + VduAppWindow(main_config, app, main_controller) # may need to assign this to a variable to prevent garbage collection? + if args.about: + AboutDialog.invoke(main_controller) + if args.create_config_files: main_controller.create_config_files() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vdu_controls-2.0.3/vdu_controls.spec new/vdu_controls-2.0.4/vdu_controls.spec --- old/vdu_controls-2.0.3/vdu_controls.spec 2024-05-08 11:31:02.000000000 +0200 +++ new/vdu_controls-2.0.4/vdu_controls.spec 2024-07-02 02:48:57.000000000 +0200 @@ -18,7 +18,7 @@ Name: vdu_controls -Version: 2.0.3 +Version: 2.0.4 Release: 0 Summary: Visual Display Unit virtual control panel License: GPL-3.0-or-later