openall_time_applet 0.0.23 → 0.0.24
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/Gemfile +0 -1
- data/Gemfile.lock +5 -6
- data/VERSION +1 -1
- data/gui/win_main.rb +6 -2
- data/lib/openall_time_applet.rb +0 -5
- data/models/timelog.rb +2 -2
- data/models/worktime.rb +5 -0
- data/openall_time_applet.gemspec +2 -5
- data/spec/openall_time_applet_spec.rb +63 -7
- metadata +3 -14
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -5,7 +5,7 @@ GEM
|
|
5
5
|
glib2 (>= 1.1.3)
|
6
6
|
cairo (1.12.2)
|
7
7
|
pkg-config
|
8
|
-
datet (0.0.
|
8
|
+
datet (0.0.9)
|
9
9
|
diff-lcs (1.1.3)
|
10
10
|
gdk_pixbuf2 (1.1.3)
|
11
11
|
glib2 (>= 1.1.3)
|
@@ -18,15 +18,16 @@ GEM
|
|
18
18
|
atk (>= 1.1.3)
|
19
19
|
gdk_pixbuf2 (>= 1.1.3)
|
20
20
|
pango (>= 1.1.3)
|
21
|
-
http2 (0.0.
|
22
|
-
knjrbfw
|
21
|
+
http2 (0.0.4)
|
23
22
|
jeweler (1.8.4)
|
24
23
|
bundler (~> 1.0)
|
25
24
|
git (>= 1.2.5)
|
26
25
|
rake
|
27
26
|
rdoc
|
28
27
|
json (1.7.3)
|
29
|
-
knjrbfw (0.0.
|
28
|
+
knjrbfw (0.0.65)
|
29
|
+
datet
|
30
|
+
http2
|
30
31
|
tsafe
|
31
32
|
wref
|
32
33
|
locale (2.0.5)
|
@@ -35,7 +36,6 @@ GEM
|
|
35
36
|
glib2 (>= 1.1.3)
|
36
37
|
pkg-config (1.1.3)
|
37
38
|
rake (0.9.2.2)
|
38
|
-
rcov (0.9.11)
|
39
39
|
rdoc (3.12)
|
40
40
|
json (~> 1.4)
|
41
41
|
rmagick (2.13.1)
|
@@ -63,7 +63,6 @@ DEPENDENCIES
|
|
63
63
|
jeweler (~> 1.8.3)
|
64
64
|
json
|
65
65
|
knjrbfw
|
66
|
-
rcov
|
67
66
|
rdoc (~> 3.12)
|
68
67
|
rmagick
|
69
68
|
rspec (~> 2.8.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.24
|
data/gui/win_main.rb
CHANGED
@@ -4,7 +4,7 @@ class Openall_time_applet::Gui::Win_main
|
|
4
4
|
def initialize(args)
|
5
5
|
@args = args
|
6
6
|
|
7
|
-
@gui = Gtk::Builder.new.add("
|
7
|
+
@gui = Gtk::Builder.new.add("#{File.dirname(__FILE__)}/../glade/win_main.glade")
|
8
8
|
@gui.translate
|
9
9
|
@gui.connect_signals{|h| method(h)}
|
10
10
|
|
@@ -591,7 +591,11 @@ class Openall_time_applet::Gui::Win_main
|
|
591
591
|
end
|
592
592
|
|
593
593
|
return nil if Knj::Gtk2.msgbox(_("Do you want to remove this timelog?"), "yesno") != "yes"
|
594
|
-
|
594
|
+
begin
|
595
|
+
@args[:oata].ob.delete(tlog)
|
596
|
+
rescue => e
|
597
|
+
Knj::Gtk2.msgbox(sprintf(_("Could not delete the timelog: %s"), e.message))
|
598
|
+
end
|
595
599
|
end
|
596
600
|
|
597
601
|
def on_btnPlus_clicked
|
data/lib/openall_time_applet.rb
CHANGED
@@ -314,11 +314,6 @@ class Openall_time_applet
|
|
314
314
|
end
|
315
315
|
end
|
316
316
|
|
317
|
-
#Shows the sync overview, which must be seen before the actual sync.
|
318
|
-
def show_prepare_sync
|
319
|
-
Openall_time_applet::Gui::Win_sync_overview.new(:oata => self)
|
320
|
-
end
|
321
|
-
|
322
317
|
#Refreshes task-cache, create missing worktime from timelogs and push tracked time to timelogs. Shows a status-window while doing so.
|
323
318
|
def sync_real
|
324
319
|
sw = Knj::Gtk2::StatusWindow.new
|
data/models/timelog.rb
CHANGED
@@ -107,7 +107,7 @@ class Openall_time_applet::Models::Timelog < Knj::Datarow
|
|
107
107
|
def descr_short
|
108
108
|
descr = self[:descr].to_s.gsub("\n", " ").gsub(/\s{2,}/, " ")
|
109
109
|
descr = Knj::Strings.shorten(descr, 20)
|
110
|
-
descr = "[#{_("no description")}]" if descr.to_s.strip.length <= 0
|
110
|
+
#descr = "[#{_("no description")}]" if descr.to_s.strip.length <= 0
|
111
111
|
return descr
|
112
112
|
end
|
113
113
|
|
@@ -115,7 +115,7 @@ class Openall_time_applet::Models::Timelog < Knj::Datarow
|
|
115
115
|
def transport_descr_short
|
116
116
|
descr = self[:transportdescription].to_s.gsub("\n", " ").gsub(/\s{2,}/, " ")
|
117
117
|
descr = Knj::Strings.shorten(descr, 20)
|
118
|
-
descr = "[#{_("no description")}]" if descr.to_s.strip.length <= 0
|
118
|
+
#descr = "[#{_("no description")}]" if descr.to_s.strip.length <= 0
|
119
119
|
return descr
|
120
120
|
end
|
121
121
|
|
data/models/worktime.rb
CHANGED
@@ -15,6 +15,11 @@ class Openall_time_applet::Models::Worktime < Knj::Datarow
|
|
15
15
|
found << wt_d["uid"]
|
16
16
|
task = self.ob.get_by(:Task, {"openall_uid" => wt_d["task_uid"]})
|
17
17
|
|
18
|
+
if !task
|
19
|
+
$stderr.puts sprintf(_("Task with UID '%s' was not found."), wt_d["task_uid"]) + " - " + sprintf(_("Skipping worktime with UID %s"), wt_d["uid"])
|
20
|
+
next
|
21
|
+
end
|
22
|
+
|
18
23
|
save_hash = {
|
19
24
|
:openall_uid => wt_d["uid"],
|
20
25
|
:task_id => task.id,
|
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.24"
|
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-07-
|
12
|
+
s.date = %q{2012-07-17}
|
13
13
|
s.description = %q{Off-line time-tracking for OpenAll with syncing when online.}
|
14
14
|
s.email = %q{k@spernj.org}
|
15
15
|
s.executables = ["OpenAll Timelogging", "openall_time_applet.rb"]
|
@@ -78,7 +78,6 @@ Gem::Specification.new do |s|
|
|
78
78
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
79
79
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
80
80
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
81
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
82
81
|
else
|
83
82
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
84
83
|
s.add_dependency(%q<gtk2>, [">= 0"])
|
@@ -92,7 +91,6 @@ Gem::Specification.new do |s|
|
|
92
91
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
93
92
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
94
93
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
95
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
96
94
|
end
|
97
95
|
else
|
98
96
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
@@ -107,7 +105,6 @@ Gem::Specification.new do |s|
|
|
107
105
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
108
106
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
109
107
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
110
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
111
108
|
end
|
112
109
|
end
|
113
110
|
|
@@ -1,13 +1,17 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require "timeout"
|
2
3
|
|
3
4
|
describe "OpenallTimeApplet" do
|
4
5
|
it "should be able to start" do
|
5
6
|
$tmp_path = "/tmp/openall_spec.sqlite3"
|
7
|
+
File.unlink($tmp_path) if File.exists?($tmp_path)
|
6
8
|
Openall_time_applet::CONFIG[:db_path] = $tmp_path
|
7
9
|
$oata = Openall_time_applet.new
|
8
10
|
end
|
9
11
|
|
10
12
|
it "should be able to clone timelogs" do
|
13
|
+
debug = false
|
14
|
+
|
11
15
|
date = Datet.new
|
12
16
|
date.days - 1
|
13
17
|
|
@@ -33,17 +37,69 @@ describe "OpenallTimeApplet" do
|
|
33
37
|
timelogs = $oata.ob.list(:Timelog, "orderby" => "timestamp").to_a
|
34
38
|
raise "Expected amount of timelogs to be 2 but it wasnt: #{timelogs.length}" if timelogs.length != 2
|
35
39
|
|
40
|
+
#Try to delete a timelog that has a sub-timelog with logged time. It should show an error message-box.
|
41
|
+
$oata.show_main
|
42
|
+
main = Knj::Gtk2::Window.get("main")
|
43
|
+
main.gui["expOverview"].expanded = true
|
44
|
+
main.gui["tvTimelogs"].selection.select_iter(main.gui["tvTimelogs"].model.iter_first)
|
45
|
+
|
46
|
+
#Click the minus.
|
47
|
+
t = Thread.new do
|
48
|
+
main.gui["btnMinus"].clicked
|
49
|
+
end
|
50
|
+
|
51
|
+
#Answer 'yes' to delete timelog.
|
52
|
+
print "Passing until msgbox is shown.\n" if debug
|
53
|
+
Thread.pass while !Knj::Gtk2::Msgbox.shown?
|
54
|
+
raise "Unexpected label: '#{Knj::Gtk2::Msgbox.cur_label}'." if Knj::Gtk2::Msgbox.cur_label.to_s != _("Do you want to remove this timelog?")
|
55
|
+
Knj::Gtk2::Msgbox.cur_respond(Gtk::Dialog::RESPONSE_YES)
|
56
|
+
|
57
|
+
#Wait for the 'could not delete timelog' to be shown.
|
58
|
+
Thread.pass while !Knj::Gtk2::Msgbox.shown?
|
59
|
+
|
60
|
+
#Could-not-delete-timelog was shown - press ok to that.
|
61
|
+
raise "Unexpected msgbox-label: #{Knj::Gtk2::Msgbox.cur_label}." if Knj::Gtk2::Msgbox.cur_label.index("Could not delete the timelog") == nil
|
62
|
+
|
63
|
+
Knj::Gtk2::Msgbox.cur_respond(Gtk::Dialog::RESPONSE_OK)
|
64
|
+
raise "Didnt expect the timelog to be deleted." if timelog.deleted?
|
65
|
+
|
66
|
+
#Reset the sub-timelogs time and try to delete again. This time it should actually be deleted.
|
36
67
|
#Or else it wont be possible to delete main timelog.
|
37
68
|
timelog.child_timelogs do |child_timelog|
|
38
69
|
child_timelog[:time] = 0
|
39
70
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
71
|
+
|
72
|
+
#Mark timelog.
|
73
|
+
main.gui["tvTimelogs"].selection.select_iter(main.gui["tvTimelogs"].model.iter_first)
|
74
|
+
|
75
|
+
#Click the minus.
|
76
|
+
t = Thread.new do
|
77
|
+
main.gui["btnMinus"].clicked
|
78
|
+
end
|
79
|
+
|
80
|
+
#Answer 'yes' to delete timelog.
|
81
|
+
print "Passing until msgbox is shown.\n" if debug
|
82
|
+
Thread.pass while !Knj::Gtk2::Msgbox.shown?
|
83
|
+
raise "Unexpected label: '#{Knj::Gtk2::Msgbox.cur_label}'." if Knj::Gtk2::Msgbox.cur_label.to_s != _("Do you want to remove this timelog?")
|
84
|
+
|
85
|
+
print "Doing yes-response to last.\n" if debug
|
86
|
+
Knj::Gtk2::Msgbox.cur_respond(Gtk::Dialog::RESPONSE_YES)
|
87
|
+
|
88
|
+
#Wait for timelog to be deleted or another msgbox to be shown.
|
89
|
+
print "Passing until msgbox is shown or timelog deleted.\n" if debug
|
90
|
+
Timeout.timeout(2) do
|
91
|
+
Thread.pass while !Knj::Gtk2::Msgbox.shown? and !timelog.deleted?
|
92
|
+
end
|
93
|
+
sleep 0.1
|
94
|
+
|
95
|
+
print "Done with passing.\n" if debug
|
96
|
+
|
97
|
+
if Knj::Gtk2::Msgbox.shown?
|
98
|
+
raise "A new message box was shown: '#{Knj::Gtk2::Msgbox.cur_label}'."
|
99
|
+
Knj::Gtk2::Msgbox.cur_respond(Gtk::Dialog::RESPONSE_OK)
|
100
|
+
end
|
101
|
+
|
102
|
+
raise "Timelog was not deleted." if !timelog.deleted?
|
47
103
|
end
|
48
104
|
|
49
105
|
it "should remove the temp db" do
|
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.24
|
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-07-
|
13
|
+
date: 2012-07-17 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -145,17 +145,6 @@ dependencies:
|
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: *id012
|
148
|
-
- !ruby/object:Gem::Dependency
|
149
|
-
name: rcov
|
150
|
-
requirement: &id013 !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
|
-
requirements:
|
153
|
-
- - ">="
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
version: "0"
|
156
|
-
type: :development
|
157
|
-
prerelease: false
|
158
|
-
version_requirements: *id013
|
159
148
|
description: Off-line time-tracking for OpenAll with syncing when online.
|
160
149
|
email: k@spernj.org
|
161
150
|
executables:
|
@@ -218,7 +207,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
207
|
requirements:
|
219
208
|
- - ">="
|
220
209
|
- !ruby/object:Gem::Version
|
221
|
-
hash:
|
210
|
+
hash: 749465964052469739
|
222
211
|
segments:
|
223
212
|
- 0
|
224
213
|
version: "0"
|