Enhance auto-refresh logic
This commit is contained in:
		
							parent
							
								
									57ffa48257
								
							
						
					
					
						commit
						de3ab9ea68
					
				
							
								
								
									
										2
									
								
								dist/vdiclient.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/vdiclient.json
									
									
									
									
										vendored
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	"upgrade_guid" : "46cbad92-353e-4b28-9bee-83950991dad8",
 | 
						"upgrade_guid" : "46cbad92-353e-4b28-9bee-83950991dad8",
 | 
				
			||||||
	"version" : "1.1.0",
 | 
						"version" : "1.1.01",
 | 
				
			||||||
	"product_name" : "VDI Client",
 | 
						"product_name" : "VDI Client",
 | 
				
			||||||
	"manufacturer" : "Josh Patten",
 | 
						"manufacturer" : "Josh Patten",
 | 
				
			||||||
	"name" : "VDI Client",
 | 
						"name" : "VDI Client",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										41
									
								
								vdiclient.py
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								vdiclient.py
									
									
									
									
									
								
							@ -7,6 +7,7 @@ from datetime import datetime
 | 
				
			|||||||
from configparser import ConfigParser
 | 
					from configparser import ConfigParser
 | 
				
			||||||
import random
 | 
					import random
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					import copy
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
from time import sleep
 | 
					from time import sleep
 | 
				
			||||||
@ -130,10 +131,12 @@ def loadconfig(config_location = None):
 | 
				
			|||||||
	return True
 | 
						return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def win_popup(message):
 | 
					def win_popup(message):
 | 
				
			||||||
	layout = [[sg.Text(message)]]
 | 
						layout = [
 | 
				
			||||||
	window = sg.Window('Message', layout, no_titlebar=True, keep_on_top=True, finalize=True)
 | 
							[sg.Text(message)]
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
						window = sg.Window('Message', layout, return_keyboard_events=True, no_titlebar=True, keep_on_top=True, finalize=True)
 | 
				
			||||||
	window.bring_to_front()
 | 
						window.bring_to_front()
 | 
				
			||||||
	_, _ = window.read(timeout=1) # Fixes a black screen bug
 | 
						_, _ = window.read(timeout=10) # Fixes a black screen bug
 | 
				
			||||||
	return window
 | 
						return window
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
def win_popup_button(message, button):
 | 
					def win_popup_button(message, button):
 | 
				
			||||||
@ -166,15 +169,22 @@ def setmainlayout():
 | 
				
			|||||||
		layout.append([sg.Button("Log In", font=["Helvetica", 14]), sg.Button("Cancel", font=["Helvetica", 14])])
 | 
							layout.append([sg.Button("Log In", font=["Helvetica", 14]), sg.Button("Cancel", font=["Helvetica", 14])])
 | 
				
			||||||
	return layout
 | 
						return layout
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def getvms():
 | 
					def getvms(listonly = False):
 | 
				
			||||||
	vms = []
 | 
						vms = []
 | 
				
			||||||
	try:
 | 
						try:
 | 
				
			||||||
		for vm in G.proxmox.cluster.resources.get(type='vm'):
 | 
							for vm in G.proxmox.cluster.resources.get(type='vm'):
 | 
				
			||||||
			if 'template' in vm and vm['template']:
 | 
								if 'template' in vm and vm['template']:
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			if G.guest_type == 'both':
 | 
								if G.guest_type == 'both' or G.guest_type == vm['type']:
 | 
				
			||||||
				vms.append(vm)
 | 
									if listonly:
 | 
				
			||||||
			elif G.guest_type == vm['type']:
 | 
										vms.append(
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												'vmid': vm['vmid'],
 | 
				
			||||||
 | 
												'name': vm['name'],
 | 
				
			||||||
 | 
												'node': vm['node']
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										)
 | 
				
			||||||
 | 
									else:
 | 
				
			||||||
					vms.append(vm)
 | 
										vms.append(vm)
 | 
				
			||||||
		return vms
 | 
							return vms
 | 
				
			||||||
	except proxmoxer.core.ResourceException as e:
 | 
						except proxmoxer.core.ResourceException as e:
 | 
				
			||||||
@ -397,13 +407,14 @@ def loginwindow():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def showvms():
 | 
					def showvms():
 | 
				
			||||||
	vms = getvms()
 | 
						vms = getvms()
 | 
				
			||||||
	newvms = getvms()
 | 
						vmlist = getvms(listonly=True)
 | 
				
			||||||
	if newvms == False:
 | 
						newvmlist = vmlist.copy()
 | 
				
			||||||
 | 
						if vms == False:
 | 
				
			||||||
		return False
 | 
							return False
 | 
				
			||||||
	if len(newvms) < 1:
 | 
						if len(vms) < 1:
 | 
				
			||||||
		win_popup_button('No desktop instances found, please consult with your system administrator', 'OK')
 | 
							win_popup_button('No desktop instances found, please consult with your system administrator', 'OK')
 | 
				
			||||||
		return False
 | 
							return False
 | 
				
			||||||
	layout = setvmlayout(newvms)
 | 
						layout = setvmlayout(vms)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if G.icon:
 | 
						if G.icon:
 | 
				
			||||||
		window = sg.Window(G.title, layout, return_keyboard_events=True, finalize=True, resizable=False, no_titlebar=G.kiosk, icon=G.icon)
 | 
							window = sg.Window(G.title, layout, return_keyboard_events=True, finalize=True, resizable=False, no_titlebar=G.kiosk, icon=G.icon)
 | 
				
			||||||
@ -413,10 +424,10 @@ def showvms():
 | 
				
			|||||||
	while True:
 | 
						while True:
 | 
				
			||||||
		if (datetime.now() - timer).total_seconds() > 10:
 | 
							if (datetime.now() - timer).total_seconds() > 10:
 | 
				
			||||||
			timer = datetime.now()
 | 
								timer = datetime.now()
 | 
				
			||||||
			newvms = getvms()
 | 
								newvmlist = getvms(listonly = True)
 | 
				
			||||||
			if vms != newvms:
 | 
								if vmlist != newvmlist:
 | 
				
			||||||
				vms = getvms()
 | 
									vmlist = newvmlist.copy()
 | 
				
			||||||
				layout = setvmlayout(newvms)
 | 
									layout = setvmlayout(getvms())
 | 
				
			||||||
				window.close()
 | 
									window.close()
 | 
				
			||||||
				if G.icon:
 | 
									if G.icon:
 | 
				
			||||||
					window = sg.Window(G.title, layout, return_keyboard_events=True, finalize=True, resizable=False, no_titlebar=G.kiosk, icon=G.icon)
 | 
										window = sg.Window(G.title, layout, return_keyboard_events=True, finalize=True, resizable=False, no_titlebar=G.kiosk, icon=G.icon)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user