~mcfletch/python-examples/fixes

« back to all changes in this revision

Viewing changes to python-examples/gtk3/tut06/tut06-dialogs.py

  • Committer: Oliver Marks
  • Date: 2014-05-29 06:24:58 UTC
  • Revision ID: oly@digitaloctave.com-20140529062458-fha3e462ihbyuepl
creation and import of gtk3 examples

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# [SNIPPET_NAME: gtk3 dialogs]
 
3
# [SNIPPET_CATEGORIES: gtk3]
 
4
# [SNIPPET_TAGS: widgets, gtk3]
 
5
# [SNIPPET_DESCRIPTION: GTK3 font colour and file dialogs]
 
6
# [SNIPPET_AUTHOR: Oliver Marks ]
 
7
# [SNIPPET_LICENSE: GPL]
 
8
from gi.repository import Gtk
 
9
 
 
10
 
 
11
class application_gui:
 
12
    """Tutorial 06 demo of file, colour and font dialogs."""
 
13
 
 
14
    def __init__(self):
 
15
        #load in our glade interface
 
16
        xml = Gtk.Builder()
 
17
        xml.add_from_file('tut06.glade')
 
18
 
 
19
        #grab our widget using get_object this is the name of the widget from glade, window1 is the default name
 
20
        self.window = xml.get_object('window1')
 
21
        self.text = xml.get_object('entry1')
 
22
 
 
23
        #load our widgets from the glade file
 
24
        self.widgets = {}
 
25
        self.widgets['entry'] = xml.get_object('entry2')
 
26
        self.widgets['color_button'] = xml.get_object('btnColour')
 
27
        self.widgets['font_button'] = xml.get_object('btnFont')
 
28
        self.widgets['open_button'] = xml.get_object('btnLoad')
 
29
        self.widgets['save_button'] = xml.get_object('btnSave')
 
30
 
 
31
        self.widgets['color_button'].connect('clicked', self.colour_selector)
 
32
        self.widgets['font_button'].connect('clicked', self.font_selector)
 
33
        self.widgets['save_button'].connect('clicked', self.save_file_selector)
 
34
        self.widgets['open_button'].connect('clicked', self.open_file_selector)
 
35
        
 
36
        self.widgets['open_dialog'] = xml.get_object('fileChooserLoad')
 
37
        self.widgets['open_dialog'].add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CLOSE)
 
38
        self.widgets['open_dialog'].add_button(Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
 
39
        
 
40
        self.widgets['save_dialog'] = xml.get_object('fileChooserSave')
 
41
        self.widgets['save_dialog'].add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CLOSE)
 
42
        self.widgets['save_dialog'].add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
 
43
 
 
44
        self.widgets['color_dialog'] = xml.get_object('colorSelect')
 
45
 
 
46
        self.widgets['font_dialog'] = xml.get_object('fontSelect')
 
47
 
 
48
        #connect to events, in this instance just quit our application
 
49
        self.window.connect('delete_event', Gtk.main_quit)
 
50
        self.window.connect('destroy', lambda quit: Gtk.main_quit())
 
51
 
 
52
        #show the window else there is nothing to see :)
 
53
        self.window.show()
 
54
 
 
55
    def colour_selector(self, widget):
 
56
        self.widgets['color_dialog'].run()
 
57
        self.colour = self.widgets['color_dialog'].get_color_selection().get_current_color()
 
58
        
 
59
        #accessing the individual values as integers, converting to floats here
 
60
        colour = [self.colour.red / 65535.0,
 
61
                  self.colour.green / 65535.0,
 
62
                  self.colour.blue / 65535.0]
 
63
 
 
64
        self.widgets['color_dialog'].hide()
 
65
        self.text.set_text(self.widgets['color_dialog'].get_name() + ' ' + self.colour.to_string())
 
66
 
 
67
    def font_selector(self, widget):
 
68
        self.widgets['font_dialog'].run()
 
69
        self.font = self.widgets['font_dialog'].get_font_selection()
 
70
        self.text.set_text(self.widgets['font_dialog'].get_name() + ' ' + self.font.get_font_name() + ' ' + str(self.font.get_size()))
 
71
        self.widgets['font_dialog'].hide()
 
72
 
 
73
    def open_file_selector(self, widget):
 
74
        response = self.widgets['open_dialog'].run()
 
75
        if self.widgets['open_dialog'].get_filenames():
 
76
            self.text.set_text(self.widgets['open_dialog'].get_name() + ' '+ str(self.widgets['open_dialog'].get_filenames()))
 
77
        else:
 
78
            if self.widgets['open_dialog'].get_filename():
 
79
                self.text.set_text(self.widgets['open_dialog'].get_name() + ' '+ self.widgets['open_dialog'].get_filename())
 
80
        self.widgets['open_dialog'].hide()
 
81
 
 
82
    def save_file_selector(self, widget):
 
83
        response = self.widgets['save_dialog'].run()
 
84
        self.text.set_text(self.widgets['save_dialog'].get_name() + ' '+ self.widgets['save_dialog'].get_filename())
 
85
        self.widgets['save_dialog'].hide()
 
86
 
 
87
 
 
88
application = application_gui()
 
89
Gtk.main()