mirror of
				https://github.com/kbumsik/VirtScreen.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Backend: show ip list
This commit is contained in:
		
							parent
							
								
									85b0670a92
								
							
						
					
					
						commit
						3a76aa7ef7
					
				
					 2 changed files with 37 additions and 12 deletions
				
			
		
							
								
								
									
										25
									
								
								main.qml
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								main.qml
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -152,17 +152,8 @@ ApplicationWindow {
 | 
			
		|||
                            anchors.leftMargin: 120
 | 
			
		||||
 | 
			
		||||
                            textRole: "name"
 | 
			
		||||
                            model: []
 | 
			
		||||
                            
 | 
			
		||||
                            Component.onCompleted: {
 | 
			
		||||
                                var screens = backend.screens;
 | 
			
		||||
                                var list = [];
 | 
			
		||||
                                for (var i = 0; i < screens.length; i++) {
 | 
			
		||||
                                    list.push(screens[i]);
 | 
			
		||||
                                }
 | 
			
		||||
                                deviceComboBox.model = list;
 | 
			
		||||
                                deviceComboBox.currentIndex = backend.virtScreenIndex
 | 
			
		||||
                            }
 | 
			
		||||
                            model: backend.screens
 | 
			
		||||
                            currentIndex: backend.virtScreenIndex
 | 
			
		||||
 | 
			
		||||
                            onActivated: function(index) {
 | 
			
		||||
                                backend.virtScreenIndex = index
 | 
			
		||||
| 
						 | 
				
			
			@ -287,6 +278,18 @@ ApplicationWindow {
 | 
			
		|||
                // Material.foreground: Material.Grey
 | 
			
		||||
                onClicked: backend.vncState == Backend.OFF ? backend.startVNC() : backend.stopVNC()
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ListView {
 | 
			
		||||
                // width: 180;
 | 
			
		||||
                height: 200
 | 
			
		||||
                anchors.left: parent.left
 | 
			
		||||
                anchors.right: parent.right
 | 
			
		||||
 | 
			
		||||
                model: backend.ipAddresses
 | 
			
		||||
                delegate: Text {
 | 
			
		||||
                    text: modelData
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -329,7 +329,9 @@ class Backend(QObject):
 | 
			
		|||
 | 
			
		||||
    # Signals
 | 
			
		||||
    onVirtScreenCreatedChanged = pyqtSignal(bool)
 | 
			
		||||
    onVirtScreenIndexChanged = pyqtSignal(int)
 | 
			
		||||
    onVncStateChanged = pyqtSignal(VNCState)
 | 
			
		||||
    onIPAddressesChanged = pyqtSignal()
 | 
			
		||||
 | 
			
		||||
    def __init__(self, parent=None):
 | 
			
		||||
        super(Backend, self).__init__(parent)
 | 
			
		||||
| 
						 | 
				
			
			@ -348,6 +350,8 @@ class Backend(QObject):
 | 
			
		|||
        self._vncPort = 5900
 | 
			
		||||
        self._vncPassword = ""
 | 
			
		||||
        self._vncState = Backend.VNCState.OFF
 | 
			
		||||
        self._ipAddresses: List[str] = []
 | 
			
		||||
        self.updateIPAddresses()
 | 
			
		||||
        # Primary screen and mouse posistion
 | 
			
		||||
        self._primary: DisplayProperty() = self.xrandr.get_primary_screen()
 | 
			
		||||
        self._cursor_x: int
 | 
			
		||||
| 
						 | 
				
			
			@ -387,7 +391,7 @@ class Backend(QObject):
 | 
			
		|||
    def screens(self):
 | 
			
		||||
        return QQmlListProperty(DisplayProperty, self, self._screens)
 | 
			
		||||
 | 
			
		||||
    @pyqtProperty(int)
 | 
			
		||||
    @pyqtProperty(int, notify=onVirtScreenIndexChanged)
 | 
			
		||||
    def virtScreenIndex(self):
 | 
			
		||||
        return self._virtScreenIndex
 | 
			
		||||
    @virtScreenIndex.setter
 | 
			
		||||
| 
						 | 
				
			
			@ -418,6 +422,10 @@ class Backend(QObject):
 | 
			
		|||
    def vncState(self, state):
 | 
			
		||||
        self._vncState = state
 | 
			
		||||
        self.onVncStateChanged.emit(self._vncState)
 | 
			
		||||
 | 
			
		||||
    @pyqtProperty('QStringList', notify=onIPAddressesChanged)
 | 
			
		||||
    def ipAddresses(self):
 | 
			
		||||
        return self._ipAddresses
 | 
			
		||||
    
 | 
			
		||||
    @pyqtProperty(DisplayProperty)
 | 
			
		||||
    def primary(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -507,6 +515,20 @@ class Backend(QObject):
 | 
			
		|||
        else:
 | 
			
		||||
            print("stopVNC called while it is not running")
 | 
			
		||||
 | 
			
		||||
    @pyqtSlot()
 | 
			
		||||
    def updateIPAddresses(self):
 | 
			
		||||
        self._ipAddresses.clear()
 | 
			
		||||
        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:
 | 
			
		||||
                    self._ipAddresses.append(link['addr'])
 | 
			
		||||
        self.onIPAddressesChanged.emit()
 | 
			
		||||
 | 
			
		||||
    @pyqtSlot()
 | 
			
		||||
    def quitProgram(self):
 | 
			
		||||
        QApplication.instance().quit()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue