def yes(self): field_list = self.field_list # print(field_list) # gui.mainWindow(self.master).delete_contact(name) ab.edit_contact(self.entry_id, field_list) db.db_commit() self.top.destroy()
def field_return(self): """Grabs form data and creates""" field_list = [' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '] first = self.first_name.get() last = self.last_name.get() st1 = self.address1.get() st2 = self.address2.get() city = self.city.get() state = self.state.get() zip = self.zip.get() home = self.home.get() mobile = self.mobile.get() email = self.email.get() bday = self.birthday.get() notes = self.notes.get() field_vars = [first, last, st1, st2, city, state, zip, home, mobile, email, bday, notes] for i in range(12): field_list[i] = field_vars[i] ab.add_contact(field_list) gui.mainWindow(self.master).search_query(gui.mainWindow(self.master).sort.get()) # self.contact_list() self.close_window()
def field_return(self): i = 0 r = self.item.get() ab.add_contact(r) self.book_list.delete(0, Tk.END) for contact in ab.get_contacts_list("last"): self.book_list.insert(Tk.END, contact[0] + contact[1])
def field_return(self): i = 0 r = self.item.get() ab.add_contact(r) self.book_list.delete(0, Tk.END) for contact in ab.get_contacts_list('last'): self.book_list.insert(Tk.END, contact[0] + contact[1])
def delete_contact(self, name): """Deletes selected contact. Keyword arguments: name -- First and Last name of contact to be deleted """ ab.remove_contact(name) self.search_query(self.sort.get())
def addContact(): valid_name = valid_phone = False while not valid_name or not valid_phone: if not valid_name: name = input('Enter name:') valid_name = AddressBook.validateName(name) elif not valid_phone: phone_number = input('Enter phone number:') valid_phone = AddressBook.validatePhone(phone_number) c1 = Contact(name) c1.addPhone(phone_number) abook.addContact(c1)
def onSelect(self, event): """Grabs name from contact list upon user click.""" w = event.widget name = str(self.book_list.get(self.book_list.curselection())) self.clearTextEntries() name_entry = ab.get_contact(name) self.first_name.insert(0, str(name_entry[0])) self.last_name.insert(0, str(name_entry[1])) self.address1.insert(0, str(name_entry[2])) self.address2.insert(0, str(name_entry[3])) self.city.insert(0, str(name_entry[4])) self.state.insert(0, str(name_entry[5])) self.zip.insert(0, str(name_entry[6])) self.home.insert(0, str(name_entry[7])) self.mobile.insert(0, str(name_entry[8])) self.email.insert(0, str(name_entry[9])) self.birthday.insert(0, str(name_entry[10])) self.notes.insert(0, str(name_entry[11])) #User cannot edit entry displayed on main GUI, unless clicking edit button. self.first_name.configure(state='readonly') self.last_name.configure(state='readonly') self.address1.configure(state='readonly') self.address2.configure(state='readonly') self.city.configure(state='readonly') self.state.configure(state='readonly') self.zip.configure(state='readonly') self.home.configure(state='readonly') self.mobile.configure(state='readonly') self.email.configure(state='readonly') self.birthday.configure(state='readonly') self.notes.configure(state='readonly')
def onSelect(self, event): """Grabs name from contact list upon user click.""" w = event.widget name = str(self.book_list.get(self.book_list.curselection())) self.clearTextEntries() name_entry = ab.get_contact(name) self.first_name.insert(0, str(name_entry[0])) self.last_name.insert(0, str(name_entry[1])) self.address1.insert(0, str(name_entry[2])) self.address2.insert(0, str(name_entry[3])) self.city.insert(0, str(name_entry[4])) self.state.insert(0, str(name_entry[5])) self.zip.insert(0, str(name_entry[6])) self.home.insert(0, str(name_entry[7])) self.mobile.insert(0, str(name_entry[8])) self.email.insert(0, str(name_entry[9])) self.birthday.insert(0, str(name_entry[10])) self.notes.insert(0, str(name_entry[11])) # User cannot edit entry displayed on main GUI, unless clicking edit button. self.first_name.configure(state="readonly") self.last_name.configure(state="readonly") self.address1.configure(state="readonly") self.address2.configure(state="readonly") self.city.configure(state="readonly") self.state.configure(state="readonly") self.zip.configure(state="readonly") self.home.configure(state="readonly") self.mobile.configure(state="readonly") self.email.configure(state="readonly") self.birthday.configure(state="readonly") self.notes.configure(state="readonly")
def __init__(self): wx.Frame.__init__(self, None, -1, self.title, wx.Point(30,30)) self.addressBook = AddressBook() self.saveName = "" self.create_menu() self.create_main_panel() self.validation = Validator()
def on_import(self, event): openFileDialog = wx.FileDialog(self, "Import .tsv file", "", "", ".tsv files (*.tsv)|*.tsv", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) if openFileDialog.ShowModal() == wx.ID_CANCEL: return inFilePath = openFileDialog.GetPath() if self.validation.isValidUSPS(inFilePath): temp = AddressBook() temp.loadTSV(inFilePath) for contact in temp.contacts: self.addressBook.contacts.append(contact) self.addressBook.sort(self.addressBook.sortMethod[0],self.addressBook.sortMethod[1]) self.display() self.flash_status_message("Imported address book {}".format(inFilePath)) self.addressBook.changed = True else: dlg = wx.MessageDialog(self, "Unable to import {}".format(inFilePath.split('/')[len(inFilePath.split('/'))-1]), "Invalid File", wx.OK) dlg.ShowModal() dlg.Destroy()
def field_return(self): """Grabs contact form data and sends it to add_contact() in AddressBook.py. """ # List to hold form data field_list = [ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ] # Get form data first = self.first_name.get() last = self.last_name.get() st1 = self.address1.get() st2 = self.address2.get() city = self.city.get() state = self.state.get() zip = self.zip.get() home = self.home.get() mobile = self.mobile.get() email = self.email.get() bday = self.birthday.get() notes = self.notes.get() field_vars = [ first, last, st1, st2, city, state, zip, home, mobile, email, bday, notes ] # Add form data to field_list for i in range(12): field_list[i] = field_vars[i] # If contact entry has a first name, add the entry. # Else, warn user there is no first name. if field_list[0] != '': ab.add_contact(field_list) else: self.c = cw.ConfirmationWindow(self.master) gui.mainWindow(self.master).search_query( gui.mainWindow(self.master).sort.get()) self.close_window()
def search_query(self, sort): """Retrieve entries based off search string. Default search string is ''. Keyword arguments: sort -- Sorting method (Last Name or Zip) """ self.book_list.delete(0, Tk.END) for contact in ab.search(self.search_bar.get(), sort): self.book_list.insert(Tk.END, contact[0] + " " + contact[1])
def field_return(self): """Grabs contact form data and sends it to add_contact() in AddressBook.py. """ # List to hold form data field_list = [' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '] # Get form data first = self.first_name.get() last = self.last_name.get() st1 = self.address1.get() st2 = self.address2.get() city = self.city.get() state = self.state.get() zip = self.zip.get() home = self.home.get() mobile = self.mobile.get() email = self.email.get() bday = self.birthday.get() notes = self.notes.get() field_vars = [first, last, st1, st2, city, state, zip, home, mobile, email, bday, notes] # Add form data to field_list for i in range(12): field_list[i] = field_vars[i] # If contact entry has a first name, add the entry. # Else, warn user there is no first name. if field_list[0] != '': ab.add_contact(field_list) else: self.c=cw.ConfirmationWindow(self.master) gui.mainWindow(self.master).search_query(gui.mainWindow(self.master).sort.get()) self.close_window()
def grab_contact(self): """Inserts contact information into fields.""" name_entry = ab.get_contact(self.name) self.first_name.insert(0, str(name_entry[0])) self.last_name.insert(0, str(name_entry[1])) self.address1.insert(0, str(name_entry[2])) self.address2.insert(0, str(name_entry[3])) self.city.insert(0, str(name_entry[4])) self.state.insert(0, str(name_entry[5])) self.zip.insert(0, str(name_entry[6])) self.home.insert(0, str(name_entry[7])) self.mobile.insert(0, str(name_entry[8])) self.email.insert(0, str(name_entry[9])) self.birthday.insert(0, str(name_entry[10])) self.notes.insert(0, str(name_entry[11]))
def grab_contact(self): """Inserts contact information into fields.""" name_entry = ab.get_contact(self.name) self.first_name.insert(0,str(name_entry[0])) self.last_name.insert(0,str(name_entry[1])) self.address1.insert(0,str(name_entry[2])) self.address2.insert(0,str(name_entry[3])) self.city.insert(0,str(name_entry[4])) self.state.insert(0,str(name_entry[5])) self.zip.insert(0,str(name_entry[6])) self.home.insert(0,str(name_entry[7])) self.mobile.insert(0,str(name_entry[8])) self.email.insert(0,str(name_entry[9])) self.birthday.insert(0,str(name_entry[10])) self.notes.insert(0,str(name_entry[11]))
def onSelect(self,event): """Displays contact information when user selects a contact from the contact list. """ w = event.widget try: name = str(self.book_list.get(self.book_list.curselection())) self.clearTextEntries() name_entry = ab.get_contact(name) self.first_name.insert(0,str(name_entry[0])) self.last_name.insert(0,str(name_entry[1])) self.address1.insert(0,str(name_entry[2])) self.address2.insert(0,str(name_entry[3])) self.city.insert(0,str(name_entry[4])) self.state.insert(0,str(name_entry[5])) self.zip.insert(0,str(name_entry[6])) self.home.insert(0,str(name_entry[7])) self.mobile.insert(0,str(name_entry[8])) self.email.insert(0,str(name_entry[9])) self.birthday.insert(0,str(name_entry[10])) self.notes.insert(0,str(name_entry[11])) # User cannot edit entry displayed on main GUI, unless clicking edit # button. self.first_name.configure(state='readonly') self.last_name.configure(state='readonly') self.address1.configure(state='readonly') self.address2.configure(state='readonly') self.city.configure(state='readonly') self.state.configure(state='readonly') self.zip.configure(state='readonly') self.home.configure(state='readonly') self.mobile.configure(state='readonly') self.email.configure(state='readonly') self.birthday.configure(state='readonly') self.notes.configure(state='readonly') except: return
class GUI(wx.Frame): title = "Jello Puddin' Pals" def __init__(self): wx.Frame.__init__(self, None, -1, self.title, wx.Point(30,30)) self.addressBook = AddressBook() self.saveName = "" self.create_menu() self.create_main_panel() self.validation = Validator() def create_menu(self): ##### Menu Bar self.Bind(wx.EVT_CLOSE, self.on_exit, self) self.menubar = wx.MenuBar() menu_file = wx.Menu() m_open = menu_file.Append(-1, "&New", "New Address Book") self.Bind(wx.EVT_MENU, self.on_new, m_open) m_open = menu_file.Append(-1, "&Open", "Open Address Book") self.Bind(wx.EVT_MENU, self.on_open, m_open) m_save = menu_file.Append(-1, "&Save", "Save Address Book") self.Bind(wx.EVT_MENU, self.on_save, m_save) m_save_as = menu_file.Append(-1, "&Save as...", "Save Address Book as...") self.Bind(wx.EVT_MENU, self.on_save_as, m_save_as) m_import = menu_file.Append(-1, "&Import", "Import Address Book") self.Bind(wx.EVT_MENU, self.on_import, m_import) m_export = menu_file.Append(-1, "&Export", "Export Address Book") self.Bind(wx.EVT_MENU, self.on_export, m_export) m_exit = menu_file.Append(-1, "&Exit", "Exit Program") self.Bind(wx.EVT_MENU, self.on_exit, m_exit) menu_contact = wx.Menu() m_add = menu_contact.Append(-1, "&Add New Contact", "Add New Contact to Address Book") self.Bind(wx.EVT_MENU, self.on_add, m_add) m_edit = menu_contact.Append(-1, "&Edit Selected", "Edit Selected Contact") self.Bind(wx.EVT_MENU, self.on_edit, m_edit) m_remove = menu_contact.Append(-1, "&Remove Selected", "Remove Selected Contact from Address Book") self.Bind(wx.EVT_MENU, self.on_remove, m_remove) m_print = menu_contact.Append(-1, "Get Mailing Label", "Get Mailing Label for Selected Contact") self.Bind(wx.EVT_MENU, self.on_print, m_print) menu_help = wx.Menu() m_about = menu_help.Append(-1, "&About", "About this application") self.Bind(wx.EVT_MENU, self.on_about, m_about) self.menubar.Append(menu_file, "&File") self.menubar.Append(menu_contact, "&Contact") self.menubar.Append(menu_help, "&Help") self.SetMenuBar(self.menubar) self.statusbar = self.CreateStatusBar() def create_main_panel(self): self.panel = wx.Panel(self) ##### List of Contacts self.list = wx.ListCtrl(self.panel, -1, size=wx.Size(775,500), style=wx.LC_REPORT | wx.LC_SINGLE_SEL) self.list.InsertColumn(0, 'Name', width=150) self.list.InsertColumn(1, 'Phone', width=125) self.list.InsertColumn(2, 'Address', width=150) self.list.InsertColumn(3, 'Address, cont.', width=100) self.list.InsertColumn(4, 'City', width=125) self.list.InsertColumn(5, 'State', width=50) self.list.InsertColumn(6, 'Zip', width=75) self.display() ##### User Controls self.addButton = wx.Button(self.panel, -1, "+ Add", size=wx.Size(80,20)) self.Bind(wx.EVT_BUTTON, self.on_add, self.addButton) self.removeButton = wx.Button(self.panel, -1, "- Remove", size=wx.Size(80,20)) self.Bind(wx.EVT_BUTTON, self.on_remove, self.removeButton) self.editButton = wx.Button(self.panel, -1, "Edit", size=wx.Size(80,20)) self.Bind(wx.EVT_BUTTON, self.on_edit, self.editButton) self.printButton = wx.Button(self.panel, -1, "Mail Label", size=wx.Size(80,20)) self.Bind(wx.EVT_BUTTON, self.on_print, self.printButton) self.sortName = wx.Button(self.panel, -1, u"Sort by Name \u25B2", size=wx.Size(120,20)) self.Bind(wx.EVT_BUTTON, self.on_sort_name, self.sortName) self.sortZip = wx.Button(self.panel, -1, u"Sort by Zip", size=wx.Size(120,20)) self.Bind(wx.EVT_BUTTON, self.on_sort_zip, self.sortZip) ##### Layout self.vbox = wx.BoxSizer(wx.VERTICAL) self.hbox = wx.BoxSizer(wx.HORIZONTAL) flags = wx.ALIGN_LEFT | wx.ALL | wx.ALIGN_CENTER_VERTICAL self.hbox.Add(self.addButton, 0, border=5, flag=flags) self.hbox.Add(self.editButton, 0, border=5, flag=flags) self.hbox.Add(self.removeButton, 0, border=5, flag=flags) self.hbox.Add(self.printButton, 0, border=5, flag=flags) self.hbox.AddStretchSpacer() self.hbox.Add(self.sortName, 0, border=5, flag=wx.ALIGN_RIGHT | wx.ALL | wx.ALIGN_CENTER_VERTICAL) self.hbox.Add(self.sortZip, 0, border=5, flag=wx.ALIGN_RIGHT | wx.ALL | wx.ALIGN_CENTER_VERTICAL) self.vbox.Add(self.hbox, 0, flag = wx.ALIGN_LEFT | wx.TOP | wx.EXPAND) self.vbox.Add(self.list, 1, border=5, flag = wx.ALL | wx.GROW) self.panel.SetSizer(self.vbox) self.vbox.Fit(self) ##### Functionality def display(self): self.list.DeleteAllItems() for contact in self.addressBook.contacts: self.show_contact(contact) if self.saveName != "": file = self.saveName.split('/') self.SetTitle("Jello Puddin' Pals - {}".format(file[len(file)-1])) def show_contact(self, contact): index = self.list.InsertStringItem(sys.maxint, contact.getAttr('name')) self.list.SetStringItem(index, 1, contact.getAttr('phone')) self.list.SetStringItem(index, 2, contact.getAttr('address')) self.list.SetStringItem(index, 3, contact.getAttr('address2')) self.list.SetStringItem(index, 4, contact.getAttr('city')) self.list.SetStringItem(index, 5, contact.getAttr('state')) self.list.SetStringItem(index, 6, contact.getAttr('zipcode')) def on_add(self, event): cb = ContactBox(self, "add") cb.Show() def on_edit(self, event): if len(self.addressBook.contacts)>0: i = self.list.GetFirstSelected() name = self.addressBook.contacts[i].getAttr('name') phone = self.addressBook.contacts[i].getAttr('phone') address = self.addressBook.contacts[i].getAttr('address') address2 = self.addressBook.contacts[i].getAttr('address2') city = self.addressBook.contacts[i].getAttr('city') state = self.addressBook.contacts[i].getAttr('state') zipcode = self.addressBook.contacts[i].getAttr('zipcode') cb = ContactBox(self, "edit", name, phone, address, address2, city, state, zipcode, index=i) cb.Show() else: self.flash_status_message("Address book is empty") def on_remove(self, event): if len(self.addressBook.contacts)>0: i = self.list.GetFirstSelected() name = self.addressBook.contacts[i].getAttr('name') dlg = wx.MessageDialog(self, "Are you sure you want to remove {}?".format(name), "Confirm Delete", wx.OK|wx.CANCEL|wx.ICON_QUESTION) result = dlg.ShowModal() dlg.Destroy() if result == wx.ID_OK: del self.addressBook.contacts[i] self.addressBook.sort(self.addressBook.sortMethod[0],self.addressBook.sortMethod[1]) self.display() self.addressBook.changed = True self.flash_status_message("Removed {}".format(name)) else: self.flash_status_message("Address book is empty") def on_sort_name(self, event): if self.addressBook.sortMethod == ('name', False): self.addressBook.sortMethod = ('name',True) self.addressBook.sort('name',True) self.sortName.SetLabel(u"Sort by Name \u25BC") self.sortZip.SetLabel(u"Sort by Zip") self.flash_status_message("Sorted address book by last name, Z-A") else: self.addressBook.sortMethod = ('name',False) self.addressBook.sort('name',False) self.sortName.SetLabel(u"Sort by Name \u25B2") self.sortZip.SetLabel(u"Sort by Zip") self.flash_status_message("Sorted address book by last name, A-Z") self.display() def on_sort_zip(self, event): if self.addressBook.sortMethod == ('zipcode', False): self.addressBook.sortMethod = ('zipcode',True) self.addressBook.sort('zipcode',True) self.sortZip.SetLabel(u"Sort by Zip \u25BC") self.sortName.SetLabel(u"Sort by Name") self.flash_status_message("Sorted address book by zip code, 9-0") else: self.addressBook.sortMethod = ('zipcode',False) self.addressBook.sort('zipcode',False) self.sortZip.SetLabel(u"Sort by Zip \u25B2") self.sortName.SetLabel(u"Sort by Name") self.flash_status_message("Sorted address book by zip code, 0-9") self.display() ##### Menu functions def on_new(self, event): if self.addressBook.changed: if wx.MessageBox("This address book contains unsaved changes! Continue anyway?", "Are you sure?", wx.ICON_QUESTION | wx.YES_NO, self) == wx.NO: return newGui = GUI() newGui.display() newGui.Show() self.Destroy() def on_open(self, event): if self.addressBook.changed: if wx.MessageBox("This address book contains unsaved changes! Continue anyway?", "Are you sure?", wx.ICON_QUESTION | wx.YES_NO, self) == wx.NO: return openFileDialog = wx.FileDialog(self, "Open .tsv file", "", "", ".tsv files (*.tsv)|*.tsv", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) if openFileDialog.ShowModal() == wx.ID_CANCEL: return inFilePath = openFileDialog.GetPath() if self.validation.isValidUSPS(inFilePath): newGui = GUI() newGui.addressBook.loadTSV(inFilePath) newGui.saveName = inFilePath newGui.addressBook.sort('name',False) newGui.display() newGui.Show() newGui.flash_status_message("Opened address book {}".format(newGui.saveName)) self.Destroy() else: dlg = wx.MessageDialog(self, "Unable to open {}".format(inFilePath.split('/')[len(inFilePath.split('/'))-1]), "Invalid File", wx.OK) dlg.ShowModal() dlg.Destroy() def on_save_as(self, mode): defaultName = "" if mode != 1: default = self.saveName.split('/') if len(default) > 0: defaultName = default[len(default)-1] saveFileDialog = wx.FileDialog(self, "Save .tsv file", "", defaultName, ".tsv files (*.tsv)|*.tsv", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) if saveFileDialog.ShowModal() == wx.ID_CANCEL: return self.saveName = saveFileDialog.GetPath() self.addressBook.writeTSV(self.saveName) if (mode != 2): self.display() self.addressBook.changed = False self.flash_status_message("Saved address book as {}".format(self.saveName)) def on_import(self, event): openFileDialog = wx.FileDialog(self, "Import .tsv file", "", "", ".tsv files (*.tsv)|*.tsv", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) if openFileDialog.ShowModal() == wx.ID_CANCEL: return inFilePath = openFileDialog.GetPath() if self.validation.isValidUSPS(inFilePath): temp = AddressBook() temp.loadTSV(inFilePath) for contact in temp.contacts: self.addressBook.contacts.append(contact) self.addressBook.sort(self.addressBook.sortMethod[0],self.addressBook.sortMethod[1]) self.display() self.flash_status_message("Imported address book {}".format(inFilePath)) self.addressBook.changed = True else: dlg = wx.MessageDialog(self, "Unable to import {}".format(inFilePath.split('/')[len(inFilePath.split('/'))-1]), "Invalid File", wx.OK) dlg.ShowModal() dlg.Destroy() def on_export(self, event): self.on_save_as(mode=2) def on_save(self, event): if self.saveName == "": self.on_save_as(mode=0) else: self.addressBook.writeTSV(self.saveName) self.addressBook.changed = False self.flash_status_message("Saved address book {}".format(self.saveName)) def on_print(self, event): if len(self.addressBook.contacts)>0: i = self.list.GetFirstSelected() mail = self.addressBook.contacts[i].getLabel() dlg = MessageBox(self, mail) dlg.ShowModal() dlg.Destroy() else: self.flash_status_message("Address book is empty") def on_exit(self, event): if self.addressBook.changed: if wx.MessageBox("This address book contains unsaved changes! Exit anyway?", "Are you sure?", wx.ICON_QUESTION | wx.YES_NO, self) == wx.NO: return self.Destroy() def on_about(self, event): msg = "Bill Cosby's Eligible Bachelors of Science" dlg = wx.MessageDialog(self, msg, "About", wx.OK) dlg.ShowModal() dlg.Destroy() def flash_status_message(self, msg, flash_len_ms=3000): self.statusbar.SetStatusText(msg) self.timeroff = wx.Timer(self) self.Bind( wx.EVT_TIMER, self.on_flash_status_off, self.timeroff) self.timeroff.Start(flash_len_ms, oneShot=True) def on_flash_status_off(self, event): self.statusbar.SetStatusText('')
contact_id = input('Enter contact ID which you want delete (type "all" to clear address book):\n') if contact_id == 'all': if confirmDelete('ALL'): abook.deleteAll() else: contact = abook.getContactByID(contact_id) if contact and confirmDelete(contact.name): abook.deleteContactByID(contact_id) def confirmDelete(name): confirmation = input('You want to delete {0} contact(s). Are you sure? (y/N)'.format(name)) return confirmation == 'y' or confirmation == 'Y' abook = AddressBook(addressBookFile) is_running = True while is_running: option = input('''Select option: a - add new contact d - delete contact p - print all contacts q - quit ''') if option == 'p': abook.print() elif option == 'a': addContact() elif option == 'd':
def delete_contact(self, name): """Deletes selected contact""" ab.remove_contact(name) self.search_query(self.sort.get())
def search_query(self, sort): """ """ self.book_list.delete(0, Tk.END) for contact in ab.search(self.search_bar.get(), sort): self.book_list.insert(Tk.END, contact[0] + " " + contact[1])
self.target = target def run(self): #let gui start import time time.sleep(0.2) #force focus to widget self.target.focus_force(); #generate mouse 1 self.target.event_generate("<ButtonPress>") self.target.event_generate("<ButtonRelease") self.target.update() if __name__ == "__main__": ab.new_book() root = Tk.Tk() gui.mainWindow(root) egen = EventGen(root) egen.start() root.mainloop()
import json from AddressBook import * if __name__ == '__main__': book = AddressBook() book.show()
def yes(self): field_list = self.field_list ab.edit_contact(self.entry_id, field_list) db.db_commit() self.top.destroy()
#!/usr/bin/env python import sys import subprocess import AddressBook as AB # get a reference to the address book book = AB.ABAddressBook.sharedAddressBook() # create search parameters - prefix match on first or last name or email firstname_search = AB.ABPersonCreateSearchElement( AB.kABLastNameProperty, None, None, sys.argv[1], AB.kABPrefixMatchCaseInsensitive) lastname_search = AB.ABPersonCreateSearchElement( AB.kABFirstNameProperty, None, None, sys.argv[1], AB.kABPrefixMatchCaseInsensitive) email_search = AB.ABPersonCreateSearchElement( AB.kABEmailProperty, None, None, sys.argv[1], AB.kABContainsSubStringCaseInsensitive) name_search = AB.ABSearchElement.searchElementForConjunction_children_( AB.kABSearchOr, [firstname_search, lastname_search, email_search]) # perform the search matches = book.recordsMatchingSearchElement_(name_search) # collect results results = [] for person in matches: emails = person.valueForKey_('Email') or [] company = person.valueForKey_('Organization')
# Authors: # # Name: Student ID: # Amanda Burgos De Jesus #97280 # Hiram Zengotita Hernandez #103450 # Ivan Santiago De Jesus #85519 # from AddressBook import * from AddressBookWindow import * from tkinter import * root = Tk() ab = AddressBook() abw = AddressBookWindow(root, ab) root.mainloop()
def testFunctions(self): self.assertResultIsCFRetained(AddressBook.ABPickerCreate) ref = AddressBook.ABPickerCreate() try: self.assertIsInstance( ref, (AddressBook.ABPickerRef, objc.lookUpClass("ABPeoplePickerCAdapter")), ) except objc.error: self.assertIsInstance(ref, AddressBook.ABPickerRef) AddressBook.ABPickerSetFrame(ref, ((90, 100), (200, 400))) r = AddressBook.ABPickerGetFrame(ref, None) self.assertIsInstance(r, AddressBook.NSRect) self.assertEqual(r, ((90, 100), (200, 400))) self.assertResultHasType(AddressBook.ABPickerIsVisible, objc._C_BOOL) r = AddressBook.ABPickerIsVisible(ref) self.assertIsInstance(r, bool) self.assertTrue(r is False) self.assertArgHasType(AddressBook.ABPickerSetVisibility, 1, objc._C_BOOL) AddressBook.ABPickerSetVisibility(ref, True) r = AddressBook.ABPickerIsVisible(ref) self.assertTrue(r is True) AddressBook.ABPickerSetVisibility(ref, False) r = AddressBook.ABPickerIsVisible(ref) self.assertTrue(r is False) r = AddressBook.ABPickerGetAttributes(ref) self.assertIsInstance(r, int) r = AddressBook.ABPickerChangeAttributes( ref, AddressBook.kABPickerAllowMultipleSelection, 0) self.assertTrue(r is None) AddressBook.ABPickerAddProperty(ref, AddressBook.kABFirstNameProperty) AddressBook.ABPickerAddProperty(ref, AddressBook.kABLastNameProperty) AddressBook.ABPickerRemoveProperty(ref, AddressBook.kABFirstNameProperty) v = AddressBook.ABPickerCopyProperties(ref) self.assertIsInstance(v, AddressBook.NSArray) # Disable detailed testing, the RemoveProperties function # doesn't actually remove. See radar #7999195. # self.assertEqual(tuple(v), (AddressBook.kABLastNameProperty,)) AddressBook.ABPickerSetColumnTitle(ref, "Achternaam", AddressBook.kABLastNameProperty) v = AddressBook.ABPickerCopyColumnTitle( ref, AddressBook.kABLastNameProperty) self.assertResultIsCFRetained(AddressBook.ABPickerCopyColumnTitle) self.assertEqual(v, "Achternaam") AddressBook.ABPickerSetDisplayedProperty( ref, AddressBook.kABLastNameProperty) v = AddressBook.ABPickerCopyDisplayedProperty(ref) self.assertResultIsCFRetained( AddressBook.ABPickerCopyDisplayedProperty) self.assertIsInstance(v, str) v = AddressBook.ABPickerCopySelectedGroups(ref) self.assertIsInstance(v, AddressBook.NSArray) v = AddressBook.ABPickerCopySelectedRecords(ref) self.assertIsInstance(v, AddressBook.NSArray) v = AddressBook.ABPickerCopySelectedIdentifiers( ref, AddressBook.ABGetMe(AddressBook.ABGetSharedAddressBook())) if v is not None: self.assertIsInstance(v, AddressBook.NSArray) v = AddressBook.ABPickerCopySelectedValues(ref) self.assertIsInstance(v, AddressBook.NSArray) grp = AddressBook.ABCopyArrayOfAllGroups( AddressBook.ABGetSharedAddressBook())[0] usr = AddressBook.ABGetMe(AddressBook.ABGetSharedAddressBook()) AddressBook.ABPickerSelectGroup(ref, grp, True) self.assertArgHasType(AddressBook.ABPickerSelectGroup, 2, objc._C_BOOL) AddressBook.ABPickerSelectRecord(ref, usr, False) self.assertArgHasType(AddressBook.ABPickerSelectRecord, 2, objc._C_BOOL) AddressBook.ABPickerSelectIdentifier( ref, usr, "Last", False) # AddressBook.ABRecordCopyUniqueId(usr), False) self.assertArgHasType(AddressBook.ABPickerSelectIdentifier, 3, objc._C_BOOL) AddressBook.ABPickerDeselectIdentifier(ref, usr, "Last") AddressBook.ABPickerDeselectGroup(ref, grp) AddressBook.ABPickerDeselectRecord(ref, usr) AddressBook.ABPickerDeselectAll(ref) AddressBook.ABPickerClearSearchField(ref) if 0: # These are annoying, don't actually call AddressBook.ABPickerEditInAddressBook(ref) AddressBook.ABPickerSelectInAddressBook(ref) else: AddressBook.self.assertResultHasType( AddressBook.ABPickerEditInAddressBook, objc._C_VOID) AddressBook.self.assertResultHasType( AddressBook.ABPickerSelectInAddressBook, objc._C_VOID) r = AddressBook.ABPickerGetDelegate(ref) AddressBook.ABPickerSetDelegate
def testFunctions(self): v = AddressBook.ABLocalizedPropertyOrLabel(AddressBook.kABAssistantLabel) self.assertIsInstance(v, str)
self.target.sort_option_menu.event_generate("<Button-1>",x=10, y=10) self.target.sort_option_menu.update() self.target.sort_option_menu.event_generate("<ButtonRelease-1>", x=10, y=10) self.target.sort_option_menu.update() print("sort succeeded") except: print("sort failed") self.target.quit() if __name__ == "__main__": ab.new_book() root = Tk.Tk() gui = gui.mainWindow(root) egen = EventGen(gui) egen.start() root.mainloop()
def testFunctions(self): ref = AddressBook.ABGetSharedAddressBook() self.assertIsInstance(ref, AddressBook.ABAddressBookRef) r = AddressBook.ABSave(ref) self.assertResultHasType(AddressBook.ABSave, objc._C_BOOL) self.assertIsInstance(r, bool) r = AddressBook.ABHasUnsavedChanges(ref) self.assertResultHasType(AddressBook.ABHasUnsavedChanges, objc._C_BOOL) self.assertIsInstance(r, bool) r = me = AddressBook.ABGetMe(ref) self.assertIsInstance(r, AddressBook.ABPersonRef) # There's only one addressbook per user account, therefore # testing functions that modify the adressbook isn't safe # because we'd update the AddressBook of the user running # the test which is a bad thing. # Therefore we only test if the function signature is # correct. That's not ideal, but because mutation functions # have a simple interface it should be sufficient. self.assertResultHasType(AddressBook.ABSetMe, objc._C_VOID) self.assertArgHasType(AddressBook.ABSetMe, 0, _C_ABAddressBookRef) self.assertArgHasType(AddressBook.ABSetMe, 1, _C_ABPersonRef) name = AddressBook.ABCopyRecordTypeFromUniqueId( ref, AddressBook.ABRecordCopyUniqueId(me)) self.assertEqual(name, "ABPerson") self.assertResultHasType(AddressBook.ABAddPropertiesAndTypes, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABAddPropertiesAndTypes, 0, _C_ABAddressBookRef) self.assertArgHasType(AddressBook.ABAddPropertiesAndTypes, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABAddPropertiesAndTypes, 2, _C_CFDictionaryRef) self.assertResultHasType(AddressBook.ABRemoveProperties, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABRemoveProperties, 0, _C_ABAddressBookRef) self.assertArgHasType(AddressBook.ABRemoveProperties, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABRemoveProperties, 2, _C_CFArrayRef) v = AddressBook.ABCopyArrayOfPropertiesForRecordType(ref, "ABPerson") self.assertResultIsCFRetained( AddressBook.ABCopyArrayOfPropertiesForRecordType) self.assertIsInstance(v, AddressBook.NSArray) self.assertTrue(len(v)) self.assertIsInstance(v[0], str) v = AddressBook.ABTypeOfProperty(ref, "ABPersion", v[0]) self.assertIsInstance(v, int) v = AddressBook.ABCopyRecordForUniqueId( ref, AddressBook.ABRecordCopyUniqueId(me)) self.assertResultIsCFRetained(AddressBook.ABCopyRecordForUniqueId) self.assertIsInstance(v, AddressBook.ABPersonRef) self.assertResultHasType(AddressBook.ABAddRecord, objc._C_BOOL) self.assertArgHasType(AddressBook.ABAddRecord, 0, _C_ABAddressBookRef) self.assertArgHasType(AddressBook.ABAddRecord, 1, objc._C_ID) self.assertResultHasType(AddressBook.ABRemoveRecord, objc._C_BOOL) self.assertArgHasType(AddressBook.ABRemoveRecord, 0, _C_ABAddressBookRef) self.assertArgHasType(AddressBook.ABRemoveRecord, 1, objc._C_ID) v = AddressBook.ABCopyArrayOfAllPeople(ref) self.assertResultIsCFRetained(AddressBook.ABCopyArrayOfAllPeople) self.assertIsInstance(v, AddressBook.NSArray) v = AddressBook.ABCopyArrayOfAllGroups(ref) self.assertResultIsCFRetained(AddressBook.ABCopyArrayOfAllGroups) self.assertIsInstance(v, AddressBook.NSArray) self.assertResultHasType(AddressBook.ABRecordCreateCopy, objc._C_ID) self.assertResultIsCFRetained(AddressBook.ABRecordCreateCopy) self.assertArgHasType(AddressBook.ABRecordCreateCopy, 0, objc._C_ID) v = AddressBook.ABRecordCopyRecordType(me) self.assertResultIsCFRetained(AddressBook.ABRecordCopyRecordType) self.assertIsInstance(v, str) self.assertResultHasType(AddressBook.ABRecordCopyValue, objc._C_ID) self.assertArgHasType(AddressBook.ABRecordCopyValue, 0, objc._C_ID) self.assertArgHasType(AddressBook.ABRecordCopyValue, 1, _C_CFStringRef) self.assertResultHasType(AddressBook.ABRecordSetValue, objc._C_BOOL) self.assertArgHasType(AddressBook.ABRecordSetValue, 0, objc._C_ID) self.assertArgHasType(AddressBook.ABRecordSetValue, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABRecordSetValue, 2, objc._C_ID) self.assertResultHasType(AddressBook.ABRecordRemoveValue, objc._C_BOOL) self.assertArgHasType(AddressBook.ABRecordRemoveValue, 0, objc._C_ID) self.assertArgHasType(AddressBook.ABRecordRemoveValue, 1, _C_CFStringRef) self.assertResultHasType(AddressBook.ABRecordIsReadOnly, objc._C_BOOL) self.assertArgHasType(AddressBook.ABRecordIsReadOnly, 0, objc._C_ID) self.assertResultHasType(AddressBook.ABRecordCopyUniqueId, _C_CFStringRef) self.assertArgHasType(AddressBook.ABRecordCopyUniqueId, 0, objc._C_ID) self.assertResultHasType(AddressBook.ABPersonCreate, _C_ABPersonRef) self.assertResultHasType( AddressBook.ABPersonCreateWithVCardRepresentation, _C_ABPersonRef) self.assertArgHasType( AddressBook.ABPersonCreateWithVCardRepresentation, 0, _C_CFDataRef) self.assertResultHasType(AddressBook.ABPersonCopyParentGroups, _C_CFArrayRef) self.assertArgHasType(AddressBook.ABPersonCopyParentGroups, 0, _C_ABPersonRef) self.assertResultHasType(AddressBook.ABPersonCreateSearchElement, _C_ABSearchElementRef) self.assertArgHasType(AddressBook.ABPersonCreateSearchElement, 0, _C_CFStringRef) self.assertArgHasType(AddressBook.ABPersonCreateSearchElement, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABPersonCreateSearchElement, 2, _C_CFStringRef) self.assertArgHasType(AddressBook.ABPersonCreateSearchElement, 3, objc._C_ID) self.assertArgHasType(AddressBook.ABPersonCreateSearchElement, 4, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABGroupCreate, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupCopyArrayOfAllMembers, _C_CFArrayRef) self.assertArgHasType(AddressBook.ABGroupCopyArrayOfAllMembers, 0, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupAddMember, objc._C_BOOL) self.assertArgHasType(AddressBook.ABGroupAddMember, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupAddMember, 1, _C_ABPersonRef) self.assertResultHasType(AddressBook.ABGroupRemoveMember, objc._C_BOOL) self.assertArgHasType(AddressBook.ABGroupRemoveMember, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupRemoveMember, 1, _C_ABPersonRef) self.assertResultHasType(AddressBook.ABGroupCopyArrayOfAllSubgroups, _C_CFArrayRef) self.assertArgHasType(AddressBook.ABGroupCopyArrayOfAllSubgroups, 0, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupAddGroup, objc._C_BOOL) self.assertArgHasType(AddressBook.ABGroupAddGroup, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupAddGroup, 1, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupRemoveGroup, objc._C_BOOL) self.assertArgHasType(AddressBook.ABGroupRemoveGroup, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupRemoveGroup, 1, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupCopyParentGroups, _C_CFArrayRef) self.assertArgHasType(AddressBook.ABGroupCopyParentGroups, 0, _C_ABGroupRef) self.assertResultHasType(AddressBook.ABGroupSetDistributionIdentifier, objc._C_BOOL) self.assertArgHasType(AddressBook.ABGroupSetDistributionIdentifier, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupSetDistributionIdentifier, 1, _C_ABPersonRef) self.assertArgHasType(AddressBook.ABGroupSetDistributionIdentifier, 2, _C_CFStringRef) self.assertArgHasType(AddressBook.ABGroupSetDistributionIdentifier, 3, _C_CFStringRef) self.assertResultHasType(AddressBook.ABGroupCopyDistributionIdentifier, _C_CFStringRef) self.assertArgHasType(AddressBook.ABGroupCopyDistributionIdentifier, 0, _C_ABGroupRef) self.assertArgHasType(AddressBook.ABGroupCopyDistributionIdentifier, 1, _C_ABPersonRef) self.assertArgHasType(AddressBook.ABGroupCopyDistributionIdentifier, 2, _C_CFStringRef) self.assertResultHasType(AddressBook.ABGroupCreateSearchElement, _C_ABSearchElementRef) self.assertArgHasType(AddressBook.ABGroupCreateSearchElement, 0, _C_CFStringRef) self.assertArgHasType(AddressBook.ABGroupCreateSearchElement, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABGroupCreateSearchElement, 2, _C_CFStringRef) self.assertArgHasType(AddressBook.ABGroupCreateSearchElement, 3, objc._C_ID) self.assertArgHasType(AddressBook.ABGroupCreateSearchElement, 4, objc._C_CFIndex) self.assertResultHasType( AddressBook.ABSearchElementCreateWithConjunction, _C_ABSearchElementRef) self.assertArgHasType(AddressBook.ABSearchElementCreateWithConjunction, 0, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABSearchElementCreateWithConjunction, 1, _C_CFArrayRef) self.assertResultHasType(AddressBook.ABSearchElementMatchesRecord, objc._C_BOOL) self.assertArgHasType(AddressBook.ABSearchElementMatchesRecord, 0, _C_ABSearchElementRef) self.assertArgHasType(AddressBook.ABSearchElementMatchesRecord, 1, objc._C_ID) self.assertResultHasType(AddressBook.ABMultiValueCreate, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueCount, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABMultiValueCount, 0, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueCopyValueAtIndex, objc._C_ID) self.assertArgHasType(AddressBook.ABMultiValueCopyValueAtIndex, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueCopyValueAtIndex, 1, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValueCopyLabelAtIndex, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueCopyLabelAtIndex, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueCopyLabelAtIndex, 1, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValueCopyPrimaryIdentifier, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueCopyPrimaryIdentifier, 0, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueIndexForIdentifier, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABMultiValueIndexForIdentifier, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueIndexForIdentifier, 1, _C_CFStringRef) self.assertResultHasType(AddressBook.ABMultiValueCopyIdentifierAtIndex, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueCopyIdentifierAtIndex, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueCopyIdentifierAtIndex, 1, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValuePropertyType, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABMultiValuePropertyType, 0, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueCreateCopy, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueCreateCopy, 0, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueCreateMutable, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABMultiValueAdd, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueAdd, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueAdd, 1, objc._C_ID) self.assertArgHasType(AddressBook.ABMultiValueAdd, 2, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueAdd, 3, objc._C_OUT + _C_CFStringRefPtr) self.assertResultHasType(AddressBook.ABMultiValueInsert, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueInsert, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueInsert, 1, objc._C_ID) self.assertArgHasType(AddressBook.ABMultiValueInsert, 2, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueInsert, 3, objc._C_CFIndex) self.assertArgHasType(AddressBook.ABMultiValueInsert, 4, objc._C_OUT + _C_CFStringRefPtr) self.assertResultHasType(AddressBook.ABMultiValueRemove, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueRemove, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueRemove, 1, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValueReplaceValue, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueReplaceValue, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueReplaceValue, 1, objc._C_ID) self.assertArgHasType(AddressBook.ABMultiValueReplaceValue, 2, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValueReplaceLabel, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueReplaceLabel, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueReplaceLabel, 1, _C_CFStringRef) self.assertArgHasType(AddressBook.ABMultiValueReplaceLabel, 2, objc._C_CFIndex) self.assertResultHasType(AddressBook.ABMultiValueSetPrimaryIdentifier, objc._C_BOOL) self.assertArgHasType(AddressBook.ABMultiValueSetPrimaryIdentifier, 0, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueSetPrimaryIdentifier, 1, _C_CFStringRef) self.assertResultHasType(AddressBook.ABMultiValueCreateMutableCopy, _C_ABMultiValueRef) self.assertArgHasType(AddressBook.ABMultiValueCreateMutableCopy, 0, _C_ABMultiValueRef) self.assertResultHasType(AddressBook.ABCopyLocalizedPropertyOrLabel, _C_CFStringRef) self.assertArgHasType(AddressBook.ABCopyLocalizedPropertyOrLabel, 0, _C_CFStringRef) self.assertResultHasType( AddressBook.ABCreateFormattedAddressFromDictionary, _C_CFStringRef) self.assertArgHasType( AddressBook.ABCreateFormattedAddressFromDictionary, 0, _C_ABAddressBookRef) self.assertArgHasType( AddressBook.ABCreateFormattedAddressFromDictionary, 1, _C_CFDictionaryRef) self.assertResultHasType(AddressBook.ABCopyDefaultCountryCode, _C_CFStringRef) self.assertArgHasType(AddressBook.ABCopyDefaultCountryCode, 0, _C_ABAddressBookRef) self.assertResultHasType(AddressBook.ABPersonSetImageData, objc._C_BOOL) self.assertArgHasType(AddressBook.ABPersonSetImageData, 0, _C_ABPersonRef) self.assertArgHasType(AddressBook.ABPersonSetImageData, 1, _C_CFDataRef) self.assertResultHasType(AddressBook.ABPersonCopyImageData, _C_CFDataRef) self.assertArgHasType(AddressBook.ABPersonCopyImageData, 0, _C_ABPersonRef) r = [] @objc.callbackFor(AddressBook.ABBeginLoadingImageDataForClient) def callback(imageData, tag, refcon): r.append((imageData, tag, refcon)) idx = AddressBook.ABBeginLoadingImageDataForClient(me, callback, 99) self.assertIsInstance(idx, int) # AddressBook.CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, True) AddressBook.ABCancelLoadingImageDataForTag(idx)