def _do_layout(self): sizer = wx.GridBagSizer() sizer_btn = wx.BoxSizer(wx.HORIZONTAL) sizer_btn.Add(self.btn_ok, 0, 0, cw.ppis(0)) sizer_btn.Add(self.btn_cncl, 0, wx.LEFT, cw.ppis(5)) row = 0 if self.warning: sizer.Add(self.warning, pos=(row, 0), flag=wx.ALL, border=cw.ppis(5)) row += 1 sizer.Add(self.note, pos=(row, 0), flag=wx.EXPAND) sizer.AddGrowableRow(row) sizer.AddGrowableCol(0) row += 1 sizer.Add(sizer_btn, pos=(row, 0), flag=wx.ALL | wx.ALIGN_RIGHT, border=cw.ppis(5)) row += 1 self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def _do_layout(self): sizer_left = wx.BoxSizer(wx.VERTICAL) sizer_left.Add(self.events, 1, flag=wx.EXPAND) sizer_left.Add(self.showallcards, 0, flag=wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right = wx.BoxSizer(wx.VERTICAL) sizer_right.Add(self.openbtn, 0, wx.EXPAND) sizer_right.Add(self.startbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right.AddStretchSpacer(1) sizer_right.Add(self.cnclbtn, 0, wx.EXPAND) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(sizer_left, 1, wx.EXPAND | wx.ALL, border=cw.ppis(5)) sizer.Add(sizer_right, 0, flag=wx.EXPAND | wx.RIGHT | wx.TOP | wx.BOTTOM, border=cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def _do_layout(self): sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.tc, 0, 0, cw.ppis(0)) sizer.Add(self.btn_ok, 0, wx.CENTER|wx.ALL, cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent, conv): wx.Panel.__init__(self, parent) base = cw.data.xml2etree(u"Data/SkinBase/Skin.xml") basemsgs = base.find("Messages") self.grid = wx.grid.Grid(self, -1, size=cw.ppis((200, 200)), style=wx.BORDER) self.grid.CreateGrid(len(basemsgs) + 6 + 2 + 4, 1) self.grid.SetRowLabelSize(cw.ppis(150)) self.grid.SetRowLabelAlignment(wx.LEFT, wx.CENTER) self.grid.SetColLabelValue(0, u"メッセージ(\\n=改行, \\\\=\\)") self.grid.SetColSize(0, cw.ppis(380)) row = 0 for e in basemsgs: if e.text: s = cw.util.encodewrap(e.text) else: s = u"(空のテキスト)" self.grid.SetRowLabelValue(row, s) row += 1 for e in base.getfind("Natures")[:6]: e = e.find("Description") s = cw.util.encodewrap(e.text) self.grid.SetRowLabelValue(row, s) row += 1 e = base.find("Periods/Period[3]/Coupons/Coupon") self.grid.SetRowLabelValue(row, cw.util.encodewrap(e.text)) row += 1 e = base.find("Periods/Period[4]/Coupons/Coupon") self.grid.SetRowLabelValue(row, cw.util.encodewrap(e.text)) row += 1 basegameover = cw.data.xml2etree( u"Data/SkinBase/Resource/Xml/GameOver/01_GameOver.xml") e = basegameover.find("Events/Event//Talk") self.grid.SetRowLabelValue(row, e.find("Text").text) row += 1 self.grid.SetRowLabelValue(row, e.find("Contents/Post[1]").get("name")) row += 1 self.grid.SetRowLabelValue(row, e.find("Contents/Post[2]").get("name")) row += 1 self.grid.SetRowLabelValue(row, e.find("Contents/Post[4]").get("name")) row += 1 self.set_values(conv) self._do_layout()
def __init__(self, parent, conv): wx.Panel.__init__(self, parent) baseconv = cw.skin.convert.Converter("") self.grid = wx.grid.Grid(self, -1, size=cw.ppis((200, 200))) self.grid.CreateGrid(0, 2) self.grid.SetRowLabelAlignment(wx.LEFT, wx.CENTER) self.grid.SetColLabelValue(0, u"名称") self.grid.SetColLabelValue(1, u"解説(\\n=改行, \\\\=\\)") self.grid.SetColSize(0, cw.ppis(80)) self.grid.SetColSize(1, cw.ppis(300)) row = 0 self.grid.InsertRows(row, len(baseconv.actioncard), False) for key in cw.util.sorted_by_attr(baseconv.actioncard.iterkeys()): e = baseconv.actioncard[key] name = e.gettext("Property/Name", "") self.grid.SetRowLabelValue(row, u"アクション:" + name) row += 1 self.grid.InsertRows(row, len(baseconv.specialcard), False) for key in cw.util.sorted_by_attr(baseconv.specialcard.iterkeys()): e = baseconv.specialcard[key] name = e.gettext("Property/Name", "") self.grid.SetRowLabelValue(row, u"特殊カード:" + name) row += 1 def put_areacards(table, row): for key in cw.util.sorted_by_attr(table.iterkeys()): data = table[key] areaname = data.gettext("Property/Name", "") cards = data.getfind("MenuCards") self.grid.InsertRows(row, len(cards), False) for e in cards: name = e.gettext("Property/Name", "") self.grid.SetRowLabelValue(row, areaname + ": " + name) row += 1 return row row = put_areacards(baseconv.title, row) row = put_areacards(baseconv.yado, row) row = put_areacards(baseconv.scenario, row) row = put_areacards(baseconv.gameover, row) self.set_values(conv) self.grid.SetRowLabelSize(wx.grid.GRID_AUTOSIZE) self._do_layout() baseconv.dispose()
def _do_layout(self): sizer_gb = wx.GridBagSizer() bsizer_base = wx.StaticBoxSizer(self.box_base, wx.VERTICAL) bsizer_info = wx.StaticBoxSizer(self.box_info, wx.VERTICAL) gbsizer_base = wx.GridBagSizer() def add_base(ctrl, pos): sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(ctrl, 1, wx.ALIGN_CENTER_VERTICAL, 0) gbsizer_base.Add(sizer, pos=pos, flag=wx.ALL | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=cw.ppis(3)) add_base(self.exelabel, pos=(0, 0)) add_base(self.exectrl, pos=(0, 1)) add_base(self.exeref, pos=(0, 2)) add_base(self.datalabel, pos=(1, 0)) add_base(self.datactrl, pos=(1, 1)) add_base(self.dataref, pos=(1, 2)) add_base(self.scenariolabel, pos=(2, 0)) add_base(self.scenarioctrl, pos=(2, 1)) add_base(self.scenarioref, pos=(2, 2)) add_base(self.yadolabel, pos=(3, 0)) add_base(self.yadoctrl, pos=(3, 1)) add_base(self.yadoref, pos=(3, 2)) gbsizer_base.AddGrowableCol(1, proportion=1) bsizer_base.Add(gbsizer_base, 0, wx.EXPAND, cw.ppis(5)) bsizer_info.Add(self.info, 1, wx.EXPAND, cw.ppis(5)) sizer_gb.Add(bsizer_base, pos=(0, 0), flag=wx.BOTTOM | wx.EXPAND, border=cw.ppis(5)) sizer_gb.Add(bsizer_info, pos=(1, 0), flag=wx.EXPAND, border=cw.ppis(0)) sizer_gb.AddGrowableRow(1) sizer_gb.AddGrowableCol(0) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(sizer_gb, 1, wx.ALL | wx.EXPAND, cw.ppis(10)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def add_info(ctrl, pos, colspan=1, rowspan=1, expand=True, growable=False): sizer = wx.BoxSizer(wx.HORIZONTAL) growable = wx.EXPAND if growable else 0 sizer.Add(ctrl, 1, wx.ALIGN_CENTER_VERTICAL | growable, cw.ppis(0)) span = wx.GBSpan(colspan=colspan, rowspan=rowspan) expand = wx.EXPAND if expand else 0 gbsizer_info.Add(sizer, pos=pos, span=span, flag=wx.ALL | expand | wx.ALIGN_CENTER_VERTICAL, border=cw.ppis(3))
def _do_layout(self): sizer_right = wx.BoxSizer(wx.VERTICAL) sizer_right.AddStretchSpacer(1) sizer_right.Add(self.okbtn, 0, wx.BOTTOM | wx.EXPAND, cw.ppis(5)) sizer_right.Add(self.cnclbtn, 0, wx.EXPAND) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.cards, 1, wx.EXPAND | wx.ALL, border=cw.ppis(5)) sizer.Add(sizer_right, 0, flag=wx.EXPAND | wx.RIGHT | wx.TOP | wx.BOTTOM, border=cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent, currentfpath, showhiddencards): wx.Dialog.__init__(self, parent, -1, u"実行するイベントの選択", style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLOSE_BOX | wx.RESIZE_BORDER) self.cwpy_debug = True self.events = EventList(self, cw.ppis((250, 300)), currentfpath, showhiddencards) self.showhiddencards = showhiddencards self.showallcards = wx.CheckBox(self, -1, u"表示フラグがオフのカードも表示する") self.showallcards.SetValue(self.showhiddencards) self.start_event = False # 開く self.openbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, -1, (-1, -1), cw.cwpy.msgs["open_event"]) # 実行 self.startbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, -1, (-1, -1), cw.cwpy.msgs["run_event"]) # 中止 self.cnclbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, wx.ID_CANCEL, (-1, -1), cw.cwpy.msgs["cancel"]) self._changed_selection() self._bind() self._do_layout()
def __init__(self, parent, log): wx.Dialog.__init__(self, parent, -1, u"エラーログ") self.cwpy_debug = True self.tc = wx.TextCtrl( self, -1, log, size=cw.ppis((250, 200)), style=wx.TE_MULTILINE|wx.TE_READONLY) self.btn_ok = wx.Button(self, wx.ID_OK, u"OK") self._do_layout()
def add_base(ctrl, pos): sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(ctrl, 1, wx.ALIGN_CENTER_VERTICAL, 0) gbsizer_base.Add(sizer, pos=pos, flag=wx.ALL | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=cw.ppis(3))
def __init__(self, parent, title, message, maximum=100, minimum=0, cancelable=False, width=280): wx.Dialog.__init__(self, parent, -1, title, style=wx.DEFAULT_DIALOG_STYLE) self.cwpy_debug = False self.SetClientSize(cw.ppis((width + 20, 60))) self.EnableCloseButton(cancelable) self.SetDoubleBuffered(True) self.cancel = False self.text = message self.minimum = minimum self.maximum = maximum self.gauge = wx.Gauge(self, -1, range=self.maximum - self.minimum, size=(-1, cw.ppis(20)), style=wx.GA_HORIZONTAL | wx.GA_SMOOTH) self.message = wx.StaticText(self, -1, self.text, size=(-1, -1), style=wx.ALIGN_RIGHT) self.message.SetDoubleBuffered(True) if cancelable: self.btn_cncl = wx.Button(self, -1, u"中止") self.SetClientSize( (cw.ppis(width + 20), cw.ppis(60) + self.btn_cncl.GetBestSize()[1] + cw.ppis(5))) else: self.btn_cncl = None # bind self._bind() # layout self._do_layout()
def _do_layout(self): sizer = wx.BoxSizer(wx.VERTICAL) gbsizer_info = wx.GridBagSizer() def add_info(ctrl, pos, colspan=1, rowspan=1, expand=True, growable=False): sizer = wx.BoxSizer(wx.HORIZONTAL) growable = wx.EXPAND if growable else 0 sizer.Add(ctrl, 1, wx.ALIGN_CENTER_VERTICAL | growable, cw.ppis(0)) span = wx.GBSpan(colspan=colspan, rowspan=rowspan) expand = wx.EXPAND if expand else 0 gbsizer_info.Add(sizer, pos=pos, span=span, flag=wx.ALL | expand | wx.ALIGN_CENTER_VERTICAL, border=cw.ppis(3)) add_info(self.typelabel, pos=(0, 0)) add_info(self.typectrl, pos=(0, 1), colspan=2) add_info(self.namelabel, pos=(1, 0)) add_info(self.namectrl, pos=(1, 1), colspan=2) add_info(self.authorlabel, pos=(2, 0)) add_info(self.authorctrl, pos=(2, 1), colspan=2) add_info(self.desclabel, pos=(3, 0)) add_info(self.descctrl, pos=(3, 1), colspan=2, growable=True) add_info(self.initialcashlabel, pos=(4, 0)) add_info(self.initialcash, pos=(4, 1), expand=False) gbsizer_info.AddGrowableCol(1) gbsizer_info.AddGrowableRow(3) vsizer = wx.BoxSizer(wx.VERTICAL) vsizer.Add(self.vocation120, 0, wx.TOP, cw.ppis(3)) add_info(vsizer, pos=(4, 2), colspan=1, rowspan=2, expand=False) sizer.Add(gbsizer_info, 1, wx.EXPAND, cw.ppis(0)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def _do_layout(self): sizer_top = wx.BoxSizer(wx.VERTICAL) sizer_top.Add(self.text, 0, wx.BOTTOM, cw.ppis(10)) sizer_top.Add(self.clear, 0, wx.ALIGN_RIGHT, cw.ppis(0)) sizer_btn = wx.BoxSizer(wx.HORIZONTAL) sizer_btn.Add(self.okbtn, 1, 0, cw.ppis(0)) sizer_btn.Add(cw.ppis((10, 0)), 0, 0, cw.ppis(0)) sizer_btn.Add(self.cnclbtn, 1, 0, cw.ppis(0)) sizer_v1 = wx.BoxSizer(wx.VERTICAL) sizer_v1.Add(sizer_top, 0, 0, cw.ppis(0)) sizer_v1.Add(sizer_btn, 0, wx.ALIGN_RIGHT|wx.TOP, cw.ppis(10)) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(sizer_v1, 0, wx.ALL, cw.ppis(10)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent, conv): wx.Panel.__init__(self, parent) base = cw.data.xml2etree(u"Data/SkinBase/Skin.xml") basesounds = base.find("Sounds") self.grid = wx.grid.Grid(self, -1, size=cw.ppis((200, 200)), style=wx.BORDER) self.grid.CreateGrid(len(basesounds), 1) self.grid.SetRowLabelAlignment(wx.LEFT, wx.CENTER) self.grid.SetColLabelValue(0, u"ファイル名(拡張子を除く)") self.grid.SetColSize(0, cw.ppis(170)) for row, e in enumerate(basesounds): self.grid.SetRowLabelValue(row, e.text) self.set_values(conv) self.grid.SetRowLabelSize(wx.grid.GRID_AUTOSIZE) self._do_layout()
def __init__(self, parent): wx.Panel.__init__(self, parent) # スキンタイプ一覧 self.types = set([ "MedievalFantasy", "Modern", "Monsters", "Oedo", "School", "ScienceFiction", ]) if os.path.exists(u"Data/Skin"): for name in os.listdir(u"Data/Skin"): path = cw.util.join_paths(u"Data/Skin", name) skinpath = cw.util.join_paths(u"Data/Skin", name, u"Skin.xml") if os.path.isdir(path) and os.path.isfile(skinpath): e = cw.data.xml2element(skinpath, "Property") self.types.add(e.gettext("Type", "")) self.types = list(self.types) cw.util.sort_by_attr(self.types) # 種別 self.typelabel = wx.StaticText(self, -1, u"種別") self.typectrl = wx.ComboBox(self, choices=self.types, style=wx.CB_DROPDOWN) # 名前 self.namelabel = wx.StaticText(self, -1, u"名前") self.namectrl = wx.TextCtrl(self) # 作者 self.authorlabel = wx.StaticText(self, -1, u"作者") self.authorctrl = wx.TextCtrl(self) # 解説 self.desclabel = wx.StaticText(self, -1, u"解説") self.descctrl = wx.TextCtrl(self, size=cw.ppis((400, 100)), style=wx.TE_MULTILINE) # 初期資金 self.initialcashlabel = wx.StaticText(self, -1, u"初期資金") self.initialcash = wx.SpinCtrl(self, -1, max=999999, min=0) # カードの適性計算をCardWirth 1.20に合わせるか self.vocation120 = wx.CheckBox(self, -1, u"CardWirth 1.20相当のカード適性計算を行う") self._do_layout() self._bind()
def _do_layout(self): sizer = wx.BoxSizer(wx.VERTICAL) sizer_btn = wx.BoxSizer(wx.HORIZONTAL) sizer_info = wx.StaticBoxSizer(self.box_info, wx.VERTICAL) sizer_info.Add(self.info, 1, wx.EXPAND, cw.ppis(0)) sizer_panel = wx.BoxSizer(wx.VERTICAL) sizer_panel.Add(sizer_info, 1, wx.ALL | wx.EXPAND, cw.ppis(10)) self.pane_info.SetSizer(sizer_panel) sizer_btn.Add(self.warning, 0, wx.ALL, cw.ppis(3)) sizer_btn.AddStretchSpacer(1) sizer_btn.Add(self.btn_ok, 0, 0, cw.ppis(0)) sizer_btn.Add(self.btn_cncl, 0, wx.LEFT, cw.ppis(5)) #|wx.ALIGN_RIGHT sizer.Add(self.note, 1, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, cw.ppis(3)) sizer.Add(sizer_btn, 0, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, cw.ppis(3)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent, size, currentfpath, showhiddencards): """イベントリストのインスタンスを生成する。 currentfpath: 最初から選択状態にするエリア等のファイルパス。 """ wx.TreeCtrl.__init__(self, parent, -1, size=size, style=wx.TR_SINGLE | wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE) self.SetDoubleBuffered(True) self._showallcards = showhiddencards self.imglist = wx.ImageList(cw.ppis(16), cw.ppis(16)) imgidx_area = self.imglist.Add(cw.cwpy.rsrc.debugs["AREA"]) imgidx_battle = self.imglist.Add(cw.cwpy.rsrc.debugs["BATTLE"]) imgidx_package = self.imglist.Add(cw.cwpy.rsrc.debugs["PACK"]) imgidx_skill = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_SKILL"]) imgidx_item = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_ITEM"]) imgidx_beast = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_BEAST"]) self.imgidx_menucard = self.imglist.Add(cw.cwpy.rsrc.debugs["CARD"]) self.imgidx_event = self.imglist.Add(cw.cwpy.rsrc.debugs["EVENT"]) self.imgidx_ignition = self.imglist.Add( cw.cwpy.rsrc.debugs["IGNITION"]) self.imgidx_keycode = self.imglist.Add(cw.cwpy.rsrc.debugs["KEYCODE"]) self.imgidx_round = self.imglist.Add(cw.cwpy.rsrc.debugs["ROUND"]) # プレイヤーカードのキーコード・死亡時イベント(Wsn.2) self.imgidx_cast = self.imglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_CAST"]) self.SetImageList(self.imglist) self.root = self.AddRoot(cw.cwpy.sdata.name) def append_item(getids, getname, getdata, getfpath, imgidx): keys = getids() cw.util.sort_by_attr(keys) for resid in keys: if resid < 0: continue name = getname(resid) if name is None: continue fpath = getfpath(resid) if fpath is None: continue item = self.AppendItem(self.root, name, imgidx) self.SetItemPyData(item, (name, resid, getdata, getfpath, False)) if os.path.normcase(currentfpath) == os.path.normcase(fpath): self._expand_item(item) self.Expand(item) self.SelectItem(item, True) else: self.AppendItem(item, u"読込中...") append_item(cw.cwpy.sdata.get_areaids, cw.cwpy.sdata.get_areaname, cw.cwpy.sdata.get_areadata, cw.cwpy.sdata.get_areafpath, imgidx_area) append_item(cw.cwpy.sdata.get_battleids, cw.cwpy.sdata.get_battlename, cw.cwpy.sdata.get_battledata, cw.cwpy.sdata.get_battlefpath, imgidx_battle) append_item(cw.cwpy.sdata.get_packageids, cw.cwpy.sdata.get_packagename, cw.cwpy.sdata.get_packagedata, cw.cwpy.sdata.get_packagefpath, imgidx_package) append_item(cw.cwpy.sdata.get_skillids, cw.cwpy.sdata.get_skillname, cw.cwpy.sdata.get_skilldata, cw.cwpy.sdata.get_skillfpath, imgidx_skill) append_item(cw.cwpy.sdata.get_itemids, cw.cwpy.sdata.get_itemname, cw.cwpy.sdata.get_itemdata, cw.cwpy.sdata.get_itemfpath, imgidx_item) append_item(cw.cwpy.sdata.get_beastids, cw.cwpy.sdata.get_beastname, cw.cwpy.sdata.get_beastdata, cw.cwpy.sdata.get_beastfpath, imgidx_beast) selitem = self.GetSelection() if selitem: self.ScrollTo(selitem) self._bind()
def __init__(self, parent, mlist, selected=-1): wx.Dialog.__init__(self, parent, -1, u"キャラクターの状態の編集", style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLOSE_BOX) self.cwpy_debug = True self.SetDoubleBuffered(True) self.pcards = mlist self.statuses = [] self.statuses_backup = [] for pcard in self.pcards: self.statuses.append(Status(pcard)) self.statuses_backup.append(Status(pcard)) self.life = StatusButton(self, 0, self._is_dead, size=cw.ppis((45, 45))) self.poison = StatusButton(self, 1, self._is_dead, size=cw.ppis((45, 45))) self.paralyze = StatusButton(self, 2, self._is_dead, size=cw.ppis((45, 45))) self.mentality = StatusButton(self, 3, self._is_dead, size=cw.ppis((45, 60))) self.bind = StatusButton(self, 4, self._is_dead, size=cw.ppis((45, 45))) self.silence = StatusButton(self, 5, self._is_dead, size=cw.ppis((45, 45))) self.faceup = StatusButton(self, 6, self._is_dead, size=cw.ppis((45, 45))) self.antimagic = StatusButton(self, 7, self._is_dead, size=cw.ppis((45, 45))) self.action = StatusButton(self, 8, self._is_dead, size=cw.ppis((45, 60))) self.avoid = StatusButton(self, 9, self._is_dead, size=cw.ppis((45, 60))) self.resist = StatusButton(self, 10, self._is_dead, size=cw.ppis((45, 60))) self.defense = StatusButton(self, 11, self._is_dead, size=cw.ppis((45, 60))) self.statusbtns = [ self.life, self.poison, self.paralyze, self.mentality, self.bind, self.silence, self.faceup, self.antimagic, self.action, self.avoid, self.resist, self.defense ] # 対象者 self.targets = [u"全員"] for pcard in self.pcards: self.targets.append(pcard.get_name()) self.target = wx.ComboBox(self, -1, choices=self.targets, style=wx.CB_READONLY) self.target.Select(max(selected, -1) + 1) # smallleft bmp = cw.cwpy.rsrc.buttons["LSMALL_dbg"] self.leftbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, cw.ppis((20, 20)), bmp=bmp) # smallright bmp = cw.cwpy.rsrc.buttons["RSMALL_dbg"] self.rightbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, cw.ppis((20, 20)), bmp=bmp) # 全快 self.rcvbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"全快") # 復旧 self.restorebtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"復旧") # 決定 self.okbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, -1, (-1, -1), cw.cwpy.msgs["entry_decide"]) # 中止 self.cnclbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, wx.ID_CANCEL, (-1, -1), cw.cwpy.msgs["entry_cancel"]) self._bind() self._do_layout() self._select_target()
def _do_layout(self): sizer_1 = wx.BoxSizer(wx.VERTICAL) sizer_1.Add(cw.ppis((0, 10)), 0, 0, cw.ppis(0)) sizer_1.Add(self.gauge, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, cw.ppis(10)) sizer_1.Add(cw.ppis((0, 4)), 0, 0, cw.ppis(0)) sizer_1.Add(self.message, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, cw.ppis(10)) if self.btn_cncl: sizer_1.Add(cw.ppis((0, 5)), 0, 0, cw.ppis(0)) sizer_1.Add(self.btn_cncl, 0, wx.ALIGN_RIGHT | wx.LEFT | wx.RIGHT, cw.ppis(10)) else: sizer_1.Add(cw.ppis((0, 30)), 0, 0, cw.ppis(0)) self.SetSizer(sizer_1) self.Layout()
def _do_layout(self): sizer_cards = wx.StaticBoxSizer(self.cardsbox, wx.VERTICAL) sizer_cards.Add(self.scenario, 0, wx.EXPAND | wx.ALL, cw.ppis(5)) sizer_cards.Add(self.cards, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, cw.ppis(5)) sizer_dealtarg = wx.StaticBoxSizer(self.dealtargbox, wx.HORIZONTAL) sizer_dealtarg.Add(self.dealtarg, 1, wx.ALL, cw.ppis(5)) sizer_left = wx.BoxSizer(wx.VERTICAL) sizer_left.Add(sizer_cards, 1, wx.EXPAND | wx.ALL, cw.ppis(5)) sizer_left.Add(sizer_dealtarg, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, cw.ppis(5)) sizer_method = wx.StaticBoxSizer(self.methodbox, wx.HORIZONTAL) sizer_checks = wx.BoxSizer(wx.HORIZONTAL) sizer_checks.Add(self.mname, 1, wx.RIGHT, cw.ppis(5)) sizer_checks.Add(self.mdesc, 1, wx.RIGHT, cw.ppis(5)) sizer_checks.Add(self.mscenario, 1, wx.RIGHT, cw.ppis(5)) sizer_checks.Add(self.mauthor, 1) sizer_method.Add(sizer_checks, 1, wx.EXPAND | wx.ALL, cw.ppis(5)) sizer_targets = wx.StaticBoxSizer(self.targetsbox, wx.VERTICAL) sizer_targets.Add(self.targets, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, cw.ppis(5)) sizer_targets.Add(self.status, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, cw.ppis(5)) sizer_middle = wx.BoxSizer(wx.VERTICAL) sizer_middle.Add(sizer_targets, 1, wx.EXPAND | wx.BOTTOM, cw.ppis(5)) sizer_middle.Add(sizer_method, 0, wx.EXPAND) sizer_right = wx.BoxSizer(wx.VERTICAL) sizer_right.Add(self.dtlbtn, 0, wx.EXPAND) sizer_right.Add(self.dealbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right.Add(self.findbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(20)) sizer_right.Add(self.stopbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right.Add(self.updbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right.Add(self.delbtn, 0, wx.EXPAND | wx.TOP, border=cw.ppis(5)) sizer_right.AddStretchSpacer(1) sizer_right.Add(self.closebtn, 0, wx.EXPAND) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(sizer_left, 1, wx.EXPAND | wx.ALL, border=cw.ppis(5)) sizer.Add(sizer_middle, 1, wx.EXPAND | wx.RIGHT | wx.TOP | wx.BOTTOM, border=cw.ppis(5)) sizer.Add(sizer_right, 0, wx.EXPAND | wx.RIGHT | wx.TOP | wx.BOTTOM, border=cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def _do_layout(self): sizer = wx.GridSizer(1, 1) sizer.Add(self.grid, 0, wx.EXPAND | wx.ALL, cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent, ccards, selectedcard): wx.Dialog.__init__(self, parent, -1, u"選択カードの変更", style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLOSE_BOX | wx.RESIZE_BORDER) self.cwpy_debug = True self._selectedcard = selectedcard self.cards = wx.TreeCtrl(self, size=cw.ppis((250, 300)), style=wx.TR_SINGLE | wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE) self.imglist = wx.ImageList(cw.ppis(16), cw.ppis(16)) imgidx_sack = self.imglist.Add(cw.cwpy.rsrc.buttons["SACK_dbg"]) imgidx_cast = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_CAST"]) imgidx_action = self.imglist.Add(cw.cwpy.rsrc.debugs["CARD"]) imgidx_skill = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_SKILL"]) imgidx_item = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_ITEM"]) imgidx_beast = self.imglist.Add(cw.cwpy.rsrc.debugs["EVT_GET_BEAST"]) self.cards.SetImageList(self.imglist) root = self.cards.AddRoot(u"") for i, (ccardname, hand) in enumerate(ccards): item = self.cards.AppendItem(root, ccardname, imgidx_cast if 0 < i else imgidx_sack) for header in hand: if header.type == "ActionCard": icon = imgidx_action elif header.type == "SkillCard": icon = imgidx_skill elif header.type == "ItemCard": icon = imgidx_item elif header.type == "BeastCard": icon = imgidx_beast else: assert False, header.type citem = self.cards.AppendItem(item, header.name, icon) self.cards.SetItemPyData(citem, header) if header == self._selectedcard: self.cards.SelectItem(citem) if 0 < i: self.cards.Expand(item) if not self.cards.GetSelection(): self.cards.SelectItem(item) selitem = self.cards.GetSelection() if selitem: self.cards.ScrollTo(selitem) # 決定 self.okbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, wx.ID_OK, (-1, -1), cw.cwpy.msgs["decide"]) # 中止 self.cnclbtn = cw.cwpy.rsrc.create_wxbutton_dbg( self, wx.ID_CANCEL, (-1, -1), cw.cwpy.msgs["cancel"]) self._changed_selection() self._bind() self._do_layout()
def _do_layout(self): sizer_status = wx.GridBagSizer() sizer_status.Add(self.life, pos=(0, 0), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.poison, pos=(0, 1), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.paralyze, pos=(0, 2), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.mentality, pos=(1, 0), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.bind, pos=(2, 0), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.silence, pos=(2, 1), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.faceup, pos=(2, 2), flag=wx.RIGHT | wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.antimagic, pos=(2, 3), flag=wx.BOTTOM, border=cw.ppis(5)) sizer_status.Add(self.action, pos=(3, 0), flag=wx.RIGHT, border=cw.ppis(5)) sizer_status.Add(self.avoid, pos=(3, 1), flag=wx.RIGHT, border=cw.ppis(5)) sizer_status.Add(self.resist, pos=(3, 2), flag=wx.RIGHT, border=cw.ppis(5)) sizer_status.Add(self.defense, pos=(3, 3)) sizer_left = wx.BoxSizer(wx.VERTICAL) sizer_combo = wx.BoxSizer(wx.HORIZONTAL) sizer_combo.Add(self.leftbtn, 0, wx.EXPAND) sizer_combo.Add(self.target, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, border=cw.ppis(5)) sizer_combo.Add(self.rightbtn, 0, wx.EXPAND) sizer_left.Add(sizer_combo, 0, flag=wx.BOTTOM | wx.EXPAND, border=cw.ppis(5)) sizer_left.Add(sizer_status, 1, flag=wx.EXPAND) sizer_right = wx.BoxSizer(wx.VERTICAL) sizer_right.Add(self.rcvbtn, 0, wx.EXPAND) sizer_right.Add(self.restorebtn, 0, wx.EXPAND | 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.ppis(5)) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(sizer_left, 1, flag=wx.EXPAND | wx.ALL, border=cw.ppis(5)) sizer.Add(sizer_right, 0, flag=wx.EXPAND | wx.RIGHT | wx.TOP | wx.BOTTOM, border=cw.ppis(5)) self.SetSizer(sizer) sizer.Fit(self) self.Layout()
def __init__(self, parent): wx.Dialog.__init__(self, parent, -1, u"手札カードの編集", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.cwpy_debug = True self.party = cw.cwpy.ydata.party if cw.cwpy.is_playingscenario(): self.scdata = cw.cwpy.sdata self.scpath = self.scdata.fpath if os.path.isdir(self.scpath): spath = cw.util.join_paths(self.scpath, "Summary.wsm") if os.path.isfile(spath): self.scpath = spath spath = cw.util.join_paths(self.scpath, "Summary.xml") if os.path.isfile(spath): self.scpath = spath else: self.scdata = None self.scpath = "" self._find = False self.list = [] self.datalist = [] self.target_cards = {} self.target_table = {} self.cardsbox = wx.StaticBox(self, -1, u"カードの選択") self.dealtargbox = wx.StaticBox(self, -1, u"配付先") self.methodbox = wx.StaticBox(self, -1, u"照合方法") self.targetsbox = wx.StaticBox(self, -1, u"処理対象") self.scenario = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"(シナリオ未選択)") self.imglist = wx.ImageList(cw.ppis(16), cw.ppis(16)) self.imgidx_skill = self.imglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_SKILL_dbg"]) self.imgidx_item = self.imglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_ITEM_dbg"]) self.imgidx_beast = self.imglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_BEAST_dbg"]) self.cards = wx.ListCtrl(self, -1, size=cw.ppis((200, 250)), style=wx.LC_REPORT) self.cards.SetImageList(self.imglist, wx.IMAGE_LIST_SMALL) self.cards.InsertColumn(0, "ID") self.cards.InsertColumn(1, u"カード名") self.cards.InsertColumn(2, u"解説") self.cards.SetColumnWidth(0, cw.ppis(40)) self.cards.SetColumnWidth(1, cw.ppis(85)) self.cards.SetColumnWidth(2, cw.ppis(110)) self.dealtarg = wx.combo.BitmapComboBox(self, -1, style=wx.CB_READONLY) self.notcast = 0 if not (cw.cwpy.ydata.party and\ cw.cwpy.ydata.party.is_adventuring()): bmp = cw.cwpy.rsrc.buttons["DECK_dbg"] self.dealtarg.Append(u"カード置場", bmp) self.notcast += 1 if cw.cwpy.ydata.party: bmp = cw.cwpy.rsrc.buttons["SACK_dbg"] self.dealtarg.Append(u"荷物袋", bmp) self.notcast += 1 bmp = cw.cwpy.rsrc.buttons["CAST_dbg"] for member in cw.cwpy.get_pcards(): self.dealtarg.Append(member.name, bmp) # 配付先のデフォルトは荷物袋。なければカード置場 if cw.cwpy.ydata.party: self.dealtarg.SetStringSelection(u"荷物袋") else: self.dealtarg.SetStringSelection(u"カード置場") self.dtlbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"情報") self.dealbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"配付") self.findbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"検索") self.stopbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"中断") self.updbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"更新") self.delbtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, -1, (-1, -1), name=u"除去") self.closebtn = cw.cwpy.rsrc.create_wxbutton_dbg(self, wx.ID_CANCEL, (-1, -1), name=u"閉じる") self.mname = wx.CheckBox(self, -1, u"カード名") self.mdesc = wx.CheckBox(self, -1, u"解説") self.mscenario = wx.CheckBox(self, -1, u"シナリオ") self.mauthor = wx.CheckBox(self, -1, u"作者") self.timglist = wx.ImageList(cw.ppis(16), cw.ppis(16)) self.timgidx_storehouse = self.timglist.Add( cw.cwpy.rsrc.buttons["DECK_dbg"]) self.timgidx_backpack = self.timglist.Add( cw.cwpy.rsrc.buttons["SACK_dbg"]) self.timgidx_party = self.timglist.Add( cw.cwpy.rsrc.debugs["MEMBER_dbg"]) self.timgidx_yado = self.timglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_GOSSIP_dbg"]) self.timgidx_member = self.timglist.Add( cw.cwpy.rsrc.buttons["CAST_dbg"]) self.timgidx_skill = self.timglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_SKILL_dbg"]) self.timgidx_item = self.timglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_ITEM_dbg"]) self.timgidx_beast = self.timglist.Add( cw.cwpy.rsrc.debugs["EVT_GET_BEAST_dbg"]) self.targets = wx.lib.agw.customtreectrl.CustomTreeCtrl(self, -1, size=(200, -1), style=wx.BORDER|wx.TR_DEFAULT_STYLE, agwStyle=wx.TR_NO_BUTTONS|wx.TR_SINGLE|wx.TR_HIDE_ROOT|\ wx.lib.agw.customtreectrl.TR_AUTO_CHECK_CHILD|\ wx.lib.agw.customtreectrl.TR_AUTO_CHECK_PARENT) self.targets.SetImageList(self.timglist) self.status = wx.StaticText(self, -1, label=u"対象はありません", style=wx.ST_NO_AUTORESIZE) self.root = self.targets.AddRoot(u"") self.mname.SetValue(True) self.mdesc.SetValue(True) self._bind() self._do_layout() self._update_cards()
def __init__(self, parent, conv): wx.Panel.__init__(self, parent) base = cw.data.xml2etree(u"Data/SkinBase/Skin.xml") basesexes = base.getfind("Sexes") baseperiods = base.getfind("Periods") basenatures = base.getfind("Natures") basemakings = base.getfind("Makings") self.grid = wx.grid.Grid(self, -1, size=cw.ppis((200, 200)), style=wx.BORDER) self.grid.CreateGrid(len(basesexes) + len(baseperiods) +\ len(basenatures) + len(basemakings), 12) self.grid.SetRowLabelAlignment(wx.LEFT, wx.CENTER) self.grid.SetColLabelValue(0, u"名称") self.grid.SetColLabelValue(1, u"器用") self.grid.SetColLabelValue(2, u"敏捷") self.grid.SetColLabelValue(3, u"知力") self.grid.SetColLabelValue(4, u"筋力") self.grid.SetColLabelValue(5, u"生命") self.grid.SetColLabelValue(6, u"精神") self.grid.SetColLabelValue(7, u"好戦") self.grid.SetColLabelValue(8, u"社交") self.grid.SetColLabelValue(9, u"勇猛") self.grid.SetColLabelValue(10, u"慎重") self.grid.SetColLabelValue(11, u"狡猾") self.grid.SetColSize(0, cw.ppis(80)) for col in xrange(1, 7): self.grid.SetColFormatNumber(col) self.grid.SetColSize(col, cw.ppis(40)) for row in xrange(0, self.grid.GetNumberRows()): self.grid.SetCellEditor(row, col, wx.grid.GridCellNumberEditor(-99, 99)) for col in xrange(7, 12): self.grid.SetColFormatFloat(col, 2, 1) self.grid.SetColSize(col, cw.ppis(40)) for row in xrange(0, self.grid.GetNumberRows()): self.grid.SetCellEditor(row, col, wx.grid.GridCellFloatEditor(4, 1)) row = 0 for data in basesexes: self.grid.SetRowLabelValue(row, data.gettext("Name", "")) row += 1 for data in baseperiods: self.grid.SetRowLabelValue(row, data.gettext("Name", "")) row += 1 for data in basenatures: self.grid.SetRowLabelValue(row, data.gettext("Name", "")) row += 1 for data in basemakings: self.grid.SetRowLabelValue(row, data.gettext("Name", "")) row += 1 self.set_values(conv) self.grid.SetRowLabelSize(wx.grid.GRID_AUTOSIZE) self._do_layout()