2020년 12월 5일 토요일

[IronPython] Win (Form)

WIn (Form)

import clr
clr.AddReference("PresentationFramework")
clr.AddReference("PresentationCore");
clr.AddReference('System.Data')
clr.AddReference('System.Windows.Forms')

import System
from System import *
from System.Data import *
from System.Type import GetType
from System.Threading.Tasks import Task
from System.Windows import *
from System.Windows.Controls import *
from System.Windows.Controls.Primitives import *
from System.Windows.Media import *
from System.Windows.Media.Imaging import *
from System.Windows.Media.Effects import *
from System.Windows.Shapes import Rectangle
from System.Windows.Data import Binding
from System.Windows.Ink import Stroke
from Microsoft.Win32 import ( OpenFileDialog, SaveFileDialog )

import icon

class Win(Window):
    def __init__(self,title=None,width=None,height=None):
        import vbox
        self.Closing += self.on_close
        if title: self.Title = title
        if width: self.Width = width
        if height:self.Height= height
        self.vbox = vbox.WpfVBox()
        self.Content = self.vbox.ctrl
        self.menubar = None
        self.toolbar = None
        self.statusbar = None
        self.content = None
    def set_title(self,title):  self.Title = title
    def set_icon(self,image): self.Icon = image
    def set_iconfile(self,imagefile): self.Icon = self.get_imagefile(imagefile)
    def set_width(self,width): self.Width = width
    def set_height(self,height): self.Height = height
    def set_size(self,width,height): self.Width = width; self.Height = height
    def set_content(self,content):  self.content = content
    def add_menubar(self,menu): self.menubar = menu        
    def add_toolbar(self,tool): self.toolbar = tool       
    def add_statusbar(self,status): self.statusbar = status
    def run(self): 
        if self.menubar: self.vbox.add_item(self.menubar,expand=False)    
        if self.toolbar: self.vbox.add_item(self.toolbar,expand=False)    
        if self.content: self.vbox.add_item(self.content,expand=True)    
        if self.statusbar: self.vbox.add_item(self.statusbar,expand=False)    
        self.Show(); 
        Application().Run(self) 
    def close(self): self.Close()
    def on_close(self,sender,event):
    	rv = MessageBox.Show("Do you want to close ?", "Warning", MessageBoxButton.YesNo )
    	if rv == MessageBoxResult.Yes:
    		event.Cancel = False
    	else:
    		event.Cancel = True
    def get_imagefile(self,filename):
        return icon.GetBitmapFrameFromFile(filename)

if __name__ == "__main__":
    import menu
    import tool
    import status
    import icon as ic
    

    def setMenuBar():
        m = menu.WpfMenuBar()
        m.add_menu("File");
        m.add_item("Exit", lambda s,e: app.Close())
        m.add_separater()
        m.add_item("Exit", icon=ic.GetExitBitmapImage(), handler=lambda s,e: app.Close())
        app.add_menubar(m.ctrl)

    def setToolBar():
        t = tool.WpfToolBar()
        t.add_toolbar();
        button = Button()
        button.Content = "Exit"
        button.Click += lambda s,e: app.Close()
        t.add_item(button)
        t.add_separater()
        
        stack = StackPanel()
        img = Image()
        img.Width = 16
        img.Height = 16
        img.Source = ic.GetExitBitmapImage()
        stack.Children.Add(img)    
        button = Button()
        button.Content = stack
        button.Click += lambda s,e: app.Close()
        t.add_item(button)
        app.add_toolbar(t.ctrl)
                
    def setStatusBar():
        s = status.WpfStatusBar()
        button = Button()
        button.Content = "Exit"
        button.Click += lambda s,e: app.Close()
        s.add_item(button)

        stack = StackPanel()
        button = Button()
        button.Content = stack
        button.Click += lambda s,e: app.Close()
        img = Image()
        img.Source = ic.GetExitBitmapImage()
        img.Width = 16 
        img.Height = 16
        stack.Children.Add(img)
        s.add_item(button)
        app.add_statusbar(s.ctrl)
        
    def setContent():
        content = Button()
        content.Content = "Content"
        app.set_content(content)
            
    app = Win("Window Demo",320,240)
    app.set_icon(icon.GetExitBitmapImage())
    #app.set_icon(icon.GetBitmapFrameFromFile("exit.png"))
    
    setMenuBar()
    setToolBar()
    setContent()
    setStatusBar()

    app.run()

댓글 없음:

댓글 쓰기