Ejemplo n.º 1
0
    def _do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_1.Add((cw.wins(0), self._textheight + cw.wins(24)), 0, 0, 0)
        csize = self.GetClientSize()

        if self.mode == 1:
            sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
            margin = (csize[0] - self.yesbtn.GetSize()[0] * 2) // 3
            sizer_2.Add(self.yesbtn, 0, wx.LEFT, margin)
            sizer_2.Add(self.nobtn, 0, wx.LEFT | wx.RIGHT, margin)
        elif self.mode == 2:
            sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
            margin = (csize[0] - self.closebtn.GetSize()[0]) // 2
            sizer_2.Add(self.closebtn, 0, wx.LEFT, margin)
        elif self.mode == 3:
            sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
            sizer_2.AddStretchSpacer(1)
            for i, button in enumerate(self.buttons):
                sizer_2.Add(button, 0, 0, 0)
                sizer_2.AddStretchSpacer(1)

        sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)

        self.SetSizer(sizer_1)
        self.Layout()
Ejemplo n.º 2
0
 def __init__(self, parent, name, text):
     choices = (
         (u"はい", wx.ID_YES, cw.wins(105)),
         (u"いいえ", wx.ID_NO, cw.wins(105)),
         (u"キャンセル", wx.ID_CANCEL, cw.wins(105)),
     )
     Message.__init__(self, parent, name, text, 3, choices=choices)
Ejemplo n.º 3
0
    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        # background
        bmp = cw.cwpy.rsrc.dialogs["CAUTION"]
        csize = self.GetClientSize()
        cw.util.fill_bitmap(dc, bmp, csize)
        # text
        dc.SetTextForeground(wx.BLACK)
        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        dc.SetFont(font)
        s = self.message
        w, h, _lh = dc.GetMultiLineTextExtent(s)
        dc.DrawLabel(s, ((csize[0]-w)/2, cw.wins(10), w, h))

        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        dc.SetFont(font)

        s = u"対象エンジン:"
        tw, th = dc.GetTextExtent(s)
        x, y, w, h = self.target.GetRect()
        x -= tw + cw.wins(5)
        y += (h-th) / 2
        dc.DrawText(s, x, y)

        s = u"生成先:"
        tw, th = dc.GetTextExtent(s)
        _x2, y, _w2, h = self.reffolder.GetRect()
        h = max(h, self.folder.GetRect()[3])
        y += (h-th) / 2
        dc.DrawText(s, x, y)
Ejemplo n.º 4
0
    def OnPaint(self, event):
        dc = wx.PaintDC(self)
        # background
        bmp = cw.cwpy.rsrc.dialogs["CAUTION"]
        csize = self.GetClientSize()
        cw.util.fill_bitmap(dc, bmp, csize)

        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        dc.SetFont(font)

        # 転送元
        s = cw.cwpy.msgs["transfer_from_base"]
        _tw, th = dc.GetTextExtent(s)
        _x, y, _w, h = self.fromyado.GetRect()
        x = cw.wins(5)
        y += (h - th) / 2
        dc.DrawText(s, x, y)

        # 転送先
        s = cw.cwpy.msgs["transfer_to_base"]
        _tw, th = dc.GetTextExtent(s)
        x, y, _w, h = self.toyado.GetRect()
        x = cw.wins(5)
        y += (h - th) / 2
        dc.DrawText(s, x, y)
Ejemplo n.º 5
0
 def OnPaint(self, evt):
     dc = wx.PaintDC(self)
     # background
     bmp = cw.cwpy.rsrc.dialogs["CAUTION"]
     csize = self.GetClientSize()
     cw.util.fill_bitmap(dc, bmp, csize)
     # massage
     dc.SetTextForeground(wx.BLACK)
     dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(15)))
     dc.DrawLabel(self.text, (0, cw.wins(12), csize[0], self._textheight),
                  wx.ALIGN_CENTER)
Ejemplo n.º 6
0
    def create_buttons(self):
        # OK・キャンセルボタン
        self.yesbtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_OK,
                                                   cw.wins((120, 30)),
                                                   cw.cwpy.msgs["ok"])
        self.nobtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_CANCEL,
                                                  cw.wins((120, 30)),
                                                  cw.cwpy.msgs["cancel"])
        self.buttons = (self.yesbtn, self.nobtn)

        self.yesbtn.Bind(wx.EVT_BUTTON, self.OnOk)
        self.nobtn.Bind(wx.EVT_BUTTON, self.OnCancel)
Ejemplo n.º 7
0
 def _resize(self):
     """
     テキストの折り返し位置を計算する。
     """
     dc = wx.ClientDC(self)
     dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(15)))
     csize = self.GetClientSize()
     self._wrapped_text = cw.util.wordwrap(self.text,
                                           csize[0] - cw.wins(20),
                                           lambda s: dc.GetTextExtent(s)[0])
     _w, self._textheight, _lineheight = dc.GetMultiLineTextExtent(
         self._wrapped_text)
Ejemplo n.º 8
0
    def __init__(self, parent):
        # ダイアログボックス作成
        select.Select.__init__(self, parent,
                               cw.cwpy.msgs["select_party_record"])
        # パーティ情報
        self.list = cw.cwpy.ydata.partyrecord[:]
        self.list.append(None)
        self.restorable = [None] * len(self.list)
        self.index = 0
        self.names = []
        # toppanel
        self.toppanel = wx.Panel(self, -1, size=cw.wins((460, 280)))
        # restore
        self.restorebtn = cw.cwpy.rsrc.create_wxbutton(
            self.panel, -1, cw.wins((75, 23)), cw.cwpy.msgs["party_restore"])
        self.buttonlist.append(self.restorebtn)
        # save
        self.savebtn = cw.cwpy.rsrc.create_wxbutton(self.panel, -1,
                                                    cw.wins((75, 23)),
                                                    cw.cwpy.msgs["party_save"])
        self.buttonlist.append(self.savebtn)
        # delete
        self.deletebtn = cw.cwpy.rsrc.create_wxbutton(self.panel, -1,
                                                      cw.wins((75, 23)),
                                                      cw.cwpy.msgs["delete"])
        self.buttonlist.append(self.deletebtn)
        # close
        self.closebtn = cw.cwpy.rsrc.create_wxbutton(self.panel, wx.ID_CANCEL,
                                                     cw.wins((75, 23)),
                                                     cw.cwpy.msgs["close"])
        self.buttonlist.append(self.closebtn)
        # enable btn
        self.enable_btn()
        # layout
        self._do_layout()
        # bind
        self._bind()
        self.Bind(wx.EVT_BUTTON, self.OnClickSaveBtn, self.savebtn)
        self.Bind(wx.EVT_BUTTON, self.OnClickRestoreBtn, self.restorebtn)
        self.Bind(wx.EVT_BUTTON, self.OnClickDeleteBtn, self.deletebtn)

        seq = self.accels
        deleteid = wx.NewId()
        self.Bind(wx.EVT_MENU, self.OnClickDeleteBtn, id=deleteid)
        seq.append((wx.ACCEL_NORMAL, wx.WXK_DELETE, deleteid))
        cw.util.set_acceleratortable(self, seq)

        self.draw(True)
Ejemplo n.º 9
0
    def create_buttons(self):
        headers_seq = reduce(lambda a, b: a + b, self.headers.itervalues())
        assert 0 < len(headers_seq)

        # インストール・キャンセルボタン
        self.yesbtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_OK,
                                                   cw.wins((120, 30)),
                                                   u"インストール")
        self.yesbtn.SetToolTipString(create_installdesc(headers_seq))
        self.nobtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_CANCEL,
                                                  cw.wins((120, 30)),
                                                  cw.cwpy.msgs["cancel"])
        self.buttons = (self.yesbtn, self.nobtn)

        self.yesbtn.Bind(wx.EVT_BUTTON, self.OnInstallBtn)
        self.nobtn.Bind(wx.EVT_BUTTON, self.OnCancel)
Ejemplo n.º 10
0
    def _do_layout(self):
        sizer_buttons = wx.BoxSizer(wx.VERTICAL)
        for btn in self.buttons:
            sizer_buttons.Add(btn, 0, wx.EXPAND|wx.BOTTOM, cw.wins(2))
        sizer_buttons.AddStretchSpacer(1)
        sizer_buttons.Add(self.btn_cncl, 0, wx.EXPAND)

        sizer_panel = wx.BoxSizer(wx.HORIZONTAL)
        sizer_panel.Add(self.desc, 1, wx.EXPAND|wx.ALL, cw.wins(10))
        self.panel.SetSizer(sizer_panel)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(sizer_buttons, 0, wx.EXPAND|wx.ALL, cw.wins(10))
        sizer.Add(self.panel, 1, wx.EXPAND|wx.TOP|wx.RIGHT|wx.BOTTOM, cw.wins(10))
        self.SetSizer(sizer)
        sizer.Fit(self)
        self.Layout()
Ejemplo n.º 11
0
    def OnPaint(self, event):
        csize = self.GetClientSize()
        wxbmp = wx.EmptyBitmap(csize[0], csize[1])
        dc = wx.MemoryDC(wxbmp)
        # background
        bmp = cw.cwpy.rsrc.dialogs["CAUTION"]
        cw.util.fill_bitmap(dc, bmp, csize)
        # massage
        dc.SetTextForeground(wx.BLACK)
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(14)))
        dc.DrawLabel(
            self.text,
            (cw.wins(10), cw.wins(36), csize[0] - cw.wins(20), cw.wins(50)),
            wx.ALIGN_RIGHT)

        dc.SelectObject(wx.NullBitmap)
        dc2 = wx.PaintDC(self)
        dc2.DrawBitmap(wxbmp, 0, 0)
Ejemplo n.º 12
0
    def _do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_1.Add((cw.wins(0), self._textheight + cw.wins(24)), 0, 0, 0)
        csize = self.GetClientSize()

        sizer_1.Add(self.datalist, 1, wx.LEFT | wx.RIGHT | wx.EXPAND,
                    cw.wins(8))

        sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_2.AddStretchSpacer(1)
        for i, button in enumerate((self.okbtn, self.cnclbtn)):
            sizer_2.Add(button, 0, 0, 0)
            sizer_2.AddStretchSpacer(1)

        sizer_1.Add(sizer_2, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, cw.wins(12))

        self.SetSizer(sizer_1)
        self.Layout()
Ejemplo n.º 13
0
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1, cw.cwpy.msgs["select_battle_action"])
        self.cwpy_debug = False
        self.list = []

        # 行動開始
        path = "Resource/Image/Card/BATTLE"
        path = cw.util.find_resource(cw.util.join_paths(cw.cwpy.skindir, path), cw.cwpy.rsrc.ext_img)
        path = [cw.image.ImageInfo(path)]
        header = cw.image.CardImage(path, "NORMAL", cw.cwpy.msgs["start_action"], can_loaded_scaledimage=True)
        w = cw.scr2win_s(header.rect.width)
        h = cw.scr2win_s(header.rect.height)
        header.rect = pygame.Rect(cw.wins(5), cw.wins(5), w, h)
        header.clickedflag = False
        header.lclick_event = self.start
        header.negaflag = False
        self.list.append(header)

        # 逃げる
        if cw.cwpy.battle.possible_runaway:
            path = "Resource/Image/Card/ACTION9"
            path = cw.util.find_resource(cw.util.join_paths(cw.cwpy.skindir, path), cw.cwpy.rsrc.ext_img)
            path = [cw.image.ImageInfo(path)]
            header = cw.image.CardImage(path, "NORMAL", cw.cwpy.msgs["runaway"], can_loaded_scaledimage=True)
            header.rect = pygame.Rect((w+cw.wins(5))*len(self.list)+cw.wins(5), cw.wins(5), w, h)
            header.clickedflag = False
            header.negaflag = False
            header.lclick_event = self.runaway
            self.list.append(header)
        # キャンセル
        path = "Resource/Image/Card/COMMAND1"
        path = cw.util.find_resource(cw.util.join_paths(cw.cwpy.skindir, path), cw.cwpy.rsrc.ext_img)
        path = [cw.image.ImageInfo(path)]
        header = cw.image.CardImage(path, "NORMAL", cw.cwpy.msgs["cancel"], can_loaded_scaledimage=True)
        header.rect = pygame.Rect((w+cw.wins(5))*len(self.list)+cw.wins(5), cw.wins(5), w, h)
        header.clickedflag = False
        header.negaflag = False
        header.lclick_event = self.cancel
        self.list.append(header)

        self.toppanel = wx.Panel(self, -1, size=((w+cw.wins(5))*len(self.list)+cw.wins(5), h+cw.wins(5)*(len(self.list)-1)))

        self._do_layout()
        self._bind()
Ejemplo n.º 14
0
    def draw_card(self, dc, header, fromkeyevent=False):
        if not fromkeyevent and self.IsActive():
            mousepos = self.toppanel.ScreenToClient(wx.GetMousePosition())
            if header.rect.collidepoint(mousepos):
                if not header.negaflag:
                    header.negaflag = True
            elif header.negaflag:
                header.negaflag = False

        pos = header.rect.topleft
        if header.negaflag:
            bmp = header.get_wxnegabmp()
        else:
            bmp = header.get_wxbmp()

        if header.clickedflag:
            bmp = header.get_wxclickedbmp(header, bmp)
            pos = (pos[0]+cw.wins(4), pos[1]+cw.wins(5))

        dc.DrawBitmap(bmp, pos[0], pos[1], False)
Ejemplo n.º 15
0
    def _do_layout(self):
        sizer_right = wx.BoxSizer(wx.VERTICAL)
        sizer_right.Add(self.rmvbtn, 0, wx.EXPAND)
        sizer_right.Add(self.upbtn, 0, wx.EXPAND|wx.TOP, border=cw.wins(5))
        sizer_right.Add(self.downbtn, 0, wx.EXPAND|wx.TOP, border=cw.wins(5))
        #sizer_right2 = wx.BoxSizer(wx.HORIZONTAL)
        #sizer_right2.Add(self.up2btn, 1)
        #sizer_right2.Add(self.down2btn, 1)
        #sizer_right.Add(sizer_right2, 0, wx.TOP, border=cw.ppis(5))

        sizer_right.AddStretchSpacer(1)
        sizer_right.Add(self.okbtn, 0, wx.EXPAND)
        sizer_right.Add(self.cnclbtn, 0, wx.EXPAND|wx.TOP, border=cw.wins(5))

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.values, 1, wx.EXPAND|wx.ALL, border=cw.wins(5))
        sizer.Add(sizer_right, 0, flag=wx.EXPAND|wx.RIGHT|wx.TOP|wx.BOTTOM, border=cw.wins(5))

        self.SetSizer(sizer)
        sizer.Fit(self)
        self.Layout()
Ejemplo n.º 16
0
                                def func():
                                    choices = (
                                        (u"置換", wx.ID_YES, cw.wins(80)),
                                        (u"名前変更", wx.ID_DUPLICATE,
                                         cw.wins(80)),
                                        (u"スキップ", wx.ID_NO, cw.wins(80)),
                                        (u"中止", wx.ID_CANCEL, cw.wins(80)),
                                    )
                                    dlg2 = message.Message(
                                        dlg,
                                        cw.cwpy.msgs["message"],
                                        s,
                                        mode=3,
                                        choices=choices)
                                    cw.cwpy.frame.move_dlg(dlg2)
                                    ret = dlg2.ShowModal()
                                    dlg2.Destroy()
                                    if wx.GetKeyState(wx.WXK_SHIFT):
                                        allret[0] = ret

                                    return ret
Ejemplo n.º 17
0
    def __init__(self, parent, title, items):
        wx.Dialog.__init__(self, parent, -1, title)
        self.cwpy_debug = False
        self.items = items

        self.buttons = []
        for t in self.items:
            if len(t) == 3:
                name, _desc, _func = t
                enable = True
            else:
                name, _desc, _func, enable = t
            btn = cw.cwpy.rsrc.create_wxbutton(self, -1, (-1, cw.wins(24)), name=name)
            btn.Enable(enable)
            self.buttons.append(btn)

        self.panel = wx.Panel(self, -1, style=wx.BORDER)
        self.desc = wx.StaticText(self.panel, -1, size=cw.wins((210, 150)), style=wx.ST_NO_AUTORESIZE)
        self.desc.SetFont(cw.cwpy.rsrc.get_wxfont("datadesc", pixelsize=cw.wins(14)))

        self.btn_cncl = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_CANCEL, (-1, cw.wins(23)), cw.cwpy.msgs["cancel"])
        self._bind()
        self._do_layout()
Ejemplo n.º 18
0
    def _do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_panel = wx.BoxSizer(wx.HORIZONTAL)

        sizer_panel.Add(self.leftbtn, 0, 0, 0)
        sizer_panel.Add((0, 0), 1, 0, 0)
        sizer_panel.Add(self.closebtn, 0, wx.TOP | wx.BOTTOM, cw.wins(3))
        sizer_panel.Add((0, 0), 1, 0, 0)
        sizer_panel.Add(self.rightbtn, 0, 0, 0)
        self.panel.SetSizer(sizer_panel)

        sizer_1.Add(self.toppanel, 1, 0, 0)
        sizer_1.Add(self.panel, 0, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
Ejemplo n.º 19
0
    def _do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)

        sizer_1.Add(cw.wins((0, 10)), 0, 0, 0)
        sizer_1.Add(self.gauge, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, cw.wins(10))

        if self.btn_cncl:
            sizer_1.Add(cw.wins((0, 24)), 0, 0, cw.wins(0))
            sizer_1.Add(self.btn_cncl, 0, wx.ALIGN_RIGHT | wx.LEFT | wx.RIGHT,
                        cw.wins(10))
        else:
            sizer_1.Add(cw.wins((0, 30)), 0, 0, cw.wins(0))

        self.SetSizer(sizer_1)
        self.Layout()
Ejemplo n.º 20
0
    def __init__(self, parent, yadoname):
        wx.Dialog.__init__(self, parent, -1, u"拠点の逆変換",
                           style=wx.CAPTION|wx.SYSTEM_MENU|wx.CLOSE_BOX)
        self.cwpy_debug = False
        self.message = u"%s を逆変換し、\n新規作成したフォルダへ格納します。" % (yadoname)
        dc = wx.ClientDC(self)
        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        dc.SetFont(font)
        w, _h, _lh = dc.GetMultiLineTextExtent(self.message)
        self.SetClientSize((w + cw.wins(50), cw.wins(156)))

        self.targetengine = 1.50
        self.dstpath = cw.cwpy.setting.unconvert_targetfolder

        self.folder = wx.TextCtrl(self, size=(-1, -1))
        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        self.folder.SetFont(font)
        self.folder.SetValue(self.dstpath)

        s = ((u"%s のデータをCardWirth用に逆変換します。" +
              u"\n変換先のフォルダを選択してください。") % (yadoname))
        self.reffolder = cw.util.create_fileselection(self, self.folder, s, seldir=True, getbasedir=os.getcwdu, winsize=True)
        font = cw.cwpy.rsrc.get_wxfont("button", pixelsize=cw.wins(14))
        self.reffolder.SetFont(font)

        choices = [u"CardWirth 1.50",
                   u"CardWirth 1.30",
                   u"CardWirth 1.29",
                   u"CardWirth 1.28"]
        self.target = wx.Choice(self, size=(-1, -1), choices=choices)
        font = cw.cwpy.rsrc.get_wxfont("combo", pixelsize=cw.wins(16))
        self.target.SetFont(font)
        self.target.Select(0)

        self.okbtn = cw.cwpy.rsrc.create_wxbutton(self, -1,
                                                        cw.wins((100, 30)), cw.cwpy.msgs["decide"])
        self.cnclbtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_CANCEL,
                                                        cw.wins((100, 30)), cw.cwpy.msgs["entry_cancel"])
        self._do_layout()
        self._bind()
Ejemplo n.º 21
0
def to_negative_for_wxcard(wxbmp, framewidth=0):
    """色反転したwx.Bitmapを返す。
    カード画像用なので外枠1ピクセルは色反転しない。
    wxbmp: wx.Bitmap
    framewidth: 外枠の幅。現在は1.50に合わせて外枠無し(0)
    """
    w, h = wxbmp.GetWidth(), wxbmp.GetHeight()

    dc = wx.MemoryDC()
    image = wx.EmptyBitmap(w, h)
    dc.SelectObject(image)
    dc.DrawBitmap(wxbmp, cw.wins(0), cw.wins(0))
    if cw.wins(1 + framewidth * 2) <= w and cw.wins(1 + framewidth * 2) <= h:
        x, y, w, h = wx.Rect(cw.wins(framewidth), cw.wins(framewidth),
                             w - cw.wins(framewidth * 2),
                             h - cw.wins(framewidth * 2))
        sourcedc = wx.MemoryDC()
        sourcedc.SelectObject(wxbmp)
        dc.Blit(x, y, w, h, sourcedc, x, y, wx.INVERT)
        sourcedc.SelectObject(wx.NullBitmap)
    dc.SelectObject(wx.NullBitmap)
    return image
Ejemplo n.º 22
0
    def __init__(self,
                 parent,
                 title,
                 message,
                 maximum=100,
                 minimum=0,
                 cancelable=False,
                 width_noscale=300):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           title,
                           style=wx.DEFAULT_DIALOG_STYLE)
        self.cwpy_debug = False
        self.SetClientSize(cw.wins((width_noscale, 60)))
        self.EnableCloseButton(cancelable)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.text = message
        self.minimum = minimum
        self.maximum = maximum
        self.cancel = False
        self.gauge = wx.Gauge(self,
                              -1,
                              range=self.maximum - self.minimum,
                              size=(-1, cw.wins(20)),
                              style=wx.GA_HORIZONTAL | wx.GA_SMOOTH)

        if cancelable:
            self.btn_cncl = cw.cwpy.rsrc.create_wxbutton(
                self, -1, cw.wins((80, 30)), u"中止")
            self.SetClientSize(
                (cw.wins(width_noscale + 20),
                 cw.wins(60) + self.btn_cncl.GetBestSize()[1] + cw.wins(4)))
        else:
            self.btn_cncl = None

        # layout
        self._do_layout()
        # bind
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        if self.btn_cncl:
            self.Bind(wx.EVT_BUTTON, self.OnClickCancelBtn, self.btn_cncl)
Ejemplo n.º 23
0
    def _do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)

        sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_2.AddStretchSpacer(1)
        sizer_2.Add((cw.wins(0), self._textheight + cw.wins(24)), 0, 0, 0)
        sizer_2.Add(self.createdirbtn, 0, wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER,
                    cw.wins(10))
        sizer_1.Add(sizer_2, 0, wx.EXPAND, wx.LEFT | wx.RIGHT, cw.wins(10))

        sizer_1.Add(self.tree, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, cw.wins(8))

        sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_3.AddStretchSpacer(1)
        for i, button in enumerate(self.buttons):
            sizer_3.Add(button, 0, 0, 0)
            sizer_3.AddStretchSpacer(1)

        sizer_1.Add(sizer_3, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, cw.wins(12))

        self.SetSizer(sizer_1)
        self.Layout()
Ejemplo n.º 24
0
    def __do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_panel = wx.BoxSizer(wx.HORIZONTAL)
        sizer_toppanel = wx.BoxSizer(wx.VERTICAL)
        sizer_topbar = wx.BoxSizer(wx.HORIZONTAL)

        # トップバー
        sizer_topbar.Add((0, 0), 1, 0, cw.wins(0))
        sizer_topbar.Add(self.combo, 0, 0, cw.wins(0))
        sizer_toppanel.Add(sizer_topbar, 0, wx.EXPAND, cw.wins(0))
        sizer_toppanel.Add(cw.wins((0, 3)), 0, wx.EXPAND, cw.wins(0))
        sizer_toppanel.Add(self.richtextctrl, 1, wx.EXPAND, cw.wins(0))
        self.toppanel.SetSizer(sizer_toppanel)

        sizer_panel.Add(self.leftbtn, 0, 0, cw.wins(0))
        sizer_panel.Add((0, 0), 1, 0, cw.wins(0))
        sizer_panel.Add(self.closebtn, 0, wx.TOP|wx.BOTTOM, cw.wins(3))
        sizer_panel.Add((0, 0), 1, 0, cw.wins(0))
        sizer_panel.Add(self.rightbtn, 0, 0, cw.wins(0))
        self.panel.SetSizer(sizer_panel)

        sizer_1.Add(self.toppanel, 1, wx.EXPAND, cw.wins(0))
        sizer_1.Add(self.panel, 0, wx.EXPAND, cw.wins(0))
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
Ejemplo n.º 25
0
 def OnPaint(self, event):
     dc = wx.PaintDC(self.toppanel)
     csize = self.toppanel.GetSize()
     dc.SetBrush(wx.Brush(wx.Colour(0, 0, 128)))
     dc.DrawRectangle(0, 0, csize[0], csize[1])
     dc.SetTextForeground(wx.LIGHT_GREY)
     dc.SetFont(cw.cwpy.rsrc.get_wxfont("paneltitle", pixelsize=cw.wins(16)))
     s = cw.cwpy.msgs["instructions"]
     dc.DrawText(s, cw.wins(5), cw.wins(2))
     s = cw.cwpy.msgs["referencing_file"]
     w = dc.GetTextExtent(s)[0]
     w = w + cw.wins(5) + self.combo.GetSize()[0]
     dc.DrawText(s, self.GetClientSize()[0] - w, cw.wins(2))
     dc.SetBrush(wx.Brush(wx.LIGHT_GREY))
     dc.SetPen(wx.Pen(wx.LIGHT_GREY))
     dc.DrawRectangle(0, self.combo.GetSize()[1], csize[0], cw.wins(2))
     if not self.list2:
         dc.SetTextForeground(wx.LIGHT_GREY)
         dc.SetFont(cw.cwpy.rsrc.get_wxfont("paneltitle", pixelsize=cw.wins(20)))
         # 文字
         s = "No Text File"
         size = dc.GetTextExtent(s)
         size2 = self.toppanel.GetSize()
         pos = (size2[0]-size[0])/2, (size2[1]-size[1])/2
         dc.DrawText(s, pos[0], pos[1])
         # ボックス
         size = size[0] + cw.wins(60), size[1] + cw.wins(20)
         pos = pos[0] - cw.wins(30), pos[1] - cw.wins(10)
         cw.util.draw_box(dc, pos, size)
Ejemplo n.º 26
0
    def __init__(self, parent, name):
        # ダイアログボックス
        wx.Dialog.__init__(self, parent, -1, name, size=cw.wins((501, 290)),
                            style=wx.CAPTION|wx.SYSTEM_MENU|wx.CLOSE_BOX)
        self.cwpy_debug = False
        # panel
        self.toppanel = wx.Panel(self, -1, size=cw.wins((501, 254)))
        self.toppanel.SetBackgroundColour(wx.Colour(0, 0, 128))
        self.panel = wx.Panel(self, -1, size=(-1, cw.wins(29)))#style=wx.RAISED_BORDER)

        # rich text ctrl
        if self.list2:
            value = self.list2[self.index2]
        else:
            value = ""

        self.richtextctrl = cw.util.CWPyRichTextCtrl(self.toppanel, -1, "", size=cw.wins((550, 220)), style=wx.TE_MULTILINE|wx.NO_BORDER,
                                                     searchmenu=True)
        self.foreground = self.richtextctrl.GetForegroundColour()
        self._set_text(value)
        self.richtextctrl.SetBackgroundColour(wx.Colour(0, 0, 128))
        self.richtextctrl.SetFont(cw.cwpy.rsrc.get_wxfont("datadesc", pixelsize=cw.wins(14)))
        self.richtextctrl.SetEditable(False)
        self.richtextctrl.ShowPosition(0)

        # close
        self.closebtn = cw.cwpy.rsrc.create_wxbutton(self.panel, wx.ID_CANCEL, cw.wins((90, 23)), cw.cwpy.msgs["close"])
        # left
        bmp = cw.cwpy.rsrc.buttons["LMOVE"]
        self.leftbtn = cw.cwpy.rsrc.create_wxbutton(self.panel, wx.ID_UP, cw.wins((30, 30)), bmp=bmp, chain=True)
        # right
        bmp = cw.cwpy.rsrc.buttons["RMOVE"]
        self.rightbtn = cw.cwpy.rsrc.create_wxbutton(self.panel, wx.ID_DOWN, cw.wins((30, 30)), bmp=bmp, chain=True)
        # choice
        self.combo = wx.ComboBox(self.toppanel, size=cw.wins((140, 20)), choices=self.list, style=wx.CB_READONLY)
        self.combo.SetFont(cw.cwpy.rsrc.get_wxfont("combo", pixelsize=cw.wins(14)))
        cw.util.adjust_dropdownwidth(self.combo)

        if self.list:
            self.combo.SetSelection(self.index)

        # button enable
        self._enable_btn()
        # layout
        self.__do_layout()
        # bind
        self.Bind(wx.EVT_BUTTON, self.OnClickLeftBtn, self.leftbtn)
        self.Bind(wx.EVT_BUTTON, self.OnClickRightBtn, self.rightbtn)
        self.Bind(wx.EVT_COMBOBOX, self.OnCombobox)
        self.toppanel.Bind(wx.EVT_PAINT, self.OnPaint)

        # FIXME: ウィンドウのリサイズで正しく再描画されない。
        #        挙動が意味不明なので根本的な対処は行えていないが、
        #        以下のようにリサイズイベント中にレイアウトと
        #        再描画を行う事で回避できている。
        def resize(event):
            self.Layout()
            self.Refresh()
        self.Bind(wx.EVT_SIZE, resize)

        self.richtextctrl.Enable(bool(self.list2))
        if self.list2:
            self.richtextctrl.Show()
            self.combo.Enable()
            self.Layout()
        else:
            self.richtextctrl.Hide()
            self.combo.Disable()

        self.leftpagekeyid = wx.NewId()
        self.rightpagekeyid = wx.NewId()
        self.upkeyid = wx.NewId()
        self.downkeyid = wx.NewId()
        backid =wx.NewId()
        self.Bind(wx.EVT_MENU, self.OnCancel, id=backid)
        self.Bind(wx.EVT_MENU, self.OnClickLeftBtn, id=self.leftpagekeyid)
        self.Bind(wx.EVT_MENU, self.OnClickRightBtn, id=self.rightpagekeyid)
        self.Bind(wx.EVT_MENU, self.OnUp, id=self.upkeyid)
        self.Bind(wx.EVT_MENU, self.OnDown, id=self.downkeyid)
        seq = [
            (wx.ACCEL_CTRL, wx.WXK_LEFT, self.leftpagekeyid),
            (wx.ACCEL_CTRL, wx.WXK_RIGHT, self.rightpagekeyid),
            (wx.ACCEL_CTRL, wx.WXK_UP, self.upkeyid),
            (wx.ACCEL_CTRL, wx.WXK_DOWN, self.downkeyid),
            (wx.ACCEL_NORMAL, wx.WXK_BACK, backid),
            (wx.ACCEL_NORMAL, ord('_'), backid),
            (wx.ACCEL_CTRL, ord('C'), wx.ID_COPY),
            (wx.ACCEL_CTRL, ord('A'), wx.ID_SELECTALL),
        ]
        cw.util.set_acceleratortable(self, seq)
Ejemplo n.º 27
0
    def __init__(self, parent, name, text, mode=2, choices=None):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           name,
                           size=cw.wins((355, 120)),
                           style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLOSE_BOX)
        self.cwpy_debug = False
        self.basetext = text
        self.text = cw.util.wordwrap(text, 50)
        self.mode = mode

        dc = wx.ClientDC(self)
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(15)))
        w, h, _lineheight = dc.GetMultiLineTextExtent(self.text)
        self._textheight = h
        dw = cw.wins(349)
        dh = cw.wins(68)
        dw = max(dw, w + cw.wins(10) * 2)
        dh = max(dh, h + cw.wins(68))

        self.SetClientSize((dw, dh))

        if self.mode == 1:
            # yes and no
            self.yesbtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_OK,
                                                       cw.wins((120, 30)),
                                                       cw.cwpy.msgs["yes"])
            self.nobtn = cw.cwpy.rsrc.create_wxbutton(self, wx.ID_CANCEL,
                                                      cw.wins((120, 30)),
                                                      cw.cwpy.msgs["no"])
            self.buttons = (self.yesbtn, self.nobtn)
        elif self.mode == 2:
            # close
            self.closebtn = cw.cwpy.rsrc.create_wxbutton(
                self, wx.ID_CANCEL, cw.wins((120, 30)), cw.cwpy.msgs["close"])
            self.buttons = (self.closebtn, )
        elif self.mode == 3:
            # 任意
            self.buttons = []
            for d in choices:
                if len(d) == 4:
                    s, id, width, desc = d
                elif len(d) == 3:
                    s, id, width = d
                    desc = u""
                else:
                    s, id = d
                    desc = u""
                    width = -1

                button = cw.cwpy.rsrc.create_wxbutton(self, id,
                                                      (width, cw.wins(30)), s)
                if desc:
                    button.SetToolTipString(desc)
                self.buttons.append(button)
                button.Bind(wx.EVT_BUTTON, self.OnButton)
        else:
            assert False

        # layout
        self._do_layout()
        # bind
        self.Bind(wx.EVT_RIGHT_UP, self.OnCancel)
        for child in self.GetChildren():
            child.Bind(wx.EVT_RIGHT_UP, self.OnCancel)
        self.Bind(wx.EVT_PAINT, self.OnPaint)

        copyid = wx.NewId()
        backid = wx.NewId()
        self.Bind(wx.EVT_MENU, self.OnCancel, id=backid)
        self.Bind(wx.EVT_MENU, self.OnCopyDetail, id=copyid)
        seq = [
            (wx.ACCEL_NORMAL, wx.WXK_BACK, backid),
            (wx.ACCEL_NORMAL, ord('_'), backid),
            (wx.ACCEL_CTRL, ord('C'), copyid),
        ]
        cw.util.set_acceleratortable(self, seq)
Ejemplo n.º 28
0
 def _do_layout(self):
     sizer_1 = wx.BoxSizer(wx.VERTICAL)
     sizer_1.Add(self.toppanel, 1, wx.EXPAND, cw.wins(0))
     self.SetSizer(sizer_1)
     sizer_1.Fit(self)
     self.Layout()
Ejemplo n.º 29
0
    def draw(self, update=False):
        assert len(self.list)

        dc = select.Select.draw(self, update)
        # 背景
        path = "Table/Book"
        path = cw.util.find_resource(cw.util.join_paths(cw.cwpy.skindir, path),
                                     cw.cwpy.rsrc.ext_img)
        bmp = cw.wins(cw.util.load_wxbmp(path, can_loaded_scaledimage=True))
        bmpw = bmp.GetSize()[0]
        dc.DrawBitmap(bmp, 0, 0, False)

        header = self.list[self.index]
        self._update_restorable()
        restorable = self.restorable[self.index]
        if restorable:
            _can, members, cards = restorable
        else:
            _can = False
            members = {}
            cards = None
        # 見出し
        dc.SetTextForeground(wx.BLACK)
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgtitle", pixelsize=cw.wins(14)))
        s = cw.cwpy.msgs["adventurers_team_record"]
        w = dc.GetTextExtent(s)[0]
        dc.DrawText(s, (bmpw - w) / 2, cw.wins(25))
        # 所持金
        if header:
            s = cw.cwpy.msgs["adventurers_money"] % (header.money)
        else:
            s = cw.cwpy.msgs["adventurers_money"] % (u"---")
        w = dc.GetTextExtent(s)[0]
        dc.DrawText(s, (bmpw - w) / 2, cw.wins(60))

        # メンバ名
        if update:
            if header:
                self.names = header.get_membernames()
            else:
                self.names = []
        if len(self.names) > 3:
            n = (3, len(self.names) - 3)
        else:
            n = (len(self.names), 0)

        w = cw.wins(95)

        for index, s in enumerate(self.names):
            if members.get(header.members[index], False):
                dc.SetTextForeground((0, 0, 0))
            else:
                dc.SetTextForeground((128, 128, 128))

            s = cw.util.abbr_longstr(dc, s, cw.wins(95))
            if index < 3:
                dc.DrawLabel(
                    s,
                    wx.Rect((bmpw - w * n[0]) / 2 + w * index, cw.wins(85), w,
                            cw.wins(15)), wx.ALIGN_CENTER)
            else:
                dc.DrawLabel(
                    s,
                    wx.Rect((bmpw - w * n[1]) / 2 + w * (index - 3),
                            cw.wins(105), w, cw.wins(15)), wx.ALIGN_CENTER)

        # パーティ名
        dc.SetTextForeground((0, 0, 0))
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgtitle", pixelsize=cw.wins(20)))
        if header:
            s = header.name
        else:
            s = cw.cwpy.msgs["new_party_record"]
        w = dc.GetTextExtent(s)[0]
        dc.DrawText(s, (bmpw - w) / 2, cw.wins(40))

        # 所持カード
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgtitle", pixelsize=cw.wins(16)))
        s = cw.cwpy.msgs["backpack_record"]
        w = dc.GetTextExtent(s)[0]
        dc.DrawText(s, (bmpw - w) / 2, cw.wins(130))

        if header:
            llen = min(4, len(header.backpack))
        else:
            llen = 4
        hlen = 6
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlglist", pixelsize=cw.wins(14)))
        if header:
            backpacklist = header.backpack
            if llen * hlen < len(backpacklist):
                backpacklist = backpacklist[:llen * hlen - 1]
                backpacklist.append(cw.cwpy.msgs["history_etc"])
            w = cw.wins(84)
            y = cw.wins(150)
            for index, s in enumerate(backpacklist):
                if cards and cards[index]:
                    dc.SetTextForeground((0, 0, 0))
                else:
                    dc.SetTextForeground((128, 128, 128))
                s = cw.util.abbr_longstr(dc, s, cw.wins(84))
                ypos = y + cw.wins(16) * int(index / llen)
                xpos = index % llen
                dc.DrawLabel(
                    s,
                    wx.Rect((bmpw - w * llen) / 2 + w * xpos + cw.wins(10),
                            ypos, w, cw.wins(15)), wx.ALIGN_LEFT)

        # ページ番号
        dc.SetTextForeground((0, 0, 0))
        dc.SetFont(cw.cwpy.rsrc.get_wxfont("dlgtitle", pixelsize=cw.wins(14)))
        s = str(self.index + 1) if self.index > 0 else str(-self.index + 1)
        s = s + " / " + str(len(self.list))
        w = dc.GetTextExtent(s)[0]
        dc.DrawText(s, (bmpw - w) / 2, cw.wins(250))

        if update:
            self.enable_btn()
Ejemplo n.º 30
0
    def _do_layout(self):
        csize = self.GetClientSize()
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_1.Add(cw.wins((0, 50)), 0, 0, 0)

        dc = wx.ClientDC(self)
        font = cw.cwpy.rsrc.get_wxfont("dlgmsg", pixelsize=cw.wins(16))
        dc.SetFont(font)
        w, _h = dc.GetTextExtent(u"対象エンジン:")
        sizer_3.Add((w, 0), 0, wx.RIGHT|wx.CENTER, cw.wins(5))
        sizer_3.Add(self.target, 1, wx.CENTER, cw.wins(0))

        sizer_4.Add((w, 0), 0, wx.RIGHT|wx.CENTER, cw.wins(5))
        sizer_4.Add(self.folder, 1, wx.CENTER, cw.wins(0))
        sizer_4.Add(self.reffolder, 0, wx.CENTER|wx.EXPAND, cw.wins(0))

        sizer_1.Add(sizer_4, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, cw.wins(10))
        sizer_1.Add(cw.wins((0, 5)), 0, 0, cw.wins(0))
        sizer_1.Add(sizer_3, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, cw.wins(10))

        sizer_1.Add(cw.wins((0, 10)), 0, 0, cw.wins(0))

        margin = (csize[0] - self.okbtn.GetSize()[0] * 2) / 3
        sizer_2.Add(self.okbtn, 0, wx.LEFT, margin)
        sizer_2.Add(self.cnclbtn, 0, wx.LEFT|wx.RIGHT, margin)
        sizer_1.Add(sizer_2, 1, wx.EXPAND, cw.wins(0))

        sizer_1.Add(cw.wins((0, 10)), 0, 0, cw.wins(0))

        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()