class IndicatorStickyNotes: def __init__(self, args=None): self.args = args # use development data file if requested isdev = args and args.d self.data_file = stickynotes.info.DEBUG_SETTINGS_FILE if isdev \ else stickynotes.info.SETTINGS_FILE # Initialize NoteSet self.nset = NoteSet(StickyNote, self.data_file, self) try: self.nset.open() except FileNotFoundError: self.nset.load_fresh() except Exception as e: err = _("Error reading data file. Do you want to " "backup the current data?") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.NONE, err) winError.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, _("Backup"), Gtk.ResponseType.ACCEPT) winError.set_title(_("Indicator Stickynotes")) resp = winError.run() winError.hide() if resp == Gtk.ResponseType.ACCEPT: self.backup_datafile() winError.destroy() self.nset.load_fresh() # If all notes were visible previously, show them now if self.nset.properties.get("all_visible", True): self.nset.showall() # Create App Indicator self.ind = appindicator.Indicator.new( "Sticky Notes", "indicator-stickynotes", appindicator.IndicatorCategory.APPLICATION_STATUS) # Delete/modify the following file when distributing as a package self.ind.set_icon_theme_path( os.path.abspath(os.path.join(os.path.dirname(__file__), 'Icons'))) self.ind.set_icon("indicator-stickynotes") self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_title(_("Sticky Notes")) # Create Menu self.menu = Gtk.Menu() self.mNewNote = Gtk.MenuItem(_("New Note")) self.menu.append(self.mNewNote) self.mNewNote.connect("activate", self.new_note, None) self.mNewNote.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mShowAll = Gtk.MenuItem(_("Show All")) self.menu.append(self.mShowAll) self.mShowAll.connect("activate", self.showall, None) self.mShowAll.show() self.mHideAll = Gtk.MenuItem(_("Hide All")) self.menu.append(self.mHideAll) self.mHideAll.connect("activate", self.hideall, None) self.mHideAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mLockAll = Gtk.MenuItem(_("Lock All")) self.menu.append(self.mLockAll) self.mLockAll.connect("activate", self.lockall, None) self.mLockAll.show() self.mUnlockAll = Gtk.MenuItem(_("Unlock All")) self.menu.append(self.mUnlockAll) self.mUnlockAll.connect("activate", self.unlockall, None) self.mUnlockAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mExport = Gtk.MenuItem(_("Export Data")) self.menu.append(self.mExport) self.mExport.connect("activate", self.export_datafile, None) self.mExport.show() self.mImport = Gtk.MenuItem(_("Import Data")) self.menu.append(self.mImport) self.mImport.connect("activate", self.import_datafile, None) self.mImport.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mAbout = Gtk.MenuItem(_("About")) self.menu.append(self.mAbout) self.mAbout.connect("activate", self.show_about, None) self.mAbout.show() self.mSettings = Gtk.MenuItem(_("Settings")) self.menu.append(self.mSettings) self.mSettings.connect("activate", self.show_settings, None) self.mSettings.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mQuit = Gtk.MenuItem(_("Quit")) self.menu.append(self.mQuit) self.mQuit.connect("activate", Gtk.main_quit, None) self.mQuit.show() # Connect Indicator to menu self.ind.set_menu(self.menu) # Define secondary action (middle click) self.connect_secondary_activate() def new_note(self, *args): self.nset.new() def showall(self, *args): self.nset.showall(*args) self.connect_secondary_activate() def hideall(self, *args): self.nset.hideall() self.connect_secondary_activate() def connect_secondary_activate(self): """Define action of secondary action (middle click) depending on visibility state of notes.""" if self.nset.properties["all_visible"] == True: self.ind.set_secondary_activate_target(self.mHideAll) else: self.ind.set_secondary_activate_target(self.mShowAll) @save_required def lockall(self, *args): for note in self.nset.notes: note.set_locked_state(True) @save_required def unlockall(self, *args): for note in self.nset.notes: note.set_locked_state(False) def backup_datafile(self): winChoose = Gtk.FileChooserDialog( _("Export Data"), None, Gtk.FileChooserAction.SAVE, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT)) winChoose.set_do_overwrite_confirmation(True) response = winChoose.run() backupfile = None if response == Gtk.ResponseType.ACCEPT: backupfile = winChoose.get_filename() winChoose.destroy() if backupfile: try: copyfile(os.path.expanduser(self.data_file), backupfile) except SameFileError: err = _("Please choose a different " "destination for the backup file.") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, err) winError.run() winError.destroy() self.backup_datafile() def export_datafile(self, *args): self.backup_datafile() def import_datafile(self, *args): winChoose = Gtk.FileChooserDialog( _("Import Data"), None, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT)) response = winChoose.run() backupfile = None if response == Gtk.ResponseType.ACCEPT: backupfile = winChoose.get_filename() winChoose.destroy() if backupfile: try: with open(backupfile, encoding="utf-8") as fsock: self.nset.merge(fsock.read()) except Exception as e: err = _("Error importing data.") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, err) winError.run() winError.destroy() def show_about(self, *args): show_about_dialog() def show_settings(self, *args): wSettings = SettingsDialog(self.nset) def save(self): self.nset.save()
class IndicatorStickyNotes: def __init__(self, args = None): self.args = args # use development data file if requested isdev = args and args.d self.data_file = stickynotes.info.DEBUG_SETTINGS_FILE if isdev \ else stickynotes.info.SETTINGS_FILE # Initialize NoteSet self.nset = NoteSet(StickyNote, self.data_file, self) try: self.nset.open() except FileNotFoundError: self.nset.load_fresh() except Exception as e: err = _("Error reading data file. Do you want to " "backup the current data?") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.NONE, err) winError.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, _("Backup"), Gtk.ResponseType.ACCEPT) winError.set_title(_("Indicator Stickynotes")) resp = winError.run() winError.hide() if resp == Gtk.ResponseType.ACCEPT: self.backup_datafile() winError.destroy() self.nset.load_fresh() # If all notes were visible previously, show them now if self.nset.properties.get("all_visible", True): self.nset.showall() # Create App Indicator self.ind = appindicator.Indicator.new( "Sticky Notes", "indicator-stickynotes", appindicator.IndicatorCategory.APPLICATION_STATUS) # Delete/modify the following file when distributing as a package self.ind.set_icon_theme_path(os.path.abspath(os.path.join( os.path.dirname(__file__), 'Icons'))) self.ind.set_icon("indicator-stickynotes") self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_title(_("Sticky Notes")) # Create Menu self.menu = Gtk.Menu() self.mNewNote = Gtk.MenuItem(_("New Note")) self.menu.append(self.mNewNote) self.mNewNote.connect("activate", self.new_note, None) self.mNewNote.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mShowAll = Gtk.MenuItem(_("Show All")) self.menu.append(self.mShowAll) self.mShowAll.connect("activate", self.showall, None) self.mShowAll.show() self.mHideAll = Gtk.MenuItem(_("Hide All")) self.menu.append(self.mHideAll) self.mHideAll.connect("activate", self.hideall, None) self.mHideAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mLockAll = Gtk.MenuItem(_("Lock All")) self.menu.append(self.mLockAll) self.mLockAll.connect("activate", self.lockall, None) self.mLockAll.show() self.mUnlockAll = Gtk.MenuItem(_("Unlock All")) self.menu.append(self.mUnlockAll) self.mUnlockAll.connect("activate", self.unlockall, None) self.mUnlockAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mExport = Gtk.MenuItem(_("Export Data")) self.menu.append(self.mExport) self.mExport.connect("activate", self.export_datafile, None) self.mExport.show() self.mImport = Gtk.MenuItem(_("Import Data")) self.menu.append(self.mImport) self.mImport.connect("activate", self.import_datafile, None) self.mImport.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mAbout = Gtk.MenuItem(_("About")) self.menu.append(self.mAbout) self.mAbout.connect("activate", self.show_about, None) self.mAbout.show() self.mSettings = Gtk.MenuItem(_("Settings")) self.menu.append(self.mSettings) self.mSettings.connect("activate", self.show_settings, None) self.mSettings.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mQuit = Gtk.MenuItem(_("Quit")) self.menu.append(self.mQuit) self.mQuit.connect("activate", Gtk.main_quit, None) self.mQuit.show() # Connect Indicator to menu self.ind.set_menu(self.menu) # Define secondary action (middle click) self.connect_secondary_activate() def new_note(self, *args): self.nset.new() def showall(self, *args): self.nset.showall(*args) self.connect_secondary_activate() def hideall(self, *args): self.nset.hideall() self.connect_secondary_activate() def connect_secondary_activate(self): """Define action of secondary action (middle click) depending on visibility state of notes.""" if self.nset.properties["all_visible"] == True: self.ind.set_secondary_activate_target(self.mHideAll) else: self.ind.set_secondary_activate_target(self.mShowAll) @save_required def lockall(self, *args): for note in self.nset.notes: note.set_locked_state(True) @save_required def unlockall(self, *args): for note in self.nset.notes: note.set_locked_state(False) def backup_datafile(self): winChoose = Gtk.FileChooserDialog(_("Export Data"), None, Gtk.FileChooserAction.SAVE, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT)) winChoose.set_do_overwrite_confirmation(True) response = winChoose.run() backupfile = None if response == Gtk.ResponseType.ACCEPT: backupfile = winChoose.get_filename() winChoose.destroy() if backupfile: try: copyfile(os.path.expanduser(self.data_file), backupfile) except SameFileError: err = _("Please choose a different " "destination for the backup file.") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, err) winError.run() winError.destroy() self.backup_datafile() def export_datafile(self, *args): self.backup_datafile() def import_datafile(self, *args): winChoose = Gtk.FileChooserDialog(_("Import Data"), None, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT)) response = winChoose.run() backupfile = None if response == Gtk.ResponseType.ACCEPT: backupfile = winChoose.get_filename() winChoose.destroy() if backupfile: try: with open(backupfile, encoding="utf-8") as fsock: self.nset.merge(fsock.read()) except Exception as e: err = _("Error importing data.") winError = Gtk.MessageDialog(None, None, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, err) winError.run() winError.destroy() def show_about(self, *args): show_about_dialog() def show_settings(self, *args): wSettings = SettingsDialog(self.nset) def save(self): self.nset.save()
class IndicatorStickyNotes: def __init__(self, args=None): self.args = args # use development data file if requested isdev = args and args.d data_file = stickynotes.info.DEBUG_SETTINGS_FILE if isdev else stickynotes.info.SETTINGS_FILE # Initialize NoteSet self.nset = NoteSet(StickyNote, data_file, self) self.nset.open() if self.nset.properties.get("all_visible", True): self.nset.showall() # Create App Indicator self.ind = appindicator.Indicator.new( "Sticky Notes", "indicator-stickynotes", appindicator.IndicatorCategory.APPLICATION_STATUS ) # Delete/modify the following file when distributing as a package self.ind.set_icon_theme_path(os.path.abspath(os.path.join(os.path.dirname(__file__), "Icons"))) self.ind.set_icon("indicator-stickynotes") self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_title(_("Sticky Notes")) # Create Menu self.menu = Gtk.Menu() self.mNewNote = Gtk.MenuItem(_("New Note")) self.menu.append(self.mNewNote) self.mNewNote.connect("activate", self.new_note, None) self.mNewNote.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mShowAll = Gtk.MenuItem(_("Show All")) self.menu.append(self.mShowAll) self.mShowAll.connect("activate", self.showall, None) self.mShowAll.show() self.mHideAll = Gtk.MenuItem(_("Hide All")) self.menu.append(self.mHideAll) self.mHideAll.connect("activate", self.hideall, None) self.mHideAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mLockAll = Gtk.MenuItem(_("Lock All")) self.menu.append(self.mLockAll) self.mLockAll.connect("activate", self.lockall, None) self.mLockAll.show() self.mUnlockAll = Gtk.MenuItem(_("Unlock All")) self.menu.append(self.mUnlockAll) self.mUnlockAll.connect("activate", self.unlockall, None) self.mUnlockAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mAbout = Gtk.MenuItem(_("About")) self.menu.append(self.mAbout) self.mAbout.connect("activate", self.show_about, None) self.mAbout.show() self.mSettings = Gtk.MenuItem(_("Settings")) self.menu.append(self.mSettings) self.mSettings.connect("activate", self.show_settings, None) self.mSettings.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mQuit = Gtk.MenuItem(_("Quit")) self.menu.append(self.mQuit) self.mQuit.connect("activate", Gtk.main_quit, None) self.mQuit.show() # Connect Indicator to menu self.ind.set_menu(self.menu) # Define secondary action (middle click) self.connect_secondary_activate() def new_note(self, *args): self.nset.new() def showall(self, *args): self.nset.showall(*args) self.connect_secondary_activate() def hideall(self, *args): self.nset.hideall() self.connect_secondary_activate() def connect_secondary_activate(self): """Define action of secondary action (middle click) depending on visibility state of notes.""" if self.nset.properties["all_visible"] == True: self.ind.set_secondary_activate_target(self.mHideAll) else: self.ind.set_secondary_activate_target(self.mShowAll) @save_required def lockall(self, *args): for note in self.nset.notes: note.gui.set_locked_state(True) @save_required def unlockall(self, *args): for note in self.nset.notes: note.gui.set_locked_state(False) def show_about(self, *args): show_about_dialog() def show_settings(self, *args): wSettings = SettingsDialog(self.nset) def save(self): self.nset.save()
class IndicatorStickyNotes: def __init__(self): # Initialize NoteSet self.nset = NoteSet(StickyNote) self.nset.open() if self.nset.properties.get("all_visible", True): self.nset.showall() # Create App Indicator self.ind = appindicator.Indicator.new( "Sticky Notes", "indicator-stickynotes", appindicator.IndicatorCategory.APPLICATION_STATUS) # Delete/modify the following file when distributing as a package self.ind.set_icon_theme_path(os.path.abspath(os.path.join( os.path.dirname(__file__), 'Icons'))) self.ind.set_icon("indicator-stickynotes") self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_title(_("Sticky Notes")) # Create Menu self.menu = Gtk.Menu() self.mNewNote = Gtk.MenuItem(_("New Note")) self.menu.append(self.mNewNote) self.mNewNote.connect("activate", self.new_note, None) self.mNewNote.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mShowAll = Gtk.MenuItem(_("Show All")) self.menu.append(self.mShowAll) self.mShowAll.connect("activate", self.showall, None) self.mShowAll.show() self.mHideAll = Gtk.MenuItem(_("Hide All")) self.menu.append(self.mHideAll) self.mHideAll.connect("activate", self.hideall, None) self.mHideAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mLockAll = Gtk.MenuItem(_("Lock All")) self.menu.append(self.mLockAll) self.mLockAll.connect("activate", self.lockall, None) self.mLockAll.show() self.mUnlockAll = Gtk.MenuItem(_("Unlock All")) self.menu.append(self.mUnlockAll) self.mUnlockAll.connect("activate", self.unlockall, None) self.mUnlockAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mAbout = Gtk.MenuItem(_("About")) self.menu.append(self.mAbout) self.mAbout.connect("activate", self.show_about, None) self.mAbout.show() self.mSettings = Gtk.MenuItem(_("Settings")) self.menu.append(self.mSettings) self.mSettings.connect("activate", self.show_settings, None) self.mSettings.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mQuit = Gtk.MenuItem(_("Quit")) self.menu.append(self.mQuit) self.mQuit.connect("activate", Gtk.main_quit, None) self.mQuit.show() # Connect Indicator to menu self.ind.set_menu(self.menu) def new_note(self, *args): self.nset.new() def showall(self, *args): self.nset.showall(*args) def hideall(self, *args): self.nset.hideall() @save_required def lockall(self, *args): for note in self.nset.notes: note.gui.set_locked_state(True) @save_required def unlockall(self, *args): for note in self.nset.notes: note.gui.set_locked_state(False) def show_about(self, *args): show_about_dialog() def show_settings(self, *args): wSettings = SettingsDialog(self.nset) def save(self): self.nset.save()
class IndicatorStickyNotes: def __init__(self, args = None): self.args = args # use development data file if requested isdev = args and args.d data_file = stickynotes.info.DEBUG_SETTINGS_FILE if isdev else \ stickynotes.info.SETTINGS_FILE # Initialize NoteSet self.nset = NoteSet(StickyNote, data_file, self) self.nset.open() # If all notes were visible previously, show them now if self.nset.properties.get("all_visible", True): self.nset.showall() # Create App Indicator self.ind = appindicator.Indicator.new( "Sticky Notes", "indicator-stickynotes", appindicator.IndicatorCategory.APPLICATION_STATUS) # Delete/modify the following file when distributing as a package self.ind.set_icon_theme_path(os.path.abspath(os.path.join( os.path.dirname(__file__), 'Icons'))) self.ind.set_icon("indicator-stickynotes") self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) self.ind.set_title(_("Sticky Notes")) # Create Menu self.menu = Gtk.Menu() self.mNewNote = Gtk.MenuItem(_("New Note")) self.menu.append(self.mNewNote) self.mNewNote.connect("activate", self.new_note, None) self.mNewNote.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mShowAll = Gtk.MenuItem(_("Show All")) self.menu.append(self.mShowAll) self.mShowAll.connect("activate", self.showall, None) self.mShowAll.show() self.mHideAll = Gtk.MenuItem(_("Hide All")) self.menu.append(self.mHideAll) self.mHideAll.connect("activate", self.hideall, None) self.mHideAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mLockAll = Gtk.MenuItem(_("Lock All")) self.menu.append(self.mLockAll) self.mLockAll.connect("activate", self.lockall, None) self.mLockAll.show() self.mUnlockAll = Gtk.MenuItem(_("Unlock All")) self.menu.append(self.mUnlockAll) self.mUnlockAll.connect("activate", self.unlockall, None) self.mUnlockAll.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mAbout = Gtk.MenuItem(_("About")) self.menu.append(self.mAbout) self.mAbout.connect("activate", self.show_about, None) self.mAbout.show() self.mSettings = Gtk.MenuItem(_("Settings")) self.menu.append(self.mSettings) self.mSettings.connect("activate", self.show_settings, None) self.mSettings.show() s = Gtk.SeparatorMenuItem.new() self.menu.append(s) s.show() self.mQuit = Gtk.MenuItem(_("Quit")) self.menu.append(self.mQuit) self.mQuit.connect("activate", Gtk.main_quit, None) self.mQuit.show() # Connect Indicator to menu self.ind.set_menu(self.menu) # Define secondary action (middle click) self.connect_secondary_activate() def new_note(self, *args): self.nset.new() def showall(self, *args): self.nset.showall(*args) self.connect_secondary_activate() def hideall(self, *args): self.nset.hideall() self.connect_secondary_activate() def connect_secondary_activate(self): """Define action of secondary action (middle click) depending on visibility state of notes.""" if self.nset.properties["all_visible"] == True: self.ind.set_secondary_activate_target(self.mHideAll) else: self.ind.set_secondary_activate_target(self.mShowAll) @save_required def lockall(self, *args): for note in self.nset.notes: note.set_locked_state(True) @save_required def unlockall(self, *args): for note in self.nset.notes: note.set_locked_state(False) def show_about(self, *args): show_about_dialog() def show_settings(self, *args): wSettings = SettingsDialog(self.nset) def save(self): self.nset.save()