def __init__(self, *args, **kwds): # begin wxGlade: Home.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.window_1 = wx.SplitterWindow(self, -1, style=wx.SP_3DBORDER | wx.SP_BORDER | wx.SP_LIVE_UPDATE | wx.WANTS_CHARS) self.window_1_pane_2 = wx.ScrolledWindow(self.window_1, -1, style=wx.TAB_TRAVERSAL | wx.WANTS_CHARS) self.window_1_pane_1 = wx.ScrolledWindow(self.window_1, -1, style=wx.TAB_TRAVERSAL | wx.WANTS_CHARS) icono = wx.EmptyIcon() icono.CopyFromBitmap( wx.Image("images/icesIcone.png", wx.BITMAP_TYPE_PNG).ConvertToBitmap()) self.SetIcon(icono) self.html = wx.html.HtmlWindow(self.window_1_pane_2) if "gtk2" in wx.PlatformInfo: self.html.SetStandardFonts() self.html.LoadPage("html/index.html") # Tool Bar self.toolbar = wx.ToolBar(self, -1) self.SetToolBar(self.toolbar) self.toolbar.AddLabelTool( 1, "Tree Help", wx.ArtProvider_GetBitmap(wx.ART_GO_HOME, wx.ART_OTHER), wx.NullBitmap, wx.ITEM_NORMAL, "Tree Help", "See the tree help") self.toolbar.AddLabelTool( 2, "Previous", wx.ArtProvider_GetBitmap(wx.ART_GO_BACK, wx.ART_OTHER), wx.NullBitmap, wx.ITEM_NORMAL, "Previous", "Previous Page") self.toolbar.AddLabelTool( 3, "Next", wx.ArtProvider_GetBitmap(wx.ART_GO_FORWARD, wx.ART_OTHER), wx.NullBitmap, wx.ITEM_NORMAL, "Next", "Next Page") # Tool Bar end # ---------------- START tree config --------------------------------------------------- # self.tree = wx.TreeCtrl(self.window_1_pane_1, -1, wx.DefaultPosition, wx.DefaultSize, wx.TR_HAS_BUTTONS) isz = (16, 16) il = wx.ImageList(isz[0], isz[1]) self.fldridx = il.Add( wx.ArtProvider_GetBitmap(wx.ART_HELP_BOOK, wx.ART_OTHER, isz)) self.fldropenidx = il.Add( wx.ArtProvider_GetBitmap(wx.ART_HELP_SIDE_PANEL, wx.ART_OTHER, isz)) self.fileidx = il.Add( wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz)) self.tipdx = il.Add( wx.ArtProvider_GetBitmap(wx.ART_TIP, wx.ART_OTHER, isz)) #smileidx = il.Add(images.Smiles.GetBitmap()) self.tree.SetImageList(il) self.il = il # NOTE: For some reason tree items have to have a data object in # order to be sorted. Since our compare just uses the labels # we don't need any real data, so we'll just use None below for # the item data. self.root = self.tree.AddRoot("Index") self.tree.SetPyData(self.root, "html/index.html") self.tree.SetItemImage(self.root, self.fldridx, wx.TreeItemIcon_Normal) self.tree.SetItemImage(self.root, self.fldropenidx, wx.TreeItemIcon_Expanded) self.Bind(wx.EVT_TOOL, self.Ontree, id=1) self.Bind(wx.EVT_TOOL, self.OnBack, id=2) self.Bind(wx.EVT_TOOL, self.OnForward, id=3) self.tree.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.tree.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) self.tree.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) self.initTree() self.tree.Expand(self.root) # ---------------- END tree config --------------------------------------------------- # self.__set_properties() self.__do_layout()
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=TITLE, pos=wx.DefaultPosition, size=wx.Size(WIN_WIDTH, WIN_HEIGH), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL & ~wx.MAXIMIZE) self.key_code = 0 self.m_status = None self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) self.data_load() bSizer5 = wx.BoxSizer(wx.HORIZONTAL) self.Bind(wx.EVT_SIZE, self.on_size) self.m_splitwin1 = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.m_splitwin1.Bind(wx.EVT_IDLE, self.m_splitwin1OnIdle) self.m_panel5 = wx.Panel(self.m_splitwin1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer6 = wx.BoxSizer(wx.VERTICAL) self.m_tree = wx.TreeCtrl(self.m_panel5, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_MULTIPLE | wx.TR_DEFAULT_STYLE) self.m_tree.Bind(wx.EVT_TREE_SEL_CHANGING, self.on_tree_change) self.m_tree.Bind(wx.EVT_KEY_DOWN, self.on_key_down) self.m_tree.Bind(wx.EVT_KEY_UP, self.on_key_up) bSizer6.Add(self.m_tree, 0, wx.ALL, 0) self.m_panel5.SetSizer(bSizer6) self.m_panel5.Layout() bSizer6.Fit(self.m_panel5) self.m_splitwin1.Initialize(self.m_panel5) bSizer5.Add(self.m_splitwin1, 1, wx.EXPAND, 0) self.m_splitwin2 = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.m_splitwin2.Bind(wx.EVT_IDLE, self.m_splitwin2OnIdle) self.m_panel6 = wx.Panel(self.m_splitwin2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer8 = wx.BoxSizer(wx.VERTICAL) self.m_dataVLC = wx.dataview.DataViewListCtrl(self.m_panel6, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) for token in THE_SLC_DVC: self.m_dataVLC.AppendTextColumn(token) self.m_dataVLC.Bind(wx.dataview.EVT_DATAVIEW_ITEM_ACTIVATED, self.on_detail_pdf) self.m_dataVLC.Bind(wx.dataview.EVT_DATAVIEW_SELECTION_CHANGED, self.on_data_select) bSizer8.Add(self.m_dataVLC, 0, wx.ALL, BOND) self.m_comboBox = wx.ComboBox(self.m_panel6, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, [], wx.TE_PROCESS_ENTER) self.m_comboBox.Bind(wx.EVT_TEXT_ENTER, self.on_search) bSizer8.Add(self.m_comboBox, 0, wx.ALL, BOND) self.m_btnSearch = wx.Button(self.m_panel6, wx.ID_ANY, u"搜索", wx.DefaultPosition, wx.DefaultSize, 0) self.m_btnSearch.Bind(wx.EVT_BUTTON, self.on_search) bSizer8.Add(self.m_btnSearch, 0, wx.ALL, BOND) self.m_panel6.SetSizer(bSizer8) self.m_panel6.Layout() bSizer8.Fit(self.m_panel6) self.m_splitwin2.Initialize(self.m_panel6) bSizer5.Add(self.m_splitwin2, 1, wx.EXPAND, BOND) self.m_splitwin3 = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D) self.m_splitwin3.Bind(wx.EVT_IDLE, self.m_splitwin3OnIdle) self.m_panel7 = wx.Panel(self.m_splitwin3, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer9 = wx.BoxSizer(wx.VERTICAL) self.m_btnDetail = wx.Button(self.m_panel7, wx.ID_ANY, u"详细信息", wx.DefaultPosition, wx.DefaultSize, 0) self.m_btnDetail.Bind(wx.EVT_BUTTON, self.on_detail) bSizer9.Add(self.m_btnDetail, 0, wx.ALL, BOND) self.m_textDetail = wx.StaticText(self.m_panel7, wx.ID_ANY, u"详细信息", wx.DefaultPosition, wx.DefaultSize, 0) self.m_textDetail.Wrap(-1) bSizer9.Add(self.m_textDetail, 0, wx.ALL, BOND) self.m_panel7.SetSizer(bSizer9) self.m_panel7.Layout() bSizer9.Fit(self.m_panel7) self.m_splitwin3.Initialize(self.m_panel7) bSizer5.Add(self.m_splitwin3, 1, wx.EXPAND, BOND) self.SetSizer(bSizer5) self.Layout() self.m_status = self.CreateStatusBar() self.m_status.SetFieldsCount(2) self.m_status.SetStatusText("名称:", 0) self.m_status.SetStatusText("数量:", 1) self.m_menubar = wx.MenuBar(0) self.m_menuFile = wx.Menu() self.m_menuItemInsert = wx.MenuItem(self.m_menuFile, ID_INSERT, text=U"插入") self.m_menuFile.Append(self.m_menuItemInsert) self.m_menuItemLoad = wx.MenuItem(self.m_menuFile, ID_RELOAD, text=u"重载") self.m_menuFile.Append(self.m_menuItemLoad) self.m_menubar.Append(self.m_menuFile, u"文件") self.SetMenuBar(self.m_menubar) # event self.Bind(wx.EVT_MENU, self.on_menu_handler) self.Centre(wx.BOTH)
def __init__(self, *args, **kwds): # begin wxGlade: cAU_VaccV01Panel.__init__ kwds["style"] = wx.TAB_TRAVERSAL wx.Panel.__init__(self, *args, **kwds) self.notebook_1 = wx.Notebook(self, -1, style=0) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, -1) self.window_1 = wx.SplitterWindow(self.notebook_1_pane_2, -1, style=wx.SP_3D | wx.SP_BORDER) self.window_1_pane_2 = wx.Panel(self.window_1, -1) self.window_1_pane_1 = wx.Panel(self.window_1, -1) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1) self.window_2 = wx.SplitterWindow(self.notebook_1_pane_1, -1, style=wx.SP_3D | wx.SP_BORDER | wx.CLIP_CHILDREN) self.window_3 = wx.SplitterWindow(self.window_2, -1, style=wx.CLIP_CHILDREN) self.window_3_pane_2 = wx.Panel(self.window_3, -1) self.window_3_pane_1 = wx.Panel(self.window_3, -1) self.window_2_pane_1 = wx.Panel(self.window_2, -1) self.sizer_20_staticbox = wx.StaticBox(self.window_3_pane_1, -1, "vaccs scheduled") self.sizer_18_staticbox = wx.StaticBox( self.window_1_pane_1, -1, "Vacc Regimes - X selected , O - not selected") self.sizer_19_staticbox = wx.StaticBox( self.window_1_pane_2, -1, "vaccinations in selected regimes") self.sizer_21_staticbox = wx.StaticBox(self.window_2_pane_1, -1, "Vacc Given") self.list_ctrl_1 = wx.ListCtrl(self.window_2_pane_1, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.tree_ctrl_2 = wx.TreeCtrl(self.window_3_pane_1, -1, style=wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER) self.label_2 = wx.StaticText(self.window_3_pane_1, -1, "vaccinations given") self.list_box_1 = wx.ListBox(self.window_3_pane_1, -1, choices=[]) self.label_3 = wx.StaticText(self.window_3_pane_2, -1, "date") self.combo_box_1 = wx.ComboBox(self.window_3_pane_2, -1, choices=[], style=wx.CB_DROPDOWN) self.checkbox_1 = wx.CheckBox(self.window_3_pane_2, -1, "mark schedule\nupto current age") self.label_9 = wx.StaticText(self.window_3_pane_2, -1, "narrative") self.text_ctrl_1 = wx.TextCtrl(self.window_3_pane_2, -1, "", style=wx.TE_MULTILINE) self.label_4 = wx.StaticText(self.window_3_pane_2, -1, "vacc") self.checkbox_dtpa = wx.CheckBox(self.window_3_pane_2, -1, "DTPa") self.checkbox_2_ipv = wx.CheckBox(self.window_3_pane_2, -1, "IPV") self.checkbox_paed_hepb = wx.CheckBox(self.window_3_pane_2, -1, "paed HepB") self.checkbox_hib = wx.CheckBox(self.window_3_pane_2, -1, "HIB") self.checkbox_7pneumo = wx.CheckBox(self.window_3_pane_2, -1, "7VPneumo") self.checkbox_varicella = wx.CheckBox(self.window_3_pane_2, -1, "varicella") self.checkbox_mmr = wx.CheckBox(self.window_3_pane_2, -1, "MMR") self.checkbox_mening_c = wx.CheckBox(self.window_3_pane_2, -1, "mening-C") self.checkbox_tick_enceph = wx.CheckBox(self.window_3_pane_2, -1, "tick-borne encephalitis") self.static_line_1 = wx.StaticLine(self.window_3_pane_2, -1) self.checkbox_opv = wx.CheckBox(self.window_3_pane_2, -1, "OPV") self.label_8 = wx.StaticText(self.window_3_pane_2, -1, " not listed", style=wx.ALIGN_RIGHT) self.combo_box_3 = wx.ComboBox(self.window_3_pane_2, -1, choices=[], style=wx.CB_DROPDOWN) self.checkbox_Dtpa = wx.CheckBox(self.window_3_pane_2, -1, "Dtpa( less antigen, >3prev)") self.checkbox_ADT = wx.CheckBox(self.window_3_pane_2, -1, "ADT") self.checkbox_tettox = wx.CheckBox(self.window_3_pane_2, -1, "Tet Tox") self.static_line_2 = wx.StaticLine(self.window_3_pane_2, -1) self.checkbox_23vpneum = wx.CheckBox(self.window_3_pane_2, -1, "23VPneum") self.checkbox_influenza = wx.CheckBox(self.window_3_pane_2, -1, "influenza") self.static_line_3 = wx.StaticLine(self.window_3_pane_2, -1) self.checkbox_paed_hepa = wx.CheckBox(self.window_3_pane_2, -1, "paed HepA") self.checkbox_adult_hepa = wx.CheckBox(self.window_3_pane_2, -1, "adult HepA") self.checkbox_adult_hepb = wx.CheckBox(self.window_3_pane_2, -1, "adult HepB") self.checkbox_typhoid = wx.CheckBox(self.window_3_pane_2, -1, "typhoid") self.checkbox_mening_acwy = wx.CheckBox(self.window_3_pane_2, -1, "mening-ACWY") self.checkbox_yellow_fever = wx.CheckBox(self.window_3_pane_2, -1, "yellow fever") self.checkbox_cholera = wx.CheckBox(self.window_3_pane_2, -1, "cholera") self.static_line_4 = wx.StaticLine(self.window_3_pane_2, -1) self.checkbox_rabies = wx.CheckBox(self.window_3_pane_2, -1, "rabies") self.checkbox_japan_enceph = wx.CheckBox(self.window_3_pane_2, -1, "Japanese Enceph") self.checkbox_qfever = wx.CheckBox(self.window_3_pane_2, -1, "Q Fever") self.label_5 = wx.StaticText(self.window_3_pane_2, -1, "batch no") self.combo_box_2 = wx.ComboBox(self.window_3_pane_2, -1, choices=[], style=wx.CB_DROPDOWN) self.checkbox_18 = wx.CheckBox(self.window_3_pane_2, -1, "save batch no") self.button_2 = wx.Button(self.window_3_pane_2, -1, "delete this no") self.label_6 = wx.StaticText(self.window_3_pane_2, -1, "site") self.radio_box_side = wx.RadioBox(self.window_3_pane_2, -1, "side", choices=["left", "right"], majorDimension=0, style=wx.RA_SPECIFY_COLS) self.radio_box_site = wx.RadioBox( self.window_3_pane_2, -1, "site", choices=["thigh", "deltoid", "gluteal"], majorDimension=0, style=wx.RA_SPECIFY_ROWS) self.radio_box_route = wx.RadioBox(self.window_3_pane_2, -1, "route", choices=["im", "sc", "po"], majorDimension=0, style=wx.RA_SPECIFY_ROWS) self.button_1 = wx.Button(self.window_3_pane_2, -1, "add vaccination /\nnarrative / override", style=wx.BU_RIGHT) self.tree_ctrl_1 = wx.TreeCtrl(self.window_1_pane_1, -1, style=wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER) self.list_ctrl_2 = wx.ListCtrl(self.window_1_pane_2, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.__set_properties() self.__do_layout() self.Bind(wx.EVT_LIST_DELETE_ITEM, self.delete_vacc_history_item, self.list_ctrl_1) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.vacc_history_item_activated, self.list_ctrl_1) self.Bind(wx.EVT_LISTBOX_DCLICK, self.double_clicked_vaccination_given, self.list_box_1) self.Bind(wx.EVT_TEXT, self.date_being_entered, self.combo_box_1) self.Bind(wx.EVT_COMBOBOX, self.select_combo_date, self.combo_box_1) self.Bind(wx.EVT_TEXT, self.narrative_text, self.text_ctrl_1) self.Bind(wx.EVT_CHECKBOX, self.combo_with_hep_b_selected, self.checkbox_hib) self.Bind(wx.EVT_TEXT, self.unlisted_text_changed, self.combo_box_3) self.Bind(wx.EVT_COMBOBOX, self.unlisted_combo_selected, self.combo_box_3) self.Bind(wx.EVT_TEXT, self.check_for_similiar_batchno, self.combo_box_2) self.Bind(wx.EVT_COMBOBOX, self.get_batchno_for_vacc, self.combo_box_2) self.Bind(wx.EVT_BUTTON, self.delete_this_batchno, self.button_2) self.Bind(wx.EVT_BUTTON, self.add_vaccination, self.button_1) self.Bind(wx.EVT_TREE_DELETE_ITEM, self.deleting_node, self.tree_ctrl_1) self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.activating_node, self.tree_ctrl_1) # end wxGlade # gnumed events gmDispatcher.connect(signal='post_patient_selection', receiver=self._on_post_patient_selection)
def __init__(self, parent=None, id=wx.ID_ANY, title="SwitchHosts!", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, cls_TaskBarIcon=None): wx.Frame.__init__(self, parent, id, title, pos, size, style) self.SetIcon(co.GetMondrianIcon()) self.SetSizeHintsSz(wx.Size(400, 300), wx.DefaultSize) self.m_menubar1 = wx.MenuBar(0) self.m_menu1 = wx.Menu() self.m_menuItem_new = wx.MenuItem(self.m_menu1, wx.ID_NEW, u"新建(&N)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_new) self.m_menu1.AppendSeparator() self.m_menuItem_export = wx.MenuItem(self.m_menu1, wx.NewId(), u"导出(&E)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_export) self.m_menuItem_import = wx.MenuItem(self.m_menu1, wx.NewId(), u"导入(&I)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_import) self.m_menu1.AppendSeparator() self.m_menuItem_exit = wx.MenuItem(self.m_menu1, wx.ID_EXIT, u"退出(&X)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_exit) self.m_menubar1.Append(self.m_menu1, u"文件(&F)") self.m_menu2 = wx.Menu() self.m_menuItem_about = wx.MenuItem(self.m_menu2, wx.ID_ABOUT, u"关于(&A)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_about) self.m_menuItem_homepage = wx.MenuItem(self.m_menu2, wx.ID_ANY, u"主页(&H)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_homepage) self.m_menuItem_feedback = wx.MenuItem(self.m_menu2, wx.ID_ANY, u"反馈建议(&F)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_feedback) self.m_menuItem_chkUpdate = wx.MenuItem(self.m_menu2, wx.ID_ANY, u"检查更新(&U)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_chkUpdate) self.m_menuItem_donate = wx.MenuItem(self.m_menu2, wx.ID_ANY, u"捐赠(&D)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_donate) self.m_menubar1.Append(self.m_menu2, u"帮助(&H)") self.SetMenuBar(self.m_menubar1) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_panel1 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer4 = wx.BoxSizer(wx.HORIZONTAL) bSizer5 = wx.BoxSizer(wx.VERTICAL) self.m_tree = wx.TreeCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.Size(200, -1), style=wx.TR_DEFAULT_STYLE|wx.NO_BORDER|wx.TR_NO_LINES\ |wx.TR_FULL_ROW_HIGHLIGHT#|wx.TR_HIDE_ROOT ) self.m_tree.SetBackgroundColour(wx.Colour(218, 223, 230)) self.m_tree_root = self.m_tree.AddRoot(u"hosts") self.m_tree_common = self.m_tree.AppendItem(self.m_tree_root, lang.trans("common_hosts")) self.m_tree_origin = self.m_tree.AppendItem(self.m_tree_root, lang.trans("origin_hosts")) self.m_tree_local = self.m_tree.AppendItem(self.m_tree_root, lang.trans("local_hosts")) self.m_tree_online = self.m_tree.AppendItem(self.m_tree_root, lang.trans("online_hosts")) self.m_tree.SetItemTextColour(self.m_tree_root, "#999999") self.m_tree.SetItemTextColour(self.m_tree_common, "#3333ff") self.m_tree.SetItemTextColour(self.m_tree_local, "#999999") self.m_tree.SetItemTextColour(self.m_tree_online, "#999999") self.m_tree.ExpandAll() bSizer5.Add(self.m_tree, 1, wx.ALL | wx.EXPAND, 0) self.image_list = wx.ImageList(16, 16) self.ico_folder_idx = self.image_list.Add( wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16, 16))) self.ico_folder_open_idx = self.image_list.Add( wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, (16, 16))) self.ico_file_idx = self.image_list.Add( wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, (16, 16))) self.ico_colors_idx = [] for i, icon in enumerate(co.ICONS): self.ico_colors_idx.append( self.image_list.Add(co.GetMondrianBitmap(i))) self.m_tree.AssignImageList(self.image_list) for item_idx in (self.m_tree_root, self.m_tree_local, self.m_tree_online): self.m_tree.SetItemImage(item_idx, self.ico_folder_idx, wx.TreeItemIcon_Normal) self.m_tree.SetItemImage(item_idx, self.ico_folder_open_idx, wx.TreeItemIcon_Expanded) self.m_staticline_left_bottom = wx.StaticLine(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) bSizer5.Add(self.m_staticline_left_bottom, 0, wx.EXPAND | wx.ALL, 0) bSizer61 = wx.BoxSizer(wx.HORIZONTAL) self.m_btn_add = wx.BitmapButton(self.m_panel1, wx.ID_ADD, co.GetMondrianBitmap(fn="add"), wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER) self.m_btn_add.SetToolTipString(u"添加") bSizer61.Add(self.m_btn_add, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.m_btn_refresh = wx.BitmapButton( self.m_panel1, wx.ID_REFRESH, co.GetMondrianBitmap(fn="arrow_refresh"), wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER) self.m_btn_add.SetToolTipString(u"刷新") bSizer61.Add(self.m_btn_refresh, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.m_btn_edit_info = wx.BitmapButton( self.m_panel1, wx.ID_EDIT, co.GetMondrianBitmap(fn="pencil"), wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER) self.m_btn_add.SetToolTipString(u"编辑") bSizer61.Add(self.m_btn_edit_info, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.m_btn_del = wx.BitmapButton(self.m_panel1, wx.ID_DELETE, co.GetMondrianBitmap(fn="delete"), wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER) self.m_btn_del.SetToolTipString(u"删除") bSizer61.Add(self.m_btn_del, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) bSizer5.Add(bSizer61, 0, wx.EXPAND, 5) bSizer4.Add(bSizer5, 1, wx.EXPAND, 5) self.m_staticline_main = wx.StaticLine(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL) bSizer4.Add(self.m_staticline_main, 0, wx.EXPAND | wx.ALL, 0) bSizer6 = wx.BoxSizer(wx.VERTICAL) self.m_textCtrl_content = self.makeTextCtrl(bSizer6) bSizer7 = wx.BoxSizer(wx.HORIZONTAL) self.m_panel3 = wx.Panel(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer71 = wx.BoxSizer(wx.HORIZONTAL) # self.m_btn_save = buttons.GenBitmapTextButton(self.m_panel3, wx.ID_SAVE, co.GetMondrianBitmap(fn="disk"), u"保存") # bSizer71.Add(self.m_btn_save, 0, wx.ALL, 0) self.m_panel3.SetSizer(bSizer71) self.m_panel3.Layout() bSizer71.Fit(self.m_panel3) bSizer7.Add(self.m_panel3, 1, wx.EXPAND | wx.ALL, 5) # self.m_btn_apply = buttons.GenBitmapTextButton(self.m_panel1, wx.ID_APPLY, # co.GetMondrianBitmap(fn="accept"), u"应用", # size=wx.Size(-1, 24), # style=wx.BU_AUTODRAW|wx.STATIC_BORDER) # self.m_btn_apply = wx.Button(self.m_panel1, wx.ID_APPLY, u"应用", wx.DefaultPosition, wx.DefaultSize, 0) self.m_btn_apply = wx.BitmapButton(self.m_panel1, wx.ID_APPLY, co.GetMondrianBitmap(fn="accept"), wx.DefaultPosition, wx.Size(60, -1), wx.BU_AUTODRAW | wx.SIMPLE_BORDER) self.m_btn_apply.SetToolTipString(u"应用当前 hosts 方案") bSizer7.Add(self.m_btn_apply, 0, wx.ALL, 5) if cls_TaskBarIcon and os.name == "nt": # ubuntu 10.04 下点击这个图标时会报错,图标的菜单无法正常工作 # ubuntu 11.04 下这个图标总是无法显示 # 由于跨平台问题,暂时决定只在 windows 下显示快捷的任务栏图标 # 参见:http://stackoverflow.com/questions/7144756/wx-taskbaricon-on-ubuntu-11-04 self.m_btn_exit = buttons.GenBitmapTextButton( self.m_panel1, wx.ID_CLOSE, co.GetMondrianBitmap(fn="door"), u"隐藏") # self.m_btn_exit = wx.Button(self.m_panel1, wx.ID_CLOSE, u"隐藏", wx.DefaultPosition, wx.DefaultSize, 0) bSizer7.Add(self.m_btn_exit, 0, wx.ALL, 5) self.m_staticline_right_bottom = wx.StaticLine(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) bSizer6.Add(self.m_staticline_right_bottom, 0, wx.EXPAND | wx.ALL, 0) bSizer6.Add(bSizer7, 0, wx.EXPAND, 5) bSizer4.Add(bSizer6, 5, wx.EXPAND, 5) self.m_panel1.SetSizer(bSizer4) self.m_panel1.Layout() bSizer4.Fit(self.m_panel1) bSizer1.Add(self.m_panel1, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) self.font_bold = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.font_bold.SetWeight(wx.BOLD) self.font_normal = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.font_normal.SetWeight(wx.NORMAL) self.font_mono = wx.Font(10, wx.ROMAN, wx.NORMAL, wx.NORMAL, faceName="Courier New")
def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ wx.Frame.__init__(self, *args, **kwds) self.CreateStatusBar() self.notebook_1 = wx.Notebook(self, wx.ID_ANY) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, wx.ID_ANY) self.button_1 = wx.Button(self.notebook_1_pane_1, wx.ID_ANY, _("New")) self.tree_ctrl_1 = wx.TreeCtrl(self.notebook_1_pane_1, wx.ID_ANY, style=wx.TR_HIDE_ROOT) # self.dir = wx.TreeCtrl(self.notebook_1_pane_1, wx.ID_ANY)#, style=wx.TR_HIDE_ROOT) # self.dir = wx.GenericDirCtrl(self.notebook_1_pane_1, -1, dir='/home/pirl/PycharmProjects/tensorflowGUI/data', # self.dir = wx.GenericDirCtrl(self.notebook_1_pane_1, -1, dir='~/', # style=wx.DIRCTRL_DIR_ONLY) # self.dir_tree_ctrl = self.dir.GetTreeCtrl() # print(self.dir_tree_ctrl.SetWindowStyle(wx.TR_HIDE_ROOT)) self.label_1 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Dataset Spec")) self.label_2 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Path: "), style=wx.ALIGN_CENTER) self.text_ctrl_2 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_3 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("# of Train/Test Data: "), style=wx.ALIGN_CENTER) self.text_ctrl_4 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_4 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("# of Classes: "), style=wx.ALIGN_CENTER) self.text_ctrl_5 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_5 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Image Size: "), style=wx.ALIGN_CENTER) self.text_ctrl_6 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_6 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Image Type: "), style=wx.ALIGN_CENTER) self.text_ctrl_7 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_7 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Resize Transformation: "), style=wx.ALIGN_CENTER) self.text_ctrl_8 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.label_8 = wx.StaticText(self.notebook_1_pane_1, wx.ID_ANY, _("Image Encoding: "), style=wx.ALIGN_CENTER) self.text_ctrl_9 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_CENTRE) self.text_ctrl_3 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, "", style=wx.TE_READONLY) self.text_ctrl_1 = wx.TextCtrl(self.notebook_1_pane_1, wx.ID_ANY, _("log field..\n\n\n\n"), style=wx.TE_MULTILINE | wx.TE_READONLY) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1_pane_3 = wx.Panel(self.notebook_1, wx.ID_ANY) self.notebook_1_pane_4 = wx.Panel(self.notebook_1, wx.ID_ANY) self.__set_properties() self.__do_layout() self.__bind_events()
def __init__(self, *args, **kwds): # begin wxGlade: MainFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.notebook_1 = wx.Notebook(self, -1, style=0) self.notebook_1_pane_5 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_4 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_3 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1) # Menu Bar self.MainFrameMenuBar = wx.MenuBar() wxglade_tmp_menu = wx.Menu() self.mnuLoadFormDB = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "Load Form DB...", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuLoadFormDB) self.mnuSaveFormDB = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "Save Form DB...", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuSaveFormDB) wxglade_tmp_menu.AppendSeparator() self.mnuQuit = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "&Quit", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuQuit) self.MainFrameMenuBar.Append(wxglade_tmp_menu, "&File") wxglade_tmp_menu = wx.Menu() self.mnuPrefs = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "&Preferences", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuPrefs) self.MainFrameMenuBar.Append(wxglade_tmp_menu, "&Edit") wxglade_tmp_menu = wx.Menu() self.mnuCodec = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "&String encoder", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuCodec) self.mnuXSRF = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "&XSRF editor", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuXSRF) self.MainFrameMenuBar.Append(wxglade_tmp_menu, "&Tools") wxglade_tmp_menu = wx.Menu() self.mnuAbout = wx.MenuItem(wxglade_tmp_menu, wx.NewId(), "&About XSSploit", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendItem(self.mnuAbout) self.MainFrameMenuBar.Append(wxglade_tmp_menu, "&Help") self.SetMenuBar(self.MainFrameMenuBar) # Menu Bar end self.MainFrameStatusBar = self.CreateStatusBar(1, 0) self.txtUrl = wx.TextCtrl(self.notebook_1_pane_1, -1, "http://localhost/xss/") self.btnSpider = wx.Button(self.notebook_1_pane_1, -1, "Spider") self.label_1 = wx.StaticText(self.notebook_1_pane_1, -1, "Pages spidered : ") self.lsPages = wx.ListBox(self.notebook_1_pane_1, -1, choices=[]) self.label_4 = wx.StaticText(self.notebook_1_pane_1, -1, "Forms Found :") self.trvForms = wx.TreeCtrl(self.notebook_1_pane_1, -1, style=wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER) self.btnAnalyze = wx.Button(self.notebook_1_pane_1, -1, "Analyze") self.label_2 = wx.StaticText(self.notebook_1_pane_3, -1, "XSS found :") self.lsXSS = wx.ListBox(self.notebook_1_pane_3, -1, choices=[], style=wx.LB_SINGLE) self.trvXssSummary = wx.TreeCtrl(self.notebook_1_pane_3, -1, style=wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER) self.static_line_1 = wx.StaticLine(self.notebook_1_pane_3, -1) self.label_19 = wx.StaticText(self.notebook_1_pane_4, -1, "Exploitable XSS :") self.cmbExploitableXss = wx.ComboBox(self.notebook_1_pane_4, -1, choices=[], style=wx.CB_DROPDOWN | wx.CB_READONLY) self.static_line_8 = wx.StaticLine(self.notebook_1_pane_4, -1) self.label_3 = wx.StaticText(self.notebook_1_pane_4, -1, "Available exploits :") self.lsExploits = wx.ListBox(self.notebook_1_pane_4, -1, choices=[], style=wx.LB_SINGLE) self.lblExploitDescription = wx.StaticText(self.notebook_1_pane_4, -1, "Description") self.label_6 = wx.StaticText(self.notebook_1_pane_4, -1, "Options :") self.lsExploitOptions = wx.ListBox(self.notebook_1_pane_4, -1, choices=[], style=wx.LB_SINGLE) self.txtOptionValue = wx.TextCtrl(self.notebook_1_pane_4, -1, "", style=wx.TE_MULTILINE) self.btnGenCode = wx.Button(self.notebook_1_pane_4, -1, "Generate exploit code") self.txtJavaCode = wx.TextCtrl(self.notebook_1_pane_4, -1, "", style=wx.TE_MULTILINE) self.txtExploitUrl = wx.TextCtrl(self.notebook_1_pane_4, -1, "", style=wx.TE_MULTILINE | wx.TE_RICH | wx.TE_RICH2 | wx.TE_AUTO_URL) self.label_10 = wx.StaticText(self.notebook_1_pane_5, -1, "Report options") self.static_line_5 = wx.StaticLine(self.notebook_1_pane_5, -1) self.chkRptSpider = wx.CheckBox(self.notebook_1_pane_5, -1, "Include spidered pages") self.chkRptForm = wx.CheckBox(self.notebook_1_pane_5, -1, "Include forms and parameters found") self.chkRptXSS = wx.CheckBox(self.notebook_1_pane_5, -1, "Include XSS found") self.chkRptPXSS = wx.CheckBox( self.notebook_1_pane_5, -1, "Include possible XSS (not exploitable by XSSploit)") self.chkRptExample = wx.CheckBox(self.notebook_1_pane_5, -1, "Include example (Messagebox)") self.btnRptSave = wx.Button(self.notebook_1_pane_5, -1, "Save...") self.__set_properties() self.__do_layout() # end wxGlade #Interface inits self.btnAnalyze.Enable(False) #Controls binding self.btnSpider.Bind(wx.EVT_BUTTON, self.onSpider, self.btnSpider) self.lsXSS.Bind(wx.EVT_LISTBOX, self.xssSelected, self.lsXSS) self.lsExploits.Bind(wx.EVT_LISTBOX, self.exploitSelected, self.lsExploits) self.lsExploitOptions.Bind(wx.EVT_LISTBOX, self.exploitOptionSelected, self.lsExploitOptions) self.txtOptionValue.Bind(wx.EVT_TEXT, self.exploitOptionChange, self.txtOptionValue) self.btnGenCode.Bind(wx.EVT_BUTTON, self.genCode, self.btnGenCode) self.btnAnalyze.Bind(wx.EVT_BUTTON, self.onAnalyze, self.btnAnalyze) self.btnRptSave.Bind(wx.EVT_BUTTON, self.report, self.btnRptSave) #Menu Handling EVT_MENU(self, self.mnuAbout.GetId(), self.onAbout) EVT_MENU(self, self.mnuSaveFormDB.GetId(), self.onSaveDB) EVT_MENU(self, self.mnuLoadFormDB.GetId(), self.onLoadDB) EVT_MENU(self, self.mnuXSRF.GetId(), self.onXsrf) EVT_MENU(self, self.mnuCodec.GetId(), self.onCodec) EVT_MENU(self, self.mnuPrefs.GetId(), self.onPrefs) EVT_MENU(self, self.mnuQuit.GetId(), self.onQuit) #XSSploit vars self.wwwIOInstance = wwwIO() self.compilerInstance = compiler() self.xssCollection = {} self.formDBInstance = None self.activeXss = None #Options self.useProxy = False self.proxyHost = '' self.proxyPort = '' self.proxyUser = '' self.proxyPass = '' self.useAuth = False self.authUser = '' self.authPass = '' self.maxParams = 2 self.doPermCheck = 1 #XSSploit inits self.loadExploitsList()
def make_gui(self): # Fonts if(os.environ["POL_OS"] == "Mac"): self.fontTitre = wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "", wx.FONTENCODING_DEFAULT) self.fontText = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,False, "", wx.FONTENCODING_DEFAULT) else : self.fontTitre = wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "", wx.FONTENCODING_DEFAULT) self.fontText = wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,False, "", wx.FONTENCODING_DEFAULT) # GUI elements self.panel = wx.Panel(self, -1, pos=(0,0), size=((520, 398+Variables.windows_add_size))) self.header = wx.Panel(self.panel, -1, style=Variables.widget_borders, size=(522,65)) self.header.SetBackgroundColour((255,255,255)) self.footer = wx.Panel(self.panel, -1, size=(522,45), pos=(-1,358), style=Variables.widget_borders) # Panels self.MainPanel = wx.Panel(self.panel, -1, pos=(150,0), size=(370,356)) self.MainPanel.SetBackgroundColour((255,255,255)) # Images self.top_image = wx.StaticBitmap(self.header, -1, self.small_image, (self.small_x,0), wx.DefaultSize) self.left_image = wx.StaticBitmap(self.panel, -1, self.big_image, (0,0), wx.DefaultSize) # Text self.titre_header = wx.StaticText(self.header, -1, _('{0} Wizard').format(os.environ["APPLICATION_TITLE"]),pos=(5,5), size=(340,356),style=wx.ST_NO_AUTORESIZE) self.titre_header.SetFont(self.fontTitre) self.titre_header.SetForegroundColour((0,0,0)) # For dark themes self.texte = wx.StaticText(self.panel, -1, "",pos=(20,80),size=(480,275),style=wx.ST_NO_AUTORESIZE) self.texte_bis = wx.StaticText(self.panel, -1, "",size=(480,30),style=wx.ST_NO_AUTORESIZE) self.titre = wx.StaticText(self.header, -1, "",pos=(20,30), size=(340,356),style=wx.ST_NO_AUTORESIZE) self.titre.SetForegroundColour((0,0,0)) # For dark themes self.texteP = wx.StaticText(self.MainPanel, -1, "",pos=(5,50)) self.texteP.SetForegroundColour((0,0,0)) # For dark themes self.titreP = wx.StaticText(self.MainPanel, -1,"",pos=(5,5), size=(340,356)) self.titreP.SetFont(self.fontTitre) self.titreP.SetForegroundColour((0,0,0)) # For dark themes self.txtEstimation = wx.StaticText(self.panel, -1, "",size=(480,30),style=wx.ST_NO_AUTORESIZE) self.register_link = "" # Buttons self.CancelButton = wx.Button(self.footer, wx.ID_CANCEL, _("Cancel"), pos=(430,0),size=(85,37)) if(self.ProtectedWindow == True): self.CancelButton.Enable(False) self.NextButton = wx.Button(self.footer, wx.ID_FORWARD, _("Next"), pos=(340,0),size=(85,37)) self.BackButton = wx.Button(self.footer, wx.ID_FORWARD, _("Back"), pos=(250,0),size=(85,37)) self.InfoScript = wx.StaticBitmap(self.footer, -1, wx.Bitmap(os.environ['PLAYONLINUX']+"/resources/images/setups/about.png"), pos=(10,8)) self.InfoScript.Hide() self.script_ID = 0 self.InfoScript.Bind(wx.EVT_LEFT_DOWN, self.InfoClick) self.InfoScript.SetCursor(wx.StockCursor(wx.CURSOR_HAND)) self.NoButton = wx.Button(self.footer, wx.ID_NO, _("No"), pos=(430,0),size=(85,37)) self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), pos=(340,0), size=(85,37)) self.browse = wx.Button(self.panel, 103, _("Browse"), size=(130,40)) self.browse_text = wx.StaticText(self.panel, -1, "") self.browse_image = wx.StaticBitmap(self.panel, -1, wx.Bitmap(os.environ['PLAYONLINUX']+"/etc/playonlinux.png")) # D'autres trucs self.champ = wx.TextCtrl(self.panel, 400, "",size=(300,22)) self.bigchamp = wx.TextCtrl(self.panel, -1, "",size=wx.Size(460,240), pos=(30,105),style=Variables.widget_borders|wx.TE_MULTILINE) self.MCheckBox = wx.CheckBox(self.panel, 302, _("I Agree"), pos=(20,325)) self.PCheckBox = wx.CheckBox(self.panel, 304, _("Show virtual drives"), pos=(20,325)) self.Menu = wx.ListBox(self.panel, 104, pos=(25,105),size=(460,220), style=Variables.widget_borders) self.scrolled_panel = wx.ScrolledWindow(self.panel, -1, pos=(20,100), size=(460,220), style=Variables.widget_borders|wx.HSCROLL|wx.VSCROLL) self.scrolled_panel.SetBackgroundColour((255,255,255)) self.texte_panel = wx.StaticText(self.scrolled_panel, -1, "",pos=(5,5)) self.gauge = wx.Gauge(self.panel, -1, 50, size=(375, 20)) self.WaitButton = wx.Button(self.panel, 310, "", size=(250,25)) self.animation = wx.StaticBitmap(self.panel, -1, self.GetLoaderFromAngle(1), (228,170)) self.current_angle = 1 self.images = wx.ImageList(22, 22) self.MenuGames = wx.TreeCtrl(self.panel, 111, style=wx.TR_HIDE_ROOT|wx.TR_FULL_ROW_HIGHLIGHT|Variables.widget_borders, pos=(25,105),size=(460,220)) self.MenuGames.SetImageList(self.images) self.MenuGames.SetSpacing(0) # Login self.login = wx.StaticText(self.panel, -1, _("Login: "******"Password: "******"",size=(250,22),pos=(200,115)) self.passbox = wx.TextCtrl(self.panel, -1, "",size=(250,22),pos=(200,145), style=wx.TE_PASSWORD) self.register = wx.HyperlinkCtrl(self.panel, 303, _("Register"), "", pos=(20,180)) self.register.SetNormalColour(wx.Colour(0,0,0)) # Fixed Events wx.EVT_BUTTON(self, wx.ID_YES, self.release_yes) wx.EVT_BUTTON(self, wx.ID_NO, self.release_no) wx.EVT_BUTTON(self, wx.ID_CANCEL , self.Cancel) wx.EVT_BUTTON(self, 103, self.Parcourir) wx.EVT_CHECKBOX(self, 302, self.agree) wx.EVT_CHECKBOX(self, 304, self.switch_menu) wx.EVT_HYPERLINK(self, 303, self.POL_register) # Debug Window self.debugImage = wx.StaticBitmap(self.panel, -1, wx.Bitmap(os.environ["PLAYONLINUX"]+"/resources/images/setups/face-sad.png"), (196,130)) self.debugZone = wx.TextCtrl(self.panel, -1, "",size=wx.Size(440,82), pos=(40,274),style=Variables.widget_borders|wx.TE_MULTILINE|wx.TE_READONLY) # Hide all self.Destroy_all() self.Result = "" self.animation.Show() self.footer.Hide() # Set the timer self.timer = wx.Timer(self, 3) self.Bind(wx.EVT_TIMER, self.TimerAction, self.timer) self.timer.Start(100) self.Timer_downloading = False self.Timer_animate = True
def _init_ctrls(self, prnt): ''' Initialize the wx controls''' frame_size = wx.Size(770, 350) wx.Frame.__init__(self, id=-1, name='', parent=prnt, pos=wx.Point(10, 20), size=frame_size, style=wx.DEFAULT_FRAME_STYLE, title='Connection Tool') panel = wx.Panel(self, -1) # -------------------------------------------------------------------- # create the top sizer # Static Texts (labels) self.blankLabel = wx.StaticText(id=-1, label='', name='blankLabel', parent=panel, size=wx.Size(150, 30), style=0) self.usesLabel = wx.StaticText(id=-1, label='Select Uses Port:', name='usesLabel', parent=panel, size=wx.Size(250, 30), style=wx.ALIGN_CENTER) self.providesLabel = wx.StaticText(id=-1, label='Select Provides Port:', name='providesLabel', parent=panel, size=wx.Size(250, 30), style = wx.ALIGN_CENTER) treeSize = (350,200) #Changing to Tree style listing of waveforms/components/ports from previously used Choice style self.usesTree = wx.TreeCtrl(parent=panel, id=-1, size=treeSize , style=wx.TR_HIDE_ROOT|wx.TR_HAS_BUTTONS) self.providesTree = wx.TreeCtrl(parent=panel, id=-1, size=treeSize , style=wx.TR_HIDE_ROOT|wx.TR_HAS_BUTTONS) # connect button self.ConnectBtn = wx.Button(id = -1, label='Connect', parent=panel) self.ConnectBtn.Bind(wx.EVT_BUTTON, self.OnConnectBtn, id=-1) blankLabel2 = wx.StaticText(label = '', parent = panel) blankLabel3 = wx.StaticText(label = '', parent = panel) blankLabel4 = wx.StaticText(label = '', parent = panel) flexSizer1 = wx.FlexGridSizer(cols=3, hgap=6, vgap = 6) flexSizer1.AddMany([blankLabel2, self.usesLabel, self.providesLabel, blankLabel3, self.usesTree, self.providesTree, blankLabel4, self.ConnectBtn]) # -------------------------------------------------------------------- # second sizer vSizer1 = wx.BoxSizer(wx.VERTICAL) self.connectionsLabel = wx.StaticText(parent = panel, label = "Connections:") self.connectionsListBox = wx.ListBox(parent=panel, size=wx.Size(700,150), style=wx.LB_MULTIPLE, ) self.DisconnectBtn = wx.Button(parent=panel, label='Disconnect') self.DisconnectBtn.Bind(wx.EVT_BUTTON, self.OnDisconnectBtn) vSizer1.Add(self.connectionsLabel, 0, wx.ALL, 5) vSizer1.Add(self.connectionsListBox, 0, wx.ALL, 5) vSizer1.Add(self.DisconnectBtn, 0, wx.ALL, 5) # -------------------------------------------------------------------- # -------------------------------------------------------------------- # third sizer hSizer1 = wx.BoxSizer(wx.HORIZONTAL) self.automationFileEditor = wx.TextCtrl(id=-1, name=u'automationFileEditor', parent=panel, size=wx.Size(350, 30), style=0, value=u'') self.browseAutomationBtn = wx.Button(id = -1, label='Browse', parent=panel, size=wx.Size(80, 30)) self.browseAutomationBtn.Bind(wx.EVT_BUTTON, self.onBrowseAutomationButton, id=-1) self.loadAutomationBtn = wx.Button(id = -1, label='Load Automation File', parent=panel, size=wx.Size(180, 30)) self.loadAutomationBtn.Bind(wx.EVT_BUTTON, self.onLoadAutomationFileButton, id=-1) hSizer1.Add(self.automationFileEditor, 0, wx.ALL, 5) hSizer1.Add(self.browseAutomationBtn, 0, wx.ALL, 5) hSizer1.Add(self.loadAutomationBtn, 0, wx.ALL, 5) # -------------------------------------------------------------------- # -------------------------------------------------------------------- # assemble main sizer from other sizers # topLabel = wx.StaticText(label = 'Connect Tool. OSSIE 0.6.2', # parent = panel) mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(flexSizer1, 0 , wx.EXPAND|wx.ALL, 10) mainSizer.Add(wx.StaticLine(panel), 0 , wx.EXPAND|wx.TOP|wx.BOTTOM, 5) mainSizer.Add(vSizer1, 0, wx.EXPAND|wx.ALL, 10) mainSizer.Add(wx.StaticLine(panel), 0 , wx.EXPAND|wx.TOP|wx.BOTTOM, 5) mainSizer.Add(hSizer1, 0, wx.EXPAND|wx.ALL, 10) panel.SetSizer(mainSizer) mainSizer.Fit(self)
def __init__(self, module_view, v, pipeline): assert isinstance(v, FileCollectionDisplay) self.module_view = module_view self.v = v assert isinstance(pipeline, Pipeline) self.pipeline = pipeline self.panel = wx.Panel(self.module_view.module_panel, -1, name=edit_control_name(v)) self.panel.controller = self self.panel.Sizer = wx.BoxSizer(wx.VERTICAL) sizer = wx.BoxSizer(wx.HORIZONTAL) self.panel.Sizer.Add(sizer, 0, wx.EXPAND) self.status_text = wx.StaticText(self.panel, -1) sizer.Add(self.status_text, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER) sizer.AddStretchSpacer() sizer.Add( wx.StaticText(self.panel, -1, "Drag folders and/or files here or"), 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER, ) sizer.AddSpacer((3, 0)) browse_button = wx.Button(self.panel, -1, "Browse...") sizer.Add(browse_button, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER) browse_button.Bind(wx.EVT_BUTTON, self.on_browse) tree_style = wx.TR_HIDE_ROOT | wx.TR_HAS_BUTTONS | wx.TR_MULTIPLE self.tree_ctrl = wx.TreeCtrl(self.panel, -1, style=tree_style) self.panel.Sizer.Add(self.tree_ctrl, 1, wx.EXPAND) self.tree_ctrl.SetImageList(self.IMAGE_LIST) self.tree_ctrl.Bind(wx.EVT_TREE_ITEM_MENU, self.on_tree_item_menu) self.tree_ctrl.Bind(wx.EVT_TREE_KEY_DOWN, self.on_tree_key_down) # # Don't auto-expand after the user collapses a node. # self.user_collapsed_a_node = False def on_item_collapsed(event): logging.debug("On item collapsed") self.user_collapsed_a_node = True self.tree_ctrl.Bind(wx.EVT_TREE_ITEM_COLLAPSED, on_item_collapsed) self.tree_ctrl.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.on_tree_doubleclick) self.tree_ctrl.Bind(wx.EVT_ERASE_BACKGROUND, self.on_erase_background) self.panel.Bind(wx.EVT_WINDOW_DESTROY, self.on_destroy) self.root_item = self.tree_ctrl.AddRoot("I am the invisible root") self.tree_ctrl.SetPyData(self.root_item, None) self.tree_ctrl.SetItemImage(self.root_item, self.FOLDER_IMAGE_INDEX) self.tree_ctrl.SetItemImage(self.root_item, self.FOLDER_OPEN_IMAGE_INDEX, wx.TreeItemIcon_Expanded) self.tree_ctrl.SetMinSize((100, 300)) self.tree_ctrl.SetMaxSize((sys.maxsize, 300)) self.file_drop_target = self.FCDCDropTarget(self.on_drop_files, self.on_drop_text) self.tree_ctrl.SetDropTarget(self.file_drop_target) sizer = wx.BoxSizer(wx.HORIZONTAL) self.panel.Sizer.Add(sizer, 0, wx.EXPAND) self.hide_show_ctrl = wx.CheckBox(self.panel, -1, self.v.hide_text) sizer.Add(self.hide_show_ctrl, 0, wx.ALIGN_LEFT | wx.ALIGN_BOTTOM) self.hide_show_ctrl.Bind(wx.EVT_CHECKBOX, self.on_hide_show_checked) self.hide_show_ctrl.SetValue(not self.v.show_filtered) sizer.AddStretchSpacer() self.stop_button = wx.Button(self.panel, -1, "Stop") self.stop_button.Enable(False) self.stop_button.Bind(wx.EVT_BUTTON, self.on_stop) sizer.Add(self.stop_button, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.pause_button = wx.Button(self.panel, -1, "Pause") self.pause_button.Enable(False) self.pause_button.Bind(wx.EVT_BUTTON, self.on_pause_resume) sizer.Add(self.pause_button, 0, wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) v.set_update_function(self.request_update) self.needs_update = False self.modpath_to_item = {} self.request_update()
def __init__(self, parent): """ Initialization """ wx.SashLayoutWindow.__init__(self, parent, -1) self.treeId = wx.NewId() self.parent = parent self.tree = wx.TreeCtrl(self, self.treeId, style = wx.TR_HAS_BUTTONS | wx.TR_MULTIPLE) self.multiSelect = 0 self.programmatic = 0 self.lastobj = None self.ignore = 0 self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelectionChanged, id = self.tree.GetId()) self.tree.Bind(wx.EVT_TREE_SEL_CHANGING, self.onSelectionChanging, id = self.tree.GetId()) self.tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.onActivateItem, id = self.tree.GetId()) self.tree.Bind(wx.EVT_KEY_DOWN, self.onKeyDown, id = self.tree.GetId()) self.items = OrderedDict() self.greenitems = [] self.yellowitems = [] self.dataUnitToPath = {} self.selectedItem = None isz = (16, 16) il = wx.ImageList(isz[0], isz[1]) fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz)) fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz)) fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_REPORT_VIEW, wx.ART_OTHER, isz)) self.tree.SetImageList(il) self.il = il self.root = self.tree.AddRoot("Datasets") self.tree.SetPyData(self.root, "1") self.tree.SetItemImage(self.root, fldridx, which = wx.TreeItemIcon_Normal) self.tree.SetItemImage(self.root, fldropenidx, which = wx.TreeItemIcon_Expanded) self.lsmfiles = None self.leicafiles = None self.bxdfiles = None self.oiffiles = None self.bioradfiles = None self.interfilefiles = None self.liffiles = None self.mrcfiles = None self.ometiffiles = None self.lastSelection = None self.dataUnitItems = [] self.groupedDataUnit = None self.groupedItems = [] self.removeParents = [] self.itemColor = (0, 0, 0) self.tree.Bind(wx.EVT_RIGHT_DOWN, self.onRightClick) self.Bind(wx.EVT_RIGHT_DOWN, self.onRightClick) self.ID_CLOSE_DATAUNIT = wx.NewId() self.ID_GROUP_DATAUNIT = wx.NewId() self.ID_UNGROUP = wx.NewId() self.menu = wx.Menu() self.tree.SetHelpText("Files that you open appear in this tree.") item = wx.MenuItem(self.menu, self.ID_CLOSE_DATAUNIT, "Close dataset") self.tree.Bind(wx.EVT_MENU, self.onCloseDataset, id = self.ID_CLOSE_DATAUNIT) self.Bind(wx.EVT_MENU, self.onCloseDataset, id = self.ID_CLOSE_DATAUNIT) self.menu.AppendItem(item) item = wx.MenuItem(self.menu, self.ID_GROUP_DATAUNIT, "Group dataset") self.tree.Bind(wx.EVT_MENU, self.onCloseDataset, id = self.ID_GROUP_DATAUNIT) self.Bind(wx.EVT_MENU, self.onGroupDataset, id = self.ID_GROUP_DATAUNIT) self.menu.AppendItem(item) item = wx.MenuItem(self.menu, self.ID_UNGROUP, "Ungroup") self.tree.Bind(wx.EVT_MENU, self.onUngroup, id = self.ID_UNGROUP) self.Bind(wx.EVT_MENU, self.onUngroup, id = self.ID_UNGROUP) self.menu.AppendItem(item)
def __init__(self, parent, editor, object): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title="Graph Editor", pos=wx.DefaultPosition, size=(735, 535)) self.editor = editor self.editor.GRAPH_EDITOR = True self.object = object self.xRange = 24 + 1 self.yRange = 50 if self.editor.mode == self.editor.ANIM_MODE: self.curFrame = self.editor.ui.animUI.curFrame self.curFrame = 1 self.mainPanel1 = wx.Panel(self, -1) bmpZoomIn = ZoomIn.GetBitmap() bmpZoomOut = ZoomOut.GetBitmap() bmpOneTangent = OneTangent.GetBitmap() bmpTwoTangents = TwoTangents.GetBitmap() self.buttonZoomIn = wx.BitmapButton(self.mainPanel1, -1, bmpZoomIn, size=(30, 30), style=wx.BU_AUTODRAW) self.buttonZoomOut = wx.BitmapButton(self.mainPanel1, -1, bmpZoomOut, size=(30, 30), style=wx.BU_AUTODRAW) self.buttonOneTangent = wx.BitmapButton(self.mainPanel1, -1, bmpOneTangent, size=(30, 30), style=wx.BU_AUTODRAW) self.buttonTwoTangents = wx.BitmapButton(self.mainPanel1, -1, bmpTwoTangents, size=(30, 30), style=wx.BU_AUTODRAW) self.mainPanel2 = wx.Panel(self, -1) self.tree = self.tree = wx.TreeCtrl(self.mainPanel2, id=-1, pos=wx.DefaultPosition, size=wx.Size(200, 450), style=wx.TR_MULTIPLE | wx.TR_DEFAULT_STYLE, validator=wx.DefaultValidator, name="treeCtrl") self.namestr = "%s" % (object[OG.OBJ_DEF].name) self.root = self.tree.AddRoot(self.namestr) self.AddTreeNodes(self.root, property) self.tree.Expand(self.root) self.tree.SelectItem(self.root, select=True) self.str = self.tree.GetItemText(self.root) self.graphEditorWindow = GraphEditorWindow( self.mainPanel2, wx.Size(500, 450), str(object[OG.OBJ_DEF].name), self.xRange, self.yRange, self.curFrame, self.object) self.SetProperties() self.DoLayout() self.Bind(wx.EVT_BUTTON, self.OnZoomIn, self.buttonZoomIn) self.Bind(wx.EVT_BUTTON, self.OnZoomOut, self.buttonZoomOut) self.Bind(wx.EVT_BUTTON, self.OnOneTangent, self.buttonOneTangent) self.Bind(wx.EVT_BUTTON, self.OnTwoTangents, self.buttonTwoTangents) self.Bind(wx.EVT_CLOSE, self.OnExit) self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)
def __init__(self, prnt): # First, call the base class' __init__ method to create the frame wx.Frame.__init__(self, id=-1, name='', parent=prnt, pos=wx.Point(0, 0), size=wx.Size(600, 600), style=wx.DEFAULT_FRAME_STYLE, title="Dir tree view") self.panViewFolders = wx.Panel(id=-1, name='panViewFolders', parent=self, pos=wx.Point(8, 176), size=wx.Size(500, 500), style=wx.TAB_TRAVERSAL) self.panViewFolders.SetBackgroundColour(wx.Colour(225, 236, 255)) #self.panViewFolders.SetAutoLayout(True) self.treeViewFolders = wx.TreeCtrl(id=wx.NewId(), name='treeViewFolders', parent=self.panViewFolders, pos=wx.Point(0, 0), size=wx.Size(600, 600), style=wx.HSCROLL | wx.VSCROLL | wx.TR_HAS_BUTTONS) self.DirectoryDict = {} """ print "start walking at ", time.ctime() startTime = time.time() self.WalkDir() print "end walking at ", time.ctime() endTime = time.time() print "Time taken to walk ", CommonFunctions.ConvertSecondsToDayHourMinSec(endTime - startTime) startTime = time.time() #save in db DBFunctions.SetupProjectEvidencesTable("caseNew.cfi", True) db = SqliteDatabase("caseNew.cfi") if db.OpenConnection(): query = "insert into " + Constants.ProjectEvidencesTable + " (ID, DisplayName, Location, DirTree) values (?, ?, ?, ?)" db.ExecuteMany(query, [(1, self.evidenceName, self.evidencePath, cPickle.dumps(self.DirectoryDict[self.evidenceName]))] ) db.CloseConnection() endTime = time.time() print "Time taken to add in db ", CommonFunctions.ConvertSecondsToDayHourMinSec(endTime - startTime) """ print 'start time load ', time.ctime() startTime = time.time() db = SqliteDatabase("caseNew.cfi") if db.OpenConnection(): query = "select Location, DisplayName, DirTree from " + Constants.EvidencesTable row = db.FetchOneRow(query) self.evidencePath = row[0] self.evidenceName = row[1] self.DirectoryDict = cPickle.loads(str(row[2])) print "end time ", time.ctime() endTime = time.time() print "Time taken to load db ", CommonFunctions.ConvertSecondsToDayHourMinSec( endTime - startTime) print "start build tree time ", time.ctime() startTime = time.time() self.treeDir = DirectoryTreeView(self, self.treeViewFolders, self.DirectoryDict, self.evidenceName, self.evidencePath) print "end build tree time ", time.ctime() endTime = time.time() print "Time taken ", CommonFunctions.ConvertSecondsToDayHourMinSec( endTime - startTime)
def __init__(self, parent, knownHosts=None, knownAccounts=None, filterType=None, filters=None): """Create a ``XNATBrowserPanel``. :arg parent: ``wx`` parent object. :arg knownHosts: A sequence of hosts to be used as auto-complete options in the host input field. :arg knownAccounts: A mapping of ``{ host : (username, password) }``, which are used to automatically fill in the login credentials when a particular host name is entered. :arg filterType: How the filter patterns should be applied - either ``'regexp'`` for regular expressions, or ``'glob'`` for shell-style wildcard patterns. Defaults to ``'regexp'``. :arg filters: Mapping containing initial filter values. Must be of the form ``{ level : pattern }``, where ``level`` is the name of an XNAT hierarchy level (e.g. ``'subject'``, ``'file'``, etc.). """ if knownHosts is None: knownHosts = [] if knownAccounts is None: knownAccounts = {} if filterType is None: filterType = 'regexp' if filters is None: filters = {} if filterType not in ('regexp', 'glob'): raise ValueError('Unrecognised value for filterType: ' '{}. May be one of \'regexp\' or ' '\'glob\''.format(filterType)) # store hosts without # the http[s]:// prefix knownHosts = [h.strip('https://') for h in knownHosts] knownAccounts = {h.strip('https://') : (u, p) for h, (u, p) in knownAccounts.items()} knownHosts += [h for h in knownAccounts.keys() if h not in knownHosts] wx.Panel.__init__(self, parent) self.__knownHosts = knownHosts self.__knownAccounts = knownAccounts self.__filterType = filterType self.__session = None self.__filters = collections.OrderedDict([ ('subject', ''), ('experiment', ''), ('file', ''), ]) self.__filters.update(**filters) self.__host = at.AutoTextCtrl(self) self.__username = pt.PlaceholderTextCtrl(self, placeholder='username') self.__password = pt.PlaceholderTextCtrl(self, placeholder='password', style=wx.TE_PASSWORD) self.__connect = wx.Button(self) self.__status = wx.StaticText(self) self.__project = wx.Choice(self) self.__refresh = wx.Button(self) self.__filter = wx.Choice(self) self.__filterText = pt.PlaceholderTextCtrl(self, placeholder=filterType, style=wx.TE_PROCESS_ENTER) self.__splitter = wx.SplitterWindow(self, style=(wx.SP_LIVE_UPDATE | wx.SP_BORDER)) self.__info = wgrid.WidgetGrid(self.__splitter) self.__browser = wx.TreeCtrl(self.__splitter, style=(wx.TR_MULTIPLE | wx.TR_NO_LINES | wx.TR_HAS_BUTTONS | wx.TR_TWIST_BUTTONS)) self.__splitter.SetMinimumPaneSize(50) self.__splitter.SplitHorizontally(self.__info, self.__browser) self.__splitter.SetSashPosition(50) self.__splitter.SetSashGravity(0.2) images = [icons.loadBitmap(icons.FILE_ICON), icons.loadBitmap(icons.FOLDER_UNLOADED_ICON), icons.loadBitmap(icons.FOLDER_LOADED_ICON)] self.__fileImageId = 0 self.__unloadedFolderImageId = 1 self.__loadedFolderImageId = 2 imageList = wx.ImageList(16, 16) for i in images: imageList.Add(images[0]) imageList.Add(images[1]) imageList.Add(images[2]) self.__browser.AssignImageList(imageList) self.__filter.SetItems([LABELS[f] for f in self.__filters.keys()]) self.__filter.SetSelection(0) self.__hostLabel = wx.StaticText(self) self.__usernameLabel = wx.StaticText(self) self.__passwordLabel = wx.StaticText(self) self.__projectLabel = wx.StaticText(self) self.__filterLabel = wx.StaticText(self) self.__status.SetFont(self.__status.GetFont().Larger().Larger()) self.__info.SetColours(border=self.__info._defaultEvenColour) self.__host .AutoComplete(knownHosts) self.__hostLabel .SetLabel(LABELS['host']) self.__usernameLabel.SetLabel(LABELS['username']) self.__passwordLabel.SetLabel(LABELS['password']) self.__connect .SetLabel(LABELS['connect']) self.__projectLabel .SetLabel(LABELS['project']) self.__filterLabel .SetLabel(LABELS['filter']) self.__refresh .SetLabel(LABELS['refresh']) filterTooltip = wx.ToolTip(TOOLTIPS['filter.{}'.format(filterType)]) self.__filterLabel.SetToolTip(filterTooltip) self.__filter .SetToolTip(filterTooltip) self.__filterText .SetToolTip(filterTooltip) self.__loginSizer = wx.BoxSizer(wx.HORIZONTAL) self.__filterSizer = wx.BoxSizer(wx.HORIZONTAL) self.__mainSizer = wx.BoxSizer(wx.VERTICAL) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__hostLabel) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__host, proportion=1) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__usernameLabel) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__username, proportion=1) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__passwordLabel) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__password, proportion=1) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__connect) self.__loginSizer.Add((5, 1)) self.__loginSizer.Add(self.__status) self.__loginSizer.Add((5, 1)) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__projectLabel) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__project, proportion=1) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__filterLabel) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__filter) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__filterText, proportion=1) self.__filterSizer.Add((5, 1)) self.__filterSizer.Add(self.__refresh) self.__filterSizer.Add((5, 1)) self.__mainSizer.Add(self.__loginSizer, flag=wx.EXPAND) self.__mainSizer.Add((1, 10)) self.__mainSizer.Add(self.__filterSizer, flag=wx.EXPAND) self.__mainSizer.Add((1, 10)) self.__mainSizer.Add(self.__splitter, flag=wx.EXPAND, proportion=1) self.SetSizer(self.__mainSizer) self.__host .Bind(at.EVT_ATC_TEXT_ENTER, self.__onHost) self.__connect.Bind(wx.EVT_BUTTON, self.__onConnect) self.__project.Bind(wx.EVT_CHOICE, self.__onProject) self.__refresh.Bind(wx.EVT_BUTTON, self.__onRefresh) self.__filter .Bind(wx.EVT_CHOICE, self.__onFilter) self.__browser.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.__onTreeActivate) self.__browser.Bind(wx.EVT_TREE_SEL_CHANGED, self.__onTreeSelect) self.__filterText.Bind(wx.EVT_TEXT_ENTER, self.__onFilterText) self.__updateFilter() self.EndSession()
def __init__(self): wx.Frame.__init__(self, None, -1, "Smach Viewer", size=(720, 480)) # Create graph self._containers = {} self._top_containers = {} self._update_cond = threading.Condition() self._needs_refresh = True vbox = wx.BoxSizer(wx.VERTICAL) # Create Splitter self.content_splitter = wx.SplitterWindow(self, -1, style=wx.SP_LIVE_UPDATE) self.content_splitter.SetMinimumPaneSize(24) self.content_splitter.SetSashGravity(0.85) # Create viewer pane viewer = wx.Panel(self.content_splitter, -1) # Create smach viewer nb = wx.Notebook(viewer, -1, style=wx.NB_TOP | wx.WANTS_CHARS) viewer_box = wx.BoxSizer() viewer_box.Add(nb, 1, wx.EXPAND | wx.ALL, 4) viewer.SetSizer(viewer_box) # Create graph view graph_view = wx.Panel(nb, -1) gv_vbox = wx.BoxSizer(wx.VERTICAL) graph_view.SetSizer(gv_vbox) # Construct toolbar toolbar = wx.ToolBar(graph_view, -1) toolbar.AddControl(wx.StaticText(toolbar, -1, "Path: ")) # Path list self.path_combo = wx.ComboBox(toolbar, -1, style=wx.CB_DROPDOWN) self.path_combo.Bind(wx.EVT_COMBOBOX, self.set_path) self.path_combo.Append('/') self.path_combo.SetValue('/') toolbar.AddControl(self.path_combo) # Depth spinner self.depth_spinner = wx.SpinCtrl(toolbar, -1, size=wx.Size(50, -1), min=-1, max=1337, initial=-1) self.depth_spinner.Bind(wx.EVT_SPINCTRL, self.set_depth) self._max_depth = -1 toolbar.AddControl(wx.StaticText(toolbar, -1, " Depth: ")) toolbar.AddControl(self.depth_spinner) # Label width spinner self.width_spinner = wx.SpinCtrl(toolbar, -1, size=wx.Size(50, -1), min=1, max=1337, initial=40) self.width_spinner.Bind(wx.EVT_SPINCTRL, self.set_label_width) self._label_wrapper = textwrap.TextWrapper(40, break_long_words=True) toolbar.AddControl(wx.StaticText(toolbar, -1, " Label Width: ")) toolbar.AddControl(self.width_spinner) # Implicit transition display toggle_all = wx.ToggleButton(toolbar, -1, 'Show Implicit') toggle_all.Bind(wx.EVT_TOGGLEBUTTON, self.toggle_all_transitions) self._show_all_transitions = False toolbar.AddControl(wx.StaticText(toolbar, -1, " ")) toolbar.AddControl(toggle_all) toolbar.AddControl(wx.StaticText(toolbar, -1, " ")) toolbar.AddLabelTool( wx.ID_HELP, 'Help', wx.ArtProvider.GetBitmap(wx.ART_HELP, wx.ART_OTHER, (16, 16))) toolbar.Realize() self.Bind(wx.EVT_TOOL, self.ShowControlsDialog, id=wx.ID_HELP) # Create dot graph widget self.widget = xdot.wxxdot.WxDotWindow(graph_view, -1) gv_vbox.Add(toolbar, 0, wx.EXPAND) gv_vbox.Add(self.widget, 1, wx.EXPAND) # Create tree view widget self.tree = wx.TreeCtrl(nb, -1, style=wx.TR_HAS_BUTTONS) nb.AddPage(graph_view, "Graph View") nb.AddPage(self.tree, "Tree View") # Create userdata widget borders = wx.LEFT | wx.RIGHT | wx.TOP border = 4 self.ud_win = wx.ScrolledWindow(self.content_splitter, -1) self.ud_gs = wx.BoxSizer(wx.VERTICAL) self.ud_gs.Add(wx.StaticText(self.ud_win, -1, "Path:"), 0, borders, border) self.path_input = wx.ComboBox(self.ud_win, -1, style=wx.CB_DROPDOWN) self.path_input.Bind(wx.EVT_COMBOBOX, self.selection_changed) self.ud_gs.Add(self.path_input, 0, wx.EXPAND | borders, border) self.ud_gs.Add(wx.StaticText(self.ud_win, -1, "Userdata:"), 0, borders, border) self.ud_txt = wx.TextCtrl(self.ud_win, -1, style=wx.TE_MULTILINE | wx.TE_READONLY) self.ud_gs.Add(self.ud_txt, 1, wx.EXPAND | borders, border) # Add initial state button self.is_button = wx.Button(self.ud_win, -1, "Set as Initial State") self.is_button.Bind(wx.EVT_BUTTON, self.on_set_initial_state) self.is_button.Disable() self.ud_gs.Add(self.is_button, 0, wx.EXPAND | wx.BOTTOM | borders, border) self.ud_win.SetSizer(self.ud_gs) # Set content splitter self.content_splitter.SplitVertically(viewer, self.ud_win, 512) # Add statusbar self.statusbar = wx.StatusBar(self, -1) # Add elements to sizer vbox.Add(self.content_splitter, 1, wx.EXPAND | wx.ALL) vbox.Add(self.statusbar, 0, wx.EXPAND) self.SetSizer(vbox) self.Center() # smach introspection client self._client = smach_ros.IntrospectionClient() self._containers = {} self._selected_paths = [] # Message subscribers self._structure_subs = {} self._status_subs = {} self.Bind(wx.EVT_IDLE, self.OnIdle) self.Bind(wx.EVT_CLOSE, self.OnQuit) # Register mouse event callback self.widget.register_select_callback(self.select_cb) self._path = '/' self._needs_zoom = True self._structure_changed = True # Start a thread in the background to update the server list self._keep_running = True self._server_list_thread = threading.Thread( target=self._update_server_list) self._server_list_thread.start() self._update_graph_thread = threading.Thread(target=self._update_graph) self._update_graph_thread.start() self._update_tree_thread = threading.Thread(target=self._update_tree) self._update_tree_thread.start()
def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.notebook_1 = wx.Notebook(self, -1, style=wx.NB_BOTTOM) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1) self.panel_1 = wx.Panel(self, -1) # Menu Bar self.menuBar = wx.MenuBar() menu = wx.Menu() menu.Append(ITEM_BATCH_EXPORT_ID, u"für alle Semestergruppen und Dozenten exportieren", "", wx.ITEM_NORMAL) self.menuBar.Append(menu, "Batch") menu = wx.Menu() menu.Append(ITEM_EUI_ID, "Elektrotechnik und Informatik", "", wx.ITEM_NORMAL) menu.Append(ITEM_EUI_LOAD_ID, " -> direkt einlesen", "", wx.ITEM_NORMAL) menu.Append(ITEM_INF_ID, "Informatik", "", wx.ITEM_NORMAL) menu.Append(ITEM_INF_LOAD_ID, " -> direkt einlesen", "", wx.ITEM_NORMAL) menu.AppendSeparator() menu.Append(ITEM_GOOGLE_CALENDAR_ID, "Google Calendar", "", wx.ITEM_NORMAL) menu.AppendSeparator() menu.Append(ITEM_RFC5545_ID, "iCalendar rfc5545", "", wx.ITEM_NORMAL) self.menuBar.Append(menu, "Links") menu = wx.Menu() menu.Append(ITEM_HELP_ID, "Anleitung", "", wx.ITEM_NORMAL) menu.Append(ITEM_GPL_ID, "GPL", "", wx.ITEM_NORMAL) menu.Append(ITEM_ABOUT_ID, "About", "", wx.ITEM_NORMAL) self.menuBar.Append(menu, "Hilfe") self.SetMenuBar(self.menuBar) # frame pane self.button_Load = wx.Button(self, BTN_LOAD_ID, "HAW-Kalender einlesen") self.button_Export = wx.Button( self, BTN_EXPORT_ID, "Termin-Auswahl als iCalendar exportieren") self.infoString = wx.StaticText( self.panel_1, TXT_INFO_STRING_ID, " Bitte eine HAW-Kalender Textdatei einlesen " ) self.treeCtrl_Stud = wx.TreeCtrl( self.notebook_1_pane_1, TREE_CTRL_STUD_ID, style=wx.TR_HIDE_ROOT | wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER | wx.TR_MULTIPLE) self.treeCtrl_Doz = wx.TreeCtrl( self.notebook_1_pane_2, TREE_CTRL_DOZ_ID, style=wx.TR_HIDE_ROOT | wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_DEFAULT_STYLE | wx.SUNKEN_BORDER | wx.TR_MULTIPLE) self.__doLayout() self.__doFrameBindings() self.__doMenuBindings() self.menuItem_AlleSemUndDoz = self.menuBar.FindItemById( ITEM_BATCH_EXPORT_ID) self.menuItem_AlleSemUndDoz.Enable(False) self.space = " "
def __init__( self, parent, id = wx.ID_ANY, samba_provider = None ): wx.Panel.__init__( self, parent, id, pos = ( -1, -1 ), size = ( -1, -1 ) ) self.samba_provider = samba_provider self.samba_provider.AddMountFinishedObserver( self ) self.valid_selected_samba_item = None sizer = wx.BoxSizer( wx.HORIZONTAL ) self.SetSizer( sizer ) self.tree_panel = wx.Panel( self ) self.tree = wx.TreeCtrl( self.tree_panel, wx.ID_ANY, wx.DefaultPosition, (-1,-1), wx.TR_HIDE_ROOT|wx.TR_HAS_BUTTONS|wx.TR_FULL_ROW_HIGHLIGHT|wx.TR_SINGLE ) self.root = self.tree.AddRoot('Network') self._FillTree() self.tree.ExpandAll() self.tree.Bind( wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged ) self.expand_all_BTN = wx.Button( self.tree_panel, label='Expand all' ) self.expand_all_BTN.Bind( wx.EVT_BUTTON, self.OnExpandAll ) self.collapse_all_BTN = wx.Button( self.tree_panel, label='Colapse all' ) self.collapse_all_BTN.Bind( wx.EVT_BUTTON, self.OnCollapseAll ) self.refresh_tree_BTN = wx.Button( self.tree_panel, label='Refresh' ) self.refresh_tree_BTN.Bind( wx.EVT_BUTTON, self.OnRefreshTree ) selectionLabelST = wx.StaticText( self, label = 'Selected:' ) usernameLabelST = wx.StaticText( self, label = 'username:'******'password:'******'Automount' ) self.automount_CHK.Bind( wx.EVT_CHECKBOX, self.OnCheckClick ) test_BTN = wx.Button( self, wx.ID_ANY, 'Mount' ) test_BTN.Bind( wx.EVT_BUTTON, self.OnMount ) #save_BTN = wx.Button( self, wx.ID_ANY, 'Save' ) #save_BTN.Bind( wx.EVT_BUTTON, self.OnSave ) self.statusST = wx.StaticText( self ) tree_panel_sizer = wx.BoxSizer( wx.VERTICAL ) self.tree_panel.SetSizer( tree_panel_sizer ) tree_buttons_sizer = wx.BoxSizer( wx.HORIZONTAL ) tree_buttons_sizer.Add( self.expand_all_BTN ) tree_buttons_sizer.Add( self.collapse_all_BTN ) tree_buttons_sizer.Add( self.refresh_tree_BTN ) tree_panel_sizer.Add( self.tree, 1, wx.EXPAND | wx.ALL, 5 ) tree_panel_sizer.Add( tree_buttons_sizer, 0, wx.ALIGN_CENTER | wx.ALL, 5 ) data_sizer = wx.FlexGridSizer( 2, 2 ) data_sizer.AddMany([ usernameLabelST, ( self.usernameTC, 1, wx.EXPAND ), passwordLabelST, ( self.passwordTC, 1, wx.EXPAND ) ]) data_sizer.AddGrowableCol(1, 1) vsizer = wx.BoxSizer( wx.VERTICAL ) vh_sizer = wx.BoxSizer( wx.HORIZONTAL ) vh_sizer.Add( selectionLabelST, 0, wx.ALL, 5 ) vh_sizer.Add( self.selectedST, 1, wx.ALL, 5 ) vh_sizer2 = wx.BoxSizer( wx.HORIZONTAL ) vh_sizer2.Add( test_BTN ) #vh_sizer2.Add( save_BTN ) vsizer.Add( vh_sizer, 1, wx.EXPAND | wx.ALL, 5 ) vsizer.Add( data_sizer, 0, wx.EXPAND | wx.ALL, 5 ) vsizer.Add( self.automount_CHK, 0, wx.ALIGN_CENTER | wx.ALL, 5 ) vsizer.Add( vh_sizer2, 0, wx.ALIGN_CENTER | wx.ALL, 5 ) vsizer.Add( self.statusST, 0, wx.ALIGN_CENTER | wx.ALL, 5 ) sizer.Add( self.tree_panel, 2, wx.EXPAND | wx.ALL, 5 ) sizer.Add( vsizer, 1, wx.ALL, 5 )
def _init_ctrls(self, prnt): wx.Frame.__init__(self, id=-1, name='', parent=prnt, pos=wx.Point(0, 0), size=wx.Size(1200, 700), style=wx.DEFAULT_FRAME_STYLE, title=u'the maker') self.base = "/Users/maker/Documents/workspace/TheMaker" try: # - don't sweat it if it doesn't load self.SetIcon( wx.Icon(os.path.join(self.base, "system/tags.ico"), wx.BITMAP_TYPE_ICO)) finally: pass self._init_utils() self.SetMenuBar(self.mainMenuBar) self.SetStatusBarPane(0) #the other splitter #self.splitter2 = MySplitter(self, -1,None) #the top splitter self.splitter = makerWxGUI.MySplitter(self, -1, None) # and the stc is added to it # it is very importat to keep the NODRAG style # # if dragging is added at some point the # makerProjectController.py method noteBookPageClosed has to be # changed where the noteBoolPages dict is updated # # self.noteBook = nb.FlatNotebook(self.splitter, -1, style= wx.lib.flatnotebook.FNB_NODRAG # | wx.lib.flatnotebook.FNB_X_ON_TAB) self.noteBook = makerWxGUI.MyCustomNoteBook(self.splitter, -1, None, None) self.noteBook.SetPadding(wx.Size(20)) # add a welcome message to the noteBook self.styledTextCtrl1 = (makerEditorWxView.editorView(self, "default")).editor self.welcomeId = self.styledTextCtrl1.GetId() self.noteBook.AddPage(self.styledTextCtrl1, "Thank you for using The Maker.") self.styledTextCtrl1.SetText(self.BoilerPlate) #switch off popup #self.styledTextCtrl1.Bind(wx.EVT_RIGHT_DOWN, self.OnSTCRightDown) #add widgets to the first splitter self.listWindow = wx.Panel(self.splitter, -1, style=wx.NO_BORDER) #self.listWindow.SetBackgroundColour(wx.RED) self.listSizer = wx.BoxSizer(orient=wx.VERTICAL) # the listbox is added to the splitter too self.tree = wx.TreeCtrl(self.listWindow, -1, style=wx.TR_HAS_BUTTONS | wx.TR_LINES_AT_ROOT | wx.TR_DEFAULT_STYLE) def drawAfterPaint(evt): Size = self.tree.GetClientSizeTuple() dc = wx.ClientDC(self.tree) dc.SetPen(self.treePen) dc.DrawLine(Size[0] - 1, 0, Size[0] - 1, Size[1]) def onTreePaint(evt): wx.CallAfter(drawAfterPaint, evt) evt.Skip() self.treePen = wx.Pen('#666666', 1) self.tree.Bind(wx.EVT_PAINT, onTreePaint) image_size = (16, 16) projectArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/114.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() folderArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/99.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() folderOpenArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/107.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() fileArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/93.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() fileChangeArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/118.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() partArt = wx.Image( os.path.join(self.base, "./system/ToolBarIcons/24-16.png"), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap() il = wx.ImageList(image_size[0], image_size[1]) self.projidx = il.Add(projectArt) self.fldridx = il.Add(folderArt) self.fldropenidx = il.Add(folderOpenArt) self.fileidx = il.Add(fileArt) self.filechange = il.Add(fileChangeArt) self.part = il.Add(partArt) #self.partArt(il, image_size) self.tree.SetImageList(il) self.il = il self.listSizer.Add(self.tree, 1, border=0, flag=wx.EXPAND) self.listWindow.SetAutoLayout(True) self.listWindow.SetSizer(self.listSizer) self.listSizer.Fit(self.listWindow) self.splitter.SetMinimumPaneSize(200) self.splitter.SplitVertically(self.listWindow, self.noteBook, 180) self.toolBar = self.CreateToolBar(style=wx.TB_HORIZONTAL | wx.NO_BORDER #| wx.TB_FLAT | wx.TB_TEXT) self.search = wx.SearchCtrl(self.toolBar, id=-1, pos=(750, -1), size=(180, 25), style=wx.TE_PROCESS_ENTER) #extract the searchCtrl's textCtrl self.searchStatus = wx.StaticText(self.toolBar, -1, size=wx.DefaultSize, pos=wx.DefaultPosition, style=0) self.searchStatus.SetLabel(" ") saveArt = wx.Bitmap( os.path.join(self.base, "./system/ToolBarIcons/23.png")) publishArt = wx.Bitmap( os.path.join(self.base, "./system/ToolBarIcons/53.png")) previewArt = wx.Bitmap( os.path.join(self.base, "./system/ToolBarIcons/25.png")) makeAllArt = wx.Bitmap( os.path.join(self.base, "./system/ToolBarIcons/24.png")) self.toolBar.AddSeparator() self.toolBar.AddLabelTool(10, "Save", saveArt) self.toolBar.AddLabelTool(20, "Publish", publishArt) self.toolBar.AddLabelTool(30, "Preview", previewArt) self.toolBar.AddLabelTool(40, "Make All", makeAllArt) self.toolBar.AddStretchableSpace() self.toolBar.AddControl(self.searchStatus) self.toolBar.AddControl(self.search) self.toolBar.Realize() self.statusBar1 = wx.StatusBar(id=-1, name='statusBar1', parent=self, style=wx.ST_SIZEGRIP) #self.statusBar1.SetConstraints(LayoutAnchors(self.statusBar1, True, # True, False, False)) self._init_coll_statusBar1_Fields(self.statusBar1) self.SetStatusBar(self.statusBar1) self.styledTextCtrl1.Bind(wx.EVT_PAINT, self.OnStyledTextCtrl1Paint) self.styledTextCtrl1.Bind(wx.EVT_ERASE_BACKGROUND, self.OnStyledTextCtrl1EraseBackground)
def __init__(self, gui, parent=None, id=None): """Set up the tree GUI element. @param gui: The gui object. @type gui: wx object @keyword parent: The parent GUI element that this is to be attached to. @type parent: wx object @keyword id: The ID number. @type id: int """ # Store the args. self.gui = gui self.parent = parent # Execute the base class method. wx.Window.__init__(self, parent, id, style=wx.WANTS_CHARS) # Some default values. self.icon_size = 22 # The tree. self.tree = wx.TreeCtrl(parent=self, id=-1, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TR_DEFAULT_STYLE) # A tracking structure for the tree IDs. self.tree_ids = {} # Resize the tree element. self.Bind(wx.EVT_SIZE, self._resize) # The tree roots. self.root = self.tree.AddRoot("Spin system information") if dep_check.wx_classic: self.tree.SetPyData(self.root, "root") else: self.tree.SetItemData(self.root, "root") # Build the icon list. icon_list = wx.ImageList(self.icon_size, self.icon_size) # The normal icons. self.icon_mol_index = icon_list.Add( wx.Bitmap(fetch_icon("relax.molecule", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_mol_unfold_index = icon_list.Add( wx.Bitmap(fetch_icon("relax.molecule_unfolded", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_res_index = icon_list.Add( wx.Bitmap(fetch_icon("relax.residue", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_spin_index = icon_list.Add( wx.Bitmap(fetch_icon("relax.spin", "22x22"), wx.BITMAP_TYPE_ANY)) # The deselected icons. self.icon_mol_index_desel = icon_list.Add( wx.Bitmap(fetch_icon("relax.molecule_grey", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_mol_unfold_index_desel = icon_list.Add( wx.Bitmap(fetch_icon("relax.molecule_unfolded_grey", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_res_index_desel = icon_list.Add( wx.Bitmap(fetch_icon("relax.residue_grey", "22x22"), wx.BITMAP_TYPE_ANY)) self.icon_spin_index_desel = icon_list.Add( wx.Bitmap(fetch_icon("relax.spin_grey", "22x22"), wx.BITMAP_TYPE_ANY)) # Set the icon list. self.tree.SetImageList(icon_list) # Some weird black magic (this is essential)!! self.icon_list = icon_list # Populate the tree. self.update() # Catch mouse events. self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self._selection) self.tree.Bind(wx.EVT_RIGHT_DOWN, self._right_click)
def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL) self.SetBackgroundColour( wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) pmainSizer = wx.BoxSizer(wx.HORIZONTAL) availableSizer = wx.BoxSizer(wx.VERTICAL) self.searchBox = SearchBox(self) self.itemView = ItemView(self) self.itemView.Hide() availableSizer.Add(self.searchBox, 0, wx.EXPAND) availableSizer.Add(self.itemView, 1, wx.EXPAND) ''' self.availableImplantsSearch = wx.SearchCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) self.availableImplantsSearch.ShowCancelButton(True) availableSizer.Add(self.availableImplantsSearch, 0, wx.BOTTOM | wx.EXPAND, 2) ''' self.availableImplantsTree = wx.TreeCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) root = self.availableRoot = self.availableImplantsTree.AddRoot( "Available") self.availableImplantsImageList = wx.ImageList(16, 16) self.availableImplantsTree.SetImageList( self.availableImplantsImageList) availableSizer.Add(self.availableImplantsTree, 1, wx.EXPAND) pmainSizer.Add(availableSizer, 1, wx.ALL | wx.EXPAND, 5) buttonSizer = wx.BoxSizer(wx.VERTICAL) buttonSizer.AddSpacer((0, 0), 1) self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap( "fit_add_small", "gui"), style=wx.BORDER_NONE) buttonSizer.Add(self.btnAdd, 0) self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap( "fit_delete_small", "gui"), style=wx.BORDER_NONE) buttonSizer.Add(self.btnRemove, 0) buttonSizer.AddSpacer((0, 0), 1) pmainSizer.Add(buttonSizer, 0, wx.EXPAND, 0) characterImplantSizer = wx.BoxSizer(wx.VERTICAL) self.pluggedImplantsTree = AvailableImplantsView(self) characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL | wx.EXPAND, 5) pmainSizer.Add(characterImplantSizer, 1, wx.EXPAND, 5) self.SetSizer(pmainSizer) # Populate the market tree sMkt = service.Market.getInstance() for mktGrp in sMkt.getImplantTree(): iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(mktGrp)) childId = self.availableImplantsTree.AppendItem( root, mktGrp.name, iconId, data=wx.TreeItemData(mktGrp.ID)) if sMkt.marketGroupHasTypesCheck(mktGrp) is False: self.availableImplantsTree.AppendItem(childId, "dummy") self.availableImplantsTree.SortChildren(self.availableRoot) #Bind the event to replace dummies by real data self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.itemSelected) self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemSelected) #Bind add & remove buttons self.btnAdd.Bind(wx.EVT_BUTTON, self.itemSelected) self.btnRemove.Bind(wx.EVT_BUTTON, self.removeItem) # We update with an empty list first to set the initial size for Layout(), then update later with actual # implants for character. This helps with sizing issues. self.pluggedImplantsTree.update([]) self.bindContext() self.Layout() self.update()
def __init__(self, parent, position=wx.DefaultPosition, sz=wx.Size(324, 455), stl=wx.TAB_TRAVERSAL): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=position, size=sz, style=stl) bSizer = wx.BoxSizer(wx.VERTICAL) self.frame = parent self.tb1 = aui.AuiToolBar(self, -1) self.tb1.SetAuiManager(self.frame._mgr) # tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_UP), wx.ART_MENU, wx.Size(16, 16)) # gbmp = tbmp.ConvertToImage().ConvertToGreyscale().ConvertToBitmap() # self.tb1.AddTool( self.ID_Commit, '', tbmp, gbmp, # wx.ITEM_NORMAL, _('Commit'), _('Store version locally'), None) tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_PUSH), wx.ART_MENU, wx.Size(16, 16)) gbmp = tbmp.ConvertToImage().ConvertToGreyscale().ConvertToBitmap() self.tb1.AddTool(self.ID_Push, '', tbmp, gbmp, wx.ITEM_NORMAL, _('Push'), _('Save version to remote repository'), None) tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_PULL), wx.ART_MENU, wx.Size(16, 16)) gbmp = tbmp.ConvertToImage().ConvertToGreyscale().ConvertToBitmap() self.tb1.AddTool(self.ID_Pull, '', tbmp, gbmp, wx.ITEM_NORMAL, _('Synchronize'), _('Update from remote repository'), None) self.tb1.AddStretchSpacer() tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_REPOSITORY), wx.ART_MENU, wx.Size(16, 16)) gbmp = tbmp.ConvertToImage().ConvertToGreyscale().ConvertToBitmap() self.tb1.AddTool(self.ID_RepoView, '', tbmp, gbmp, wx.ITEM_NORMAL, _('Repository'), _('Explore repository'), None) self.tb1.Realize() self.FixToolsState() bSizer.Add(self.tb1, proportion=0, flag=wx.EXPAND, border=0) self.explorer = wx.TreeCtrl(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE | wx.NO_BORDER) bSizer.Add(self.explorer, proportion=1, flag=wx.ALL | wx.EXPAND, border=0) self.SetSizer(bSizer) self.Layout() self.explorer.Bind(wx.EVT_LEFT_DCLICK, self.OnExplDouble) self.explorer.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnExplChaged) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_AddEFolder) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_AddEPackage) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_AddECode) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_ERemove) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_OpenECode) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_RunECode) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_ReloadEPackage) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_ImportECode) self.Bind(wx.EVT_MENU, self.OnEngineMenu, id=self.ID_ERefresh) self.Bind(wx.EVT_MENU, self.OnReportMenu, id=self.ID_AddRFolder) self.Bind(wx.EVT_MENU, self.OnReportMenu, id=self.ID_AddRCode) self.Bind(wx.EVT_MENU, self.OnReportMenu, id=self.ID_RRemove) self.Bind(wx.EVT_MENU, self.OnReportMenu, id=self.ID_RGenerate) self.Bind(wx.EVT_MENU, self.OnLayerMenu, id=self.ID_RemoveLayer) self.Bind(wx.EVT_MENU, self.OnRefreshWorld, id=self.ID_RefreshWorld) self.Bind(wx.EVT_MENU, self.OnRefreshWorld, id=self.ID_RefreshLayers) self.Bind(wx.EVT_MENU, self.OnRefreshWorld, id=self.ID_RefreshEngines) self.Bind(wx.EVT_MENU, self.OnRefreshWorld, id=self.ID_RefreshReports) # self.Bind(wx.EVT_MENU, self.OnCommit, id=self.ID_Commit) self.Bind(wx.EVT_MENU, self.OnPush, id=self.ID_Push) self.Bind(wx.EVT_MENU, self.OnPull, id=self.ID_Pull) self.Bind(wx.EVT_MENU, self.OnRepoView, id=self.ID_RepoView) self.Bind(wx.EVT_TREE_ITEM_MENU, self.OnViewMenu)
def create_layout(self): self.main_grid = wx.BoxSizer(wx.HORIZONTAL) style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.TR_TWIST_BUTTONS | wx.TR_NO_LINES # style = wx.TR_HAS_BUTTONS | wx.TR_SINGLE | wx.TR_HIDE_ROOT image_list = wx.ImageList(16, 16) tree_ctrl_id = modules.interface.functions.id_renew('settings.tree', update=True) self.tree_ctrl = wx.TreeCtrl(self, id=tree_ctrl_id, style=style) root_key = get_key('settings', 'tree', 'root') root_node = self.tree_ctrl.AddRoot(translate_key(root_key)) for cat_name, category in self.categories.items(): item_node = self.get_tree_item(get_key('settings', cat_name), root_node) for module_name, module_settings in category.items(): if module_name == cat_name: continue if '.' in module_name: continue config = module_settings.get('config') if config.icon: icon = wx.Bitmap(config.icon) self.tree_ctrl_image_dict[ module_name] = image_list.GetImageCount() image_list.Add(icon) else: self.tree_ctrl_image_dict[module_name] = -1 module_node = self.get_tree_item( get_key('settings', cat_name, module_name), item_node, name_key=module_name, image=self.tree_ctrl_image_dict[module_name]) tree_nodes = self._get_panels(config) if not tree_nodes: continue self.create_nested_tree_item(tree_nodes, node=module_node, key=get_key( 'settings', cat_name, module_name)) if self.show_icons: self.tree_ctrl.AssignImageList(image_list) self.tree_ctrl.ExpandAll() self.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_tree_ctrl_changed, id=tree_ctrl_id) self.main_grid.Add(self.tree_ctrl, 7, wx.EXPAND | wx.ALL, 7) content_page_id = modules.interface.functions.id_renew( MODULE_KEY.join(['settings', 'content'])) self.content_page = wx.Panel(self, id=content_page_id) self.main_grid.Add(self.content_page, 15, wx.EXPAND) self.main_grid.Layout() self.SetSizer(self.main_grid) self.tree_ctrl.SelectItem(self.tree_ctrl.GetFirstChild(root_node)[0])
def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.SetSize((800, 600)) self.wildcard = 'CSV文件(*.csv)|*.csv|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*' self.filelist = [] self.dfs = [] self.window_1 = wx.SplitterWindow(self, wx.ID_ANY) self.window_1_pane_1 = wx.Panel(self.window_1, wx.ID_ANY) self.tree_ctrl_1 = wx.TreeCtrl(self.window_1_pane_1, wx.ID_ANY) # 创建根节点和子节点并展开 root = self.tree_ctrl_1.AddRoot('项目', image=0) self.item1 = self.tree_ctrl_1.AppendItem(root, '训练数据', 0) self.tree_ctrl_1.Expand(root) self.tree_ctrl_1.SelectItem(root) self.window_1_pane_2 = wx.Panel(self.window_1, wx.ID_ANY) self.notebook_1 = wx.Notebook(self.window_1_pane_2, wx.ID_ANY) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, wx.ID_ANY) self.window_2 = wx.SplitterWindow(self.notebook_1_pane_1, wx.ID_ANY) self.window_2_pane_1 = wx.Panel(self.window_2, wx.ID_ANY) self.choice_1 = wx.Choice( self.window_2_pane_1, wx.ID_ANY, choices=[u"<\u9009\u62e9\u6570\u636e\u96c6>"]) self.list_box_1 = wx.ListBox(self.window_2_pane_1, wx.ID_ANY, choices=[]) self.notebook_2 = wx.Notebook(self.window_2_pane_1, wx.ID_ANY) self.notebook_2_pane_1 = wx.Panel(self.notebook_2, wx.ID_ANY) self.checkbox_1 = wx.CheckBox(self.notebook_2_pane_1, wx.ID_ANY, u"\u65e5\u671f\u548c\u65f6\u95f4") self.checkbox_2 = wx.CheckBox(self.notebook_2_pane_1, wx.ID_ANY, u"\u6807\u51c6\u5316\u6570\u636e") self.checkbox_3 = wx.CheckBox(self.notebook_2_pane_1, wx.ID_ANY, u"\u663e\u793a\u62a5\u8b66\u7ebf") self.choice_2 = wx.Choice( self.notebook_2_pane_1, wx.ID_ANY, choices=[u"\u663e\u793a", u"\u6807\u8bb0", u"\u9690\u85cf"]) self.choice_3 = wx.Choice( self.notebook_2_pane_1, wx.ID_ANY, choices=[u"\u663e\u793a", u"\u6807\u8bb0", u"\u9690\u85cf"]) self.notebook_2_ = wx.Panel(self.notebook_2, wx.ID_ANY) self.checkbox_4 = wx.CheckBox( self.notebook_2_, wx.ID_ANY, u"\u9009\u62e9\u6570\u636e\u70b9\u8fdb\u884c\u7f16\u8f91") self.button_1 = wx.Button(self.notebook_2_, wx.ID_ANY, u"\u5305\u542b") self.button_2 = wx.Button(self.notebook_2_, wx.ID_ANY, u"\u6392\u9664") self.button_3 = wx.Button(self.notebook_2_, wx.ID_ANY, u"\u5220\u9664") self.window_2_pane_2 = wx.Panel(self.window_2, wx.ID_ANY) self.window_3 = matplotlib_canvas.MatplotlibCanvas( self.window_2_pane_2, wx.ID_ANY) self.notebook_1_ = wx.Panel(self.notebook_1, wx.ID_ANY) self.window_4 = wx.SplitterWindow(self.notebook_1_, wx.ID_ANY) self.window_4_pane_1 = wx.Panel(self.window_4, wx.ID_ANY) self.check_list_box_1 = wx.CheckListBox(self.window_4_pane_1, wx.ID_ANY, choices=[]) self.list_box_2 = wx.ListBox(self.window_4_pane_1, wx.ID_ANY, choices=[]) self.list_box_3 = wx.ListBox(self.window_4_pane_1, wx.ID_ANY, choices=[]) self.checkbox_5 = wx.CheckBox(self.window_4_pane_1, wx.ID_ANY, u"\u663e\u793a\u9884\u89c8") self.choice_4 = wx.Choice( self.window_4_pane_1, wx.ID_ANY, choices=[u"\u663e\u793a", u"\u6807\u8bb0", u"\u9690\u85cf"]) self.choice_5 = wx.Choice( self.window_4_pane_1, wx.ID_ANY, choices=[u"\u663e\u793a", u"\u6807\u8bb0", u"\u9690\u85cf"]) self.button_4 = wx.Button(self.window_4_pane_1, wx.ID_ANY, u"\u9884\u89c8") self.button_5 = wx.Button(self.window_4_pane_1, wx.ID_ANY, u"\u6bd4\u8f83") self.button_6 = wx.Button(self.window_4_pane_1, wx.ID_ANY, u"\u5305\u542b") self.button_7 = wx.Button(self.window_4_pane_1, wx.ID_ANY, u"\u6bd4\u8f83") self.button_8 = wx.Button(self.window_4_pane_1, wx.ID_ANY, u"\u5220\u9664") self.window_4_pane_2 = wx.Panel(self.window_4, wx.ID_ANY) self.window_5 = matplotlib_canvas.MatplotlibCanvas( self.window_4_pane_2, wx.ID_ANY) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, wx.ID_ANY) self.choice_6 = wx.Choice( self.notebook_1_pane_2, wx.ID_ANY, choices=[u"\u4e2d\u534e", u"\u7ea2\u53cc\u559c", u"\u5229\u7fa4"]) self.grid_1 = wx.grid.Grid(self.notebook_1_pane_2, wx.ID_ANY, size=(1, 1)) self.notebook_1_pane_3 = wx.Panel(self.notebook_1, wx.ID_ANY) self.grid_2 = wx.grid.Grid(self.notebook_1_pane_3, wx.ID_ANY, size=(1, 1)) self.notebook_1_pane_4 = wx.Panel(self.notebook_1, wx.ID_ANY) self.window_6 = wx.SplitterWindow(self.notebook_1_pane_4, wx.ID_ANY) self.window_6_pane_1 = wx.Panel(self.window_6, wx.ID_ANY) self.choice_7 = wx.Choice( self.window_6_pane_1, wx.ID_ANY, choices=[u"<\u9009\u62e9\u6570\u636e\u96c6>"]) self.list_box_4 = wx.ListBox(self.window_6_pane_1, wx.ID_ANY, choices=[]) self.window_6_pane_2 = wx.Panel(self.window_6, wx.ID_ANY) self.window_7 = matplotlib_canvas.MatplotlibCanvas( self.window_6_pane_2, wx.ID_ANY) self.notebook_1_pane_5 = wx.Panel(self.notebook_1, wx.ID_ANY) self.list_box_5 = wx.ListBox(self.notebook_1_pane_5, wx.ID_ANY, choices=[]) self.spin_ctrl_1 = wx.SpinCtrl(self.notebook_1_pane_5, wx.ID_ANY, "0", min=0, max=100) self.spin_ctrl_2 = wx.SpinCtrl(self.notebook_1_pane_5, wx.ID_ANY, "0", min=0, max=100) self.spin_ctrl_3 = wx.SpinCtrl(self.notebook_1_pane_5, wx.ID_ANY, "0", min=0, max=100) self.spin_ctrl_4 = wx.SpinCtrl(self.notebook_1_pane_5, wx.ID_ANY, "0", min=0, max=100) self.spin_ctrl_5 = wx.SpinCtrl(self.notebook_1_pane_5, wx.ID_ANY, "0", min=0, max=100) self.button_9 = wx.Button(self.notebook_1_pane_5, wx.ID_ANY, u"\u4fdd\u5b58") self.button_10 = wx.Button(self.notebook_1_pane_5, wx.ID_ANY, u"\u53d6\u6d88") self.__set_properties() self.__do_layout() self.Bind(wx.EVT_TREE_SEL_CHANGED, self.openfile, self.tree_ctrl_1) self.Bind(wx.EVT_CHOICE, self.onchoice1, self.choice_1) self.Bind(wx.EVT_LISTBOX, self.onlistbox1, self.list_box_1) self.Bind(wx.EVT_CHECKLISTBOX, self.onchecklistbox1, self.check_list_box_1) self.Bind(wx.EVT_LISTBOX, self.onlistbox2, self.list_box_2) self.Bind(wx.EVT_LISTBOX, self.onlistbox3, self.list_box_3) self.Bind(wx.EVT_CHOICE, self.onchoice7, self.choice_7) self.Bind(wx.EVT_LISTBOX, self.onlistbox4, self.list_box_4) self.Bind(wx.EVT_LISTBOX, self.onlistbox5, self.list_box_5)
def __init__(self, *args, **kwds): # begin wxGlade: All_Widgets_Frame.__init__ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.SetSize((800, 417)) # Menu Bar self.All_Widgets_menubar = wx.MenuBar() global mn_IDUnix mn_IDUnix = wx.NewId() global mn_IDWindows mn_IDWindows = wx.NewId() wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(wx.ID_OPEN, _("&Open"), _("Open an existing document")) wxglade_tmp_menu.Append(wx.ID_CLOSE, _("&Close file"), _("Close current document")) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(wx.ID_EXIT, _("E&xit"), _("Finish program")) self.All_Widgets_menubar.Append(wxglade_tmp_menu, _("&File")) wxglade_tmp_menu = wx.Menu() self.All_Widgets_menubar.mn_Unix = wxglade_tmp_menu.Append( mn_IDUnix, _("Unix"), _("Use Unix line endings"), wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.onSelectUnix, id=mn_IDUnix) self.All_Widgets_menubar.mn_Windows = wxglade_tmp_menu.Append( mn_IDWindows, _("Windows"), _("Use Windows line endings"), wx.ITEM_RADIO) self.Bind(wx.EVT_MENU, self.onSelectWindows, id=mn_IDWindows) wxglade_tmp_menu.AppendSeparator() self.All_Widgets_menubar.mn_RemoveTabs = wxglade_tmp_menu.Append( wx.ID_ANY, _("Remove Tabs"), _("Remove all leading tabs"), wx.ITEM_CHECK) self.Bind(wx.EVT_MENU, self.onRemoveTabs, id=self.All_Widgets_menubar.mn_RemoveTabs.GetId()) self.All_Widgets_menubar.Append(wxglade_tmp_menu, _("&Edit")) wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(wx.ID_HELP, _("Manual"), _("Show the application manual")) self.Bind(wx.EVT_MENU, self.onShowManual, id=wx.ID_HELP) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(wx.ID_ABOUT, _("About"), _("Show the About dialog")) self.All_Widgets_menubar.Append(wxglade_tmp_menu, _("&Help")) self.SetMenuBar(self.All_Widgets_menubar) # Menu Bar end self.All_Widgets_statusbar = self.CreateStatusBar(1, wx.ST_SIZEGRIP) # Tool Bar self.All_Widgets_toolbar = wx.ToolBar(self, -1) self.SetToolBar(self.All_Widgets_toolbar) self.All_Widgets_toolbar.AddLabelTool( wx.ID_UP, _("UpDown"), wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_OTHER, (32, 32)), wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN, wx.ART_OTHER, (32, 32)), wx.ITEM_CHECK, _("Up or Down"), _("Up or Down")) self.All_Widgets_toolbar.AddLabelTool(wx.ID_OPEN, _("Open"), wx.EmptyBitmap(32, 32), wx.NullBitmap, wx.ITEM_NORMAL, _("Open a new file"), _("Open a new file")) # Tool Bar end self.notebook_1 = wx.Notebook(self, wx.ID_ANY, style=wx.NB_BOTTOM) self.notebook_1_wxBitmapButton = wx.Panel(self.notebook_1, wx.ID_ANY) self.bitmap_button_icon1 = wx.BitmapButton( self.notebook_1_wxBitmapButton, wx.ID_ANY, wx.Bitmap("icon.xpm", wx.BITMAP_TYPE_ANY)) self.bitmap_button_empty1 = wx.BitmapButton( self.notebook_1_wxBitmapButton, wx.ID_ANY, wx.EmptyBitmap(10, 10)) self.bitmap_button_icon2 = wx.BitmapButton( self.notebook_1_wxBitmapButton, wx.ID_ANY, wx.Bitmap("icon.xpm", wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE | wx.BU_BOTTOM) self.bitmap_button_art = wx.BitmapButton( self.notebook_1_wxBitmapButton, wx.ID_ANY, wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_OTHER, (32, 32)), style=wx.BORDER_NONE | wx.BU_BOTTOM) self.notebook_1_wxButton = wx.Panel(self.notebook_1, wx.ID_ANY) self.button_3 = wx.Button(self.notebook_1_wxButton, wx.ID_BOLD, "") self.notebook_1_wxCalendarCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.calendar_ctrl_1 = wx.calendar.CalendarCtrl( self.notebook_1_wxCalendarCtrl, wx.ID_ANY, style=wx.calendar.CAL_MONDAY_FIRST | wx.calendar.CAL_SEQUENTIAL_MONTH_SELECTION | wx.calendar.CAL_SHOW_SURROUNDING_WEEKS) self.notebook_1_wxCheckBox = wx.Panel(self.notebook_1, wx.ID_ANY) self.checkbox_1 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("one (unchecked)")) self.checkbox_2 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("two (checked)")) self.checkbox_3 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("three"), style=wx.CHK_2STATE) self.checkbox_4 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("four (unchecked)"), style=wx.CHK_3STATE) self.checkbox_5 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("five (checked)"), style=wx.CHK_3STATE | wx.CHK_ALLOW_3RD_STATE_FOR_USER) self.checkbox_6 = wx.CheckBox(self.notebook_1_wxCheckBox, wx.ID_ANY, _("six (undetermined)"), style=wx.CHK_3STATE | wx.CHK_ALLOW_3RD_STATE_FOR_USER) self.notebook_1_wxCheckListBox = wx.Panel(self.notebook_1, wx.ID_ANY) self.check_list_box_1 = wx.CheckListBox( self.notebook_1_wxCheckListBox, wx.ID_ANY, choices=[_("one"), _("two"), _("three"), _("four")]) self.notebook_1_wxChoice = wx.Panel(self.notebook_1, wx.ID_ANY) self.choice_empty = wx.Choice(self.notebook_1_wxChoice, wx.ID_ANY, choices=[]) self.choice_filled = wx.Choice( self.notebook_1_wxChoice, wx.ID_ANY, choices=[_("Item 1"), _("Item 2 (pre-selected)")]) self.notebook_1_wxComboBox = wx.Panel(self.notebook_1, wx.ID_ANY) self.combo_box_empty = wx.ComboBox(self.notebook_1_wxComboBox, wx.ID_ANY, choices=[], style=0) self.combo_box_filled = wx.ComboBox( self.notebook_1_wxComboBox, wx.ID_ANY, choices=[_("Item 1 (pre-selected)"), _("Item 2")], style=0) self.notebook_1_wxDatePickerCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.datepicker_ctrl_1 = wx.DatePickerCtrl( self.notebook_1_wxDatePickerCtrl, wx.ID_ANY, style=wx.DP_SHOWCENTURY) self.notebook_1_wxGauge = wx.Panel(self.notebook_1, wx.ID_ANY) self.gauge_1 = wx.Gauge(self.notebook_1_wxGauge, wx.ID_ANY, 20) self.notebook_1_wxGrid = wx.Panel(self.notebook_1, wx.ID_ANY) self.grid_1 = wx.grid.Grid(self.notebook_1_wxGrid, wx.ID_ANY, size=(1, 1)) self.notebook_1_wxHyperlinkCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.hyperlink_1 = wx.HyperlinkCtrl(self.notebook_1_wxHyperlinkCtrl, wx.ID_ANY, _("Homepage wxGlade"), _("http://wxglade.sf.net")) self.notebook_1_wxListBox = wx.Panel(self.notebook_1, wx.ID_ANY) self.list_box_empty = wx.ListBox(self.notebook_1_wxListBox, wx.ID_ANY, choices=[], style=0) self.list_box_filled = wx.ListBox( self.notebook_1_wxListBox, wx.ID_ANY, choices=[_("Item 1"), _("Item 2 (pre-selected)")], style=wx.LB_MULTIPLE | wx.LB_SORT) self.notebook_1_wxListCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.list_ctrl_1 = wx.ListCtrl(self.notebook_1_wxListCtrl, wx.ID_ANY, style=wx.BORDER_SUNKEN | wx.LC_REPORT) self.notebook_1_wxRadioBox = wx.Panel(self.notebook_1, wx.ID_ANY) self.radio_box_empty1 = wx.RadioBox(self.notebook_1_wxRadioBox, wx.ID_ANY, _("radio_box_empty1"), choices=[""], majorDimension=1, style=wx.RA_SPECIFY_ROWS) self.radio_box_filled1 = wx.RadioBox(self.notebook_1_wxRadioBox, wx.ID_ANY, _("radio_box_filled1"), choices=[ _("choice 1"), _("choice 2 (pre-selected)"), _("choice 3") ], majorDimension=0, style=wx.RA_SPECIFY_ROWS) self.radio_box_empty2 = wx.RadioBox(self.notebook_1_wxRadioBox, wx.ID_ANY, _("radio_box_empty2"), choices=[""], majorDimension=1, style=wx.RA_SPECIFY_COLS) self.radio_box_filled2 = wx.RadioBox( self.notebook_1_wxRadioBox, wx.ID_ANY, _("radio_box_filled2"), choices=[_("choice 1"), _("choice 2 (pre-selected)")], majorDimension=0, style=wx.RA_SPECIFY_COLS) self.notebook_1_wxRadioButton = wx.Panel(self.notebook_1, wx.ID_ANY) self.radio_btn_1 = wx.RadioButton(self.notebook_1_wxRadioButton, wx.ID_ANY, _("Alice"), style=wx.RB_GROUP) self.text_ctrl_1 = wx.TextCtrl(self.notebook_1_wxRadioButton, wx.ID_ANY, "") self.radio_btn_2 = wx.RadioButton(self.notebook_1_wxRadioButton, wx.ID_ANY, _("Bob")) self.text_ctrl_2 = wx.TextCtrl(self.notebook_1_wxRadioButton, wx.ID_ANY, "") self.radio_btn_3 = wx.RadioButton(self.notebook_1_wxRadioButton, wx.ID_ANY, _("Malroy")) self.text_ctrl_3 = wx.TextCtrl(self.notebook_1_wxRadioButton, wx.ID_ANY, "") self.notebook_1_wxSlider = wx.Panel(self.notebook_1, wx.ID_ANY) self.slider_1 = wx.Slider(self.notebook_1_wxSlider, wx.ID_ANY, 5, 0, 10, style=0) self.notebook_1_wxSpinButton = wx.Panel(self.notebook_1, wx.ID_ANY) self.tc_spin_button = wx.TextCtrl(self.notebook_1_wxSpinButton, wx.ID_ANY, _("1"), style=wx.TE_RIGHT) self.spin_button = wx.SpinButton(self.notebook_1_wxSpinButton, wx.ID_ANY) self.notebook_1_wxSpinCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.spin_ctrl_1 = wx.SpinCtrl(self.notebook_1_wxSpinCtrl, wx.ID_ANY, "4", min=0, max=100) self.notebook_1_wxSplitterWindow_horizontal = wx.ScrolledWindow( self.notebook_1, wx.ID_ANY, style=wx.TAB_TRAVERSAL) self.splitter_1 = wx.SplitterWindow( self.notebook_1_wxSplitterWindow_horizontal, wx.ID_ANY, style=0) self.splitter_1_pane_1 = wx.Panel(self.splitter_1, wx.ID_ANY) self.label_top_pane = wx.StaticText(self.splitter_1_pane_1, wx.ID_ANY, _("top pane")) self.splitter_1_pane_2 = wx.Panel(self.splitter_1, wx.ID_ANY) self.label_buttom_pane = wx.StaticText(self.splitter_1_pane_2, wx.ID_ANY, _("bottom pane")) self.notebook_1_wxSplitterWindow_vertical = wx.ScrolledWindow( self.notebook_1, wx.ID_ANY, style=wx.TAB_TRAVERSAL) self.splitter_2 = wx.SplitterWindow( self.notebook_1_wxSplitterWindow_vertical, wx.ID_ANY, style=0) self.splitter_2_pane_1 = wx.Panel(self.splitter_2, wx.ID_ANY) self.label_left_pane = wx.StaticText(self.splitter_2_pane_1, wx.ID_ANY, _("left pane")) self.splitter_2_pane_2 = wx.Panel(self.splitter_2, wx.ID_ANY) self.label_right_pane = wx.StaticText(self.splitter_2_pane_2, wx.ID_ANY, _("right pane")) self.notebook_1_wxStaticBitmap = wx.Panel(self.notebook_1, wx.ID_ANY) self.bitmap_empty = wx.StaticBitmap(self.notebook_1_wxStaticBitmap, wx.ID_ANY, wx.EmptyBitmap(32, 32)) self.bitmap_file = wx.StaticBitmap( self.notebook_1_wxStaticBitmap, wx.ID_ANY, wx.Bitmap("icon.xpm", wx.BITMAP_TYPE_ANY)) self.bitmap_nofile = wx.StaticBitmap( self.notebook_1_wxStaticBitmap, wx.ID_ANY, wx.Bitmap("non-existing.bmp", wx.BITMAP_TYPE_ANY)) self.bitmap_art = wx.StaticBitmap( self.notebook_1_wxStaticBitmap, wx.ID_ANY, wx.ArtProvider.GetBitmap(wx.ART_PRINT, wx.ART_OTHER, (32, 32))) self.notebook_1_wxStaticLine = wx.Panel(self.notebook_1, wx.ID_ANY) self.static_line_2 = wx.StaticLine(self.notebook_1_wxStaticLine, wx.ID_ANY, style=wx.LI_VERTICAL) self.static_line_3 = wx.StaticLine(self.notebook_1_wxStaticLine, wx.ID_ANY, style=wx.LI_VERTICAL) self.static_line_4 = wx.StaticLine(self.notebook_1_wxStaticLine, wx.ID_ANY) self.static_line_5 = wx.StaticLine(self.notebook_1_wxStaticLine, wx.ID_ANY) self.notebook_1_wxStaticText = wx.Panel(self.notebook_1, wx.ID_ANY) self.label_1 = wx.StaticText(self.notebook_1_wxStaticText, wx.ID_ANY, _("red text (RGB)"), style=wx.ALIGN_CENTER) self.label_4 = wx.StaticText(self.notebook_1_wxStaticText, wx.ID_ANY, _("black on red (RGB)"), style=wx.ALIGN_CENTER) self.label_5 = wx.StaticText(self.notebook_1_wxStaticText, wx.ID_ANY, _("green on pink (RGB)"), style=wx.ALIGN_CENTER) self.notebook_1_Spacer = wx.Panel(self.notebook_1, wx.ID_ANY) self.label_3 = wx.StaticText(self.notebook_1_Spacer, wx.ID_ANY, _("Two labels with a")) self.label_2 = wx.StaticText(self.notebook_1_Spacer, wx.ID_ANY, _("spacer between")) self.notebook_1_wxTextCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.text_ctrl = wx.TextCtrl(self.notebook_1_wxTextCtrl, wx.ID_ANY, _("This\nis\na\nmultiline\nwxTextCtrl"), style=wx.TE_CHARWRAP | wx.TE_MULTILINE | wx.TE_WORDWRAP) self.notebook_1_wxToggleButton = wx.Panel(self.notebook_1, wx.ID_ANY) self.button_2 = wx.ToggleButton(self.notebook_1_wxToggleButton, wx.ID_ANY, _("Toggle Button 1")) self.button_4 = wx.ToggleButton(self.notebook_1_wxToggleButton, wx.ID_ANY, _("Toggle Button 2"), style=wx.BU_BOTTOM | wx.BU_EXACTFIT) self.notebook_1_wxTreeCtrl = wx.Panel(self.notebook_1, wx.ID_ANY) self.tree_ctrl_1 = wx.TreeCtrl(self.notebook_1_wxTreeCtrl, wx.ID_ANY, style=0) self.static_line_1 = wx.StaticLine(self, wx.ID_ANY) self.button_5 = wx.Button(self, wx.ID_CLOSE, "") self.button_1 = wx.Button(self, wx.ID_OK, "", style=wx.BU_TOP) self.__set_properties() self.__do_layout() self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnNotebookPageChanged, self.notebook_1) self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnNotebookPageChanging, self.notebook_1) self.Bind(wx.EVT_BUTTON, self.onStartConverting, self.button_1)
def __init__(self, parent=None, id=wx.ID_ANY, title="SwitchHost!", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE, cls_TaskBarIcon=None): wx.Frame.__init__(self, parent, id, title, pos, size, style) self.SetIcon(co.GetMondrianIcon()) self.taskbar_icon = cls_TaskBarIcon(self) # self.Bind(wx.EVT_CLOSE, self.OnClose) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) self.m_menubar1 = wx.MenuBar(0) self.m_menu1 = wx.Menu() self.m_menuItem_new = wx.MenuItem(self.m_menu1, wx.ID_NEW, u"新建(&N)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_new) self.m_menu1.AppendSeparator() self.m_menuItem_exit = wx.MenuItem(self.m_menu1, wx.ID_EXIT, u"退出(&X)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu1.AppendItem(self.m_menuItem_exit) self.m_menubar1.Append(self.m_menu1, u"文件(&F)") self.m_menu2 = wx.Menu() self.m_menuItem_about = wx.MenuItem(self.m_menu2, wx.ID_ABOUT, u"关于(&A)", wx.EmptyString, wx.ITEM_NORMAL) self.m_menu2.AppendItem(self.m_menuItem_about) self.m_menubar1.Append(self.m_menu2, u"帮助(&H)") self.SetMenuBar(self.m_menubar1) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_panel1 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer4 = wx.BoxSizer(wx.HORIZONTAL) bSizer5 = wx.BoxSizer(wx.VERTICAL) self.m_list = wx.ListCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.Size(160, 320), wx.LC_REPORT) self.m_list.Hide() bSizer5.Add(self.m_list, 0, wx.ALL | wx.EXPAND, 5) self.m_tree = wx.TreeCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.Size(160, 320)) self.tree_root = self.m_tree.AddRoot(u"hosts") self.tree_local = self.m_tree.AppendItem(self.tree_root, u"本地方案") self.tree_online = self.m_tree.AppendItem(self.tree_root, u"在线方案") self.m_tree.ExpandAll() bSizer5.Add(self.m_tree, 0, wx.ALL | wx.EXPAND, 5) bSizer61 = wx.BoxSizer(wx.HORIZONTAL) self.m_btn_add = buttons.GenBitmapTextButton( self.m_panel1, wx.ID_ADD, co.GetMondrianBitmap(fn="add"), u"添加") bSizer61.Add(self.m_btn_add, 0, wx.ALL, 5) self.m_btn_del = buttons.GenBitmapTextButton( self.m_panel1, wx.ID_DELETE, co.GetMondrianBitmap(fn="delete"), u"删除") bSizer61.Add(self.m_btn_del, 0, wx.ALL, 5) bSizer5.Add(bSizer61, 1, wx.EXPAND, 5) bSizer4.Add(bSizer5, 0, wx.EXPAND, 5) bSizer6 = wx.BoxSizer(wx.VERTICAL) self.m_textCtrl_content = wx.TextCtrl( self.m_panel1, self.ID_HOSTS_TEXT, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE | wx.TE_RICH2 | wx.TE_PROCESS_TAB | wx.HSCROLL) self.m_textCtrl_content.SetMaxLength(0) bSizer6.Add(self.m_textCtrl_content, 1, wx.ALL | wx.EXPAND, 5) bSizer7 = wx.BoxSizer(wx.HORIZONTAL) self.m_panel3 = wx.Panel(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) bSizer71 = wx.BoxSizer(wx.HORIZONTAL) # self.m_btn_save = buttons.GenBitmapTextButton(self.m_panel3, wx.ID_SAVE, co.GetMondrianBitmap(fn="disk"), u"保存") # bSizer71.Add(self.m_btn_save, 0, wx.ALL, 0) self.m_panel3.SetSizer(bSizer71) self.m_panel3.Layout() bSizer71.Fit(self.m_panel3) bSizer7.Add(self.m_panel3, 1, wx.EXPAND | wx.ALL, 5) self.m_btn_apply = buttons.GenBitmapTextButton( self.m_panel1, wx.ID_APPLY, co.GetMondrianBitmap(fn="accept"), u"应用") # self.m_btn_apply = wx.Button(self.m_panel1, wx.ID_APPLY, u"应用", wx.DefaultPosition, wx.DefaultSize, 0) bSizer7.Add(self.m_btn_apply, 0, wx.ALL, 5) if cls_TaskBarIcon and os.name == "nt": # ubuntu 10.04 下点击这个图标时会报错,图标的菜单无法正常工作 # ubuntu 11.04 下这个图标总是无法显示 # 由于跨平台问题,暂时决定只在 windows 下显示快捷的任务栏图标 # 参见:http://stackoverflow.com/questions/7144756/wx-taskbaricon-on-ubuntu-11-04 self.m_btn_exit = buttons.GenBitmapTextButton( self.m_panel1, wx.ID_CLOSE, co.GetMondrianBitmap(fn="door"), u"隐藏") # self.m_btn_exit = wx.Button(self.m_panel1, wx.ID_CLOSE, u"隐藏", wx.DefaultPosition, wx.DefaultSize, 0) bSizer7.Add(self.m_btn_exit, 0, wx.ALL, 5) bSizer6.Add(bSizer7, 0, wx.EXPAND, 5) bSizer4.Add(bSizer6, 1, wx.EXPAND, 5) self.m_panel1.SetSizer(bSizer4) self.m_panel1.Layout() bSizer4.Fit(self.m_panel1) bSizer1.Add(self.m_panel1, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) self.font_bold = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.font_bold.SetWeight(wx.BOLD) self.font_normal = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.font_normal.SetWeight(wx.NORMAL) self.font_mono = wx.Font(10, wx.ROMAN, wx.NORMAL, wx.NORMAL, faceName="Courier New")
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(900, 600), style=wx.TAB_TRAVERSAL, name=wx.EmptyString): wx.Panel.__init__(self, parent, id=id, pos=pos, size=size, style=style, name=name) fs_layout = wx.BoxSizer(wx.VERTICAL) self.fs_split_ft_fp = wx.SplitterWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D | wx.SP_LIVE_UPDATE) self.fs_split_ft_fp.Bind(wx.EVT_IDLE, self.fs_split_ft_fpOnIdle) self.fs_filetree = wx.Panel(self.fs_split_ft_fp, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) ft_layout = wx.BoxSizer(wx.VERTICAL) self.ft_filetree = wx.TreeCtrl( self.fs_filetree, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE | wx.TR_EDIT_LABELS | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_HIDE_ROOT | wx.TR_NO_LINES | wx.TR_TWIST_BUTTONS) self.ft_filetree.SetFont( wx.Font(wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, wx.EmptyString)) ft_layout.Add(self.ft_filetree, 1, wx.EXPAND, 5) self.fs_filetree.SetSizer(ft_layout) self.fs_filetree.Layout() ft_layout.Fit(self.fs_filetree) self.fs_filepreview = wx.Panel(self.fs_split_ft_fp, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_layout = wx.BoxSizer(wx.VERTICAL) self.fp_formats_book = wx.Simplebook(self.fs_filepreview, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.fp_empty = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.fp_formats_book.AddPage(self.fp_empty, u"a page", True) self.fp_text = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_text_layout = wx.BoxSizer(wx.VERTICAL) self.fp_text_edit = wx.TextCtrl(self.fp_text, wx.ID_ANY, u"Hello World!", wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE) fp_text_layout.Add(self.fp_text_edit, 1, wx.EXPAND, 5) self.fp_text.SetSizer(fp_text_layout) self.fp_text.Layout() fp_text_layout.Fit(self.fp_text) self.fp_formats_book.AddPage(self.fp_text, u"a page", False) self.fp_gds = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_gds_layout = wx.BoxSizer(wx.VERTICAL) self.fp_gds_stc = GdsSTC(self.fp_gds, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.fp_gds_stc.SetUseTabs(True) self.fp_gds_stc.SetTabWidth(4) self.fp_gds_stc.SetIndent(4) self.fp_gds_stc.SetTabIndents(True) self.fp_gds_stc.SetBackSpaceUnIndents(True) self.fp_gds_stc.SetViewEOL(False) self.fp_gds_stc.SetViewWhiteSpace(False) self.fp_gds_stc.SetMarginWidth(2, 0) self.fp_gds_stc.SetIndentationGuides(True) self.fp_gds_stc.SetReadOnly(False) self.fp_gds_stc.SetMarginType(1, wx.stc.STC_MARGIN_SYMBOL) self.fp_gds_stc.SetMarginMask(1, wx.stc.STC_MASK_FOLDERS) self.fp_gds_stc.SetMarginWidth(1, 16) self.fp_gds_stc.SetMarginSensitive(1, True) self.fp_gds_stc.SetProperty("fold", "1") self.fp_gds_stc.SetFoldFlags( wx.stc.STC_FOLDFLAG_LINEBEFORE_CONTRACTED | wx.stc.STC_FOLDFLAG_LINEAFTER_CONTRACTED) self.fp_gds_stc.SetMarginType(0, wx.stc.STC_MARGIN_NUMBER) self.fp_gds_stc.SetMarginWidth( 0, self.fp_gds_stc.TextWidth(wx.stc.STC_STYLE_LINENUMBER, "_99999")) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDER, wx.stc.STC_MARK_BOXPLUS) self.fp_gds_stc.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDER, wx.BLACK) self.fp_gds_stc.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDER, wx.WHITE) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEROPEN, wx.stc.STC_MARK_BOXMINUS) self.fp_gds_stc.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDEROPEN, wx.BLACK) self.fp_gds_stc.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDEROPEN, wx.WHITE) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERSUB, wx.stc.STC_MARK_EMPTY) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEREND, wx.stc.STC_MARK_BOXPLUS) self.fp_gds_stc.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDEREND, wx.BLACK) self.fp_gds_stc.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDEREND, wx.WHITE) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.stc.STC_MARK_BOXMINUS) self.fp_gds_stc.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.BLACK) self.fp_gds_stc.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.WHITE) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERMIDTAIL, wx.stc.STC_MARK_EMPTY) self.fp_gds_stc.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERTAIL, wx.stc.STC_MARK_EMPTY) self.fp_gds_stc.SetSelBackground( True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)) self.fp_gds_stc.SetSelForeground( True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)) fp_gds_layout.Add(self.fp_gds_stc, 1, wx.EXPAND, 5) fp_gds_cmd_layout = wx.BoxSizer(wx.HORIZONTAL) self.fp_gds_cmd_name = wx.StaticText(self.fp_gds, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) self.fp_gds_cmd_name.Wrap(-1) self.fp_gds_cmd_name.SetFont( wx.Font(wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, wx.EmptyString)) fp_gds_cmd_layout.Add(self.fp_gds_cmd_name, 0, wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.fp_gds_cmd_help = wx.StaticText(self.fp_gds, wx.ID_ANY, u"g", wx.DefaultPosition, wx.DefaultSize, 0) self.fp_gds_cmd_help.Wrap(-1) fp_gds_cmd_layout.Add(self.fp_gds_cmd_help, 0, wx.ALL, 5) fp_gds_layout.Add(fp_gds_cmd_layout, 0, wx.EXPAND, 5) self.fp_gds.SetSizer(fp_gds_layout) self.fp_gds.Layout() fp_gds_layout.Fit(self.fp_gds) self.fp_formats_book.AddPage(self.fp_gds, u"a page", False) self.fp_bg = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_bg_layout = wx.BoxSizer(wx.VERTICAL) self.fp_bg_viewimage_scaled = ScaledImage(self.fp_bg, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.fp_bg_viewimage_scaled.SetBackgroundColour( wx.Colour(248, 248, 248)) fp_bg_layout.Add(self.fp_bg_viewimage_scaled, 1, wx.EXPAND, 5) self.fp_bg.SetSizer(fp_bg_layout) self.fp_bg.Layout() fp_bg_layout.Fit(self.fp_bg) self.fp_formats_book.AddPage(self.fp_bg, u"a page", False) self.fp_ani = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_ani_layout = wx.BoxSizer(wx.VERTICAL) self.fp_ani_imageindex = wx.Slider( self.fp_ani, wx.ID_ANY, 0, 0, 4, wx.DefaultPosition, wx.DefaultSize, wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS) fp_ani_layout.Add(self.fp_ani_imageindex, 0, wx.EXPAND | wx.RIGHT | wx.LEFT, 5) self.fp_ani_viewimage_scaled = ScaledImage(self.fp_ani, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.fp_ani_viewimage_scaled.SetBackgroundColour( wx.Colour(248, 248, 248)) fp_ani_layout.Add(self.fp_ani_viewimage_scaled, 1, wx.ALL | wx.EXPAND, 5) self.fp_ani.SetSizer(fp_ani_layout) self.fp_ani.Layout() fp_ani_layout.Fit(self.fp_ani) self.fp_formats_book.AddPage(self.fp_ani, u"a page", False) self.fp_place = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_place_layout = wx.BoxSizer(wx.VERTICAL) self.fp_place_viewer = PlaceViewer(self.fp_place, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_place_layout.Add(self.fp_place_viewer, 1, wx.EXPAND | wx.ALL, 5) self.fp_place.SetSizer(fp_place_layout) self.fp_place.Layout() fp_place_layout.Fit(self.fp_place) self.fp_formats_book.AddPage(self.fp_place, u"a page", False) self.fp_samplebank = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_samplebank_layout = wx.BoxSizer(wx.VERTICAL) fp_samplebank_listChoices = [] self.fp_samplebank_list = wx.ListBox(self.fp_samplebank, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, fp_samplebank_listChoices, 0) fp_samplebank_layout.Add(self.fp_samplebank_list, 1, wx.ALL | wx.EXPAND, 5) self.fp_samplebank.SetSizer(fp_samplebank_layout) self.fp_samplebank.Layout() fp_samplebank_layout.Fit(self.fp_samplebank) self.fp_formats_book.AddPage(self.fp_samplebank, u"a page", False) self.fp_info = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_info_layout = wx.BoxSizer(wx.VERTICAL) self.fp_info_text = wx.TextCtrl(self.fp_info, wx.ID_ANY, u"Hello World!", wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE) self.fp_info_text.SetBackgroundColour( wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENU)) fp_info_layout.Add(self.fp_info_text, 1, wx.EXPAND, 5) self.fp_info.SetSizer(fp_info_layout) self.fp_info.Layout() fp_info_layout.Fit(self.fp_info) self.fp_formats_book.AddPage(self.fp_info, u"a page", False) self.fp_puzzle = wx.Panel(self.fp_formats_book, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) fp_puzzle_layout = wx.BoxSizer(wx.VERTICAL) self.puzzle_scintilla = wx.stc.StyledTextCtrl(self.fp_puzzle, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.puzzle_scintilla.SetUseTabs(False) self.puzzle_scintilla.SetTabWidth(4) self.puzzle_scintilla.SetIndent(4) self.puzzle_scintilla.SetTabIndents(True) self.puzzle_scintilla.SetBackSpaceUnIndents(True) self.puzzle_scintilla.SetViewEOL(False) self.puzzle_scintilla.SetViewWhiteSpace(False) self.puzzle_scintilla.SetMarginWidth(2, 0) self.puzzle_scintilla.SetIndentationGuides(True) self.puzzle_scintilla.SetReadOnly(False) self.puzzle_scintilla.SetMarginType(1, wx.stc.STC_MARGIN_SYMBOL) self.puzzle_scintilla.SetMarginMask(1, wx.stc.STC_MASK_FOLDERS) self.puzzle_scintilla.SetMarginWidth(1, 16) self.puzzle_scintilla.SetMarginSensitive(1, True) self.puzzle_scintilla.SetProperty("fold", "1") self.puzzle_scintilla.SetFoldFlags( wx.stc.STC_FOLDFLAG_LINEBEFORE_CONTRACTED | wx.stc.STC_FOLDFLAG_LINEAFTER_CONTRACTED) self.puzzle_scintilla.SetMarginType(0, wx.stc.STC_MARGIN_NUMBER) self.puzzle_scintilla.SetMarginWidth( 0, self.puzzle_scintilla.TextWidth(wx.stc.STC_STYLE_LINENUMBER, "_99999")) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDER, wx.stc.STC_MARK_BOXPLUS) self.puzzle_scintilla.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDER, wx.BLACK) self.puzzle_scintilla.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDER, wx.WHITE) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEROPEN, wx.stc.STC_MARK_BOXMINUS) self.puzzle_scintilla.MarkerSetBackground( wx.stc.STC_MARKNUM_FOLDEROPEN, wx.BLACK) self.puzzle_scintilla.MarkerSetForeground( wx.stc.STC_MARKNUM_FOLDEROPEN, wx.WHITE) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERSUB, wx.stc.STC_MARK_EMPTY) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEREND, wx.stc.STC_MARK_BOXPLUS) self.puzzle_scintilla.MarkerSetBackground(wx.stc.STC_MARKNUM_FOLDEREND, wx.BLACK) self.puzzle_scintilla.MarkerSetForeground(wx.stc.STC_MARKNUM_FOLDEREND, wx.WHITE) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.stc.STC_MARK_BOXMINUS) self.puzzle_scintilla.MarkerSetBackground( wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.BLACK) self.puzzle_scintilla.MarkerSetForeground( wx.stc.STC_MARKNUM_FOLDEROPENMID, wx.WHITE) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERMIDTAIL, wx.stc.STC_MARK_EMPTY) self.puzzle_scintilla.MarkerDefine(wx.stc.STC_MARKNUM_FOLDERTAIL, wx.stc.STC_MARK_EMPTY) self.puzzle_scintilla.SetSelBackground( True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)) self.puzzle_scintilla.SetSelForeground( True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT)) fp_puzzle_layout.Add(self.puzzle_scintilla, 1, wx.EXPAND | wx.ALL, 0) self.fp_puzzle.SetSizer(fp_puzzle_layout) self.fp_puzzle.Layout() fp_puzzle_layout.Fit(self.fp_puzzle) self.fp_formats_book.AddPage(self.fp_puzzle, u"a page", False) fp_layout.Add(self.fp_formats_book, 1, wx.EXPAND, 5) self.fs_filepreview.SetSizer(fp_layout) self.fs_filepreview.Layout() fp_layout.Fit(self.fs_filepreview) self.fs_split_ft_fp.SplitVertically(self.fs_filetree, self.fs_filepreview, 0) fs_layout.Add(self.fs_split_ft_fp, 1, wx.EXPAND, 5) self.SetSizer(fs_layout) self.Layout() # Connect Events self.ft_filetree.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.ft_filetree_end_label_edit) self.ft_filetree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.ft_filetree_activated) self.ft_filetree.Bind(wx.EVT_TREE_KEY_DOWN, self.ft_filetree_keydown) self.ft_filetree.Bind(wx.EVT_TREE_SEL_CHANGED, self.ft_filetree_selchanged) self.fp_text_edit.Bind(wx.EVT_TEXT, self.fp_text_edit_changed) self.fp_gds_stc.Bind(wx.EVT_UPDATE_UI, self.fp_gds_stc_updateui) self.fp_ani_imageindex.Bind(wx.EVT_SLIDER, self.fp_ani_imageindex_on_slider)
def __init__(self, parent): wx.Frame.__init__(self, parent, title="DF Mod Manager", size=(500, 300)) def except_hook(type, value, tb): self.show_exception_dialog(type, value, tb) sys.exit(0) sys.excepthook = except_hook if not os.path.exists('core'): dialog = wx.MessageDialog( self, 'It appears that you are running DFMM for the first time. Are the files currently in your raws folder unmodified?', 'Setup', style=wx.YES | wx.NO) if dialog.ShowModal() == wx.ID_YES: if not os.path.exists(os.path.join('..', 'raw', 'objects')): dialog = wx.MessageDialog( self, 'Unable to find DF files. The "dfmm" folder should be on the same level as "Dwarf Fortress.exe".', style=wx.OK) dialog.ShowModal() sys.exit(0) shutil.copytree(os.path.join('..', 'raw', 'objects'), 'core') else: dialog = wx.MessageDialog( self, 'Please restore the raw files to their unmodified state and relaunch DFMM. (Backup your changes to another directory for later import)', style=wx.OK) dialog.ShowModal() sys.exit(0) if not os.path.exists('mods'): os.mkdir('mods') self.core_dataset = decode_core() self.tree = wx.TreeCtrl(self, wx.ID_ANY, pos=(0, 0), size=(-1, -1), style=wx.TR_HAS_BUTTONS) self.init_image_list() self.tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.toggle_mod) self.tree.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.mod_context_menu) self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.begin_drag) self.tree.Bind(wx.EVT_TREE_END_DRAG, self.end_drag) self.mod_db = shelve.open(os.path.join('mods', 'mods.db'), 'c', writeback=True) self.reload_mods(initial=True) self.update_title() self.filemenu = wx.Menu() menu_new = self.filemenu.Append(wx.ID_ANY, "&New mod\tCtrl+N", "") self.filemenu.AppendSeparator() menu_merge = self.filemenu.Append(wx.ID_ANY, "&Merge mods\tCtrl+M", "") menu_install = self.filemenu.Append(wx.ID_ANY, "&Install mods\tCtrl+S", "") self.filemenu.AppendSeparator() menu_exit = self.filemenu.Append(wx.ID_EXIT, "Exit", "") self.Bind(wx.EVT_MENU, self.merge, menu_merge) self.Bind(wx.EVT_MENU, self.install, menu_install) self.Bind(wx.EVT_MENU, self.new_mod, menu_new) self.Bind(wx.EVT_MENU, self.exit, menu_exit) self.importmenu = wx.Menu() menu_import_dfmod = self.importmenu.Append(wx.ID_ANY, "Import .dfmod", "") menu_import_dfmod_zip = self.importmenu.Append(wx.ID_ANY, "Import .dfmod zip", "") menu_import_files = self.importmenu.Append(wx.ID_ANY, "Import from directory", "") self.Bind(wx.EVT_MENU, self.import_dfmod, menu_import_dfmod) self.Bind(wx.EVT_MENU, self.import_dfmod_zip, menu_import_dfmod_zip) self.Bind(wx.EVT_MENU, self.import_files, menu_import_files) OPTIONS = [['_merge_changes', 'Merge changes'], ['_partial_merge', 'Allow partial merge'], ['_delete_override', 'Delete overrides edit'], ['_show_numbers', 'Show detailed change numbers']] self.options_menu = {} self.optionsmenu = wx.Menu() for key, value in OPTIONS: item = self.optionsmenu.Append(wx.ID_ANY, value, '', kind=wx.ITEM_CHECK) if key not in self.mod_db: self.mod_db[key] = True if key == '_merge_changes' else False self.mod_db.sync() if self.mod_db[key]: item.Check() self.Bind(wx.EVT_MENU, self.toggle_option(key), item) self.options_menu[key] = item menuBar = wx.MenuBar() menuBar.Append(self.filemenu, "&File") menuBar.Append(self.importmenu, "&Import") menuBar.Append(self.optionsmenu, "&Options") self.SetMenuBar(menuBar)
def createTree(self): self.tree = wx.TreeCtrl(self.rpanel, style=wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE) self.treeroot = self.tree.AddRoot("数据包")
def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, size=wx.Size(1200, 728), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) bSizer2 = wx.BoxSizer(wx.VERTICAL) self.m_notebook1 = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.tab_mainmenupanel = wx.Panel(self.m_notebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_notebook1.AddPage(self.tab_mainmenupanel, u"Main Menu", False) self.tab_characterpanel = wx.Panel(self.m_notebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) gs_character = wx.GridSizer(0, 4, 0, 0) self.m_charlist = wx.ListCtrl(self.tab_characterpanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_LIST) gs_character.Add(self.m_charlist, 0, wx.ALL | wx.EXPAND, 5) fg_char_main = wx.FlexGridSizer(16, 3, 0, 0) fg_char_main.SetFlexibleDirection(wx.BOTH) fg_char_main.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.t_charname = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Name", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charname.Wrap(-1) fg_char_main.Add(self.t_charname, 0, wx.ALL, 5) self.tf_charname = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charname, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) self.t_charclass = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Class", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charclass.Wrap(-1) fg_char_main.Add(self.t_charclass, 0, wx.ALL, 5) self.tf_charclass = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charclass, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) self.t_charlevel = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Level", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charlevel.Wrap(-1) fg_char_main.Add(self.t_charlevel, 0, wx.ALL, 5) self.tf_charlevel = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charlevel, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) self.t_charphys = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Physical state", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charphys.Wrap(-1) fg_char_main.Add(self.t_charphys, 0, wx.ALL, 5) self.tf_charphys = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charphys, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) self.t_charhp = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Hit Points", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charhp.Wrap(-1) fg_char_main.Add(self.t_charhp, 0, wx.ALL, 5) self.tf_charhp = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charhp, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) self.t_charexp = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Experience", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charexp.Wrap(-1) fg_char_main.Add(self.t_charexp, 0, wx.ALL, 5) self.tf_charexp = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main.Add(self.tf_charexp, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) fg_char_main.AddSpacer(5) self.b_levelup = wx.Button(self.tab_characterpanel, wx.ID_ANY, u"LevelUp", wx.DefaultPosition, wx.Size(75, 30), 0) fg_char_main.Add(self.b_levelup, 0, wx.ALL, 5) fg_char_main.AddSpacer(5) fg_char_main.AddSpacer(5) self.m_staticline1 = wx.StaticLine(self.tab_characterpanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) fg_char_main.Add(self.m_staticline1, 0, wx.EXPAND | wx.ALL, 5) fg_char_main.AddSpacer(5) fg_char_main.AddSpacer(5) self.t_dsc1 = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"STAT", wx.DefaultPosition, wx.DefaultSize, 0) self.t_dsc1.Wrap(-1) fg_char_main.Add(self.t_dsc1, 0, wx.ALL, 5) self.t_dsc2 = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"MOD", wx.DefaultPosition, wx.DefaultSize, 0) self.t_dsc2.Wrap(-1) fg_char_main.Add(self.t_dsc2, 0, wx.ALL, 5) self.t_charstr = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"STRENGTH", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charstr.Wrap(-1) fg_char_main.Add(self.t_charstr, 0, wx.ALL, 5) self.tf_char_str_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_str_stat, 0, wx.ALL, 5) self.tf_char_str_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_str_mod, 0, wx.ALL, 5) self.t_chardex = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"DEXTERITY", wx.DefaultPosition, wx.DefaultSize, 0) self.t_chardex.Wrap(-1) fg_char_main.Add(self.t_chardex, 0, wx.ALL, 5) self.tf_char_dex_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_dex_stat, 0, wx.ALL, 5) self.tf_char_dex_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_dex_mod, 0, wx.ALL, 5) self.t_charconst = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"CONSTITUTION", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charconst.Wrap(-1) fg_char_main.Add(self.t_charconst, 0, wx.ALL, 5) self.tf_char_cons_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_cons_stat, 0, wx.ALL, 5) self.tf_char_cons_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_cons_mod, 0, wx.ALL, 5) self.t_charint = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"INTELLIGENCE", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charint.Wrap(-1) fg_char_main.Add(self.t_charint, 0, wx.ALL, 5) self.tf_char_int_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_int_stat, 0, wx.ALL, 5) self.tf_char_int_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_int_mod, 0, wx.ALL, 5) self.t_charwis = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"WISDOM", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charwis.Wrap(-1) fg_char_main.Add(self.t_charwis, 0, wx.ALL, 5) self.tf_char_wis_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_wis_stat, 0, wx.ALL, 5) self.tf_char_wis_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_wis_mod, 0, wx.ALL, 5) self.t_charcha = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"CHARISMA", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charcha.Wrap(-1) fg_char_main.Add(self.t_charcha, 0, wx.ALL, 5) self.tf_char_cha_stat = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_cha_stat, 0, wx.ALL, 5) self.tf_char_cha_mod = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main.Add(self.tf_char_cha_mod, 0, wx.ALL, 5) gs_character.Add(fg_char_main, 1, wx.EXPAND, 5) fg_char_main2 = wx.FlexGridSizer(13, 3, 0, 0) fg_char_main2.SetFlexibleDirection(wx.BOTH) fg_char_main2.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.t_charac = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Armor Class", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charac.Wrap(-1) fg_char_main2.Add(self.t_charac, 0, wx.ALL, 5) self.tf_charac = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main2.Add(self.tf_charac, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) self.t_charinit = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Initiative", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charinit.Wrap(-1) fg_char_main2.Add(self.t_charinit, 0, wx.ALL, 5) self.tf_charinit = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main2.Add(self.tf_charinit, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) self.t_charspeed = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Speed", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charspeed.Wrap(-1) fg_char_main2.Add(self.t_charspeed, 0, wx.ALL, 5) self.tf_charspeed = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main2.Add(self.tf_charspeed, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) self.t_charhit = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Hit Dice", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charhit.Wrap(-1) fg_char_main2.Add(self.t_charhit, 0, wx.ALL, 5) self.tf_charhit = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main2.Add(self.tf_charhit, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.t_chards = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Death Saves", wx.DefaultPosition, wx.DefaultSize, 0) self.t_chards.Wrap(-1) fg_char_main2.Add(self.t_chards, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) self.tf_chars = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main2.Add(self.tf_chars, 0, wx.ALL, 5) self.t_charsf = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Success/Failure", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charsf.Wrap(-1) fg_char_main2.Add(self.t_charsf, 0, wx.ALL, 5) self.tf_charf = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(50, -1), wx.TE_READONLY) fg_char_main2.Add(self.tf_charf, 0, wx.ALL, 5) self.t_charperception = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Perception", wx.DefaultPosition, wx.DefaultSize, 0) self.t_charperception.Wrap(-1) fg_char_main2.Add(self.t_charperception, 0, wx.ALL, 5) self.m_textCtrl25 = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) fg_char_main2.Add(self.m_textCtrl25, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.m_staticline2 = wx.StaticLine(self.tab_characterpanel, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, 10), wx.LI_HORIZONTAL) fg_char_main2.Add(self.m_staticline2, 0, wx.EXPAND | wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.m_bitmap2 = wx.StaticBitmap(self.tab_characterpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(100, 120), 0) fg_char_main2.Add(self.m_bitmap2, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.b_charprofic = wx.Button(self.tab_characterpanel, wx.ID_ANY, u"Proficiency", wx.DefaultPosition, wx.DefaultSize, 0) fg_char_main2.Add(self.b_charprofic, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.b_charperks = wx.Button(self.tab_characterpanel, wx.ID_ANY, u"Perks", wx.DefaultPosition, wx.DefaultSize, 0) fg_char_main2.Add(self.b_charperks, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.b_charexpertise = wx.Button(self.tab_characterpanel, wx.ID_ANY, u"Expertise", wx.DefaultPosition, wx.DefaultSize, 0) fg_char_main2.Add(self.b_charexpertise, 0, wx.ALL, 5) fg_char_main2.AddSpacer(5) fg_char_main2.AddSpacer(5) self.t_charpersonal = wx.Button(self.tab_characterpanel, wx.ID_ANY, u"Personal", wx.DefaultPosition, wx.DefaultSize, 0) fg_char_main2.Add(self.t_charpersonal, 0, wx.ALL, 5) gs_character.Add(fg_char_main2, 1, wx.EXPAND, 5) g_skills = wx.GridSizer(18, 2, 0, 0) self.t_acrobatics = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Acrobatics", wx.DefaultPosition, wx.DefaultSize, 0) self.t_acrobatics.Wrap(-1) g_skills.Add(self.t_acrobatics, 0, wx.ALL, 5) self.tf_acrobatics = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_acrobatics, 0, wx.ALL, 5) self.t_animalhandling = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Animal Handling", wx.DefaultPosition, wx.DefaultSize, 0) self.t_animalhandling.Wrap(-1) g_skills.Add(self.t_animalhandling, 0, wx.ALL, 5) self.tf_animalhandling = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_animalhandling, 0, wx.ALL, 5) self.t_arcana = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Arcana", wx.DefaultPosition, wx.DefaultSize, 0) self.t_arcana.Wrap(-1) g_skills.Add(self.t_arcana, 0, wx.ALL, 5) self.tf_arcana = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_arcana, 0, wx.ALL, 5) self.t_athletics = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Athletics", wx.DefaultPosition, wx.DefaultSize, 0) self.t_athletics.Wrap(-1) g_skills.Add(self.t_athletics, 0, wx.ALL, 5) self.tf_athletics = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_athletics, 0, wx.ALL, 5) self.t_deception = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Deception", wx.DefaultPosition, wx.DefaultSize, 0) self.t_deception.Wrap(-1) g_skills.Add(self.t_deception, 0, wx.ALL, 5) self.tf_deception = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_deception, 0, wx.ALL, 5) self.t_history = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"History", wx.DefaultPosition, wx.DefaultSize, 0) self.t_history.Wrap(-1) g_skills.Add(self.t_history, 0, wx.ALL, 5) self.tf_history = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_history, 0, wx.ALL, 5) self.t_insight = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Insight", wx.DefaultPosition, wx.DefaultSize, 0) self.t_insight.Wrap(-1) g_skills.Add(self.t_insight, 0, wx.ALL, 5) self.tf_insight = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_insight, 0, wx.ALL, 5) self.t_intimidation = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Intimidation", wx.DefaultPosition, wx.DefaultSize, 0) self.t_intimidation.Wrap(-1) g_skills.Add(self.t_intimidation, 0, wx.ALL, 5) self.tf_intimidation = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_intimidation, 0, wx.ALL, 5) self.t_investigation = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Investigation", wx.DefaultPosition, wx.DefaultSize, 0) self.t_investigation.Wrap(-1) g_skills.Add(self.t_investigation, 0, wx.ALL, 5) self.tf_investigation = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_investigation, 0, wx.ALL, 5) self.t_medicine = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Medicine", wx.DefaultPosition, wx.DefaultSize, 0) self.t_medicine.Wrap(-1) g_skills.Add(self.t_medicine, 0, wx.ALL, 5) self.tf_medicine = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_medicine, 0, wx.ALL, 5) self.t_nature = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Nature", wx.DefaultPosition, wx.DefaultSize, 0) self.t_nature.Wrap(-1) g_skills.Add(self.t_nature, 0, wx.ALL, 5) self.tf_nature = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_nature, 0, wx.ALL, 5) self.t_perception = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Perception", wx.DefaultPosition, wx.DefaultSize, 0) self.t_perception.Wrap(-1) g_skills.Add(self.t_perception, 0, wx.ALL, 5) self.tf_perception = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_perception, 0, wx.ALL, 5) self.t_performance = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Performance", wx.DefaultPosition, wx.DefaultSize, 0) self.t_performance.Wrap(-1) g_skills.Add(self.t_performance, 0, wx.ALL, 5) self.tf_performance = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_performance, 0, wx.ALL, 5) self.t_persuasion = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Persuasion", wx.DefaultPosition, wx.DefaultSize, 0) self.t_persuasion.Wrap(-1) g_skills.Add(self.t_persuasion, 0, wx.ALL, 5) self.tf_persuasion = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_persuasion, 0, wx.ALL, 5) self.t_religion = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Religion", wx.DefaultPosition, wx.DefaultSize, 0) self.t_religion.Wrap(-1) g_skills.Add(self.t_religion, 0, wx.ALL, 5) self.tf_religion = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_religion, 0, wx.ALL, 5) self.t_sleighofhand = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Sleigh of hand", wx.DefaultPosition, wx.DefaultSize, 0) self.t_sleighofhand.Wrap(-1) g_skills.Add(self.t_sleighofhand, 0, wx.ALL, 5) self.tf_sleighofhand = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_sleighofhand, 0, wx.ALL, 5) self.t_stealth = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Stealth", wx.DefaultPosition, wx.DefaultSize, 0) self.t_stealth.Wrap(-1) g_skills.Add(self.t_stealth, 0, wx.ALL, 5) self.tf_stealth = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_stealth, 0, wx.ALL, 5) self.t_survival = wx.StaticText(self.tab_characterpanel, wx.ID_ANY, u"Survival", wx.DefaultPosition, wx.DefaultSize, 0) self.t_survival.Wrap(-1) g_skills.Add(self.t_survival, 0, wx.ALL, 5) self.tf_survival = wx.TextCtrl(self.tab_characterpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) g_skills.Add(self.tf_survival, 0, wx.ALL, 5) gs_character.Add(g_skills, 1, wx.EXPAND, 5) self.tab_characterpanel.SetSizer(gs_character) self.tab_characterpanel.Layout() gs_character.Fit(self.tab_characterpanel) self.m_notebook1.AddPage(self.tab_characterpanel, u"Character", True) self.tab_equipmentpanel = wx.Panel(self.m_notebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) gSizer9 = wx.GridSizer(0, 3, 0, 0) bSizer9 = wx.BoxSizer(wx.VERTICAL) box_characterChoices = [] self.box_character = wx.ComboBox(self.tab_equipmentpanel, wx.ID_ANY, u"Character", wx.DefaultPosition, wx.DefaultSize, box_characterChoices, 0) bSizer9.Add(self.box_character, 0, wx.ALL, 5) gSizer11 = wx.GridSizer(10, 6, 0, 0) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.i_head = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_head, 1, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.i_neck = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_neck, 1, wx.ALL | wx.EXPAND, 5) self.i_chest = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_chest, 1, wx.ALL | wx.EXPAND, 5) self.i_arms = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_arms, 1, wx.ALL | wx.EXPAND, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.i_ring = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_ring, 1, wx.ALL | wx.EXPAND, 5) self.i_legs = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_legs, 1, wx.ALL | wx.EXPAND, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.i_boots = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_boots, 1, wx.ALL | wx.EXPAND, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.i_weapon1 = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_weapon1, 1, wx.ALL | wx.EXPAND, 5) self.i_weapon2 = wx.BitmapButton(self.tab_equipmentpanel, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size(30, 30), wx.BU_AUTODRAW) gSizer11.Add(self.i_weapon2, 1, wx.ALL | wx.EXPAND, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.tf_weapon1 = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer11.Add(self.tf_weapon1, 0, wx.ALL, 5) gSizer11.AddSpacer(5) self.tf_weapon2 = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer11.Add(self.tf_weapon2, 0, wx.ALL, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.t_armor = wx.StaticText(self.tab_equipmentpanel, wx.ID_ANY, u"Armor: ", wx.DefaultPosition, wx.DefaultSize, 0) self.t_armor.Wrap(-1) gSizer11.Add(self.t_armor, 0, wx.ALL, 5) gSizer11.AddSpacer(5) self.tf_armor = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer11.Add(self.tf_armor, 0, wx.ALL, 5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) gSizer11.AddSpacer(5) self.t_modifiers = wx.StaticText(self.tab_equipmentpanel, wx.ID_ANY, u"Modifiers: ", wx.DefaultPosition, wx.DefaultSize, 0) self.t_modifiers.Wrap(-1) gSizer11.Add(self.t_modifiers, 0, wx.ALL, 5) gSizer11.AddSpacer(5) self.tf_modifiers = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer11.Add(self.tf_modifiers, 0, wx.ALL, 5) bSizer9.Add(gSizer11, 1, wx.EXPAND, 5) gSizer9.Add(bSizer9, 1, wx.EXPAND, 5) gSizer10 = wx.GridSizer(0, 1, 0, 0) self.l_backpack = wx.ListCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_LIST) gSizer10.Add(self.l_backpack, 1, wx.ALL | wx.EXPAND, 5) gSizer9.Add(gSizer10, 1, wx.EXPAND, 5) gSizer12 = wx.GridSizer(20, 3, 0, 0) self.t_money = wx.StaticText(self.tab_equipmentpanel, wx.ID_ANY, u"Money", wx.DefaultPosition, wx.DefaultSize, 0) self.t_money.Wrap(-1) gSizer12.Add(self.t_money, 0, wx.ALL, 5) self.tf_money = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer12.Add(self.tf_money, 0, wx.ALL, 5) gSizer12.AddSpacer(5) self.t_weigth = wx.StaticText(self.tab_equipmentpanel, wx.ID_ANY, u"Weight", wx.DefaultPosition, wx.DefaultSize, 0) self.t_weigth.Wrap(-1) gSizer12.Add(self.t_weigth, 0, wx.ALL, 5) self.tf_weight = wx.TextCtrl(self.tab_equipmentpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY) gSizer12.Add(self.tf_weight, 0, wx.ALL, 5) self.t_overencumbered = wx.StaticText(self.tab_equipmentpanel, wx.ID_ANY, u"Overencumbered!", wx.DefaultPosition, wx.DefaultSize, 0) self.t_overencumbered.Wrap(-1) self.t_overencumbered.Hide() gSizer12.Add(self.t_overencumbered, 0, wx.ALL, 5) self.b_trade = wx.Button(self.tab_equipmentpanel, wx.ID_ANY, u"Trade!", wx.DefaultPosition, wx.DefaultSize, 0) gSizer12.Add(self.b_trade, 0, wx.ALL, 5) gSizer12.AddSpacer(5) gSizer12.AddSpacer(5) gSizer12.AddSpacer(5) gSizer12.AddSpacer(5) gSizer12.AddSpacer(5) self.b_use = wx.Button(self.tab_equipmentpanel, wx.ID_ANY, u"Use", wx.DefaultPosition, wx.DefaultSize, 0) gSizer12.Add(self.b_use, 0, wx.ALL, 5) gSizer9.Add(gSizer12, 1, wx.EXPAND, 5) self.tab_equipmentpanel.SetSizer(gSizer9) self.tab_equipmentpanel.Layout() gSizer9.Fit(self.tab_equipmentpanel) self.m_notebook1.AddPage(self.tab_equipmentpanel, u"Equipment", False) self.tab_actionpanel = wx.Panel(self.m_notebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) gSizer13 = wx.GridSizer(0, 3, 0, 0) gSizer14 = wx.GridSizer(2, 1, 0, 0) bSizer15 = wx.BoxSizer(wx.VERTICAL) r_characteractionChoices = [u"sample"] self.r_characteraction = wx.RadioBox(self.tab_actionpanel, wx.ID_ANY, u"Character", wx.DefaultPosition, wx.DefaultSize, r_characteractionChoices, 1, wx.RA_SPECIFY_COLS) self.r_characteraction.SetSelection(0) bSizer15.Add(self.r_characteraction, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) gSizer14.Add(bSizer15, 1, wx.EXPAND, 5) bSizer16 = wx.BoxSizer(wx.VERTICAL) self.b_goaction = wx.Button(self.tab_actionpanel, wx.ID_ANY, u"GO!", wx.DefaultPosition, wx.DefaultSize, 0) bSizer16.Add(self.b_goaction, 0, wx.ALL | wx.ALIGN_RIGHT, 5) self.tree_action = wx.TreeCtrl(self.tab_actionpanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE) bSizer16.Add(self.tree_action, 1, wx.ALL | wx.EXPAND, 5) gSizer14.Add(bSizer16, 1, wx.EXPAND, 5) gSizer13.Add(gSizer14, 1, wx.EXPAND, 5) bSizer18 = wx.BoxSizer(wx.VERTICAL) bSizer19 = wx.BoxSizer(wx.VERTICAL) bSizer19.SetMinSize(wx.Size(-1, 400)) r_enemyactionChoices = [u"sample"] self.r_enemyaction = wx.RadioBox(self.tab_actionpanel, wx.ID_ANY, u"Enemy", wx.DefaultPosition, wx.DefaultSize, r_enemyactionChoices, 1, wx.RA_SPECIFY_COLS) self.r_enemyaction.SetSelection(0) bSizer19.Add(self.r_enemyaction, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5) bSizer18.Add(bSizer19, 1, wx.EXPAND, 5) bSizer21 = wx.BoxSizer(wx.VERTICAL) bSizer21.SetMinSize(wx.Size(-1, 25)) bSizer23 = wx.BoxSizer(wx.VERTICAL) gSizer21 = wx.GridSizer(1, 3, 1, 0) gSizer21.SetMinSize(wx.Size(-1, 25)) box_charactionindChoices = [] self.box_charactionind = wx.ComboBox(self.tab_actionpanel, wx.ID_ANY, u"Character", wx.DefaultPosition, wx.DefaultSize, box_charactionindChoices, 0) gSizer21.Add(self.box_charactionind, 0, wx.ALL | wx.ALIGN_BOTTOM, 5) box_actionindChoices = [] self.box_actionind = wx.ComboBox(self.tab_actionpanel, wx.ID_ANY, u"Action", wx.DefaultPosition, wx.DefaultSize, box_actionindChoices, 0) gSizer21.Add(self.box_actionind, 0, wx.ALL | wx.ALIGN_BOTTOM, 5) self.b_goind = wx.Button(self.tab_actionpanel, wx.ID_ANY, u"GO!", wx.DefaultPosition, wx.DefaultSize, 0) gSizer21.Add(self.b_goind, 0, wx.ALL | wx.ALIGN_BOTTOM, 5) bSizer23.Add(gSizer21, 1, wx.EXPAND, 5) self.m_treeCtrl5 = wx.TreeCtrl(self.tab_actionpanel, wx.ID_ANY, wx.DefaultPosition, wx.Size(-1, 300), wx.TR_DEFAULT_STYLE) bSizer23.Add( self.m_treeCtrl5, 1, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) bSizer21.Add(bSizer23, 1, wx.EXPAND, 5) bSizer18.Add(bSizer21, 1, wx.EXPAND, 5) gSizer13.Add(bSizer18, 1, wx.EXPAND, 5) bSizer24 = wx.BoxSizer(wx.VERTICAL) l_logChoices = [] self.l_log = wx.ListBox(self.tab_actionpanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, l_logChoices, wx.LB_EXTENDED) bSizer24.Add(self.l_log, 1, wx.ALL | wx.EXPAND, 5) self.c_commandline = wx.TextCtrl(self.tab_actionpanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(-1, 200), 0) bSizer24.Add(self.c_commandline, 0, wx.ALL | wx.EXPAND, 5) gSizer13.Add(bSizer24, 1, wx.EXPAND, 5) self.tab_actionpanel.SetSizer(gSizer13) self.tab_actionpanel.Layout() gSizer13.Fit(self.tab_actionpanel) self.m_notebook1.AddPage(self.tab_actionpanel, u"Action", False) self.tab_mappanel = wx.Panel(self.m_notebook1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_notebook1.AddPage(self.tab_mappanel, u"Map", False) bSizer2.Add(self.m_notebook1, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(bSizer2) self.Layout() self.m_statusBar1 = self.CreateStatusBar(1, 0, wx.ID_ANY) self.m_menubar2 = wx.MenuBar(0) self.SetMenuBar(self.m_menubar2) self.Centre(wx.BOTH) # Connect Events self.m_charlist.Bind(wx.EVT_LIST_ITEM_SELECTED, self.UpdateScreen) self.b_charperks.Bind(wx.EVT_BUTTON, self.PerksPopUp)
def __init__(self, parent, d, *args, **kwargs): '''Initialize the dialog d - dictionary representing the tree. Keys form the dictionary labels, values are dictionaries of subtrees A leaf is marked with a dictionary entry whose key is None and whose value is True or False, depending on whether it is initially selected or not. ''' wx.Dialog.__init__(self, parent, *args, **kwargs) self.bitmaps = [] self.parent_reflects_child = True sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) tree_style = wx.TR_DEFAULT_STYLE self.tree_ctrl = wx.TreeCtrl(self, style = tree_style) sizer.Add(self.tree_ctrl, 1, wx.EXPAND | wx.ALL, 5) image_list = wx.ImageList(16, 16) for i, state_flag in enumerate( (0, wx.CONTROL_CHECKED, wx.CONTROL_UNDETERMINED)): for j, selection_flag in enumerate((0, wx.CONTROL_CURRENT)): idx = image_list.Add( self.get_checkbox_bitmap(state_flag | selection_flag, 16, 16)) self.tree_ctrl.SetImageList(image_list) self.image_list = image_list image_index, selected_image_index = self.img_idx(d) root_id = self.tree_ctrl.AddRoot("All", image_index, selected_image_index, wx.TreeItemData(d)) self.tree_ctrl.SetItemImage(root_id, image_index, wx.TreeItemIcon_Normal) self.tree_ctrl.SetItemImage(root_id, selected_image_index, wx.TreeItemIcon_Selected) self.tree_ctrl.SetItemImage(root_id, image_index, wx.TreeItemIcon_Expanded) self.tree_ctrl.SetItemImage(root_id, image_index, wx.TreeItemIcon_SelectedExpanded) self.root_id = root_id self.tree_ctrl.SetItemHasChildren(root_id, len(d) > 1) self.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.on_expanding, self.tree_ctrl) self.tree_ctrl.Bind(wx.EVT_LEFT_DOWN, self.on_left_down) self.tree_ctrl.Expand(root_id) table_sizer = wx.GridBagSizer() table_sizer.AddGrowableCol(2) sizer.Add(table_sizer, 0, wx.EXPAND) table_sizer.Add(wx.StaticText(self, label='Key:'), (0, 0), flag=wx.LEFT | wx.RIGHT, border=3) for i, (bitmap, description) in enumerate(( (image_list.GetBitmap(0), "No subitems selected / not selected"), (image_list.GetBitmap(2), "All subitems selected / selected"), (image_list.GetBitmap(4), "Some subitems selected. Open tree to see selections."))): bitmap_ctrl = wx.StaticBitmap(self) bitmap_ctrl.SetBitmap(bitmap) table_sizer.Add(bitmap_ctrl, (i, 1), flag=wx.RIGHT, border=5) table_sizer.Add(wx.StaticText(self, label=description), (i, 2)) sizer.Add(self.CreateStdDialogButtonSizer(wx.CANCEL | wx.OK), flag=wx.CENTER) self.Layout()
def CreateRepoTreeCtrl(self): panel = wx.Panel(self) self.repo_tree = tree = wx.TreeCtrl(panel, -1, wx.Point(0, 0), wx.Size(160, 250), wx.TR_DEFAULT_STYLE | wx.NO_BORDER) imglist = wx.ImageList(16, 16, True, 2) imglist.Add(images.folder.GetBitmap()) imglist.Add(images.file_new.GetBitmap()) # create a icon for each file type / status: bmp_stat = {'modified': images.modified, 'added': images.added, 'deleted': images.deleted, 'clean': images.clean, 'unknown': images.conflict, 'missing': None, 'ignored': None} bmp_exts = {'txt': images.file_txt, 'xml': images.file_xml, 'py': images.file_py, '': images.file_new} self.repo_icons = {} i = 2 for f_ex, f_st in [(ex, st) for ex in bmp_exts for st in bmp_stat]: b_ex = bmp_exts[f_ex] b_st = bmp_stat[f_st] if b_st: bmp = images.merge_bitmaps(b_ex.GetBitmap(), b_st.GetBitmap()) else: bmp = b_ex.GetBitmap() imglist.Add(bmp) self.repo_icons['%s_%s' % (f_ex, f_st)] = i i += 1 tree.AssignImageList(imglist) # extra controls to search / filter self.repo_slider = wx.Slider(panel, style=wx.SL_HORIZONTAL) tip = wx.ToolTip('Filter context files by relevance (active task)') self.repo_slider.SetToolTip(tip) self.repo_slider.Bind(wx.EVT_SLIDER, self.OnSearchRepo) self.repo_filter = wx.SearchCtrl(panel, style=wx.TE_PROCESS_ENTER) self.repo_filter.ShowCancelButton(True) self.repo_filter.Bind(wx.EVT_TEXT_ENTER, self.OnSearchRepo) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.repo_tree, 1, wx.EXPAND) sizer.Add(self.repo_slider, 0, wx.EXPAND|wx.ALL, 5) sizer.Add(self.repo_filter, 0, wx.EXPAND|wx.ALL, 5) if 'wxMac' in wx.PlatformInfo: sizer.Add((5,5)) # Make sure there is room for the focus ring panel.SetSizer(sizer) menu = wx.Menu() #item = menu.AppendRadioItem(-1, "Search Filenames") #self.Bind(wx.EVT_MENU, self.OnSearchRepo, item) #item = menu.AppendRadioItem(-1, "Search Content") #self.Bind(wx.EVT_MENU, self.OnSearchRepo, item) for st in ('modified', 'added', 'deleted', 'clean', 'unknown', 'missing', 'ignored'): item = menu.AppendCheckItem(-1, "%s" % st, "Show %s files" % st) item.Check((st not in ('ignored', 'unknown'))) self.Bind(wx.EVT_MENU, self.OnSearchRepo, item) self.repo_filter.SetMenu(menu) # restore file history config: cfg_history = wx.GetApp().get_config("HISTORY") for filenum in range(9,-1,-1): filename = cfg_history.get('repo_%s' % filenum, "") if filename: self.repo_filehistory.AddFileToHistory(filename) return panel