openall_time_applet 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/glade/win_overview.glade +2 -2
- data/gui/win_overview.rb +62 -92
- data/models/timelog.rb +8 -0
- data/openall_time_applet.gemspec +2 -2
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.11
|
data/glade/win_overview.glade
CHANGED
@@ -7,8 +7,8 @@
|
|
7
7
|
<property name="can_focus">False</property>
|
8
8
|
<property name="title" translatable="yes">Timelog list</property>
|
9
9
|
<property name="window_position">center</property>
|
10
|
-
<property name="default_width">
|
11
|
-
<property name="default_height">
|
10
|
+
<property name="default_width">1000</property>
|
11
|
+
<property name="default_height">800</property>
|
12
12
|
<signal name="destroy" handler="on_window_destroy" swapped="no"/>
|
13
13
|
<child>
|
14
14
|
<object class="GtkVBox" id="vbox1">
|
data/gui/win_overview.rb
CHANGED
@@ -15,115 +15,74 @@ class Openall_time_applet::Gui::Win_overview
|
|
15
15
|
iter[0] = _("None")
|
16
16
|
iter[1] = 0.to_s
|
17
17
|
|
18
|
-
task_ls_to_id = []
|
19
|
-
|
20
18
|
@args[:oata].ob.list(:Task, {"orderby" => "title"}) do |task|
|
21
19
|
iter = task_ls.append
|
22
20
|
iter[0] = task[:title]
|
23
21
|
iter[1] = task.id.to_s
|
24
|
-
task_ls_to_id << task.id
|
25
22
|
end
|
26
23
|
|
27
24
|
init_data = @gui["tvTimelogs"].init([
|
28
25
|
_("ID"),
|
29
26
|
_("Description"),
|
27
|
+
_("Timestamp"),
|
30
28
|
_("Time"),
|
31
29
|
_("Transport"),
|
30
|
+
_("Length"),
|
31
|
+
_("Transport descr."),
|
32
|
+
_("Transport costs"),
|
33
|
+
{
|
34
|
+
:title => _("Fixed travel"),
|
35
|
+
:type => :toggle
|
36
|
+
},
|
37
|
+
{
|
38
|
+
:title => _("Int. work"),
|
39
|
+
:type => :toggle
|
40
|
+
},
|
32
41
|
{
|
33
|
-
:title => _("
|
42
|
+
:title => _("Sync?"),
|
34
43
|
:type => :toggle
|
35
44
|
},
|
36
45
|
{
|
37
46
|
:title => _("Task"),
|
38
47
|
:type => :combo,
|
39
|
-
:model => task_ls
|
48
|
+
:model => task_ls,
|
49
|
+
:has_entry => false
|
40
50
|
}
|
41
51
|
])
|
42
52
|
|
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
|
-
#Set transport to be editable.
|
78
|
-
init_data[:renderers][3].editable = true
|
79
|
-
init_data[:renderers][3].signal_connect("edited") do |renderer, row, var|
|
80
|
-
sel = @gui["tvTimelogs"].sel
|
81
|
-
timelog = @args[:oata].ob.get(:Timelog, sel[0])
|
82
|
-
|
83
|
-
begin
|
84
|
-
time_secs = Knj::Strings.human_time_str_to_secs(var)
|
85
|
-
rescue
|
86
|
-
Knj::Gtk2.msgbox(_("Invalid time entered."))
|
87
|
-
return nil
|
88
|
-
end
|
89
|
-
|
90
|
-
begin
|
91
|
-
timelog[:time_transport] = time_secs
|
92
|
-
rescue => e
|
93
|
-
Knj::Gtk2.msgbox(e.message, "warning")
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
#Set sync flag to be activateable.
|
98
|
-
init_data[:renderers][4].activatable = true
|
99
|
-
init_data[:renderers][4].signal_connect("toggled") do |renderer, path, val|
|
100
|
-
iter = @gui["tvTimelogs"].model.get_iter(path)
|
101
|
-
id = @gui["tvTimelogs"].model.get_value(iter, 0)
|
102
|
-
timelog = @args[:oata].ob.get(:Timelog, id)
|
103
|
-
|
104
|
-
if timelog[:sync_need].to_i == 1
|
105
|
-
timelog[:sync_need] = 0
|
106
|
-
else
|
107
|
-
timelog[:sync_need] = 1
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
#Make task select-able.
|
112
|
-
init_data[:renderers][5].editable = true
|
113
|
-
init_data[:renderers][5].has_entry = false
|
114
|
-
init_data[:renderers][5].signal_connect("edited") do |renderer, row_no, val|
|
115
|
-
iter = @gui["tvTimelogs"].model.get_iter(row_no)
|
116
|
-
id = @gui["tvTimelogs"].model.get_value(iter, 0)
|
117
|
-
timelog = @args[:oata].ob.get(:Timelog, id)
|
118
|
-
|
119
|
-
task = @args[:oata].ob.get_by(:Task, {"title" => val})
|
120
|
-
if !task
|
121
|
-
timelog[:task_id] = 0
|
122
|
-
else
|
123
|
-
timelog[:task_id] = task.id
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
53
|
+
Knj::Gtk2::Tv.editable_text_renderers_to_model(
|
54
|
+
:ob => @args[:oata].ob,
|
55
|
+
:tv => @gui["tvTimelogs"],
|
56
|
+
:model_class => :Timelog,
|
57
|
+
:renderers => init_data[:renderers],
|
58
|
+
:change_before => proc{ @dont_reload = true },
|
59
|
+
:change_after => proc{ @dont_reload = false },
|
60
|
+
:cols => {
|
61
|
+
1 => :descr,
|
62
|
+
2 => {:col => :timestamp, :type => :datetime},
|
63
|
+
3 => {:col => :time, :type => :time_as_sec},
|
64
|
+
4 => {:col => :time_transport, :type => :time_as_sec},
|
65
|
+
5 => {:col => :transportlength, :type => :int},
|
66
|
+
6 => {:col => :transportdescription},
|
67
|
+
7 => {:col => :transportcosts, :type => :human_number, :decimals => 2},
|
68
|
+
8 => {:col => :travelfixed},
|
69
|
+
9 => {:col => :workinternal},
|
70
|
+
10 => {:col => :sync_need},
|
71
|
+
11 => {
|
72
|
+
:col => :task_id,
|
73
|
+
:value_callback => lambda{ |data|
|
74
|
+
task = @args[:oata].ob.get_by(:Task, {"title" => data[:value]})
|
75
|
+
|
76
|
+
if !task
|
77
|
+
return 0
|
78
|
+
else
|
79
|
+
return task.id
|
80
|
+
end
|
81
|
+
},
|
82
|
+
:value_set_callback => proc{ |data| data[:model].task_name }
|
83
|
+
}
|
84
|
+
}
|
85
|
+
)
|
127
86
|
|
128
87
|
@gui["tvTimelogs"].columns[0].visible = false
|
129
88
|
self.reload_timelogs
|
@@ -134,19 +93,30 @@ class Openall_time_applet::Gui::Win_overview
|
|
134
93
|
@gui["window"].show_all
|
135
94
|
end
|
136
95
|
|
137
|
-
def
|
138
|
-
|
139
|
-
|
96
|
+
def dont_reload
|
97
|
+
@dont_reload = true
|
98
|
+
begin
|
99
|
+
yield
|
100
|
+
ensure
|
101
|
+
@dont_reload = false
|
102
|
+
end
|
140
103
|
end
|
141
104
|
|
142
105
|
def reload_timelogs
|
106
|
+
return nil if @dont_reload
|
143
107
|
@gui["tvTimelogs"].model.clear
|
144
108
|
@args[:oata].ob.list(:Timelog, {"orderby" => "id"}) do |timelog|
|
145
109
|
@gui["tvTimelogs"].append([
|
146
110
|
timelog.id,
|
147
111
|
timelog.descr_short,
|
112
|
+
timelog.timestamp_str,
|
148
113
|
timelog.time_as_human,
|
149
114
|
timelog.time_transport_as_human,
|
115
|
+
Knj::Locales.number_out(timelog[:transportlength], 0),
|
116
|
+
timelog.transport_descr_short,
|
117
|
+
Knj::Locales.number_out(timelog[:transportcosts], 2),
|
118
|
+
Knj::Strings.yn_str(timelog[:travelfixed], true, false),
|
119
|
+
Knj::Strings.yn_str(timelog[:workinternal], true, false),
|
150
120
|
Knj::Strings.yn_str(timelog[:sync_need], true, false),
|
151
121
|
timelog.task_name
|
152
122
|
])
|
data/models/timelog.rb
CHANGED
@@ -57,6 +57,14 @@ class Openall_time_applet::Models::Timelog < Knj::Datarow
|
|
57
57
|
return descr
|
58
58
|
end
|
59
59
|
|
60
|
+
#Returns a short one-line short description.
|
61
|
+
def transport_descr_short
|
62
|
+
descr = self[:transportdescription].to_s.gsub("\n", " ").gsub(/\s{2,}/, " ")
|
63
|
+
descr = Knj::Strings.shorten(descr, 20)
|
64
|
+
descr = "[#{_("no description")}]" if descr.to_s.strip.length <= 0
|
65
|
+
return descr
|
66
|
+
end
|
67
|
+
|
60
68
|
#Returns the time as a human readable format.
|
61
69
|
def time_as_human
|
62
70
|
return Knj::Strings.secs_to_human_time_str(self[:time])
|
data/openall_time_applet.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{openall_time_applet}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = %q{2012-06-
|
12
|
+
s.date = %q{2012-06-12}
|
13
13
|
s.default_executable = %q{openall_time_applet.rb}
|
14
14
|
s.description = %q{Off-line time-tracking for OpenAll with syncing when online.}
|
15
15
|
s.email = %q{k@spernj.org}
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: openall_time_applet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.11
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-06-
|
13
|
+
date: 2012-06-12 00:00:00 +02:00
|
14
14
|
default_executable: openall_time_applet.rb
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -195,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
195
195
|
requirements:
|
196
196
|
- - ">="
|
197
197
|
- !ruby/object:Gem::Version
|
198
|
-
hash: -
|
198
|
+
hash: -4306951825399689854
|
199
199
|
segments:
|
200
200
|
- 0
|
201
201
|
version: "0"
|