File: main.py

package info (click to toggle)
ibus-array 0.0.2-4
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 8,676 kB
  • ctags: 6,680
  • sloc: ansic: 66,382; sh: 10,728; makefile: 105; python: 66; sed: 16
file content (101 lines) | stat: -rw-r--r-- 3,715 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# vim:set et sts=4 sw=4:
#
# ibus-array - The Array 30 Engine for IBus
#
# Copyright (c) 2009 Yu-Chun Wang <mainlander1122@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
import sys
import os
import gobject
import gtk
import ibus
import gettext
import config

class Setup:
    def __init__(self):
        self.__bus = ibus.Bus()
        self.__config = self.__bus.get_config()
        self.__config.connect("value-changed", self.on_value_changed, None)
        self.__create_ui()

    def __create_ui(self):
        self.__window = gtk.Dialog('ibus-array setup', None, 
                                    gtk.DIALOG_MODAL, 
                                    (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, 
                                     gtk.STOCK_OK, gtk.RESPONSE_OK)
                                  )
        icon_file = os.path.join(config.datadir, "ibus-array", "icons", "ibus-array.png")
        self.__window.set_icon_from_file(icon_file)
        self.__special_notify_button = gtk.CheckButton("Special Code Notification")
        self.__window.vbox.pack_start(self.__special_notify_button, True, True, 10)
        self.__special_only_button = gtk.CheckButton("Speical Code Only Mode")
        self.__window.vbox.pack_start(self.__special_only_button, True, True ,10)

        current_special_mode = self.__read("SpecialOnly", "0")
        current_special_notify = self.__read("SpecialNotify", "0")

        if current_special_notify == "1":
            self.__special_notify_button.set_active(True)
        if current_special_mode == "1":
            self.__special_only_button.set_active(True)

        self.__window.show_all()

    def run(self):
        res = self.__window.run()
        if res == gtk.RESPONSE_OK:
            self.apply()
        self.__window.destroy()

    def apply(self):
        select_special_notify = self.__special_notify_button.get_active()
        select_special_mode = self.__special_only_button.get_active()

        if select_special_notify:
            self.__write("SpecialNotify", "1")
        else:
            self.__write("SpecialNotify", "0")
        if select_special_mode:
            self.__write("SpecialOnly", "1")
        else:
            self.__write("SpecialOnly", "0")

    def on_value_changed(self, config, section, name, value, data):
        if section == 'engine/Array':
            if name == 'SpecialNotify':
                if value == '1':
                    self.__special_notify_button.set_active(True)
                else:
                    self.__special_notify_button.set_active(False)
            elif name == 'SpecialOnly':
                if value == '1':
                    self.__special_notify_button.set_active(True)
                else:
                    self.__special_notify_button.set_active(False)

    def __read(self, name, v):
        return self.__config.get_value("engine/Array", name, v)

    def __write(self, name, v):
        return self.__config.set_value("engine/Array", name, v)

if __name__ == '__main__':
    Setup().run()