152 lines
7.6 KiB
Plaintext
152 lines
7.6 KiB
Plaintext
import tkinter as tk
|
|
try:
|
|
#绝对会报错,只是用于高亮提示,可以删除,真正的导入部分在Kernel
|
|
import sys.kernel.UI as UI
|
|
from sys.kernel.tools import *
|
|
except:
|
|
pass
|
|
|
|
|
|
|
|
def Omit(s):
|
|
return s[:15] + '...' if len(s) > 15 else s
|
|
|
|
class DesktopFile:
|
|
def __init__(self,c,username,i,desktop_imgs,nx,ny,dx,dy,global_dict,f,startapp):
|
|
self.root=c.master
|
|
self.username=username
|
|
self.new_x=nx
|
|
self.new_y=ny
|
|
self.desktop_x=dx
|
|
self.desktop_y=dy
|
|
self.global_dict=global_dict
|
|
self.f=f
|
|
self.c=c
|
|
self.i=i
|
|
self.StartSysApp=startapp
|
|
self.suffix=i.split(".")[-1].lower()
|
|
if os.path.isfile(OperatingSystemHandle.UsersSite+self.username+"/Desktop/"+self.i):
|
|
if self.suffix != i:
|
|
if self.suffix in OperatingSystemHandle.suffixs:
|
|
self.desktop_img = Image.open(OperatingSystemHandle.images_mik+OperatingSystemHandle.suffixs[self.suffix]+".ico")
|
|
else:
|
|
self.desktop_img = Image.open(OperatingSystemHandle.images_mik+OperatingSystemHandle.suffixs["[None]*"]+".ico")
|
|
else:
|
|
if i in OperatingSystemHandle.filesuffixs:
|
|
self.desktop_img = Image.open(OperatingSystemHandle.images_mik+OperatingSystemHandle.filesuffixs[self.suffix]+".ico")
|
|
else:
|
|
self.desktop_img = Image.open(OperatingSystemHandle.images_mik+OperatingSystemHandle.suffixs["[None]*"]+".ico")
|
|
if os.path.isdir(OperatingSystemHandle.UsersSite+self.username+"/Desktop/"+self.i):
|
|
self.desktop_img = Image.open(OperatingSystemHandle.images_mik+OperatingSystemHandle.suffixs["[Dir]*"]+".ico")
|
|
self.desktop_img = self.desktop_img.resize((90,90))
|
|
if os.path.isfile(OperatingSystemHandle.UsersSite+self.username+"/Desktop/"+self.i):
|
|
if self.suffix == "miksc":
|
|
try:
|
|
self.json=json.loads(openr(OperatingSystemHandle.UsersSite+self.username+"/Desktop/"+self.i))
|
|
if "display-ico" in self.json:
|
|
if "App" in self.json and "Start" in self.json:
|
|
self.desktop_img = self.resize_and_return(Image.open(OperatingSystemHandle.NorAppSite+"/"+self.json["App"]+"/"+self.json["display-ico"]))
|
|
if "SApp" in self.json and "Start" in self.json:
|
|
self.desktop_img = self.resize_and_return(Image.open(OperatingSystemHandle.SysAppSite+"/"+self.json["SApp"]+"/"+self.json["display-ico"]))
|
|
except:
|
|
pass
|
|
self.desktop_img = ImageTk.PhotoImage(self.desktop_img)
|
|
desktop_imgs.append(self.desktop_img)
|
|
self.desktop_btn = self.c.create_image((self.new_x-1)*100+50, 50+self.new_y*100, image=self.desktop_img)
|
|
self.c.create_text((self.new_x-1)*100+50, (self.new_y+1)*100, text=Omit(i),font=('arial',10),fill="white")
|
|
#self.layer.move(text, self.width//2-(self.layer.bbox(text)[2] - self.layer.bbox(text)[0])+27.5+add_xy, 0+add_xy)
|
|
self.c.tag_bind(self.desktop_btn,'<Button-1>',self.Start)
|
|
self.c.tag_bind(self.desktop_btn, '<Enter>', self.mouse_hand)
|
|
self.c.tag_bind(self.desktop_btn, '<Leave>', self.mouse_arrow)
|
|
if self.new_y < self.desktop_y-1:self.new_y+=1
|
|
else:
|
|
self.new_y=0
|
|
self.new_x+=1
|
|
if self.new_x >= self.desktop_x-1:
|
|
self.f.ERROR("Desktop Draw","File Across Desktop Max","Main",[["0x00","0x00"]],"0x00")
|
|
def mouse_hand(self,*args):
|
|
self.root.config(cursor = 'hand2')
|
|
def mouse_arrow(self,*args):
|
|
self.root.config(cursor = 'arrow')
|
|
def Start(self,event):
|
|
OperatingSystemHandle.StartFile(OperatingSystemHandle.UsersSite+self.username+"/Desktop/"+self.i)
|
|
def resize_and_return(self,image):
|
|
width, height = image.size
|
|
ratio = 50 / width
|
|
new_height = int(height * ratio)
|
|
resized_image = image.resize((50, new_height))
|
|
return resized_image
|
|
|
|
|
|
|
|
class LogoPopUp(tk.Toplevel):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.overrideredirect(True)
|
|
self.withdraw()
|
|
self.config(bg=OperatingSystemHandle.color["tasks"]["win"])
|
|
self.width=int(OperatingSystemHandle.root.winfo_width()*0.35)
|
|
self.height=int(OperatingSystemHandle.root.winfo_height()*0.9)
|
|
self.Tasks=tk.Frame
|
|
self.geometry(f"{self.width}x{self.height}")
|
|
self.Is_Focus()
|
|
self.EmbedParentWindow()
|
|
def Draw(self,event=tk.Event):
|
|
if self.state() == "withdrawn":
|
|
self.deiconify()
|
|
self.geometry(f"+{event.widget.winfo_x()}+{OperatingSystemHandle.root.winfo_height()-self.Tasks.winfo_height()-self.height}")
|
|
self.focus()
|
|
@asyncs
|
|
def Is_Focus(self):
|
|
while True:
|
|
if self.focus_get() != self:
|
|
self.withdraw()
|
|
time.sleep(0.1)
|
|
@asyncs
|
|
def EmbedParentWindow(self):
|
|
#while True:
|
|
# if master:
|
|
# u32.SetParent(u32.GetParent(self.winfo_id()),master.winfo_id())
|
|
# time.sleep(1)
|
|
for i in range(10):
|
|
u32.SetParent(u32.GetParent(self.winfo_id()),OperatingSystemHandle.root.winfo_id())
|
|
class Explorer:
|
|
def __init__(self):
|
|
desktop_imgs=[]
|
|
self.c = tk.Canvas(OperatingSystemHandle.root,width=OperatingSystemHandle.root.winfo_width(),height=OperatingSystemHandle.root.winfo_height()-30,highlightthickness=0)
|
|
self.c.pack()
|
|
|
|
UI.master=self.c
|
|
self.Tasks = tk.Frame(OperatingSystemHandle.root,height=30,bg=OperatingSystemHandle.color["tasks"]["bg"])
|
|
self.Tasks.pack(side="bottom",fill="x")
|
|
UI.TasksFrame=self.Tasks
|
|
self.TasksIconImg=ImageTk.PhotoImage(Image.open(OperatingSystemHandle.images_mik+'/[MICO].png').resize([30,30]))
|
|
self.TasksIconHovImg=ImageTk.PhotoImage(Image.open(OperatingSystemHandle.images_mik+'/[EICO].png').resize([30,30]))
|
|
|
|
self.LPU=LogoPopUp()
|
|
self.LPU.Tasks=self.Tasks
|
|
|
|
self.TasksIconButton=tk.Button(self.Tasks,image=self.TasksIconImg,bg=OperatingSystemHandle.color["tasks"]["bg"],bd=0)
|
|
self.TasksIconButton.pack(side="left")
|
|
self.TasksIconButton.bind("<Enter>", lambda _: self.TasksIconButton.config(image=self.TasksIconHovImg))
|
|
self.TasksIconButton.bind("<Leave>", lambda _: self.TasksIconButton.config(image=self.TasksIconImg))
|
|
self.TasksIconButton.bind("<Button-1>",self.LPU.Draw)
|
|
|
|
self.bgimg = Image.open(OperatingSystemHandle.bg)
|
|
self.bgimg = self.bgimg.resize((OperatingSystemHandle.root.winfo_width(), OperatingSystemHandle.root.winfo_height()))
|
|
self.bgimg = ImageTk.PhotoImage(self.bgimg)
|
|
|
|
self.background = self.c.create_image(0, 0, anchor='nw', image=self.bgimg)
|
|
|
|
self.desktop_x=OperatingSystemHandle.root.winfo_width()//90-2
|
|
self.desktop_y=OperatingSystemHandle.root.winfo_height()//90-2
|
|
|
|
self.new_x=1
|
|
self.new_y=0
|
|
DisplayContent=tk.Canvas(OperatingSystemHandle.root,width=OperatingSystemHandle.root.winfo_width(),height=OperatingSystemHandle.root.winfo_height()-30,highlightthickness=0)
|
|
DisplayContent.pack(fill="both",expand=True)
|
|
for i in os.listdir(OperatingSystemHandle.UsersSite+OperatingSystemHandle.username+"/Desktop"):
|
|
i=DesktopFile(self.c,OperatingSystemHandle.username,i,desktop_imgs,self.new_x,self.new_y,self.desktop_x,self.desktop_y,globals(),self,OperatingSystemHandle.StartSysApp)
|
|
self.new_x,self.new_y,self.desktop_x,self.desktop_y=i.new_x,i.new_y,i.desktop_x,i.desktop_y
|
|
|
|
Task_Explorer=Explorer() |