XDCC-Fetch 1.386
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/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:
|