XDCC-Fetch 1.386
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +23 -0
- data/XDCC-Fetch.rbw +54 -0
- data/doc/ark.png +0 -0
- data/doc/connect_established.png +0 -0
- data/doc/index.html +300 -0
- data/doc/mega_ark.png +0 -0
- data/doc/package.png +0 -0
- data/doc/package_unknown.png +0 -0
- data/doc/shot1.png +0 -0
- data/doc/shot1_mini.png +0 -0
- data/doc/shot2.png +0 -0
- data/doc/shot2_mini.png +0 -0
- data/doc/xdccfetch.css +155 -0
- data/icons/ark.png +0 -0
- data/icons/ark_big.png +0 -0
- data/icons/camera_test.png +0 -0
- data/icons/cancel.png +0 -0
- data/icons/connect_creating.png +0 -0
- data/icons/connect_established.png +0 -0
- data/icons/connect_failed.png +0 -0
- data/icons/connect_no.png +0 -0
- data/icons/edit_add.png +0 -0
- data/icons/edit_remove.png +0 -0
- data/icons/exit.png +0 -0
- data/icons/fileclose.png +0 -0
- data/icons/folder_inbox.png +0 -0
- data/icons/idea.png +0 -0
- data/icons/mega_ark.png +0 -0
- data/icons/messagebox_critical.png +0 -0
- data/icons/messagebox_info.png +0 -0
- data/icons/messagebox_warning.png +0 -0
- data/icons/messagebox_warning_small.png +0 -0
- data/icons/package.png +0 -0
- data/icons/package_favourite.png +0 -0
- data/icons/package_unknown.png +0 -0
- data/src/Console/Console_Parser.rb +71 -0
- data/src/Console/XDCC_Pack_Match_Template.rb +29 -0
- data/src/Console/xdcc-fetch.rb +123 -0
- data/src/GUI/About_Dialog.rb +50 -0
- data/src/GUI/Application_Builder.rb +280 -0
- data/src/GUI/Context_Menu.rb +81 -0
- data/src/GUI/Custom_Tabs.rb +60 -0
- data/src/GUI/Dialog_Box.rb +116 -0
- data/src/GUI/Download_Finished_Box.rb +41 -0
- data/src/GUI/Empty_Text_Field_Handler.rb +86 -0
- data/src/GUI/Gui_Logic.rb +629 -0
- data/src/GUI/Icon_Loader.rb +58 -0
- data/src/GUI/Main_Window.rb +227 -0
- data/src/GUI/Packet_Item.rb +171 -0
- data/src/GUI/Packet_List.rb +145 -0
- data/src/GUI/Speed_Widget.rb +101 -0
- data/src/GUI/Talk_Back.rb +118 -0
- data/src/GUI/Toggle_Button.rb +56 -0
- data/src/Network/CTCP_Handler.rb +61 -0
- data/src/Network/DCC_File.rb +323 -0
- data/src/Network/DCC_Parser.rb +71 -0
- data/src/Network/IPAddr_Ext.rb +76 -0
- data/src/Network/IRC_Message.rb +161 -0
- data/src/Network/IRC_Server.rb +273 -0
- data/src/Network/IRC_Server_Respond_Map.rb +223 -0
- data/src/Network/IRC_User.rb +58 -0
- data/src/Network/TCP_Connection.rb +168 -0
- data/src/Network/XDCC_Announcement.rb +120 -0
- data/src/Network/XDCC_Announcement_Storage.rb +167 -0
- data/src/Network/XDCC_Download_Handler.rb +412 -0
- data/src/Network/XDCC_Pack.rb +58 -0
- data/src/Network/XDCC_Parser.rb +253 -0
- data/src/Translations/README +61 -0
- data/src/Translations/check_translations +83 -0
- data/src/Translations/de.rb +140 -0
- data/src/Translations/en.rb +145 -0
- data/src/Utilities/Configuration.rb +91 -0
- data/src/Utilities/Events.rb +87 -0
- data/src/Utilities/Globals.rb +138 -0
- data/src/Utilities/PrettyException.rb +1091 -0
- data/src/Utilities/Recursive_Open_Struct.rb +159 -0
- data/src/Utilities/Timer.rb +71 -0
- metadata +135 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
# Author:: Martin Ankerl (mailto:martin.ankerl@gmail.com)
|
2
|
+
# Copyright:: Copyright (c) 2004-2005 Martin Ankerl
|
3
|
+
# License:: BSD
|
4
|
+
#
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
8
|
+
# are permitted provided that the following conditions are met:
|
9
|
+
#
|
10
|
+
# * Redistributions of source code must retain the above copyright notice, this list
|
11
|
+
# of conditions and the following disclaimer.
|
12
|
+
# * Redistributions in binary form must reproduce the above copyright notice, this list
|
13
|
+
# of conditions and the following disclaimer in the documentation and/or other materials
|
14
|
+
# provided with the distribution.
|
15
|
+
# * Neither the name of Martin Ankerl nor the names of its contributors may be used to
|
16
|
+
# endorse or promote products derived from this software without specific prior written
|
17
|
+
# permission.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
20
|
+
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
21
|
+
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
22
|
+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
24
|
+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
25
|
+
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
26
|
+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
|
29
|
+
# Recursive_Open_Struct provides a convenient interface to a hierarchy of configuration
|
30
|
+
# parameters. You do not need to define the accessors, they are created automatically
|
31
|
+
# on demand.
|
32
|
+
#
|
33
|
+
# Have a look at this example:
|
34
|
+
#
|
35
|
+
# ac = Recursive_Open_Struct.new
|
36
|
+
# ac.window.name = "SuperDuper"
|
37
|
+
# ac.app.version = "2.1.3"
|
38
|
+
# ac.this.is.automatically.created = "blabla"
|
39
|
+
#
|
40
|
+
# After you have created all of your configuration parameters, to prevent
|
41
|
+
# typos when using the parameters, the structure can be closed:
|
42
|
+
#
|
43
|
+
# ac.close
|
44
|
+
#
|
45
|
+
# After closing,
|
46
|
+
#
|
47
|
+
# ac.widnow.name = "UberSuperDuper"
|
48
|
+
#
|
49
|
+
# You get the usual NoMethodError, because 'widnow' does not exist.
|
50
|
+
#
|
51
|
+
class Recursive_Open_Struct
|
52
|
+
# Create a new Recursive_Open_Struct.
|
53
|
+
def initialize
|
54
|
+
@methods = Hash.new
|
55
|
+
@open = true
|
56
|
+
end
|
57
|
+
|
58
|
+
# automatically add parameters
|
59
|
+
def method_missing(method, params=nil) # :nodoc:
|
60
|
+
key = method.id2name
|
61
|
+
key.chop! if params # remove trailing =
|
62
|
+
|
63
|
+
# if structure is closed, disable hierarchy creation
|
64
|
+
super if !@methods.has_key?(key) && !@open
|
65
|
+
|
66
|
+
if params.nil?
|
67
|
+
# no param: create new Recursive_Open_Struct object
|
68
|
+
@methods[key] ||= Recursive_Open_Struct.new
|
69
|
+
else
|
70
|
+
# assigning a new value
|
71
|
+
if @methods[key].class == Recursive_Open_Struct
|
72
|
+
raise TypeError, "overwriting previously created hierarchy entry '#{key}' not allowed", caller(1)
|
73
|
+
else
|
74
|
+
@methods[key] = params
|
75
|
+
end
|
76
|
+
end
|
77
|
+
@methods[key]
|
78
|
+
end
|
79
|
+
|
80
|
+
# An alternative way to access the value of an attribute
|
81
|
+
# s = Recursive_Open_Struct.new
|
82
|
+
# s.name = "Hugo"
|
83
|
+
# s["name"] # "Hugo"
|
84
|
+
def [](key)
|
85
|
+
@methods[key]
|
86
|
+
end
|
87
|
+
|
88
|
+
# An alternative way to set the value of an attribute
|
89
|
+
# s = Recursive_Open_Struct.new
|
90
|
+
# s["name"] = "Hugo"
|
91
|
+
# s.name # "Hugo"
|
92
|
+
def []=(key, value)
|
93
|
+
self.send((key+"=").to_sym, value)
|
94
|
+
end
|
95
|
+
|
96
|
+
# call-seq:
|
97
|
+
# attrs() -> an_array
|
98
|
+
#
|
99
|
+
# Return a sorted array of attribute names, similar to #methods.
|
100
|
+
#
|
101
|
+
# s = Recursive_Open_Struct.new
|
102
|
+
# s.name = "martinus"
|
103
|
+
# s.age = 25
|
104
|
+
# s.attrs # returns ["age", "name"]
|
105
|
+
def attrs
|
106
|
+
@methods.keys.sort
|
107
|
+
end
|
108
|
+
|
109
|
+
# After calling #close, no further modification of the configuration hierarchy
|
110
|
+
# is allowed. This is not as strict as #freeze, because you are still allowed
|
111
|
+
# to modify data.
|
112
|
+
#
|
113
|
+
# s = Recursive_Open_Struct.new
|
114
|
+
# s.name = "Hugo"
|
115
|
+
# s.close
|
116
|
+
# s.name = "martinus" # does still work
|
117
|
+
# s.age = 25 # raises NoMethodError
|
118
|
+
def close
|
119
|
+
do_set_open_status(false)
|
120
|
+
end
|
121
|
+
|
122
|
+
# Reopens a Recursive_Open_Struct which was closed with #close earlier.
|
123
|
+
# After this call, it is possible to modify the structure again.
|
124
|
+
def re_open
|
125
|
+
do_set_open_status(true)
|
126
|
+
end
|
127
|
+
|
128
|
+
# call-seq:
|
129
|
+
# open?() -> boolean
|
130
|
+
#
|
131
|
+
# Return whether the structure is still open or not.
|
132
|
+
#
|
133
|
+
# s = Recursive_Open_Struct.new
|
134
|
+
# s.open? # returns true
|
135
|
+
# s.close
|
136
|
+
# s.open? # returns false
|
137
|
+
def open?
|
138
|
+
@open
|
139
|
+
end
|
140
|
+
|
141
|
+
# call-seq:
|
142
|
+
# each() { |elem| ... }
|
143
|
+
#
|
144
|
+
# Iterates through all elements of the Recursive_Open_Struct in alphabetic order.
|
145
|
+
def each
|
146
|
+
attrs.each do |attr|
|
147
|
+
yield @methods[attr]
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
protected
|
152
|
+
|
153
|
+
def do_set_open_status(status)
|
154
|
+
@methods.each_value do |val|
|
155
|
+
val.do_set_open_status(status) if val.class == Recursive_Open_Struct
|
156
|
+
end
|
157
|
+
@open = status
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Copyright (c) 2004, Christoph Heindl
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
5
|
+
# are permitted provided that the following conditions are met:
|
6
|
+
#
|
7
|
+
# * Redistributions of source code must retain the above copyright notice, this list
|
8
|
+
# of conditions and the following disclaimer.
|
9
|
+
# * Redistributions in binary form must reproduce the above copyright notice, this list
|
10
|
+
# of conditions and the following disclaimer in the documentation and/or other materials
|
11
|
+
# provided with the distribution.
|
12
|
+
# * Neither the name of Christoph Heindl nor the names of its contributors may be used to
|
13
|
+
# endorse or promote products derived from this software without specific prior written
|
14
|
+
# permission.
|
15
|
+
#
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
17
|
+
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
18
|
+
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
19
|
+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
21
|
+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
22
|
+
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
23
|
+
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
24
|
+
|
25
|
+
|
26
|
+
require 'src/Utilities/Events.rb'
|
27
|
+
require 'thread'
|
28
|
+
|
29
|
+
# Provides a not-so-accurate timer class
|
30
|
+
class Timer
|
31
|
+
include Event_Publisher
|
32
|
+
|
33
|
+
# -- Connectable events
|
34
|
+
|
35
|
+
# Periodically, when the specified timeout_secs have passed. Args: Timestamp
|
36
|
+
ON_TIMER = Event_Publisher.next_global_eventID
|
37
|
+
|
38
|
+
# Initializes and starts the timer with the given timeout attribute in seconds
|
39
|
+
# This can also be a float value. I.e. timeout_secs == 0.5 triggers the timer
|
40
|
+
# each 0.5 seconds
|
41
|
+
def initialize(timeout_secs)
|
42
|
+
self.init_events
|
43
|
+
@mutex = Mutex.new
|
44
|
+
@stop = false
|
45
|
+
@thread = Thread.new(self, timeout_secs) do |caller, timeout|
|
46
|
+
while (!caller.stop?)
|
47
|
+
sleep(timeout)
|
48
|
+
caller.fire_event(ON_TIMER, Time.now)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Stop the timer
|
54
|
+
def stop!
|
55
|
+
@mutex.synchronize do
|
56
|
+
@stop = true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Is the timer about to stop. or has already stopped?
|
61
|
+
def stop?
|
62
|
+
@mutex.synchronize do
|
63
|
+
@stop
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Wait for the timer to be killed. I.e. someone issues a stop!
|
68
|
+
def join
|
69
|
+
@thread.join
|
70
|
+
end
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.4
|
3
|
+
specification_version: 1
|
4
|
+
name: XDCC-Fetch
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: "1.386"
|
7
|
+
date: 2005-01-30
|
8
|
+
summary: "XDCC-Fetch, written entirely in Ruby, is an intuitive, no-nonsense tool for
|
9
|
+
searching, collecting and downloading XDCC announcements within IRC channels.
|
10
|
+
XDCC-Fetch is released under the BSD license and available for free."
|
11
|
+
require_paths:
|
12
|
+
- src
|
13
|
+
email: xdccfetch@gmail.com
|
14
|
+
homepage: http://xdccfetch.sourceforge.net
|
15
|
+
rubyforge_project:
|
16
|
+
description:
|
17
|
+
autorequire:
|
18
|
+
default_executable:
|
19
|
+
bindir: "."
|
20
|
+
has_rdoc: false
|
21
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
22
|
+
requirements:
|
23
|
+
-
|
24
|
+
- ">"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.0
|
27
|
+
version:
|
28
|
+
platform: ruby
|
29
|
+
authors:
|
30
|
+
- XDCC-Fetch Team
|
31
|
+
files:
|
32
|
+
- "."
|
33
|
+
- "./COPYING"
|
34
|
+
- "./icons"
|
35
|
+
- "./icons/package.png"
|
36
|
+
- "./icons/camera_test.png"
|
37
|
+
- "./icons/messagebox_warning.png"
|
38
|
+
- "./icons/package_favourite.png"
|
39
|
+
- "./icons/folder_inbox.png"
|
40
|
+
- "./icons/package_unknown.png"
|
41
|
+
- "./icons/messagebox_warning_small.png"
|
42
|
+
- "./icons/connect_no.png"
|
43
|
+
- "./icons/ark.png"
|
44
|
+
- "./icons/messagebox_critical.png"
|
45
|
+
- "./icons/exit.png"
|
46
|
+
- "./icons/cancel.png"
|
47
|
+
- "./icons/mega_ark.png"
|
48
|
+
- "./icons/fileclose.png"
|
49
|
+
- "./icons/messagebox_info.png"
|
50
|
+
- "./icons/idea.png"
|
51
|
+
- "./icons/edit_remove.png"
|
52
|
+
- "./icons/connect_creating.png"
|
53
|
+
- "./icons/ark_big.png"
|
54
|
+
- "./icons/edit_add.png"
|
55
|
+
- "./icons/connect_failed.png"
|
56
|
+
- "./icons/connect_established.png"
|
57
|
+
- "./src"
|
58
|
+
- "./src/Utilities"
|
59
|
+
- "./src/Utilities/PrettyException.rb"
|
60
|
+
- "./src/Utilities/Recursive_Open_Struct.rb"
|
61
|
+
- "./src/Utilities/Events.rb"
|
62
|
+
- "./src/Utilities/Configuration.rb"
|
63
|
+
- "./src/Utilities/Timer.rb"
|
64
|
+
- "./src/Utilities/Globals.rb"
|
65
|
+
- "./src/Network"
|
66
|
+
- "./src/Network/XDCC_Announcement.rb"
|
67
|
+
- "./src/Network/IRC_User.rb"
|
68
|
+
- "./src/Network/DCC_File.rb"
|
69
|
+
- "./src/Network/CTCP_Handler.rb"
|
70
|
+
- "./src/Network/XDCC_Download_Handler.rb"
|
71
|
+
- "./src/Network/IRC_Server_Respond_Map.rb"
|
72
|
+
- "./src/Network/DCC_Parser.rb"
|
73
|
+
- "./src/Network/IRC_Server.rb"
|
74
|
+
- "./src/Network/IPAddr_Ext.rb"
|
75
|
+
- "./src/Network/XDCC_Announcement_Storage.rb"
|
76
|
+
- "./src/Network/IRC_Message.rb"
|
77
|
+
- "./src/Network/XDCC_Pack.rb"
|
78
|
+
- "./src/Network/XDCC_Parser.rb"
|
79
|
+
- "./src/Network/TCP_Connection.rb"
|
80
|
+
- "./src/GUI"
|
81
|
+
- "./src/GUI/Toggle_Button.rb"
|
82
|
+
- "./src/GUI/Talk_Back.rb"
|
83
|
+
- "./src/GUI/Application_Builder.rb"
|
84
|
+
- "./src/GUI/Main_Window.rb"
|
85
|
+
- "./src/GUI/About_Dialog.rb"
|
86
|
+
- "./src/GUI/Download_Finished_Box.rb"
|
87
|
+
- "./src/GUI/Context_Menu.rb"
|
88
|
+
- "./src/GUI/Dialog_Box.rb"
|
89
|
+
- "./src/GUI/Packet_Item.rb"
|
90
|
+
- "./src/GUI/Custom_Tabs.rb"
|
91
|
+
- "./src/GUI/Empty_Text_Field_Handler.rb"
|
92
|
+
- "./src/GUI/Speed_Widget.rb"
|
93
|
+
- "./src/GUI/Packet_List.rb"
|
94
|
+
- "./src/GUI/Gui_Logic.rb"
|
95
|
+
- "./src/GUI/Icon_Loader.rb"
|
96
|
+
- "./src/Console"
|
97
|
+
- "./src/Console/XDCC_Pack_Match_Template.rb"
|
98
|
+
- "./src/Console/xdcc-fetch.rb"
|
99
|
+
- "./src/Console/Console_Parser.rb"
|
100
|
+
- "./src/Translations"
|
101
|
+
- "./src/Translations/check_translations"
|
102
|
+
- "./src/Translations/README"
|
103
|
+
- "./src/Translations/de.rb"
|
104
|
+
- "./src/Translations/en.rb"
|
105
|
+
- "./XDCC-Fetch.rbw"
|
106
|
+
- "./doc"
|
107
|
+
- "./doc/package.png"
|
108
|
+
- "./doc/shot2_mini.png"
|
109
|
+
- "./doc/shot1_mini.png"
|
110
|
+
- "./doc/index.html"
|
111
|
+
- "./doc/connect_established.png"
|
112
|
+
- "./doc/mega_ark.png"
|
113
|
+
- "./doc/shot2.png"
|
114
|
+
- "./doc/xdccfetch.css"
|
115
|
+
- "./doc/package_unknown.png"
|
116
|
+
- "./doc/ark.png"
|
117
|
+
- "./doc/shot1.png"
|
118
|
+
test_files: []
|
119
|
+
rdoc_options: []
|
120
|
+
extra_rdoc_files: []
|
121
|
+
executables:
|
122
|
+
- XDCC-Fetch.rbw
|
123
|
+
extensions: []
|
124
|
+
requirements: []
|
125
|
+
dependencies:
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: fxruby
|
128
|
+
version_requirement:
|
129
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
130
|
+
requirements:
|
131
|
+
-
|
132
|
+
- ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 1.2.0
|
135
|
+
version:
|