mirror of
https://github.com/kbumsik/VirtScreen.git
synced 2025-02-15 04:41:50 +00:00
Separated Cursor and Network classes out of Backend class
This commit is contained in:
parent
30ffe32f82
commit
9ec6256fc1
3 changed files with 54 additions and 26 deletions
|
@ -3,8 +3,14 @@ import QtQuick.Controls 2.3
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
import VirtScreen.Backend 1.0
|
import VirtScreen.Backend 1.0
|
||||||
|
import VirtScreen.Network 1.0
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
// virtscreen.py Network interfaces backend.
|
||||||
|
Network {
|
||||||
|
id: network
|
||||||
|
}
|
||||||
|
|
||||||
GroupBox {
|
GroupBox {
|
||||||
title: "VNC Server"
|
title: "VNC Server"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
@ -98,7 +104,7 @@ ColumnLayout {
|
||||||
anchors.bottom: ipListView.bottom
|
anchors.bottom: ipListView.bottom
|
||||||
policy: ScrollBar.AlwaysOn
|
policy: ScrollBar.AlwaysOn
|
||||||
}
|
}
|
||||||
model: backend.ipAddresses
|
model: network.ipAddresses
|
||||||
delegate: TextEdit {
|
delegate: TextEdit {
|
||||||
text: modelData
|
text: modelData
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
|
|
@ -4,6 +4,7 @@ import Qt.labs.platform 1.0
|
||||||
|
|
||||||
import VirtScreen.DisplayProperty 1.0
|
import VirtScreen.DisplayProperty 1.0
|
||||||
import VirtScreen.Backend 1.0
|
import VirtScreen.Backend 1.0
|
||||||
|
import VirtScreen.Cursor 1.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
property alias window: mainLoader.item
|
property alias window: mainLoader.item
|
||||||
|
@ -61,6 +62,11 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// virtscreen.py Cursor class.
|
||||||
|
Cursor {
|
||||||
|
id: cursor
|
||||||
|
}
|
||||||
|
|
||||||
// Timer object and function
|
// Timer object and function
|
||||||
Timer {
|
Timer {
|
||||||
id: timer
|
id: timer
|
||||||
|
@ -109,8 +115,8 @@ Item {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Move window to the corner of the primary display
|
// Move window to the corner of the primary display
|
||||||
var cursor_x = (backend.cursor_x / window.screen.devicePixelRatio) - window.screen.virtualX;
|
var cursor_x = (cursor.x / window.screen.devicePixelRatio) - window.screen.virtualX;
|
||||||
var cursor_y = (backend.cursor_y / window.screen.devicePixelRatio) - window.screen.virtualY;
|
var cursor_y = (cursor.y / window.screen.devicePixelRatio) - window.screen.virtualY;
|
||||||
var x_mid = window.screen.width / 2;
|
var x_mid = window.screen.width / 2;
|
||||||
var y_mid = window.screen.height / 2;
|
var y_mid = window.screen.height / 2;
|
||||||
var x = window.screen.width - window.width; //(cursor_x > x_mid)? width - window.width : 0;
|
var x = window.screen.width - window.width; //(cursor_x > x_mid)? width - window.width : 0;
|
||||||
|
|
|
@ -416,7 +416,6 @@ class Backend(QObject):
|
||||||
onVirtScreenCreatedChanged = pyqtSignal(bool)
|
onVirtScreenCreatedChanged = pyqtSignal(bool)
|
||||||
onVncUsePasswordChanged = pyqtSignal(bool)
|
onVncUsePasswordChanged = pyqtSignal(bool)
|
||||||
onVncStateChanged = pyqtSignal(VNCState)
|
onVncStateChanged = pyqtSignal(VNCState)
|
||||||
onIPAddressesChanged = pyqtSignal()
|
|
||||||
onDisplaySettingClosed = pyqtSignal()
|
onDisplaySettingClosed = pyqtSignal()
|
||||||
onError = pyqtSignal(str)
|
onError = pyqtSignal(str)
|
||||||
|
|
||||||
|
@ -525,28 +524,6 @@ class Backend(QObject):
|
||||||
self._vncState = state
|
self._vncState = state
|
||||||
self.onVncStateChanged.emit(self._vncState)
|
self.onVncStateChanged.emit(self._vncState)
|
||||||
|
|
||||||
@pyqtProperty('QStringList', notify=onIPAddressesChanged)
|
|
||||||
def ipAddresses(self):
|
|
||||||
for interface in interfaces():
|
|
||||||
if interface == 'lo':
|
|
||||||
continue
|
|
||||||
addresses = ifaddresses(interface).get(AF_INET, None)
|
|
||||||
if addresses is None:
|
|
||||||
continue
|
|
||||||
for link in addresses:
|
|
||||||
if link is not None:
|
|
||||||
yield link['addr']
|
|
||||||
|
|
||||||
@pyqtProperty(int)
|
|
||||||
def cursor_x(self):
|
|
||||||
cursor = QCursor().pos()
|
|
||||||
return cursor.x()
|
|
||||||
|
|
||||||
@pyqtProperty(int)
|
|
||||||
def cursor_y(self):
|
|
||||||
cursor = QCursor().pos()
|
|
||||||
return cursor.y()
|
|
||||||
|
|
||||||
# Qt Slots
|
# Qt Slots
|
||||||
@pyqtSlot(str, int, int, bool, bool)
|
@pyqtSlot(str, int, int, bool, bool)
|
||||||
def createVirtScreen(self, device, width, height, portrait, hidpi, pos=''):
|
def createVirtScreen(self, device, width, height, portrait, hidpi, pos=''):
|
||||||
|
@ -707,6 +684,43 @@ class Backend(QObject):
|
||||||
QApplication.instance().quit()
|
QApplication.instance().quit()
|
||||||
|
|
||||||
|
|
||||||
|
class Cursor(QObject):
|
||||||
|
""" Global mouse cursor position """
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(Cursor, self).__init__(parent)
|
||||||
|
|
||||||
|
@pyqtProperty(int)
|
||||||
|
def x(self):
|
||||||
|
cursor = QCursor().pos()
|
||||||
|
return cursor.x()
|
||||||
|
|
||||||
|
@pyqtProperty(int)
|
||||||
|
def y(self):
|
||||||
|
cursor = QCursor().pos()
|
||||||
|
return cursor.y()
|
||||||
|
|
||||||
|
|
||||||
|
class Network(QObject):
|
||||||
|
""" Backend class for network interfaces """
|
||||||
|
onIPAddressesChanged = pyqtSignal()
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(Network, self).__init__(parent)
|
||||||
|
|
||||||
|
@pyqtProperty('QStringList', notify=onIPAddressesChanged)
|
||||||
|
def ipAddresses(self):
|
||||||
|
for interface in interfaces():
|
||||||
|
if interface == 'lo':
|
||||||
|
continue
|
||||||
|
addresses = ifaddresses(interface).get(AF_INET, None)
|
||||||
|
if addresses is None:
|
||||||
|
continue
|
||||||
|
for link in addresses:
|
||||||
|
if link is not None:
|
||||||
|
yield link['addr']
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------
|
||||||
# Main Code
|
# Main Code
|
||||||
# -------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------
|
||||||
|
@ -800,6 +814,8 @@ def main_gui():
|
||||||
# will be called 'Person' in QML.
|
# will be called 'Person' in QML.
|
||||||
qmlRegisterType(DisplayProperty, 'VirtScreen.DisplayProperty', 1, 0, 'DisplayProperty')
|
qmlRegisterType(DisplayProperty, 'VirtScreen.DisplayProperty', 1, 0, 'DisplayProperty')
|
||||||
qmlRegisterType(Backend, 'VirtScreen.Backend', 1, 0, 'Backend')
|
qmlRegisterType(Backend, 'VirtScreen.Backend', 1, 0, 'Backend')
|
||||||
|
qmlRegisterType(Cursor, 'VirtScreen.Cursor', 1, 0, 'Cursor')
|
||||||
|
qmlRegisterType(Network, 'VirtScreen.Network', 1, 0, 'Network')
|
||||||
|
|
||||||
# Create a component factory and load the QML script.
|
# Create a component factory and load the QML script.
|
||||||
engine = QQmlApplicationEngine()
|
engine = QQmlApplicationEngine()
|
||||||
|
|
Loading…
Reference in a new issue