Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/timetab.py
blob: 6a6b717b50143d2224a95507801031437ac812c1 (plain)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#    This maneges the interface of and provides functionality for the 
#    "Start/End Time" tab.

'''
Fixing this file... redundecy needs to be eleminated readablility needs to be improved
Ideas:
1. use a class that start and end implament 
2. use a class for start and end that stores the widgets
3. create a class that does everything start and end time need to do and take the start/end out of it
'''

import interface
import datetime
import gobject

TAB_NAME = "Start/End Time"
WIDGET_NAME = "start_end_time"


class Tab(interface.NewTab):
    
    def make(self):
    
        self.start_calendar = self.get_widget('start_cal')
        self.end_calendar = self.get_widget('end_cal')
        self.start_hour = self.get_widget('start_hour')
        self.end_hour = self.get_widget('end_hour')
        self.start_min = self.get_widget('start_min')
        self.end_min = self.get_widget('end_min')
        self.start_sec = self.get_widget('start_sec')
        self.end_sec = self.get_widget('end_sec')
        self.start_adjustment_frame = self.get_widget('start_time_adjustment')
        self.end_adjustment_frame = self.get_widget('end_time_adjustment')
        self.no_start_time_text = self.get_widget('no_start_label')
        self.no_end_time_text = self.get_widget('no_end_label')
        self.start_time_toggle = self.get_widget('start_time_toggle')
        self.end_time_toggle = self.get_widget('end_time_toggle')
        self.start_adjuster_toggle = self.get_widget('start_adjustment_toggle')
        self.end_adjuster_toggle = self.get_widget('end_adjustment_toggle')
    
        time = datetime.datetime.now()
        if time.hour == 23:
            hour = 0
            # I know, day could be pushed over to 32, causing this program to
            # not function in the last hour of the last day of every month.
            # I need to fix this.
            day = time.day + 1
        else:
            day = time.day
            hour = time.hour + 1
        self.end_calendar.select_month(time.month - 1, time.year)
        self.end_calendar.select_day(day + 1)
        self.end_hour.set_value(hour)
        self.start_hour.set_value(hour)
        self.start_calendar.select_month(time.month - 1, time.year)      
        self.start_calendar.select_day(day)
        self.set_start_time()
        self.set_end_time()
        gobject.timeout_add(1000, self.update_time)
            
    def update_time(self):
        self.current_time = datetime.datetime.now().ctime()
        self.get_widget('time').set_text(self.current_time)
        return True
        
    def set_time(self, calendar, hour, minute, second, adjuster_toggle, time_toggle):
        print 'setting end time'
        date = calendar.get_date()
        time = datetime.datetime(date[0], date[1] + 1, date[2], 
                                     int(hour.get_value()), 
                                     int(minute.get_value()), 
                                     int(second.get_value()))
        adjuster_toggle.set_label(time.ctime())
        if not time_toggle.get_active():
            time = None
        return time
    
    def set_start_time(self):
        self.start = self.set_time(self.start_calendar, self.start_hour, 
                                   self.start_min, self.start_sec, 
                                   self.start_adjuster_toggle, 
                                   self.start_time_toggle)
        
    def set_end_time(self):
        self.end = self.set_time(self.end_calendar, self.end_hour, 
                                 self.end_min, self.end_sec,
                                 self.end_adjuster_toggle,
                                 self.end_time_toggle) 
            
    def time_toggled(self, widget, adjuster_toggle, no_time_text):
        if widget.get_active():
            adjuster_toggle.show()
            no_time_text.hide()
        else:
            adjuster_toggle.hide()
            no_time_text.show()
            adjuster_toggle.set_active(False)
    
    def change_time_toggled(self, widget, adjustment_frame):
        if widget.get_active():
            adjustment_frame.show()
        else:
            adjustment_frame.hide()
                            
    def on_start_time_changed(self, widget):
        self.set_start_time()
        
    def on_end_time_changed(self, widget):
        self.set_end_time()
    
    def on_start_toggled(self, widget):
        self.time_toggled(widget, self.start_adjuster_toggle, 
                          self.no_start_time_text)
                                 
    def on_end_toggled(self, widget):
        self.time_toggled(widget, self.end_adjuster_toggle, 
                          self.no_end_time_text)
    
    def on_change_start_toggled(self, widget):
        self.change_time_toggled(widget, self.start_adjustment_frame)
            
    def on_change_end_toggled(self, widget):
        self.change_time_toggled(widget, self.end_adjustment_frame)

    
tab = Tab(interface.GLADE_TABS, WIDGET_NAME, TAB_NAME)