def menu_create(search, win): tbx.clear() for category in items: frame = Frame(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH, text=category[0]) frame.show() tbx.pack_end(frame) tbx2 = Box(win, layout=ELM_BOX_LAYOUT_FLOW_HORIZONTAL, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.0)) frame.content_set(tbx2) tbx2.show() cnt = 0 for test in category[1]: if (search == None) or (test[0].lower().find(search.lower()) > -1): bt = Button(win, text=test[0]) bt.callback_clicked_add(selected_cb, test[1], test[2]) bt.show() tbx2.pack_end(bt) cnt += 1 if cnt < 1: frame.delete()
def menu_create(search, win): tbx.clear() for category in items: frame = Frame(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH, text=category[0]) frame.show() tbx.pack_end(frame) tbx2 = Box(win, layout=ELM_BOX_LAYOUT_FLOW_HORIZONTAL, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.0)) frame.content_set(tbx2) tbx2.show() cnt = 0 for test in category[1]: if (search == None) or (test[0].lower().find(search.lower()) > -1): bt = Button(win, text=test[0]) bt.callback_clicked_add(selected_cb, test[1], test[2]) bt.show() tbx2.pack_end(bt) cnt += 1 if cnt < 1: frame.delete()
def __init__(self, rent): Box.__init__(self, rent) self.parent = rent #This appears on the button in the main swmai window self.name = "Startup Applications" #The section in the main window the button is added to self.section = "Applications" #Search terms that this module should appear for self.searchData = ["startup", "command", "applications", "apps"] #Command line argument to open this module directly self.launchArg = "--startupapps" #Should be none by default. This value is used internally by swami self.button = None self.icon = Icon(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) #Use FDO icons -> http://standards.freedesktop.org/icon-naming-spec/latest/ar01s04.html self.icon.standard_set('system-run') self.icon.show() self.mainBox = Box(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.mainBox.show() buttonBox = Box(self, size_hint_weight = EXPAND_HORIZ, size_hint_align = FILL_BOTH) buttonBox.horizontal = True buttonApply = StandardButton(self, "Apply", "ok", self.applyPressed) buttonApply.show() buttonFlip = StandardButton(self, "Startup Commands", "preferences-system", self.flipPressed) buttonFlip.show() buttonReturn = StandardButton(self, "Back", "go-previous", self.returnPressed) buttonReturn.show() buttonBox.pack_end(buttonApply) buttonBox.pack_end(buttonFlip) buttonBox.pack_end(buttonReturn) buttonBox.show() startupApplications = [] with open(StartupApplicationsFile) as startupFile: for line in startupFile: startupApplications.append(line.rstrip()) desktopFiles = [] for ourPath in ApplicationPaths: desktopFiles += [os.path.join(dp, f) for dp, dn, filenames in os.walk(ourPath) for f in filenames if os.path.splitext(f)[1] == '.desktop'] self.startupList = startupList = List(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.applicationsList = applicationsList = SearchableList(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) startupToAdd = [] applicationsToAdd = [] for d in desktopFiles: with open(d) as desktopFile: fileName = d.split("/")[-1] icon = None for line in desktopFile: if line[:5] == "Name=": name = line[5:][:-1] if line[:5] == "Icon=": icon = line[5:].strip() try: iconObj = Icon(self, standard=icon, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) except: iconObj = Icon(self, standard="preferences-system", size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) icon = None if fileName in startupApplications: startupToAdd.append([name, iconObj, fileName, icon]) else: applicationsToAdd.append([name, iconObj, fileName, icon]) startupToAdd.sort() applicationsToAdd.sort() for s in startupToAdd: ourItem = startupList.item_append(s[0], s[1]) ourItem.data["file"] = s[2] ourItem.data["icon"] = s[3] #ourItem.append_to(startupList) #startupList.item_append(ourItem) for a in applicationsToAdd: ourItem = applicationsList.item_append(a[0], a[1]) ourItem.data["file"] = a[2] ourItem.data["icon"] = a[3] #ourItem.append_to(applicationsList.ourList) #applicationsList.item_append(a[0], a[1]) startupList.callback_clicked_double_add(self.startupAppRemove) applicationsList.callback_clicked_double_add(self.startupAppAdd) startupList.go() startupList.show() applicationsList.show() startupFrame = Frame(self, size_hint_weight = EXPAND_BOTH, size_hint_align=FILL_BOTH) startupFrame.text = "Startup Applications" startupFrame.content_set(startupList) startupFrame.show() otherFrame = Frame(self, size_hint_weight = EXPAND_BOTH, size_hint_align=FILL_BOTH) otherFrame.text = "Other Applications" otherFrame.content_set(applicationsList) otherFrame.show() self.mainBox.pack_end(startupFrame) self.mainBox.pack_end(otherFrame) self.backBox = Box(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.backBox.show() self.commandsList = commandsList = List(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) with open(StartupCommandsFile) as scf: for line in scf: if line.rstrip()[-3:] == "| \\": commandsList.item_append(line.rstrip()[:-3]) else: commandsList.item_append(line.rstrip()) commandsList.callback_clicked_right_add(self.commandRightClicked) commandsList.go() commandsList.show() commandBox = Box(self, size_hint_weight=EXPAND_HORIZ, size_hint_align=(1, 0.5)) commandBox.horizontal = True commandBox.show() self.newCommandEntry = newCommandEntry = Entry(self, size_hint_weight = EXPAND_HORIZ, size_hint_align = FILL_BOTH) newCommandEntry.single_line = True newCommandEntry.text = "<i>Type command here</i>" newCommandEntry.data["default text"] = True newCommandEntry.callback_clicked_add(self.entryClicked) newCommandEntry.show() newCommandButton = StandardButton(self, "Add Command", "add", self.newCmdPressed) newCommandButton.show() delCommandButton = StandardButton(self, "Delete Command", "exit", self.delCmdPressed) delCommandButton.show() commandBox.pack_end(newCommandButton) commandBox.pack_end(delCommandButton) newCommandFrame = Frame(self, size_hint_weight = EXPAND_HORIZ, size_hint_align = FILL_BOTH) newCommandFrame.text = "Add Startup Command:" newCommandFrame.content_set(newCommandEntry) newCommandFrame.show() self.backBox.pack_end(commandsList) self.backBox.pack_end(newCommandFrame) self.backBox.pack_end(commandBox) self.flip = Flip(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.flip.part_content_set("front", self.mainBox) self.flip.part_content_set("back", self.backBox) self.flip.show() self.pack_end(self.flip) self.pack_end(buttonBox)
def __init__(self, rent): Box.__init__(self, rent) self.parent = rent #This appears on the button in the main swmai window self.name = "Startup Applications" #The section in the main window the button is added to self.section = "Applications" #Search terms that this module should appear for self.searchData = ["startup", "command", "applications", "apps"] #Command line argument to open this module directly self.launchArg = "--startupapps" #Should be none by default. This value is used internally by swami self.button = None self.icon = Icon(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) #Use FDO icons -> http://standards.freedesktop.org/icon-naming-spec/latest/ar01s04.html self.icon.standard_set('system-run') self.icon.show() self.mainBox = Box(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.mainBox.show() buttonBox = Box(self, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) buttonBox.horizontal = True buttonApply = StandardButton(self, "Apply", "ok", self.applyPressed) buttonApply.show() buttonFlip = StandardButton(self, "Startup Commands", "preferences-system", self.flipPressed) buttonFlip.show() buttonReturn = StandardButton(self, "Back", "go-previous", self.returnPressed) buttonReturn.show() buttonBox.pack_end(buttonApply) buttonBox.pack_end(buttonFlip) buttonBox.pack_end(buttonReturn) buttonBox.show() startupApplications = [] with open(StartupApplicationsFile, "a+") as startupFile: for line in startupFile: startupApplications.append(line.rstrip()) desktopFiles = [] for ourPath in ApplicationPaths: desktopFiles += [ os.path.join(dp, f) for dp, dn, filenames in os.walk(ourPath) for f in filenames if os.path.splitext(f)[1] == '.desktop' ] self.startupList = startupList = List(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.applicationsList = applicationsList = SearchableList( self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) startupToAdd = [] applicationsToAdd = [] for d in desktopFiles: if os.access(d, os.R_OK): with open(d) as desktopFile: fileName = d.split("/")[-1] icon = None for line in desktopFile: if line[:5] == "Name=": name = line[5:][:-1] if line[:5] == "Icon=": icon = line[5:].strip() try: iconObj = Icon(self, standard=icon, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) except: iconObj = Icon(self, standard="preferences-system", size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) icon = None if fileName in startupApplications: startupToAdd.append([name, iconObj, fileName, icon]) else: applicationsToAdd.append( [name, iconObj, fileName, icon]) else: # Broken link or file problem, inform user print "Swami IOError: [Errno 2] No such file or directory: {0}".format( d) startupToAdd.sort() applicationsToAdd.sort() for s in startupToAdd: ourItem = startupList.item_append(s[0], s[1]) ourItem.data["file"] = s[2] ourItem.data["icon"] = s[3] #ourItem.append_to(startupList) #startupList.item_append(ourItem) for a in applicationsToAdd: ourItem = applicationsList.item_append(a[0], a[1]) ourItem.data["file"] = a[2] ourItem.data["icon"] = a[3] #ourItem.append_to(applicationsList.ourList) #applicationsList.item_append(a[0], a[1]) startupList.callback_clicked_double_add(self.startupAppRemove) applicationsList.callback_clicked_double_add(self.startupAppAdd) startupList.go() startupList.show() applicationsList.show() startupFrame = Frame(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) startupFrame.text = "Startup Applications" startupFrame.content_set(startupList) startupFrame.show() otherFrame = Frame(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) otherFrame.text = "Other Applications" otherFrame.content_set(applicationsList) otherFrame.show() self.mainBox.pack_end(startupFrame) self.mainBox.pack_end(otherFrame) self.backBox = Box(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.backBox.show() self.commandsList = commandsList = List(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) with open(StartupCommandsFile, "a+") as scf: for line in scf: if line.rstrip()[-3:] == "| \\": commandsList.item_append(line.rstrip()[:-3]) else: commandsList.item_append(line.rstrip()) commandsList.callback_clicked_right_add(self.commandRightClicked) commandsList.go() commandsList.show() commandBox = Box(self, size_hint_weight=EXPAND_HORIZ, size_hint_align=(1, 0.5)) commandBox.horizontal = True commandBox.show() self.newCommandEntry = newCommandEntry = Entry( self, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) newCommandEntry.single_line = True newCommandEntry.text = "<i>Type command here</i>" newCommandEntry.data["default text"] = True newCommandEntry.callback_clicked_add(self.entryClicked) newCommandEntry.show() newCommandButton = StandardButton(self, "Add Command", "add", self.newCmdPressed) newCommandButton.show() delCommandButton = StandardButton(self, "Delete Command", "exit", self.delCmdPressed) delCommandButton.show() commandBox.pack_end(newCommandButton) commandBox.pack_end(delCommandButton) newCommandFrame = Frame(self, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) newCommandFrame.text = "Add Startup Command:" newCommandFrame.content_set(newCommandEntry) newCommandFrame.show() self.backBox.pack_end(commandsList) self.backBox.pack_end(newCommandFrame) self.backBox.pack_end(commandBox) self.flip = Flip(self, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.flip.part_content_set("front", self.mainBox) self.flip.part_content_set("back", self.backBox) self.flip.show() self.pack_end(self.flip) self.pack_end(buttonBox)
class ConjectureGUI(object): def __init__(self, windowGrid, name): offset = 0 if (name == 'Yau'): offset = 50 self.BaseBox = Box(windowGrid, size_hint_weight=(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), size_hint_align=(EVAS_HINT_FILL, EVAS_HINT_FILL)) windowGrid.pack(self.BaseBox, offset, 0, 50, 100) self.BaseBox.show() self.frame = Frame(self.BaseBox, size_hint_weight=(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), size_hint_align=(EVAS_HINT_FILL, EVAS_HINT_FILL), text=name) self.BaseBox.pack_end(self.frame) self.frame.show() self.FrameBox = Box(self.BaseBox, size_hint_weight=(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), size_hint_align=(EVAS_HINT_FILL, EVAS_HINT_FILL)) self.frame.content_set(self.FrameBox) self.FrameBox.show() self.FrameCheck = Check(self.BaseBox, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), text="{0} Frame Check".format(name)) self.FrameBox.pack_end(self.FrameCheck) self.FrameCheck.show() self.FrameSeparator = Separator(self.BaseBox, horizontal=True, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5)) self.FrameBox.pack_end(self.FrameSeparator) self.FrameSeparator.show() self.FrameScroller = Scroller( self.BaseBox, content_min_limit=(True, False), size_hint_weight=(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), size_hint_align=(EVAS_HINT_FILL, EVAS_HINT_FILL), scrollbar_policy=(ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF)) self.FrameBox.pack_end(self.FrameScroller) self.FrameScroller.show() self.FrameTable = Table(self.BaseBox, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.0)) self.FrameScroller.content_set(self.FrameTable) self.FrameTable.show() self.BaseLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Base:") self.FrameTable.pack(self.BaseLabel, 0, 0, 1, 1) self.BaseLabel.show() self.BaseEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.BaseEntry, 1, 0, 1, 1) self.BaseEntry.show() self.SecretLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Secret:") self.FrameTable.pack(self.SecretLabel, 2, 0, 1, 1) self.SecretLabel.show() self.SecretEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.SecretEntry, 3, 0, 1, 1) self.SecretEntry.show() self.SignalLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Signal:") self.FrameTable.pack(self.SignalLabel, 4, 0, 1, 1) self.SignalLabel.show() self.SignalEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.SignalEntry, 5, 0, 1, 1) self.SignalEntry.show() self.ChannelLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Channel:") self.FrameTable.pack(self.ChannelLabel, 0, 1, 1, 1) self.ChannelLabel.show() self.ChannelEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.ChannelEntry, 1, 1, 1, 1) self.ChannelEntry.show() self.PoleLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Pole:") self.FrameTable.pack(self.PoleLabel, 2, 1, 1, 1) self.PoleLabel.show() self.PoleEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.PoleEntry, 3, 1, 1, 1) self.PoleEntry.show() self.IdentityLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Identity:") self.FrameTable.pack(self.IdentityLabel, 4, 1, 1, 1) self.IdentityLabel.show() self.IdentityEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.IdentityEntry, 5, 1, 1, 1) self.IdentityEntry.show() self.FoundationLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Foundation:") self.FrameTable.pack(self.FoundationLabel, 0, 2, 1, 1) self.FoundationLabel.show() self.FoundationEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.FoundationEntry, 1, 2, 1, 1) self.FoundationEntry.show() self.ElementLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Element:") self.FrameTable.pack(self.ElementLabel, 2, 2, 1, 1) self.ElementLabel.show() self.ElementEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.ElementEntry, 3, 2, 1, 1) self.ElementEntry.show() self.DynamoLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Dynamo:") self.FrameTable.pack(self.DynamoLabel, 4, 2, 1, 1) self.DynamoLabel.show() self.DynamoEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.DynamoEntry, 5, 2, 1, 1) self.DynamoEntry.show() self.ManifoldLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Manifold:") self.FrameTable.pack(self.ManifoldLabel, 0, 3, 1, 1) self.ManifoldLabel.show() self.ManifoldEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.ManifoldEntry, 1, 3, 1, 1) self.ManifoldEntry.show() self.RingLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Ring:") self.FrameTable.pack(self.RingLabel, 2, 3, 1, 1) self.RingLabel.show() self.RingEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.RingEntry, 3, 3, 1, 1) self.RingEntry.show() self.BarnLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Barn:") self.FrameTable.pack(self.BarnLabel, 4, 3, 1, 1) self.BarnLabel.show() self.BarnEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.BarnEntry, 5, 3, 1, 1) self.BarnEntry.show() self.VoltpereLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Voltpere:") self.FrameTable.pack(self.VoltpereLabel, 0, 4, 1, 1) self.VoltpereLabel.show() self.VoltpereEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.VoltpereEntry, 1, 4, 5, 1) self.VoltpereEntry.show() self.AmpereLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Ampere:") self.FrameTable.pack(self.AmpereLabel, 0, 5, 1, 1) self.AmpereLabel.show() self.AmpereEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.AmpereEntry, 1, 5, 2, 1) self.AmpereEntry.show() self.HenryLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Henry:") self.FrameTable.pack(self.HenryLabel, 0, 6, 1, 1) self.HenryLabel.show() self.HenryEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.HenryEntry, 1, 6, 2, 1) self.HenryEntry.show() self.MaxwellLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Maxwell:") self.FrameTable.pack(self.MaxwellLabel, 0, 7, 1, 1) self.MaxwellLabel.show() self.MaxwellEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.MaxwellEntry, 1, 7, 2, 1) self.MaxwellEntry.show() self.FermatLabel = Label(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Fermat:") self.FrameTable.pack(self.FermatLabel, 0, 8, 1, 1) self.FermatLabel.show() self.FermatEntry = Entry(self.FrameTable, size_hint_weight=(EVAS_HINT_EXPAND, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.5), single_line=True, scrollable=True, text="") self.FrameTable.pack(self.FermatEntry, 1, 8, 2, 1) self.FermatEntry.show() self.PropelButton = Button(self.FrameTable, size_hint_weight=(0.0, 0.0), size_hint_align=(0.0, 0.5), text="Propel") self.FrameTable.pack(self.PropelButton, 4, 8, 1, 1) self.PropelButton.show() self.PropelButton.callback_clicked_add(self.propelClicked) def propelClicked(self, obj): print("clicked")
class Application(object): def __init__(self): self.cfg = ConfigOption() self.userid = os.getuid() self.win = None self.bg = None self.main_box = None self.info_frame = None self.lb = None self.ps_list = None self.win = StandardWindow("my app", "eyekill", size=(320, 384)) self.win.title_set("eye kill") self.win.callback_delete_request_add(self.destroy) self.main_box = Box(self.win) self.main_box.size_hint_weight = EXPAND_BOTH self.win.resize_object_add(self.main_box) self.main_box.show() self.info_frame = Frame(self.win) self.info_frame.text_set("Information") self.main_box.pack_end(self.info_frame) self.info_frame.show() self.lb = Label(self.win) self.lb.text_set('<b>Kill process with a double click</b>') self.info_frame.content_set(self.lb) self.lb.show() self.ps_list = List(self.win) self.ps_list.size_hint_weight = EXPAND_BOTH self.ps_list.size_hint_align = FILL_BOTH self.ps_list.callback_clicked_double_add(self.kill_bill) self.update_list() self.main_box.pack_end(self.ps_list) self.ps_list.go() self.ps_list.show() self.win.resize(320, 384) self.win.show() def destroy(self, obj): # FIXME: but here self.cfg.save()??? elementary.exit() def update_list(self): if bool(self.cfg.get_desktop()): for de in self.cfg.get_desktop(): ps = psutil.Process(get_pid_by_name(de)) pl = ps.children() for p in pl: if p.uids().real == self.userid: if p.name not in self.cfg.get_process(): short_info = '%s / %s / %s' % (p.pid, p.name(), p.status()) self.ps_list.item_append(label=short_info, callback=self.update_info, p=p) else: pl = psutil.get_pid_list() for p in pl: p = psutil.Process(p) if p.uids().real == self.userid: if p.name() not in self.cfg.get_process(): short_info = '%s / %s / %s' % (p.pid, p.name(), p.status()) self.ps_list.item_append(label=short_info, callback=self.update_info, p=p) def update_info(self, li, it, p): info = ("PID %i STAT %s TIME %s<br/>MEM %s CPU %s COMMAND %s" % \ (p.pid,\ p.status(),\ p.get_cpu_times().user,\ hbytes(p.get_memory_info().rss),\ p.get_cpu_percent(interval=0),\ p.name())) self.lb.text_set(info) def kill_bill(self, obj, cb_data): bill = cb_data.data_get()[1]['p'].pid print("%s ... Gotcha" % bill) os.kill(bill, signal.SIGTERM) if (os.kill(bill, 0)): os.kill(bill, signal.SIGKILL) item = obj.selected_item_get() item.disabled_set(True)
class Application(object): def __init__(self): self.cfg = ConfigOption() self.userid = os.getuid() self.win = None self.bg = None self.main_box = None self.info_frame = None self.lb = None self.ps_list = None self.win = StandardWindow("my app", "eyekill", size=(320, 384)) self.win.title_set("eye kill") self.win.callback_delete_request_add(self.destroy) self.main_box = Box(self.win) self.main_box.size_hint_weight = EXPAND_BOTH self.win.resize_object_add(self.main_box) self.main_box.show() self.info_frame = Frame(self.win) self.info_frame.text_set("Information") self.main_box.pack_end(self.info_frame) self.info_frame.show() self.lb = Label(self.win) self.lb.text_set('<b>Kill process with a double click</b>') self.info_frame.content_set(self.lb) self.lb.show() self.ps_list = List(self.win) self.ps_list.size_hint_weight = EXPAND_BOTH self.ps_list.size_hint_align = FILL_BOTH self.ps_list.callback_clicked_double_add(self.kill_bill) self.update_list() self.main_box.pack_end(self.ps_list) self.ps_list.go() self.ps_list.show() self.win.resize(320, 384) self.win.show() def destroy(self, obj): # FIXME: but here self.cfg.save()??? elementary.exit() def update_list(self): if bool(self.cfg.get_desktop()): for de in self.cfg.get_desktop(): ps = psutil.Process(get_pid_by_name(de)) pl = ps.children() for p in pl: if p.uids().real == self.userid: if p.name not in self.cfg.get_process(): short_info = '%s / %s / %s' % (p.pid, p.name(), p.status()) self.ps_list.item_append(label = short_info, callback = self.update_info, p = p) else: pl = psutil.get_pid_list() for p in pl: p = psutil.Process(p) if p.uids().real == self.userid: if p.name() not in self.cfg.get_process(): short_info = '%s / %s / %s' % (p.pid, p.name(), p.status()) self.ps_list.item_append(label = short_info, callback = self.update_info, p = p) def update_info(self,li , it, p): info = ("PID %i STAT %s TIME %s<br/>MEM %s CPU %s COMMAND %s" % \ (p.pid,\ p.status(),\ p.get_cpu_times().user,\ hbytes(p.get_memory_info().rss),\ p.get_cpu_percent(interval=0),\ p.name())) self.lb.text_set(info) def kill_bill(self, obj, cb_data): bill = cb_data.data_get()[1]['p'].pid print ("%s ... Gotcha" % bill) os.kill(bill, signal.SIGTERM) if (os.kill(bill, 0)): os.kill(bill, signal.SIGKILL) item = obj.selected_item_get() item.disabled_set(True)