예제 #1
0
 def __init__(self, parent, group):
     self.group = group
     isNoGroup = group == parent.L["GROUP_NONE"]
     super().__init__(parent,
                      size=wx.Size(-1, 20),
                      tag=group,
                      func=None if isNoGroup else self.ShowNameChange,
                      edge="D")
     # DialogFrame - Main - Outer - Inner - Title
     self.Main = parent.GetGrandParent()
     if not isNoGroup:
         self.Text = UI.Text(self,
                             style=wx.TE_CENTER | wx.SIMPLE_BORDER
                             | wx.TE_PROCESS_ENTER)
         self.Text.SetMaxLength(24)
         self.Text.Hide()
         self.Text.Bind(wx.EVT_KILL_FOCUS, self.OnTextLost)
         self.Text.Bind(wx.EVT_TEXT_ENTER, self.OnTextEnter)
         Sizer = wx.BoxSizer(wx.HORIZONTAL)
         Sizer.Add(
             UI.ToolNormal(self,
                           size=wx.Size(20, 20),
                           pics=self.R["AP_TRIANGLE_U"],
                           func=(self.OnMove, "U"),
                           edge=("", "LTB")))
         Sizer.Add(self.Text, 1, wx.EXPAND)
         Sizer.Add(0, 0, 1)
         Sizer.Add(
             UI.ToolNormal(self,
                           size=wx.Size(20, 20),
                           pics=self.R["AP_TRIANGLE_D"],
                           func=(self.OnMove, "D"),
                           edge=("", "RTB")))
         self.SetSizer(Sizer)
예제 #2
0
 def __init__(self, parent, tag, pic, func):
     super().__init__(parent=parent, size=(-1, 20), tag=(tag, "L", 20), pic=(pic, "L"), func=func, fg="B", edge="D", res="R")
     Sizer = wx.BoxSizer(wx.HORIZONTAL)
     Sizer.AddMany((
         (4, 4, 1),
         (UI.ToolNormal(self, size=SIZE_BTN, pics=self.R["DIALOG_DTCH"], edge=("", "TB"), func=func[1].Detach)),
         (UI.ToolNormal(self, size=SIZE_BTN, pics=self.R["DIALOG_LOCA"], edge=("", "TB"), func=func[1].Locate)),
         (UI.ToolNormal(self, size=SIZE_BTN, pics=self.R["AP_EXIT"], edge=("", "RTB"), func=func[1].OnClose, res="R"))
     ))
     self.SetSizer(Sizer)
예제 #3
0
 def __init__(self, parent, help):
     super().__init__(parent, buttons=False)
     size = UI.SETTINGS["DLG_HEAD_BTN"]
     Sizer = self.GetSizer()
     Sizer.Insert(1, UI.ToolNormal(self, size=size, pics=self.R["DIALOG_LOCA"], func=self.Frame.Main.Locate), self.SizerFlags)
     Sizer.Insert(1, UI.ToolNormal(self, size=size, pics=self.R["DIALOG_ATCH"], func=self.Frame.Main.Attach), self.SizerFlags)
     if help:
         Sizer.Insert(0, UI.ToolNormal(self, size=size, pics=self.R["AP_HELP"], func=(self.GetGrandParent().OnSimpleDialog, "GENERAL_HEAD_HELP", help)), self.SizerFlags)
         Sizer.Insert(0, 3, 0)
         self.SetTagOffset(self.TagOffset[0] + size[0], self.TagOffset[1])
예제 #4
0
 def __init__(self, path):
     self.path = path
     self.pathInstalled = os.path.join(path, "installed")
     self.pathDownloaded = os.path.join(path, "downloaded")
     self.pathTemporary = os.path.join(path, "temporary")
     self.pathDatabase = os.path.join(path, "database")
     self.ok = all((UI.FindOrCreateDirectory(self.path),
                    UI.FindOrCreateDirectory(self.pathInstalled),
                    UI.FindOrCreateDirectory(self.pathDownloaded),
                    UI.FindOrCreateDirectory(self.pathTemporary),
                    UI.FindOrCreateDirectory(self.pathDatabase)))
예제 #5
0
def MakeWidgetDialog(widget):
    Frame = UI.BaseDialog(parent=widget.Canvas.F,
                          title=widget.NAME,
                          style=wx.FRAME_FLOAT_ON_PARENT,
                          main=(widget.DIALOG, {"widget": widget}),
                          head=(DetachedHead, {"help": widget.DIALOG.HELP}),
                          grip={"minSize": widget.DIALOG.MIN_SIZE}, )
    x, y = widget.DialogSize or Frame.GetEffectiveMinSize()
    Frame.SetSize((max(x, widget.DIALOG.MIN_SIZE[0]), max(y, UI.SETTINGS["DLG_HEAD"] + widget.DIALOG.MIN_SIZE[1])))
    Frame.SetPosition(widget.DialogPos or UI.EnsureWindowInScreen(widget.Canvas.ClientToScreen(widget.GetPosition() + wx.Point(64, 0)), (x, y)))
    Frame.Main.GetData()
    Frame.Play("FADEIN")
    return Frame.Main
예제 #6
0
 def Attach(self):
     if self.detached:
         self.detached = False
         self.Frame.Hide()
         self.Frame.Main = None
         self.Frame.GetSizer().Detach(self)
         self[0].Hide()
         self.Layout()
         if 1 in self:
             self[1].Func = self.OnBegin
         if not self.IsShown():
             self.Show()
         self.Reparent(self.Harbor.Inner)
         self.Head = AttachedHead(self.Harbor.Inner, tag=self.Widget.NAME, pic=self.R["AP_ABORT"][0], func=(self.Harbor.OnChild, self))
         self.Sash = UI.Sash(self.Harbor.Inner, target=self, direction="T", vRange=(2, 600), func=((self.Harbor.SetActualSize,), self.Harbor.Inner.Layout, self.Harbor.ReDraw), res="D")
         self.Harbor.Inner.GetSizer().AddMany((
             (self.Head, SF_HEAD),
             (self, SF_MAIN),
             (self.Sash, SF_SASH)
         ))
         self.Harbor.SetActualSize()
         self.Harbor.ReDraw()
         if not self.Harbor.IsShown():
             self.Harbor.GetParent().HiderR.Click()
         self.Widget.Canvas.ReDraw()
예제 #7
0
 def Extract(self, fp):
     pathTmp = UI.CreateRandomDirectory(self.pathTemporary)
     try:
         with zipfile.ZipFile(fp) as z:
             z.extractall(pathTmp)
         return pathTmp
     except Exception:
         shutil.rmtree(pathTmp)
         self.F.OnSimpleDialog("GENERAL_HEAD_FAIL",
                               "MSG_PKG_EXTRACT_FAIL",
                               textData=fp)
예제 #8
0
 def AutoSetData(self):
     ok = True
     for field in self.Widget.INTERNAL:
         if isinstance(field, BaseField):
             v = field.Validate(UI.Do(self.AutoGet[field.key]))
             if v is None:
                 ok = False
                 self.Widget[field.key] = None
             else:
                 self.Widget[field.key] = v
     return ok
예제 #9
0
def MakeDialog(parent, title, main, head=None):
    Dialog = UI.BaseDialog(parent=parent,
                           title=title,
                           main=main,
                           head=head or {},
                           style=wx.FRAME_NO_TASKBAR)
    x, y = Dialog.GetEffectiveMinSize()
    Dialog.SetSize((max(x, 120), max(y, UI.SETTINGS["DLG_HEAD"] + 10)))
    Dialog.CenterOnParent()
    Dialog.Play("FADEIN")
    return Dialog
예제 #10
0
파일: app.py 프로젝트: success4us/LabPype
 def Start(self):
     m = Manager(self.path)
     r = Resource(os.path.join(self.path, "resources.json"))
     s = Setting(os.path.join(self.path, "settings.json"))
     l = Locale(Ut.Find("lang", "%s.json" % s["LANGUAGE"]))
     if not (m.ok and r.ok and s.ok and l.ok):
         return UI.ShowSimpleMessageDialog(
             None, l["MSG_WORKSPACE_FAIL"] % self.path,
             l["GENERAL_HEAD_FAIL"])
     Frame = MainFrame(r, s, l, m)
     Frame.Show()
     self.MainLoop()
예제 #11
0
 def NewGroup(self, group=None, layout=False):
     if group is None:
         while "%s %s" % (self.L["GROUP_NEW"],
                          self.newGroupIndex) in self.Groups:
             self.newGroupIndex += 1
         group = "%s %s" % (self.L["GROUP_NEW"], self.newGroupIndex)
     else:
         if group in self.Groups:
             return group
     panel = UI.BaseControl(self.Inner)
     title = GroupTitle(self.Inner, group)
     groupSizer = wx.WrapSizer()
     btnAdd = UI.Button(panel,
                        size=wx.Size(36, 36),
                        pic=self.R["MANAGE_ADD"],
                        func=None,
                        edge=None,
                        res="L")
     groupSizer.Add(btnAdd, SF_ITEM)
     btnDel = UI.Button(panel,
                        size=wx.Size(36, 36),
                        pic=self.R["MANAGE_DEL"],
                        func=(self.DelGroup, title),
                        edge=None,
                        res="L")
     groupSizer.Add(btnDel, SF_ITEM)
     panel.SetSizer(groupSizer)
     self.Inner.GetSizer().AddMany(((title, SF_TITLE), (panel, SF_PANEL)))
     self.Groups[group] = {
         "TITLE": title,
         "PANEL": panel,
         "ADD": btnAdd,
         "DEL": btnDel
     }
     if self["NEW"]:
         self.Inner.GetSizer().Detach(self["NEW"])
         self.Inner.GetSizer().Add(self["NEW"], SF_NEW)
     if layout:
         self.OnArrangement()
     return group
예제 #12
0
 def OnMouse(self, evt):  # TODO Multiple screen see wx.Display
     if evt.GetEventType() == wx.wxEVT_MOTION and self.lastMousePos:
         newPos = self.lastFramePos - self.lastMousePos + self.Frame.ClientToScreen(evt.GetPosition())
         size = self.Frame.GetSize()
         UI.EnsureWindowInScreen(newPos, size, 12)
         l, t = newPos
         b = t + size[1]
         r = l + size[0]
         closestH = closestV = UI.SETTINGS["DLG_HEAD"] // 2
         for frame in wx.GetTopLevelWindows():
             if isinstance(frame, UI.BaseDialog) and frame != self.Frame and frame.IsShown():
                 _l, _t = frame.GetPosition()
                 _b = _t + frame.GetSize()[1]
                 _r = _l + frame.GetSize()[0]
                 if _l <= l < _r or _l < r <= _r:
                     d = abs(t - _b)
                     if d < closestV:
                         closestV = d
                         newPos[1] = _b
                     d = abs(b - _t)
                     if d < closestV:
                         closestV = d
                         newPos[1] = _t - size[1]
                     d = abs(t - _t)
                     if d < closestV:
                         closestV = d
                         newPos[1] = _t
                     d = abs(b - _b)
                     if d < closestV:
                         closestV = d
                         newPos[1] = _b - size[1]
                 if _t <= t < _b or _t < b <= _b:
                     d = abs(l - _r)
                     if d < closestH:
                         closestH = d
                         newPos[0] = _r
                     d = abs(r - _l)
                     if d < closestH:
                         closestH = d
                         newPos[0] = _l - size[0]
                     d = abs(l - _l)
                     if d < closestH:
                         closestH = d
                         newPos[0] = _l
                     d = abs(r - _r)
                     if d < closestH:
                         closestH = d
                         newPos[0] = _r - size[0]
         self.Frame.SetPosition(newPos)
     else:
         super().OnMouse(evt)
예제 #13
0
 def _DrawWidget(self, mdc, cls):
     brush = wx.Brush(cls.__COLOR__)
     bitmap, w2, h2 = self._PrepareWidgetIcon(cls.__ICON__)
     self.WidgetPen.SetColour(UI.AlphaBlend("#ffffff", cls.__COLOR__, 0.75))
     cls.__RES__ = {
         "CANVAS": {
             "IDLE": self.MaskCanvas.GetSubBitmap(self.RectCanvas)
         },  # large icon for canvas
         "BUTTON": self.MaskGadget.GetSubBitmap(
             self.RectGadget),  # small icon for gadget/manage panel,
         "CURSOR": self.MaskCursor.GetSubBitmap(
             self.RectCursor),  # cursor for drag and add widget
         "DIALOG": None
     }  # icon for dialog
     # For Canvas
     mdc.SelectObject(cls.__RES__["CANVAS"]["IDLE"])
     mgc = wx.GraphicsContext.Create(mdc)
     mgc.SetPen(self.WidgetPen)
     mgc.SetBrush(brush)
     mgc.DrawRectangle(4, 4, 48, 48)
     mdc.DrawBitmap(bitmap, 28 - w2, 28 - h2)
     mdc.DrawBitmap(self["INDICATOR"][3], 5, 5)
     if cls.UNIQUE:
         mdc.DrawBitmap(self["INDICATOR"][0], 42, 42)
     if cls.PROVIDER:
         mdc.DrawBitmap(self["INDICATOR"][0], 5, 42)
     mdc.SelectObject(wx.NullBitmap)
     for state in ("DONE", "FAIL", "WAIT", "WORK"):
         cls.__RES__["CANVAS"][state] = cls.__RES__["CANVAS"][
             "IDLE"].GetSubBitmap(self.RectCanvas)
         mdc.SelectObject(cls.__RES__["CANVAS"][state])
         mgc = wx.GraphicsContext.Create(mdc)
         mgc.SetBrush(self["BRUSH_WIDGET_" + state])
         mgc.DrawRectangle(8, 8, 6, 6)
     # For Gadget
     mdc.SelectObject(cls.__RES__["BUTTON"])
     mgc = wx.GraphicsContext.Create(mdc)
     mgc.SetPen(self.WidgetPen)
     mgc.SetBrush(brush)
     mgc.DrawRectangle(0, 0, 30, 30)
     mdc.DrawBitmap(bitmap, 15 - w2, 15 - h2)
     cls.__RES__["DIALOG"] = wx.Icon(cls.__RES__["BUTTON"])
     # For Cursor
     mdc.SelectObject(cls.__RES__["CURSOR"])
     mgc = wx.GraphicsContext.Create(mdc)
     mgc.SetPen(self.WidgetPen)
     mgc.SetBrush(wx.Brush(cls.__COLOR__ + "60"))
     mdc.DrawBitmap(bitmap, 15 - w2, 15 - h2)
     mgc.DrawRectangle(0, 0, 29, 29)
     cls.__RES__["CURSOR"] = wx.Cursor(
         cls.__RES__["CURSOR"].ConvertToImage())
예제 #14
0
 def __init__(self, parent):
     super().__init__(parent=parent,
                      title=parent.L["MANAGE_TITLE"],
                      size=wx.Size(720, 480),
                      main=Main,
                      style=wx.FRAME_NO_TASKBAR)
     self.Head.GetSizer().Insert(
         0,
         UI.ToolNormal(self.Head,
                       size=UI.SETTINGS["DLG_HEAD_BTN"],
                       pics=self.R["AP_HELP"],
                       func=(parent.OnSimpleDialog, "MANAGE_HELP_HEAD",
                             "MANAGE_HELP_TEXT")), 0, wx.ALL, 3)
     self.Head.SetTagOffset(24, 0)
     self.Center()
     self.Layout()
     self.Play("FADEIN")
예제 #15
0
def SimpleDialog(parent, title, text, onOK=None):
    Dialog = UI.BaseDialog(parent=parent,
                           title=title,
                           head={"buttons": False},
                           style=wx.FRAME_NO_TASKBAR)
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(wx.StaticText(Dialog.Main, label=text), 1, wx.EXPAND | wx.ALL, 8)
    if onOK:
        Dialog.Main.AddStdButton(sizer,
                                 onOK=((UI.DoNothing, ), onOK, Dialog.OnClose),
                                 onCancel=Dialog.OnClose)
    else:
        Dialog.Main.AddStdButton(sizer, onOK=Dialog.OnClose)
    Dialog.Main.SetSizer(sizer)
    x, y = Dialog.GetEffectiveMinSize()
    Dialog.SetSize((max(x, 120), max(y, UI.SETTINGS["DLG_HEAD"] + 10)))
    Dialog.Layout()
    Dialog.Center()
    Dialog.Play("FADEIN")
    return Dialog
예제 #16
0
 def AddItems(self, args):
     self.Freeze()
     group = self.NewGroup(self.L["GROUP_NONE"])
     for arg in args:
         if isinstance(arg, str):
             group = self.NewGroup(arg or self.L["GROUP_NONE"])
         else:
             self.AddItem(
                 WidgetItem(self.Groups[group]["PANEL"],
                            item=arg,
                            group=group))
     if self["NEW"] is None:
         self["NEW"] = UI.Button(self.Inner,
                                 size=wx.Size(-1, 64),
                                 tag=self.L["MANAGE_NEW_GROUP"],
                                 func=(self.NewGroup, None, True),
                                 res="L",
                                 edge="D")
         self.Inner.GetSizer().Add(self["NEW"], SF_NEW)
     self.Inner.Layout()
     self.OnSize()
     self.Thaw()
예제 #17
0
 def AddStdButton(self, sizer):
     size = wx.Size(40, self.LINE_HEIGHT)
     self[0] = UI.ToolNormal(self, size=size, pics=self.R["AP_CROSS"], edge="D", func=self.OnClose)
     if self.Widget.THREAD:
         self[3] = UI.ToolNormal(self, size=size, pics=self.R["AP_BEGIN"], edge="D", func=self.OnBegin)
         self[4] = UI.ToolNormal(self, size=size, pics=self.R["AP_ABORT"], edge="D", func=self.OnAbort)
     elif self.TASK:
         self[3] = UI.ToolNormal(self, size=size, pics=self.R["AP_BEGIN"], edge="D", func=self.OnBegin)
     else:
         self[1] = UI.ToolNormal(self, size=size, pics=self.R["AP_CHECK"], edge="D", func=self.OnReady)
     if self.Widget.INTERNAL or self.Widget.INCOMING:
         self[2] = UI.ToolNormal(self, size=size, pics=self.R["AP_APPLY"], edge="D", func=self.OnApply)
     if sizer.GetOrientation() == wx.HORIZONTAL:
         subSizer = sizer
         sizer.Add(4, 4, 1)
     else:
         subSizer = self.AddPerpendicularSizer(sizer, 0, wx.ALIGN_RIGHT | wx.ALL, 0)
     for i in (3, 4, 1, 0, 2):
         if i in self:
             subSizer.Add(self[i], 0, wx.ALL, self.MARGIN)
예제 #18
0
 def OnMouse(self, evt):
     super().OnMouse(evt)
     evtType = evt.GetEventType()
     if evtType == wx.wxEVT_LEFT_DOWN:
         self.SetCursor(self.Item.__RES__["CURSOR"])
     elif evtType == wx.wxEVT_LEFT_UP:
         UI.Do(self.todo)
         if self.pointing:
             self.pointing.Play("LEAVE")
         self.todo = None
         self.pointing = None
         self.SetCursor(self.R["CURSOR_NORMAL"])
     elif evtType == wx.wxEVT_MOTION and self.leftDown:
         pos = self.ClientToScreen(evt.GetPosition())
         if self.Main.Groups[self.group]["PANEL"].GetScreenRect().Contains(
                 pos):
             if self.Main.Groups[
                     self.group]["DEL"].GetScreenRect().Contains(pos):
                 self.todo = (wx.CallAfter, self.Main.DelItem, self, True)
                 pointing = self.Main.Groups[self.group]["DEL"]
             else:
                 W, H = self.Main.Groups[self.group]["PANEL"].GetSize()
                 C, R = W // 108, H // 36
                 x, y = self.Main.Groups[
                     self.group]["PANEL"].ScreenToClient(pos)
                 c, r = max(min(x // 108, C), 0), max(min(y // 36, R), 0)
                 index = r * C + c
                 if index != self.currentIndex:
                     self.GetParent().GetSizer().Detach(self)
                     self.Main.AddItem(self, max(0, index), True)
                 self.todo = None
                 pointing = self.Main.Groups[self.group]["TITLE"]
         elif self.Main.Groups[
                 self.group]["TITLE"].GetScreenRect().Contains(pos):
             self.todo = None
             pointing = self.Main.Groups[self.group]["TITLE"]
         else:
             for group in self.Main.Groups:
                 if group != self.group:
                     if self.Main.Groups[group]["TITLE"].GetScreenRect(
                     ).Contains(pos):
                         self.todo = None
                         pointing = self.Main.Groups[group]["TITLE"]
                         self.ChangeGroup(group)
                         break
                     if self.Main.Groups[group]["PANEL"].GetScreenRect(
                     ).Contains(pos):
                         self.todo = None
                         pointing = self.Main.Groups[group]["TITLE"]
                         self.ChangeGroup(group)
                         break
             else:
                 if self.Main["NEW"].GetScreenRect().Contains(pos):
                     self.todo = self.ChangeGroup
                     pointing = self.Main["NEW"]
                 else:
                     self.todo = None
                     pointing = None
         if pointing != self.pointing:
             if pointing:
                 pointing.Play("ENTER")
             if self.pointing:
                 self.pointing.Play("LEAVE")
             self.pointing = pointing
예제 #19
0
    def __init__(self, parent):
        super().__init__(parent, edge=None)
        self.F = parent.GetParent()  # MainFrame -> BaseDialog -> Main
        self.AddScrollBar((0, 12))

        SizerLeft = wx.BoxSizer(wx.VERTICAL)
        self.Installed = UI.ListCtrl(self, data=(), width=(-1, ))
        SizerLeft.AddMany((
            (self.Installed, 1, wx.EXPAND | wx.ALL, 4),
            (UI.ToolNormal(self,
                           size=SIZE_B,
                           pics=(self.R["AP_CLOUD"], "L", 8),
                           tag=(self.L["MANAGE_PKG_REMOTE"], "L", 32),
                           edge="D",
                           func=self.OnRemote,
                           showTag=True), SF_S),
            (UI.ToolNormal(self,
                           size=SIZE_B,
                           pics=(self.R["AP_LOCAL"], "L", 8),
                           tag=(self.L["MANAGE_PKG_BROWSE"], "L", 32),
                           edge="D",
                           func=self.OnBrowse,
                           showTag=True), SF_S),
            (UI.ToolNormal(self,
                           size=SIZE_B,
                           pics=(self.R["AP_TRASH"], "L", 8),
                           tag=(self.L["MANAGE_PKG_REMOVE"], "L", 32),
                           edge="D",
                           func=self.OnRemove,
                           showTag=True), SF_S),
        ))

        SizerButton = wx.BoxSizer(wx.HORIZONTAL)
        SizerButton.AddMany(
            ((UI.ToolNormal(self,
                            size=SIZE_S,
                            pics=(self.R["AP_RESET"], "L", 8),
                            tag=(self.L["GENERAL_RESET"], "L", 32),
                            edge="D",
                            func=self.OnReset,
                            showTag=True),
              SF_B), (UI.ToolNormal(self,
                                    size=SIZE_S,
                                    pics=(self.R["AP_CROSS"], "L", 8),
                                    tag=(self.L["GENERAL_CLOSE"], "L", 32),
                                    edge="D",
                                    func=self.OnClose,
                                    showTag=True), SF_B),
             (UI.ToolNormal(self,
                            size=SIZE_S,
                            pics=(self.R["AP_CHECK"], "L", 8),
                            tag=(self.L["GENERAL_READY"], "L", 32),
                            edge="D",
                            func=self.OnReady,
                            showTag=True),
              SF_B), (UI.ToolNormal(self,
                                    size=SIZE_S,
                                    pics=(self.R["AP_APPLY"], "L", 8),
                                    tag=(self.L["GENERAL_APPLY"], "L", 32),
                                    edge="D",
                                    func=self.OnApply,
                                    showTag=True), SF_B)))
        SizerRight = wx.BoxSizer(wx.VERTICAL)
        self.Outer = wx.Panel(self)
        self.Inner = wx.Panel(self.Outer, pos=(0, 0))
        self.Inner.R = self.R
        self.Inner.S = self.S
        self.Inner.L = self.L
        InnerSizer = wx.BoxSizer(wx.VERTICAL)
        self.Inner.SetSizer(InnerSizer)
        SizerRight.Add(self.Outer, 1, wx.EXPAND)
        SizerRight.Add(SizerButton, 0, wx.EXPAND | wx.ALL, 2)
        Sizer = wx.BoxSizer(wx.HORIZONTAL)
        Sizer.Add(SizerLeft, 0, wx.EXPAND | wx.ALL, 4)
        Sizer.Add(UI.Separator(self), 0, wx.EXPAND | wx.ALL, 8)
        Sizer.Add(SizerRight, 1, wx.EXPAND | wx.ALL, 4)
        Sizer.Add(UI.SETTINGS["SCROLL_DIAMETER"], 4)
        self.SetSizer(Sizer)

        self.newGroupIndex = 1
        self["NEW"] = None
        self.Groups = {}
        self.UpdatePackageList()
        self.AddItems(self.F.M.Groups)
예제 #20
0
 def OnBrowse(self):
     fp = UI.ShowOpenFileDialog(self, self.L["MSG_PKG_INSTALL_HEAD"],
                                "Zip files (*.zip)|*.zip")
     if fp is not None:
         self.DoInstall(fp)
예제 #21
0
파일: frame.py 프로젝트: success4us/LabPype
    def __init__(self, r, s, l, m):
        super().__init__(parent=None,
                         title=l["TITLE"],
                         pos=s["LAST_POS"],
                         size=s["LAST_SIZE"],
                         style=wx.DEFAULT_FRAME_STYLE
                         | wx.FULL_REPAINT_ON_RESIZE)
        self.R = r
        self.S = s
        self.L = l
        self.M = m
        self.D = {}
        self.T = {
            "LAST_FILE": "",
        }

        self.SetStatus = UI.DoNothing
        self.SetDoubleBuffered(True)
        self.SetMinSize(wx.Size(800, 600))
        self.SetIcon(self.R["__LabPype__"])
        self.SetFont(self.R["FONT_N"])
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        if self.S["MAXIMIZED"]:
            self.Maximize()

        self.Tool = UI.Tool(self, edge=("", "B"))
        self.Info = UI.Info(self, edge=("T", ""))
        self.Gadget = Gadget(self, size=wx.Size(self.S["WIDTH_GADGET"], -1))
        self.Canvas = Canvas(self)
        self.Harbor = Harbor(self, size=wx.Size(self.S["WIDTH_HARBOR"], -1))
        self.Manage = None

        self.Center = UI.BaseControl(self,
                                     size=wx.Size(-1, self.S["HEIGHT_CENTER"]),
                                     edge=("LR", ""))
        self.Record = Record(self.Center)

        self.SashC = UI.Sash(self,
                             target=self.Center,
                             direction="B",
                             vRange=(0, 250),
                             edge=("LR", "T"))
        self.SashL = UI.Sash(self,
                             target=self.Gadget,
                             direction="L",
                             vRange=(0, 384),
                             edge=("T", "RB"))
        self.SashR = UI.Sash(self,
                             target=self.Harbor,
                             direction="R",
                             vRange=(0, 600),
                             edge=("T", "LB"))
        self.HiderC = UI.Hider(self,
                               targets=(self.Center, self.SashC),
                               orientation="H",
                               edge=("LR", "B"))
        self.HiderL = UI.Hider(self,
                               targets=(self.Gadget, self.SashL),
                               edge="H")
        self.HiderR = UI.Hider(self,
                               targets=(self.Harbor, self.SashR),
                               edge="H")
        self.HiderC.SetTip(self.SetStatus, self.L["HIDER_CENTER"])
        self.HiderL.SetTip(self.SetStatus, self.L["HIDER_GADGET"])
        self.HiderR.SetTip(self.SetStatus, self.L["HIDER_HARBOR"])

        self.AcceleratorEntries = []
        for flags, keyCode, func in (
            (wx.ACCEL_NORMAL, wx.WXK_F3, self.HiderL.Click),
            (wx.ACCEL_NORMAL, wx.WXK_F4, self.HiderC.Click),
            (wx.ACCEL_NORMAL, wx.WXK_F5, self.HiderR.Click),
            (wx.ACCEL_CTRL, ord("F"),
             lambda evt: self.Gadget.Tool["GADGET_SEARCH"].SetFocus()),
            (wx.ACCEL_CTRL, ord("D"), self.Gadget.Tool["GADGET_CANCEL"].Click),
            (wx.ACCEL_CTRL, ord("E"), self.Gadget.Tool["TOOL_T_SHOW"].Click),
            (wx.ACCEL_CTRL, ord("R"), self.Gadget.Tool["TOOL_T_TEXT"].Click),
            (wx.ACCEL_CTRL, ord("W"), self.Gadget.Tool["TOOL_MANAGE"].Click),
            (wx.ACCEL_CTRL, ord("A"), lambda evt: self.Canvas.SelectAll()),
        ):
            cmd = wx.NewId()
            self.Bind(wx.EVT_MENU, func, id=cmd)
            self.AcceleratorEntries.append(
                wx.AcceleratorEntry(flags=flags, keyCode=keyCode, cmd=cmd))

        self.Tool.AddItemsWithHotKey(
            ("N", "TOOL_OPTION", self.OnOption, wx.ACCEL_CTRL | wx.ACCEL_ALT,
             ord("S")),
            "|",
            ("N", "TOOL_FILE_N", self.OnNew, wx.ACCEL_CTRL, ord("N")),
            ("N", "TOOL_FILE_O",
             (self.OnMakeDialog, "DIALOG_HEAD_LOAD", LoadDialog, {
                 "buttons": False
             }), wx.ACCEL_CTRL, ord("O")),
            ("N", "TOOL_FILE_S",
             (self.OnMakeDialog, "DIALOG_HEAD_SAVE", SaveDialog, {
                 "buttons": False
             }), wx.ACCEL_CTRL, ord("S")),
            "|",
            ("T", "TOOL_T_ANCR",
             (self.OnToggle, "TOGGLE_ANCR"), wx.ACCEL_NORMAL, wx.WXK_F6, {
                 "toggle": self.S["TOGGLE_ANCR"]
             }),
            ("T", "TOOL_T_NAME",
             (self.OnToggle, "TOGGLE_NAME"), wx.ACCEL_NORMAL, wx.WXK_F7, {
                 "toggle": self.S["TOGGLE_NAME"]
             }),
            ("T", "TOOL_T_SNAP",
             (self.OnToggle, "TOGGLE_SNAP"), wx.ACCEL_NORMAL, wx.WXK_F8, {
                 "toggle": self.S["TOGGLE_SNAP"]
             }),
            ("T", "TOOL_T_CURV", self.Canvas.ToggleLinkType, wx.ACCEL_NORMAL,
             wx.WXK_F9, {
                 "toggle": self.S["TOGGLE_CURV"]
             }),
            ("T", "TOOL_T_DIAG", self.OnToggleDialogSize, wx.ACCEL_NORMAL,
             wx.WXK_F10, {
                 "toggle": 0
             }),
            ("T", "TOOL_T_FSCN", self.OnToggleFullScreen, wx.ACCEL_NORMAL,
             wx.WXK_F11, {
                 "toggle": 0
             }),
            "|",
            ("N", "TOOL_ALGN_L",
             (self.Canvas.Align, Ut.AlignL), wx.ACCEL_CTRL, wx.WXK_NUMPAD4),
            ("N", "TOOL_ALGN_V",
             (self.Canvas.Align, Ut.AlignV), wx.ACCEL_CTRL, wx.WXK_NUMPAD5),
            ("N", "TOOL_ALGN_R",
             (self.Canvas.Align, Ut.AlignR), wx.ACCEL_CTRL, wx.WXK_NUMPAD6),
            ("N", "TOOL_ALGN_T",
             (self.Canvas.Align, Ut.AlignT), wx.ACCEL_CTRL, wx.WXK_NUMPAD8),
            ("N", "TOOL_ALGN_H",
             (self.Canvas.Align, Ut.AlignH), wx.ACCEL_CTRL, wx.WXK_NUMPAD0),
            ("N", "TOOL_ALGN_B",
             (self.Canvas.Align, Ut.AlignB), wx.ACCEL_CTRL, wx.WXK_NUMPAD2),
            "|",
            ("N", "TOOL_DIST_H", (self.Canvas.Distribute, Ut.DistributeH),
             wx.ACCEL_CTRL, ord("H")),
            ("N", "TOOL_DIST_V", (self.Canvas.Distribute, Ut.DistributeV),
             wx.ACCEL_CTRL, ord("V")),
            "|",
            ("N", "TOOL_MOVE_T",
             (self.Canvas.AlterLayer, "T"), wx.ACCEL_CTRL, wx.WXK_NUMPAD9),
            ("N", "TOOL_MOVE_U",
             (self.Canvas.AlterLayer, "U"), wx.ACCEL_CTRL, wx.WXK_NUMPAD7),
            ("N", "TOOL_MOVE_D",
             (self.Canvas.AlterLayer, "D"), wx.ACCEL_CTRL, wx.WXK_NUMPAD1),
            ("N", "TOOL_MOVE_B",
             (self.Canvas.AlterLayer, "B"), wx.ACCEL_CTRL, wx.WXK_NUMPAD3),
            "|",
            ("N", "TOOL_CANCEL", self.OnDismissAllDialog, wx.ACCEL_CTRL,
             wx.WXK_DELETE, {
                 "res": "R"
             }),
            ("N", "TOOL_DELETE", self.Canvas.DeleteSelected, wx.ACCEL_NORMAL,
             wx.WXK_DELETE, {
                 "res": "R"
             }),
        )
        self.Info.AddItems((wx.StaticText(self.Info, size=(268, 16)), 0),
                           (wx.StaticText(self.Info, size=(-1, 16)), 1),
                           (wx.StaticText(self.Info, size=(268, 16)), 0))

        self.SetAcceleratorTable(wx.AcceleratorTable(self.AcceleratorEntries))

        CenterSizer = wx.BoxSizer(wx.HORIZONTAL)
        CenterSizer.Add(self.Record, 1, wx.EXPAND | wx.ALL, 1)
        self.Center.SetSizer(CenterSizer)

        MiddleSizer = wx.BoxSizer(wx.VERTICAL)
        MiddleSizer.AddMany((
            (self.Canvas, 1, wx.EXPAND),
            (self.SashC, 0, wx.EXPAND),
            (self.Center, 0, wx.EXPAND),
            (self.HiderC, 0, wx.EXPAND),
        ))
        MainSizer = wx.BoxSizer(wx.HORIZONTAL)
        MainSizer.AddMany((
            (self.HiderL, 0, wx.EXPAND),
            (self.Gadget, 0, wx.EXPAND),
            (self.SashL, 0, wx.EXPAND),
            (MiddleSizer, 1, wx.EXPAND),
            (self.SashR, 0, wx.EXPAND),
            (self.Harbor, 0, wx.EXPAND),
            (self.HiderR, 0, wx.EXPAND),
        ))
        FrameSizer = wx.BoxSizer(wx.VERTICAL)
        FrameSizer.AddMany((
            (self.Tool, 0, wx.EXPAND),
            (MainSizer, 1, wx.EXPAND),
            (self.Info, 0, wx.EXPAND),
        ))
        self.SetSizer(FrameSizer)
        self.Layout()
        if not self.S["SHOW_GADGET"]:
            self.HiderL.OnHider()
        if not self.S["SHOW_HARBOR"]:
            self.HiderR.OnHider()
        if not self.S["SHOW_CENTER"]:
            self.HiderC.OnHider()

        self.M.Init(self)
예제 #22
0
 def __init__(self, fp):
     super().__init__(fp)
     self["__LabPype__"] = Img.LabPype.GetIcon()
     if self["FONTFACE_CANVAS"] == "":
         self["FONTFACE_CANVAS"] = wx.SystemSettings().GetFont(
             wx.SYS_DEFAULT_GUI_FONT).GetFaceName()
     if self["FONTFACE_FIXED"] == "":
         self["FONTFACE_FIXED"] = wx.SystemSettings().GetFont(
             wx.SYS_ANSI_FIXED_FONT).GetFaceName()
     # GUI
     self["PEN_CONNECTION"] = wx.Pen(self["COLOR_CONNECTION"], 3)
     self["PEN_CONNECTION_SELECTION1"] = wx.Pen(self["COLOR_SELECTION"], 11)
     self["PEN_CONNECTION_SELECTION2"] = wx.Pen(
         UI.AlphaBlend(self["COLOR_BG_B"], self["COLOR_SELECTION"], 0.5), 9)
     self["PEN_SELECTION"] = wx.Pen(self["COLOR_SELECTION"], 1)
     self["BRUSH_SELECTION"] = wx.Brush(
         UI.AlphaBlend(self["COLOR_BG_B"], self["COLOR_SELECTION"], 0.3))
     # Brush
     self["BRUSH_WIDGET_DONE"] = wx.Brush(self["COLOR_WIDGET_DONE"])
     self["BRUSH_WIDGET_WAIT"] = wx.Brush(self["COLOR_WIDGET_WAIT"])
     self["BRUSH_WIDGET_WORK"] = wx.Brush(self["COLOR_WIDGET_WORK"])
     self["BRUSH_WIDGET_FAIL"] = wx.Brush(self["COLOR_WIDGET_FAIL"])
     self["BRUSH_ANCHOR_RECV"] = wx.Brush(self["COLOR_ANCHOR_RECV"])
     self["BRUSH_ANCHOR_SEND"] = wx.Brush(self["COLOR_ANCHOR_SEND"])
     self["BRUSH_ANCHOR_PASS"] = wx.Brush(self["COLOR_ANCHOR_PASS"])
     self["BRUSH_ANCHOR_FAIL"] = wx.Brush(self["COLOR_ANCHOR_FAIL"])
     # Font
     self.SetMainFont(9, self["FONTFACE_MAIN"])
     self["FONT_H1"] = wx.Font(24, wx.FONTFAMILY_DEFAULT,
                               wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
                               False, self["FONTFACE_MAIN"])
     self["FONT_H2"] = wx.Font(20, wx.FONTFAMILY_DEFAULT,
                               wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
                               False, self["FONTFACE_MAIN"])
     self["FONT_H3"] = wx.Font(16, wx.FONTFAMILY_DEFAULT,
                               wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
                               False, self["FONTFACE_MAIN"])
     self["FONT_H4"] = wx.Font(12, wx.FONTFAMILY_DEFAULT,
                               wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
                               False, self["FONTFACE_MAIN"])
     self["FONT_CANVAS"] = wx.Font(10, wx.FONTFAMILY_DEFAULT,
                                   wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
                                   False, self["FONTFACE_CANVAS"])
     self["FONT_FIXED"] = wx.Font(8, wx.FONTFAMILY_DEFAULT,
                                  wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,
                                  False, self["FONTFACE_FIXED"])
     # Bitmap
     for key in (
             "TOOL_OPTION",
             "TOOL_DELETE",
             "TOOL_FILE_N",
             "TOOL_FILE_O",
             "TOOL_FILE_S",
             "TOOL_ALGN_L",
             "TOOL_ALGN_V",
             "TOOL_ALGN_R",
             "TOOL_ALGN_T",
             "TOOL_ALGN_H",
             "TOOL_ALGN_B",
             "TOOL_DIST_H",
             "TOOL_DIST_V",
             "TOOL_MOVE_U",
             "TOOL_MOVE_D",
             "TOOL_MOVE_T",
             "TOOL_MOVE_B",
             "TOOL_T_ANCR",
             "TOOL_T_NAME",
             "TOOL_T_SNAP",
             "TOOL_T_CURV",
             "TOOL_T_DIAG",
             "TOOL_T_FSCN",
             "TOOL_CANCEL",
             "TOOL_T_SHOW",
             "TOOL_T_TEXT",
             "TOOL_MANAGE",
             "DIALOG_MISC",
             "DIALOG_ATCH",
             "DIALOG_DTCH",
             "DIALOG_LOCA",
     ):
         self[key] = UI.GetBitmaps(self.GetBitmap(key), 20, 20)
     for key in ("MANAGE_ADD", "MANAGE_DEL"):
         self[key] = self.GetBitmap(key)
     # Resources for widget drawing
     self["INDICATOR"] = UI.GetBitmaps(self.GetBitmap("INDICATOR"), 10, 10)
     self.DefaultIcon = Img.WIDGET.GetBitmap()
     self.MaskCanvas = Img.MASK_CANVAS.GetBitmap()
     self.MaskGadget = Img.MASK_GADGET.GetBitmap()
     self.MaskCursor = Img.MASK_CURSOR.GetBitmap()
     self.RectCanvas = wx.Rect(0, 0, 56, 56)
     self.RectGadget = wx.Rect(0, 0, 32, 32)
     self.RectCursor = wx.Rect(0, 0, 30, 30)
     self.WidgetPen = wx.Pen("#000000", 1)