Save Snippets in Pygmynote with the Script

Dmitri Popov

Productivity Sauce

Oct 21, 2011 GMT
Dmitri Popov

As you might already know, I use a home-made Python script called Pygmynote to keep tabs on all kinds of data: from text snippets and links, to tasks and deadlines. Usually, I enter data in Pygmynote manually, but there are situations when having the ability to just push a text selection or link to Pygmynote's SQLite database can come in rather handy. So I wrote a simple Python script that does just that.

#!/usr/bin/env python
import pygtk, gtk, wx
import sqlite3 as sqlite

DB = 'pygmynote.db'

conn = sqlite.connect(DB)
cursor = conn.cursor()

def escapechar(sel):
 sel=sel.replace("\'", "\''")
 sel=sel.replace("\"", "\\\"")
 return sel

clipboard = gtk.clipboard_get()
snip = clipboard.wait_for_text()

app = wx.PySimpleApp()
tags = wx.TextEntryDialog(None, "Tags:","Add Tags", "", style=wx.OK|wx.CANCEL)
if tags.ShowModal() == wx.ID_OK:
    notetags = tags.GetValue()

notetext = escapechar(snip)
notedue = ""
notetype = "A"
sqlquery = \
"INSERT INTO notes (note, due, tags, type) VALUES ('%s', '%s', '%s', '%s')"\
% (notetext, notedue, notetags, notetype)

message = wx.MessageDialog(None, "Snip saved. All done!", "Done", wx.OK)

The code uses the PyGTK library to create a dialog window and message boxes. The way the script works is pretty straightforward. First it establishes a connection to the database and grabs the contents of the clipboard. The script then prompts you to specify tags for the snippet, and creates a record in the database. That's all there is to it. I assigned a keyboard shortcut to the script to make it easily accessible. You can grab the latest release of Pygmynote and the script from the project's GitHub repository.

comments powered by Disqus