Save Snippets in Pygmynote with the sniptopygmynote.py 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
pygtk.require('2.0')

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()
tags.Destroy()

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

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

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 sniptopygmynote.py script from the project's GitHub repository.

comments powered by Disqus