~doctormo/+junk/gtk-jig

« back to all changes in this revision

Viewing changes to gtk-jig

  • Committer: Martin Owens
  • Date: 2011-10-10 07:28:46 UTC
  • Revision ID: doctormo@gmail.com-20111010072846-ri2lewksld1ygy5c
Adding all files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
#
 
3
# Copyright (C) 2006 Martin Owens
 
4
#
 
5
# This program is free software; you can redistribute it and/or modify
 
6
# it under the terms of the GNU General Public License as published by
 
7
# the Free Software Foundation; either version 2 of the License, or
 
8
# (at your option) any later version.
 
9
#
 
10
# This program is distributed in the hope that it will be useful,
 
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
# GNU General Public License for more details.
 
14
#
 
15
# You should have received a copy of the GNU General Public License
 
16
# along with this program; if not, write to the Free Software
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
#
 
19
'''Greate a basic user interface for loading the xjig program.'''
 
20
 
 
21
import gtk
 
22
import gtk.glade
 
23
import commands
 
24
import os
 
25
import sys
 
26
 
 
27
__version__ = '1.1'
 
28
__package__ = 'gtk-jig'
 
29
#__share__ = '/usr/share/gtkjig/'
 
30
__share__ = os.path.abspath('.')
 
31
 
 
32
class GuiManager(object):
 
33
    def __init__(self):
 
34
        self.initGUI()
 
35
 
 
36
    def initGUI(self):
 
37
        self.signals = {
 
38
            'destroyWindow'     : gtk.main_quit,
 
39
            'loadJigsaw'        : self.loadPuzzel,
 
40
            'updatePreview'     : self.updatePreview,
 
41
        }
 
42
        gladefile = os.path.join(__share__, 'main.glade')
 
43
        self.wTree     = gtk.glade.XML(gladefile, 'wndJig')
 
44
        self.widget    = self.wTree.get_widget
 
45
        self.number    = self.widget('number')
 
46
        self.double    = self.widget('double')
 
47
        self.preview   = self.widget('imgpreview')
 
48
        self.window    = self.widget('wndJig')
 
49
        self.window.show()
 
50
 
 
51
    def finishGUI(self):
 
52
        self.wTree.signal_autoconnect(self.signals)
 
53
 
 
54
 
 
55
    def loadPuzzel(self, button):
 
56
        size     = int(self.number.get_text())
 
57
        double   = self.double.get_active()
 
58
        filename = self.window.get_filename()
 
59
 
 
60
        x = int(size**0.5)
 
61
        y = int(x)
 
62
 
 
63
        print "\nAttempting to load puzzle based on %s, %s pieces wide and %s pieces high (%s pieces)\n" % (filename, str(x), str(y), str(x*y))
 
64
 
 
65
        cmd = 'xjig -w %s -h %s -file "%s"' % (str(x), str(y), filename)
 
66
        if not double:
 
67
            cmd = cmd + ' -side 0'
 
68
 
 
69
        sys.stderr.write(cmd+'\n')
 
70
        result = commands.getoutput(cmd)
 
71
        if result.find('not a GIF'):
 
72
            sys.stderr.write("Error: that file is not an image: %s\n" % result)
 
73
        else:
 
74
            sys.stderr.write(result)
 
75
 
 
76
    def updatePreview(self, button):
 
77
        print "Please preview %s" % self.window.get_filename()
 
78
        try:
 
79
            pixbuf      = gtk.gdk.pixbuf_new_from_file(self.window.get_filename())
 
80
            self.height = pixbuf.get_height()
 
81
            self.width  = pixbuf.get_width()
 
82
            ph          = self.height >= self.width and 100 or self.height / (self.width / 100)
 
83
            pw          = self.width >= self.height and 100 or self.width / (self.height / 100)
 
84
            pixbuf      = pixbuf.scale_simple(pw, ph, gtk.gdk.INTERP_BILINEAR)
 
85
            self.preview.set_from_pixbuf(pixbuf)
 
86
            self.window.set_preview_widget_active(True)
 
87
        except:
 
88
            self.window.set_preview_widget_active(False)
 
89
 
 
90
if __name__ == "__main__":
 
91
    manager = GuiManager()
 
92
    manager.finishGUI()
 
93
    gtk.main()
 
94