def register_stock_icons(): ''' This function registers our custom toolbar icons, so they can be themed. ''' items = [('demo-gtk-logo', '_GTK!', 0, 0, '')] # Register our stock items gtk.stock_add(items) # Add our custom icon factory to the list of defaults factory = gtk.IconFactory() factory.add_default() import os img_dir = os.path.join(os.path.dirname(__file__), 'images') img_path = os.path.join(img_dir, 'gtk-logo-rgb.gif') try: pixbuf = gtk.gdk.pixbuf_new_from_file(img_path) # Register icon to accompany stock item # The gtk-logo-rgb icon has a white background, make it transparent # the call is wrapped to (gboolean, guchar, guchar, guchar) transparent = pixbuf.add_alpha(True, chr(255), chr(255),chr(255)) icon_set = gtk.IconSet(transparent) factory.add('demo-gtk-logo', icon_set) except gobject.GError, error: nuclasses.log_error('failed to load GTK logo for toolbar')
def login(self, login_id, password): urlstring = "https://accounts.zoho.com/login?servicename=ZohoPlanner&silent=true&LOGIN_ID=%s&PASSWORD=%s&FROM_AGENT=true" %(login_id, password) response = urllib.urlopen(urlstring).read() ticket = self.parse_login_response(response) if ticket: self.current_ticket = ticket return ticket else: nuclasses.log_error("No ticket!")
def parse_login_response(self, response): #Do some stuff here and return either they key or None response_rows = response.split("\n") for entry in response_rows: entry = entry.split("=") if entry[0] == "RESULT": if entry[1] == "FALSE": return None #This means we didn't log in correctly, so we return so elif entry[0] == "TICKET": return entry[1] nuclasses.log_error("Unable to determine ticket... Here is our debug output:\n%s" % response_rows) return None
def addItem(self, widget, entry): #text = entry.get_text() entryText = self.quickListEntry.get_text() comboText = self.quickListCombo.get_active() #print widget, entry, "Text is: ", entry.get_text() if comboText == OPTION_ADD_TASK: nuclasses.task(entryText) elif comboText == OPTION_ADD_EVENT: nuclasses.event(entryText) else: nuclasses.log_error("A weird error occured... Neither a task nor an event was selected") self.treeview_both.set_model(self.__create_model_both(nuclasses.tasks, nuclasses.events)) self.treeview.set_model(self.__create_model_tasks(nuclasses.tasks))
def activate_remove(self, action): page = self.theNotebook.get_current_page() if page == NOTEBOOK_BOTH: (store, iter) = self.treeview_both.get_selection().get_selected() uid = store.get(iter, COLUMN_BOTH_UID) column_name = COLUMN_BOTH_NAME type = store.get(iter, COLUMN_BOTH_TYPE)[0] if type == "Task": #Yes, it's only capitalized in this instance type = "task" item = nuclasses.taskFromUid(uid[0]) elif type == "Event": type = "event" item = nuclasses.eventFromUid(uid[0]) else: nuclasses.log_error("Error: Could not determine type. Item '%s' did not match either Task or Event." % type) elif page == NOTEBOOK_TASKS: (store, iter) = self.treeview.get_selection().get_selected() uid = store.get(iter, COLUMN_TASKS_UID) column_name = COLUMN_TASKS_NAME item = nuclasses.taskFromUid(uid[0]) elif page == NOTEBOOK_EVENTS: pass else: nuclasses.log_error("No page selected? Error with determining the active notebook page") dialog = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, 'Do you really want to remove the %s: "%s"' % (item.__name__, store.get(iter, column_name)[0])) def do_response(d, r): d.destroy() if r == -9: pass elif r == -8: try: nuclasses.tasks.remove(item) except: nuclasses.events.remove(item) self.treeview_both.set_model(self.__create_model_both(nuclasses.tasks, nuclasses.events)) self.treeview.set_model(self.__create_model_tasks(nuclasses.tasks)) dialog.connect("response", do_response) dialog.show()
def __init__(self, parent=None): register_stock_icons() # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_default_size(500, 400) merge = gtk.UIManager() self.set_data("ui-manager", merge) merge.insert_action_group(self.__create_action_group(), 0) self.add_accel_group(merge.get_accel_group()) try: mergeid = merge.add_ui_from_string(ui_info) except gobject.GError, msg: nuclasses.log_error("building menus failed: %s" % msg)