~johan-vingback/pytopia/trunk

« back to all changes in this revision

Viewing changes to trayIcon.py~

  • Committer: Johan Vingbäck
  • Date: 2012-11-14 13:42:15 UTC
  • Revision ID: johan.vingback@ltu.se-20121114134215-3oxwhjmfogfyio83
More windows added to the project.
A basic Science calculator is finished.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 2 -*-
 
3
 
1
4
import gtk
2
5
import gtk.glade
3
6
import indicate
4
7
 
5
8
from exportLine import exportCode
6
9
 
 
10
SCIENCE = [1.4, 1, 0.65, 8, 1.4, 6, 6]
 
11
SCIMESS = ["% Income", "% Building Effectiveness", "% Population Limits", "% Food production", "% Gains in Combat", "% Thivery Effectiveness","% Magic Eff. and Runes Prod.",]
7
12
 
8
13
class clipper:
9
14
  def __init__(self):
11
16
    self.res = "Clipboard viewer"
12
17
    self.clip.connect('owner-change',self.changed)
13
18
    self.count = 0
14
 
    self.vis = False
 
19
    self.vis = {'clipMan':False,'attackCalc':False,'BuildCalc':False,'SciCalc':False}
15
20
    self.exlin = exportCode()
16
21
    self.gladefile = "UIs/ClipWin.glade"  
17
 
#    self.wTree = gtk.glade.XML(self.gladefile, "clipMan")
18
 
#    self.win = self.wTree.get_widget("clipMan")
19
 
    self.signals = { 'delete-event': self.hide}
20
 
#    self.wTree.signal_autoconnect(dic)
21
 
#    self.textview = self.wTree.get_widget("clipView")
22
 
#    self.win.show()
 
22
    self.win = {}
 
23
    self.wTree = {}
 
24
    
 
25
    self.signals = {"reCalcSci": self.reSci}
23
26
    
24
27
    self.statusIcon = gtk.StatusIcon()
25
28
    self.statusIcon.set_from_stock(gtk.STOCK_ABOUT)
33
36
    self.menuItem.connect('activate', self.show, self.statusIcon, 'attackCalc')
34
37
    self.menu.append(self.menuItem)
35
38
    self.menuItem = gtk.ImageMenuItem('Buildings Calculator')
36
 
    self.menuItem.connect('activate', self.show, self.statusIcon, 'buildCalc')
 
39
    self.menuItem.connect('activate', self.show, self.statusIcon, 'BuildCalc')
37
40
    self.menu.append(self.menuItem)
38
41
    self.menuItem = gtk.ImageMenuItem('Science Calculator')
39
 
    self.menuItem.connect('activate', self.show, self.statusIcon, 'sciCalc')
 
42
    self.menuItem.connect('activate', self.show, self.statusIcon, 'SciCalc')
40
43
    self.menu.append(self.menuItem)
41
44
    self.menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
42
45
    self.menuItem.connect('activate', self.close, self.statusIcon)
66
69
        data.show_all()
67
70
        data.popup(None, None, gtk.status_icon_position_menu,
68
71
                             3, time, self.statusIcon)  
69
 
  def hide(self):
70
 
    self.vis = False
71
 
    self.win.destroy()
72
 
    #del(self.wTree)
73
 
    #del(self.win)
 
72
  
74
73
  def show(self, *args):
75
74
    self.count = 0
76
 
    if not self.vis or not self.win.get_property("visible"):
77
 
      self.wTree = gtk.glade.XML(self.gladefile, "clipMan")
78
 
      self.win = self.wTree.get_widget("clipMan")
79
 
      self.wTree.signal_autoconnect(self.signals)
80
 
      #self.textview = self.wTree.get_widget("clipView")
81
 
      ## Insert text...
82
 
      buf = gtk.TextBuffer()
83
 
      buf.insert_at_cursor(self.res)
84
 
      self.wTree.get_widget("clipView").set_buffer(buf)
85
 
      self.win.show()
86
 
      self.vis = True
 
75
    winN = args[2]
 
76
    if not self.vis[winN] or not self.win[winN].get_property("visible"):
 
77
      self.wTree[winN] = gtk.glade.XML(self.gladefile, winN)
 
78
      self.win[winN] = self.wTree[winN].get_widget(winN)
 
79
      #help(self.wTree[winN])
 
80
      self.wTree[winN].signal_autoconnect(self.signals)
 
81
      if winN == "clipMan":
 
82
        buf = gtk.TextBuffer()
 
83
        buf.insert_at_cursor(self.res)
 
84
        self.wTree[winN].get_widget("clipView").set_buffer(buf)
 
85
      self.win[winN].show()
 
86
      self.vis[winN] = True
87
87
    else:
88
 
      self.win.hide()
89
 
      self.vis = False
 
88
      self.win[winN].hide()
 
89
      self.vis[winN] = False
90
90
    print "\n\n------------------\nShow function"
91
91
    #self.mm_source.set_property("draw-attention", "false")
92
92
    #self.mm_source.set_property("count", str(self.count))
93
 
    print args
 
93
    #print args
94
94
  def changed(self, clip, event):
95
95
    #if self.count == 0:
96
96
      #self.mm_source.set_property("draw-attention", "true")
98
98
    #self.mm_source.set_property("count", str(self.count))
99
99
    data = clip.wait_for_text()
100
100
    self.res = self.parse(data)
101
 
    if self.vis:
 
101
    if self.vis['clipMan'] and self.win['clipMan'].get_property("visible"):
102
102
      buf = gtk.TextBuffer()
103
103
      buf.insert_at_cursor("Caugth data:\n")
104
104
      buf.insert_at_cursor(self.res)
105
 
      self.wTree.get_widget("clipView").set_buffer(buf)
 
105
      self.wTree['clipMan'].get_widget("clipView").set_buffer(buf)
106
106
  def close(self, *args):
107
107
    print "Closing!"
108
 
    if self.vis:
109
 
      self.win.destroy()
 
108
    for winN in self.win.keys():
 
109
      if self.vis[winN] or self.win['clipMan'].get_property("visible"):
 
110
        self.win[winN].destroy()
110
111
    gtk.main_quit()
111
112
  def parse(self, data):
112
113
    return data # Maybe create a class with parses?
 
114
  def reSci(self, *args):
 
115
    acres = self.wTree['SciCalc'].get_widget("Acres").get_value_as_int()
 
116
    multiplier = 1.0
 
117
    if  self.wTree['SciCalc'].get_widget("SciSage").get_active():
 
118
      multiplier *= 1.3
 
119
    if  self.wTree['SciCalc'].get_widget("SciUndead").get_active():
 
120
      multiplier *= 0.75
 
121
    multiplier *= 1+self.wTree['SciCalc'].get_widget("SciLibEff").get_value()
 
122
    for i in range(1,8):
 
123
      have = self.wTree['SciCalc'].get_widget("haveSci"+str(i)).get_value_as_int()+self.wTree['SciCalc'].get_widget("doingSci"+str(i)).get_value_as_int()
 
124
      done = (float(have)/float(acres))**(.5)
 
125
      self.wTree['SciCalc'].get_widget("ProgSci"+str(i)).set_fraction(done/100.0)
 
126
      self.wTree['SciCalc'].get_widget("SciEff"+str(i)).set_text(("%.1f" % (done*SCIENCE[i-1]*multiplier)) + SCIMESS[i-1])
 
127
    
113
128
if __name__ == '__main__':
114
129
   cli = clipper()
115
130
   gtk.mainloop()