Browse Source

Cadence/Claudia/Systray: Implement hide on close

tags/v0.9.0
falkTX 12 years ago
parent
commit
1f7b47f978
5 changed files with 43 additions and 53 deletions
  1. +0
    -3
      doc/TODO
  2. +8
    -32
      resources/ui/cadence.ui
  3. +1
    -7
      src/cadence.py
  4. +8
    -9
      src/claudia.py
  5. +26
    -2
      src/systray.py

+ 0
- 3
doc/TODO View File

@@ -21,6 +21,3 @@ Claudia:

PatchCanvas:
- Implement export to Catarina file

Systray:
- Implement hide-on-close

+ 8
- 32
resources/ui/cadence.ui View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>739</width>
<height>549</height>
<height>529</height>
</rect>
</property>
<property name="windowTitle">
@@ -515,7 +515,7 @@
<x>0</x>
<y>0</y>
<width>366</width>
<height>120</height>
<height>100</height>
</rect>
</property>
<attribute name="label">
@@ -663,7 +663,7 @@
<x>0</x>
<y>0</y>
<width>366</width>
<height>117</height>
<height>97</height>
</rect>
</property>
<attribute name="label">
@@ -804,7 +804,7 @@
<x>0</x>
<y>0</y>
<width>366</width>
<height>117</height>
<height>97</height>
</rect>
</property>
<attribute name="label">
@@ -1511,7 +1511,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>76</width>
<width>94</width>
<height>76</height>
</rect>
</property>
@@ -1529,7 +1529,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>89</width>
<width>94</width>
<height>76</height>
</rect>
</property>
@@ -1547,7 +1547,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>89</width>
<width>94</width>
<height>76</height>
</rect>
</property>
@@ -1565,7 +1565,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>89</width>
<width>94</width>
<height>76</height>
</rect>
</property>
@@ -2066,14 +2066,6 @@ Default is off</string>
</item>
</layout>
</widget>
<action name="act_quit">
<property name="text">
<string>&amp;Quit</string>
</property>
<property name="shortcut">
<string>Ctrl+Q</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
@@ -2087,22 +2079,6 @@ Default is off</string>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>act_quit</sender>
<signal>triggered()</signal>
<receiver>CadenceMainW</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>399</x>
<y>299</y>
</hint>
</hints>
</connection>
<connection>
<sender>tw_tweaks</sender>
<signal>currentCellChanged(int,int,int,int)</signal>


+ 1
- 7
src/cadence.py View File

@@ -2052,11 +2052,6 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
if geometry:
self.restoreGeometry(self.settings.value("Geometry", ""))

self.m_savedSettings = {
"Main/UseSystemTray": self.settings.value("Main/UseSystemTray", True, type=bool),
"Main/CloseToTray": self.settings.value("Main/CloseToTray", True, type=bool)
}

self.cb_jack_autostart.setChecked(GlobalSettings.value("JACK/AutoStart", True, type=bool))
self.cb_a2j_autostart.setChecked(GlobalSettings.value("A2J/AutoStart", True, type=bool))
self.cb_pulse_autostart.setChecked(GlobalSettings.value("Pulse2JACK/AutoStart", havePulseAudio, type=bool))
@@ -2097,8 +2092,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

def closeEvent(self, event):
self.saveSettings()
self.systray.close()
QMainWindow.closeEvent(self, event)
self.systray.handleQtCloseEvent(event)

#--------------- main ------------------
if __name__ == '__main__':


+ 8
- 9
src/claudia.py View File

@@ -2494,11 +2494,10 @@ class ClaudiaMainW(QMainWindow, ui_claudia.Ui_ClaudiaMainW):
def closeEvent(self, event):
self.saveSettings()
if self.systray:
#if self.saved_settings["Main/CloseToTray"] and self.systray.isTrayAvailable() and self.isVisible():
#self.hide()
#self.systray.setActionText("show", QStringStr(gui.tr("Restore")))
#event.ignore()
#return
if self.m_savedSettings["Main/CloseToTray"]:
if self.systray.handleQtCloseEvent(event):
patchcanvas.clear()
return
self.systray.close()
patchcanvas.clear()
QMainWindow.closeEvent(self, event)
@@ -2542,10 +2541,10 @@ if __name__ == '__main__':
setUpSignals(gui)

# App-Loop
#if gui.systray:
#ret = gui.systray.exec_(app)
#else:
ret = app.exec_()
if gui.systray:
ret = gui.systray.exec_(app)
else:
ret = app.exec_()

# Close Jack
if jack.client:


+ 26
- 2
src/systray.py View File

@@ -19,7 +19,7 @@
# Imports (Global)
import os, sys
from PyQt4.QtCore import QTimer, SIGNAL
from PyQt4.QtGui import QAction, QIcon, QMenu, QSystemTrayIcon
from PyQt4.QtGui import QAction, QIcon, QMainWindow, QMenu, QSystemTrayIcon

try:
if os.getenv("DESKTOP_SESSION") in ("ubuntu", "ubuntu-2d") and not os.path.exists("/var/cadence/no_app_indicators"):
@@ -81,6 +81,7 @@ class GlobalSysTray(object):
def __init__(self, parent, name, icon):
object.__init__(self)

self._app = None
self._parent = parent
self._gtk_running = False
self._quit_added = False
@@ -491,6 +492,17 @@ class GlobalSysTray(object):
else:
return False

def handleQtCloseEvent(self, event):
if self.isTrayAvailable() and self._parent.isVisible():
event.ignore()
self.__hideShowCall()
return False
else:
self.close()

QMainWindow.closeEvent(self._parent, event)
return True

# -------------------------------------------------------------------------------------------

def show(self):
@@ -531,6 +543,7 @@ class GlobalSysTray(object):
self.menu.close()

def exec_(self, app):
self._app = app
if TrayEngine == "AppIndicator":
self._gtk_running = True
return Gtk.main()
@@ -616,6 +629,10 @@ class GlobalSysTray(object):
if self._parent.isVisible():
self.setActionText("show", self._parent.tr("Restore"))
self._parent.hide()

if self._app:
self._app.setQuitOnLastWindowClosed(False)

else:
self.setActionText("show", self._parent.tr("Minimize"))

@@ -624,9 +641,16 @@ class GlobalSysTray(object):
else:
self._parent.showNormal()

QTimer.singleShot(100, self.__raiseWindow)
if self._app:
self._app.setQuitOnLastWindowClosed(True)

QTimer.singleShot(500, self.__raiseWindow)

def __quitCall(self):
if self._app:
self._app.setQuitOnLastWindowClosed(True)

self._parent.hide()
self._parent.close()

def __raiseWindow(self):


Loading…
Cancel
Save