Braindump

Just a Braindump for various useful things, mostly concerning Programming Languages!

This makes a nice, embedded matplotlib Plot in a GTK app

        if self.canvas1 != None:
            self.axis1.clear()
            self.figure1.clear()
            self.canvas1.hide()
            self.canvas1.destroy()

        self.figure1 = Figure()
        self.axis1 = self.figure1.add_subplot(111)
        self.axis1.set_xlabel('Bins')
        self.axis1.set_ylabel('Percentage')
        self.axis1.set_title('Histogram')
        self.axis1.grid(True)
        self.canvas1 = FigureCanvasGTK(self.figure1)
        self.canvas1.show()
        self.graphview = self.xml.get_widget('graphbox')
        self.graphview.pack_start(self.canvas1, True, True)

        pl1 = self.axis1.bar(numpy.arange(0, int(self.db["nbin"]*self.db["binw"]), int(self.db["binw"])), histlist1, width=self.db["binw"], color='red')
        self.axis1.set_xlim(xmin=0, xmax=int(self.db["nbin"] * self.db["binw"]))
        self.axis1.set_ylim(ymin=0, ymax=100)
        self.figure1.legend((pl1[0], pl2[0]), ('CW', 'CCW'), loc='upper left')

Sort a TreeView with a custom sort-func

        liststore.set_sort_func(2, self.sort_float, 2)
        liststore.set_sort_func(3, self.sort_float, 3)
    def sort_float(self, treemodel, iter1, iter2, column):
        iter1 = treemodel.get_value(iter1, column)
        iter2 = treemodel.get_value(iter2, column)
        if float(iter1) < float(iter2):
            return -1
        elif float(iter1) > float(iter2):
            return 1
        else:
            return 0

Python & gettext on Windows

First Time Run:

perl gettext\bin\intltool-extract --type=gettext/glae hit_gui.glade
gettext\bin\xgettext.exe --language=Python --keyword=_ --keyword=N_ --output=hit.pot hit_gui.glade.h hit.py
gettext\bin\msginit --input=hit.pot --locale=de_DE
gettext\bin\msginit --input=hit.pot --locale=it_IT
md locale
md locale\de_DE
md locale\de_DE\LC_MESSAGES
md locale\it_IT
md locale\it_IT\LC_MESSAGES

*** Create Translation in de.po/it.po/... ***

gettext\bin\msgfmt --output-file=locale\de_DE\LC_MESSAGES\hit.mo de.po
gettext\bin\msgfmt --output-file=locale\it_IT\LC_MESSAGES\hit.mo it.po

Code Change:
perl gettext\bin\intltool-extract --type=gettext/glade hit_gui.glade
gettext\bin\xgettext.exe --language=Python --keyword=_ --keyword=N_ --output=hit.pot hit_gui.glade.h hit.py
gettext\bin\msgmerge -U de.po hit.pot
gettext\bin\msgmerge -U it.po hit.pot

*** Create Translation in de.po/it.po/... ***

gettext\bin\msgfmt --output-file=locale\de_DE\LC_MESSAGES\hit.mo de.po
gettext\bin\msgfmt --output-file=locale\it_IT\LC_MESSAGES\hit.mo it.po

To avoid problems with UTF8 and ISO conversions, I usually run the program via a batch file, setting the language explicitly (set lang=de_DE).