1
0
Fork 0
mirror of https://github.com/kbumsik/VirtScreen.git synced 2025-03-09 15:40:18 +00:00

Backend: Use Q_ENUM

This commit is contained in:
Bumsik Kim 2018-05-10 02:59:53 -04:00
parent 81b6d8919b
commit df362568f6
No known key found for this signature in database
GPG key ID: E31041C8EC5B01C6
2 changed files with 22 additions and 27 deletions

View file

@ -275,7 +275,7 @@ ApplicationWindow {
// Material.background: Material.Teal
// Material.foreground: Material.Grey
onClicked: {
if (backend.vncState == 'Off') {
if (backend.vncState == Backend.OFF) {
backend.startVNC()
} else {
backend.stopVNC()
@ -284,7 +284,7 @@ ApplicationWindow {
Component.onCompleted: {
backend.onVncStateChanged.connect(function(state) {
if (state == "Off") {
if (state == Backend.OFF) {
vncButton.text = "Start VNC Server";
} else {
vncButton.text = "Stop VNC Server";
@ -316,12 +316,6 @@ ApplicationWindow {
checked: true
}
}
Component.onCompleted: {
backend.onVncStateChanged.connect(function(state) {
vncStateLabel.text = state;
});
}
}
// Sytray Icon

View file

@ -5,8 +5,7 @@ from enum import Enum
from typing import List
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QObject, QUrl, Qt
from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal
from PyQt5.QtCore import QObject, QUrl, Qt, pyqtProperty, pyqtSlot, pyqtSignal, Q_ENUMS
from PyQt5.QtGui import QIcon, QCursor
from PyQt5.QtQml import qmlRegisterType, QQmlApplicationEngine, QQmlListProperty
@ -318,17 +317,19 @@ class ProcessProtocol(protocol.ProcessProtocol):
#-------------------------------------------------------------------------------
# QML Backend class
#-------------------------------------------------------------------------------
class VNCState(Enum):
""" Enum to indicate a state of the VNC server """
OFF = "Off"
WAITING = "Waiting"
CONNECTED = "Connected"
class Backend(QObject):
""" Backend class for QML frontend """
class VNCState:
""" Enum to indicate a state of the VNC server """
OFF = 0
WAITING = 1
CONNECTED = 2
Q_ENUMS(VNCState)
# Signals
onVirtScreenCreatedChanged = pyqtSignal(bool)
onVncStateChanged = pyqtSignal(str)
onVncStateChanged = pyqtSignal(VNCState)
def __init__(self, parent=None):
super(Backend, self).__init__(parent)
@ -346,7 +347,7 @@ class Backend(QObject):
# VNC server properties
self._vncPort = 5900
self._vncPassword = ""
self._vncState = VNCState.OFF
self._vncState = Backend.VNCState.OFF
# Primary screen and mouse posistion
self._primary: DisplayProperty() = self.xrandr.get_primary_screen()
self._cursor_x: int
@ -410,13 +411,13 @@ class Backend(QObject):
def vncPassword(self, vncPassword):
self._vncPassword = vncPassword
@pyqtProperty(str, notify=onVncStateChanged)
@pyqtProperty(VNCState, notify=onVncStateChanged)
def vncState(self):
return self._vncState.value
return self._vncState
@vncState.setter
def vncState(self, state):
self._vncState = state
self.onVncStateChanged.emit(self._vncState.value)
self.onVncStateChanged.emit(self._vncState)
@pyqtProperty(DisplayProperty)
def primary(self):
@ -445,7 +446,7 @@ class Backend(QObject):
@pyqtSlot()
def deleteVirtScreen(self):
print("Deleting the Virtual Screen...")
if self.vncState != VNCState.OFF.value:
if self.vncState is not Backend.VNCState.OFF:
print("Turn off the VNC server first")
self.virtScreenCreated = True
return
@ -463,15 +464,15 @@ class Backend(QObject):
# define callbacks
def _onConnected():
print("VNC started.")
self.vncState = VNCState.WAITING
self.vncState = Backend.VNCState.WAITING
def _onReceived(data):
data = data.decode("utf-8")
if (self._vncState is not VNCState.CONNECTED) and re_connection.search(data):
if (self._vncState is not Backend.VNCState.CONNECTED) and re_connection.search(data):
print("VNC connected.")
self.vncState = VNCState.CONNECTED
self.vncState = Backend.VNCState.CONNECTED
def _onEnded(exitCode):
print("VNC Exited.")
self.vncState = VNCState.OFF
self.vncState = Backend.VNCState.OFF
atexit.unregister(self.stopVNC)
# Set password
password = False
@ -501,7 +502,7 @@ class Backend(QObject):
# Usually called from atexit().
self.vncServer.kill()
time.sleep(2) # Make sure X11VNC shutdown before execute next atexit.
if self._vncState in (VNCState.WAITING, VNCState.CONNECTED):
if self._vncState in (Backend.VNCState.WAITING, Backend.VNCState.CONNECTED):
self.vncServer.kill()
else:
print("stopVNC called while it is not running")