├── AUTHORS ├── DESIGN ├── License.txt ├── Makefile ├── NEWS ├── README.TIGER ├── README.md ├── cli ├── Makefile ├── cfg.c ├── cfg.h ├── cmd.c ├── confuse │ ├── Makefile │ ├── confuse.c │ ├── confuse.h │ └── lexer.l ├── ctx-filelist.c ├── ctx-hub.c ├── ctx-hublist.c ├── ctx-main.c ├── ctx-queue.c ├── shakespeer.c ├── shakespeer.h └── tecla-display_message.patch ├── common.mk ├── configure ├── extern.mk ├── gui ├── Aqua │ ├── FilteringArrayController.h │ ├── FilteringArrayController.m │ ├── MHSysTree.h │ ├── MHSysTree.m │ ├── Makefile │ ├── MenuButton.h │ ├── MenuButton.m │ ├── NSMenu-MassRemovalAdditions.h │ ├── NSMenu-MassRemovalAdditions.m │ ├── NSMenu-UserCommandAdditions.h │ ├── NSMenu-UserCommandAdditions.m │ ├── NSMutableAttributedString-SmileyAdditions.h │ ├── NSMutableAttributedString-SmileyAdditions.m │ ├── NSStringExtensions.h │ ├── NSStringExtensions.m │ ├── NSTextView-ChatFormattingAdditions.h │ ├── NSTextView-ChatFormattingAdditions.m │ ├── Resources │ │ ├── Credits.rtf │ │ ├── English.lproj │ │ │ ├── Bookmarks.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── ChatWindow.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── DirectoryListing.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Downloads.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Friends.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Hub.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── InfoPlist.strings │ │ │ ├── MainMenu.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── MainWindow.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── MessagePanel.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Preferences.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── PublicHubs.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SearchWindow.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── UKCrashReporter.strings │ │ │ └── Uploads.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ ├── Images │ │ │ ├── AdvancedItem.png │ │ │ ├── ButtonContextUp.tiff │ │ │ ├── IdentityItem.png │ │ │ ├── NetworkItem.png │ │ │ ├── ShareItem.png │ │ │ ├── Smileys │ │ │ │ ├── face-cool.png │ │ │ │ ├── face-crying.png │ │ │ │ ├── face-happy.png │ │ │ │ ├── face-sad.png │ │ │ │ ├── face-saint.png │ │ │ │ ├── face-silly.png │ │ │ │ ├── face-smile.png │ │ │ │ ├── face-wink.png │ │ │ │ ├── face10.png │ │ │ │ ├── face12.png │ │ │ │ ├── face13.png │ │ │ │ ├── face14.png │ │ │ │ ├── face16.png │ │ │ │ ├── face17.png │ │ │ │ ├── face19.png │ │ │ │ ├── face20.png │ │ │ │ ├── face5.png │ │ │ │ ├── face7.png │ │ │ │ └── face9.png │ │ │ ├── TableClose.tiff │ │ │ ├── TableClosePressed.tiff │ │ │ ├── TableFind.tiff │ │ │ ├── TableHub.tiff │ │ │ ├── ToolbarAdvancedSearch.tiff │ │ │ ├── ToolbarConnect.tif │ │ │ ├── ToolbarDrawer.tif │ │ │ ├── URLTextViewHand.tiff │ │ │ ├── bookmarks.png │ │ │ ├── chat.tiff │ │ │ ├── connect.png │ │ │ ├── download.png │ │ │ ├── error.png │ │ │ ├── highlight_blue.tiff │ │ │ ├── highlight_grey.tiff │ │ │ ├── idle.png │ │ │ ├── minus.png │ │ │ ├── op.png │ │ │ ├── plus.png │ │ │ ├── public_hubs.tiff │ │ │ ├── queue.png │ │ │ ├── shakespeer.icns │ │ │ ├── transfers.png │ │ │ ├── upload.png │ │ │ └── user.png │ │ ├── Info.plist.in │ │ ├── Makefile │ │ ├── debug-sphubd.sh │ │ └── np.scpt │ ├── SPApplicationController.h │ ├── SPApplicationController.m │ ├── SPBookmarkController.h │ ├── SPBookmarkController.m │ ├── SPChatWindowController.h │ ├── SPChatWindowController.m │ ├── SPClientBridge.h │ ├── SPClientBridge.m │ ├── SPFilelistController.h │ ├── SPFilelistController.m │ ├── SPFriendsController.h │ ├── SPFriendsController.m │ ├── SPGrowlBridge.h │ ├── SPGrowlBridge.m │ ├── SPHubController.h │ ├── SPHubController.m │ ├── SPKeychain.h │ ├── SPKeychain.m │ ├── SPLog.h │ ├── SPLog.m │ ├── SPMainWindowController-Toolbar.h │ ├── SPMainWindowController-Toolbar.m │ ├── SPMainWindowController.h │ ├── SPMainWindowController.m │ ├── SPMessagePanel.h │ ├── SPMessagePanel.m │ ├── SPNetworkPortController.h │ ├── SPNetworkPortController.m │ ├── SPNotificationNames.h │ ├── SPNotificationNames.m │ ├── SPOutlineView.h │ ├── SPOutlineView.m │ ├── SPPreferenceController.h │ ├── SPPreferenceController.m │ ├── SPProgressIndicatorCell.h │ ├── SPProgressIndicatorCell.m │ ├── SPPublicHubsController.h │ ├── SPPublicHubsController.m │ ├── SPQueueController.h │ ├── SPQueueController.m │ ├── SPQueueItem.h │ ├── SPQueueItem.m │ ├── SPSearchWindowController.h │ ├── SPSearchWindowController.m │ ├── SPSideBar.h │ ├── SPSideBar.m │ ├── SPTableView.h │ ├── SPTableView.m │ ├── SPTransferController.h │ ├── SPTransferController.m │ ├── SPTransformers.h │ ├── SPTransformers.m │ ├── SPUser.h │ ├── SPUser.m │ ├── SPUserCommand.h │ ├── SPUserCommand.m │ ├── SPUserDefaultKeys.h │ ├── SPUserDefaultKeys.m │ ├── ShakesPeer.xcodeproj │ │ └── project.pbxproj │ ├── SidebarCell.h │ ├── SidebarCell.m │ ├── UKCrashReporter.h │ ├── UKCrashReporter.m │ ├── URLMutableAttributedString.h │ ├── URLMutableAttributedString.m │ ├── URLTextView.h │ ├── URLTextView.m │ ├── main.m │ └── version.plist └── Makefile ├── spclient ├── Makefile ├── PublicHubList.config.bz2 ├── PublicHubList.xml.bz2 ├── filelist.c ├── filelist.h ├── filelist_dclst.c ├── filelist_xml.c ├── fl_test1.xml ├── fl_test2.DcLst ├── fl_test3-invalid-utf8.xml ├── gen_country_map.sh ├── hublist.c ├── hublist.h ├── hublist_test.c ├── list-en1-semic.txt ├── spclient.c ├── spclient.h ├── spclient_cmd.in └── ui_connect_test.c ├── sphubd ├── Makefile ├── client.c ├── client.h ├── client_cmd.c ├── client_download.c ├── client_post_test.sh ├── client_test.c ├── client_upload.c ├── dbenv.c ├── dbenv.h ├── extip.c ├── extip.h ├── extra_slots.c ├── extra_slots.h ├── globals.c ├── globals.h ├── hub.c ├── hub.h ├── hub_cmd.c ├── hub_list.c ├── hub_slots.c ├── notifications.in ├── queue.c ├── queue.h ├── queue_auto_search.c ├── queue_connect.c ├── queue_db.c ├── queue_directory.c ├── queue_match.c ├── queue_match.h ├── queue_stress_test.c ├── queue_tool.c ├── search_listener.c ├── search_listener.h ├── search_listener_test.c ├── share.c ├── share.h ├── share_bloom.c ├── share_save.c ├── share_save_test.c ├── share_save_test.sh ├── share_save_test_2.sh ├── share_scan.c ├── share_search.c ├── share_tool.c ├── share_tth.c ├── sphashd.c ├── sphashd.h ├── sphashd_client.c ├── sphashd_client.h ├── sphashd_client_cmd.in ├── sphashd_cmd.in ├── sphubd.c ├── sphubd.h ├── tth-upgrade.c ├── tthdb.c ├── tthdb.h ├── tthdb_list.c ├── ui.c ├── ui.h ├── ui_cmd.in ├── ui_list.c ├── ui_test.c ├── user.c ├── user.h └── user_test.c ├── splib ├── Makefile ├── args.c ├── args.h ├── base32.c ├── base32.h ├── base32_test.c ├── base64.c ├── base64.h ├── bloom.c ├── bloom.h ├── bloom_test.c ├── bz2.c ├── bz2.h ├── cmd_table.c ├── cmd_table.h ├── compat.h ├── dstring.c ├── dstring.h ├── dstring_url.c ├── dstring_url.h ├── encoding.c ├── encoding.h ├── fgetln.c ├── gen-unicode-tables.pl ├── gunibreak.h ├── gunichartables.h ├── gunicomp.h ├── gunidecomp.h ├── he3.c ├── he3.h ├── he3_post_test.sh ├── he3_test.c ├── iconv_string.c ├── iconv_string.h ├── io.c ├── io.h ├── log.c ├── log.h ├── mkpath.c ├── nfkc.c ├── nfkc.h ├── nmdc.c ├── nmdc.h ├── notification_center.c ├── notification_center.h ├── quote.c ├── quote.h ├── rx.c ├── rx.h ├── sboxes.c ├── sys_queue.h ├── sys_tree.h ├── tc_fail.xml ├── tc_tcpfail.xml ├── tc_tcpok_udpfail.xml ├── tc_tcpok_udpok.xml ├── test_connection.c ├── test_connection.h ├── tiger.c ├── tiger.h ├── tiger_test.c ├── tigertree.c ├── tigertree.h ├── tigertree_test.c ├── uhttp.c ├── uhttp.h ├── unicode-spec │ ├── BidiMirroring-3.2.0.txt │ ├── CaseFolding-3.2.0.txt │ ├── CompositionExclusions-3.2.0.txt │ ├── LineBreak-3.2.0.txt │ ├── SpecialCasing-3.2.0.txt │ ├── UnicodeData-3.2.0.txt │ └── rfc3454.txt ├── unit_test.h ├── util.c ├── util.h ├── util_test.c ├── xerr.c ├── xerr.h ├── xml.c ├── xml.h ├── xstr.c └── xstr.h ├── support ├── configure.sub ├── gen_cmd_header.awk ├── gen_cmd_source.awk ├── gen_notification_header.awk ├── gen_notification_source.awk ├── gen_send_header.awk ├── gen_send_source.awk └── mkdmg └── version.mk /AUTHORS: -------------------------------------------------------------------------------- 1 | Main author: 2 | Martin Hedenfalk 3 | 4 | Additional code: 5 | Jonathan Jansson 6 | Markus Amalthea Magnuson 7 | Håkan Waara 8 | Kevin Ballard 9 | Zintis Petersons 10 | 11 | Icons: 12 | Jakub "Jimmac" Steiner 13 | Markus Amalthea Magnuson 14 | Matt Ball (http://www.cocoadev.com/index.pl?RoyaltyFreeIcons) 15 | 16 | Tiger hash: 17 | Eli Bihama (http://www.cs.technion.ac.il/~biham) 18 | Ross Anderson (http://www.cl.cam.ac.uk/users/rja14) 19 | (see README.TIGER) 20 | 21 | Tiger tree hash and base32 code: 22 | The Bitzi Corporation (Public Domain) 23 | 24 | URLTextView: 25 | Aaron Sittig (http://www.blackholemedia.com/code) 26 | 27 | UKCrashReporter 28 | Copyright (c) 2006 M. Uli Kusterer -------------------------------------------------------------------------------- /DESIGN: -------------------------------------------------------------------------------- 1 | This is an attempt at describing the overall design choices made when creating 2 | ShakesPeer. 3 | 4 | Processes and inter-process communication 5 | ----------------------------------------- 6 | The ShakesPeer program is not really one program, but three. Those are sphubd, 7 | sphashd and the UI (user interface). Those three parts are run as separate 8 | processes. Inter-process communication between those three programs is achieved 9 | by using sockets. By default, unix sockets are used, which are local. Using 10 | unix sockets, all programs must be running on the same computer. Replacing the 11 | unix socket with a TCP socket enables the programs to run on different 12 | machines. In fact, sphubd already has that option when communcating with the 13 | UI. 14 | 15 | Portability 16 | ----------- 17 | The core servers (sphubd and sphashd) are written in C. Actually C99 with GCC 18 | extensions, so GCC is required for compilation. Otherwise they should be quite 19 | portable across Unix-like operating systems. At least Darwin (Mac OS X), Linux 20 | and OpenBSD are supported. 21 | 22 | There are currently two user interfaces: one command line client and the 23 | graphical user interface for Mac OS X. The command line client should be 24 | portable, but the OS X GUI requires Mac OS X. Creating different user 25 | interfaces for different platforms and/or GUI toolkits is made easier by having 26 | most of the functionality in the core servers. 27 | 28 | sphubd 29 | ------ 30 | The sphubd process is responsible for hub communication, peer communication 31 | (uploads/downloads), handling the download queue and shared files, listening 32 | for search results and communicating events to the UI. 33 | 34 | Persistence of the download queue and file hashes (TTHs) is achieved with 35 | simple text-based database logfiles. 36 | 37 | No threads are used. This is a very important design choice, and is what 38 | separates ShakesPeer from most other DC implementations. Preemptive threads 39 | are a PITA. 40 | 41 | FIXME: describe event loops ... 42 | 43 | sphashd 44 | ------- 45 | The sphashd process is responsible for hashing files. The reason this is a 46 | separate process from sphubd is to be able to decrease the priority level 47 | ("nice" value). Since hashing is a CPU intensive and quite lengthy task, 48 | reducing the priority of the sphashd process enables the user to actually use 49 | the computer for other tasks. Note that if no other programs use the CPU, 50 | sphashd will still use near 100% CPU, but will "step aside" as soon as another 51 | process is running. 52 | 53 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: all 2 | 3 | SUBDIRS = splib spclient sphubd cli gui 4 | 5 | TOP=. 6 | include common.mk 7 | 8 | all-local: config.mk version.h ${EXTERN_DEPENDS} 9 | check-local: 10 | clean-local: 11 | 12 | config.mk: configure ${TOP}/support/configure.sub 13 | ifeq ($(BUILD_PROFILE),release) 14 | @echo "forcing build of all external dependencies in release build" 15 | echo "ICONV_CONST=const" >config.mk 16 | else 17 | CFLAGS="$(EXTERN_CFLAGS)" sh ./configure 18 | endif 19 | 20 | REPO ?= shakespeer 21 | REPO_URL ?= http://shakespeer.googlecode.com/svn 22 | 23 | # default "tag" is the trunk 24 | TAG ?= trunk 25 | 26 | RELEASE_DIR=release-build-$(TAG) 27 | ifneq ($(TAG),trunk) 28 | SVN_PATH=tags/$(TAG) 29 | DIST_VERSION=$(TAG) 30 | else 31 | SVN_PATH=trunk 32 | DIST_VERSION:=snapshot-$(shell date +"%Y%m%d") 33 | endif 34 | 35 | current-release: 36 | $(MAKE) release TAG=$(VERSION) 37 | 38 | release-build: 39 | mkdir -p $(RELEASE_DIR) 40 | cd $(RELEASE_DIR) && \ 41 | if test -d $(REPO)/.svn; then \ 42 | cd $(REPO) && \ 43 | echo "updating sources..." && \ 44 | svn up; \ 45 | else \ 46 | echo "getting sources..." && \ 47 | svn checkout http://shakespeer.googlecode.com/svn/$(SVN_PATH) $(REPO) && \ 48 | cd $(REPO) ; \ 49 | fi && $(MAKE) all BUILD_PROFILE=release && $(MAKE) check BUILD_PROFILE=release 50 | 51 | release-package: 52 | @echo Creating disk image... 53 | cd $(RELEASE_DIR)/$(REPO) && \ 54 | /bin/sh support/mkdmg "$(DIST_VERSION)" . ../.. $(REPO) 55 | @echo Creating source tarball... 56 | svn export --force $(RELEASE_DIR)/$(REPO) $(PACKAGE)-$(DIST_VERSION) && \ 57 | tar cvf - $(PACKAGE)-$(DIST_VERSION) | gzip > $(PACKAGE)-$(DIST_VERSION).tar.gz && \ 58 | rm -rf $(PACKAGE)-$(DIST_VERSION) 59 | 60 | current-dmg: current-release release-package 61 | 62 | release: release-build release-package 63 | 64 | dist: 65 | svn export --force $(PACKAGE)-$(DIST_VERSION) && \ 66 | tar -czf $(PACKAGE)-$(DIST_VERSION).tar.gz $(PACKAGE)-$(DIST_VERSION) && \ 67 | rm -rf $(PACKAGE)-$(DIST_VERSION) 68 | 69 | version.h: version.mk 70 | echo '#ifndef _version_h_' > version.h 71 | echo '#define _version_h_' >> version.h 72 | sed -n 's/\([^=]*\)=\(.*\)/#define \1 "\2"/p' version.mk >> version.h 73 | echo '#endif' >> version.h 74 | 75 | cli: 76 | $(MAKE) WANT_CLI=yes 77 | .PHONY: cli 78 | 79 | help: 80 | @echo "Availalable make targets:" 81 | @echo "make - builds the local tree" 82 | @echo "make release - builds a snapshot release (dmg and source tar.gz) from trunk" 83 | @echo "make release TAG=X.X.X - builds a release from the specified tag" 84 | @echo "make current-release - builds a release from the current tag from version.mk" 85 | @echo "make cli - builds CLI in the local tree" 86 | 87 | -------------------------------------------------------------------------------- /README.TIGER: -------------------------------------------------------------------------------- 1 | The reference tiger hash implementation was downloaded from http://www.cs.technion.ac.il/~biham/Reports/Tiger/. 2 | 3 | Authors: Eli Bihama (http://www.cs.technion.ac.il/~biham/) 4 | Ross Anderson (http://www.cl.cam.ac.uk/users/rja14/) 5 | 6 | License: (or lack of) 7 | 8 | Tiger has no usage restrictions nor patents. It can be used freely, with the 9 | reference implementation, with other implementations or with a modification to 10 | the reference implementation (as long as it still implements Tiger). We only 11 | ask you to let us know about your implementation and to cite the origin of 12 | Tiger and of the reference implementation. 13 | 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Shakespeer 2 | ========== 3 | 4 | A Direct Connect Client for Multiple Platforms 5 | -------------------------------------------------------------------------------- /cli/Makefile: -------------------------------------------------------------------------------- 1 | TOP=.. 2 | include ${TOP}/common.mk 3 | 4 | ifeq (${WANT_CLI},yes) 5 | all-local: .tecla.build confuse/libconfuse.a shakespeer 6 | else 7 | all-local: 8 | endif 9 | 10 | CFLAGS += -Ilibtecla/tecla-local-install/include -Iconfuse 11 | LDFLAGS += -Lconfuse 12 | LIBS += -lconfuse libtecla/tecla-local-install/lib/libtecla.a -lcurses 13 | 14 | shakespeer_SOURCES = cmd.c ctx-filelist.c ctx-hub.c \ 15 | ctx-hublist.c ctx-main.c \ 16 | ctx-queue.c shakespeer.c cfg.c 17 | 18 | confuse/libconfuse.a: 19 | ${MAKE} -C confuse libconfuse.a 20 | 21 | LIBTECLA_VERSION=1.6.1 22 | LIBTECLA_URL=http://www.astro.caltech.edu/~mcs/tecla/libtecla-${LIBTECLA_VERSION}.tar.gz 23 | libtecla-${LIBTECLA_VERSION}.tar.gz: 24 | cp ../libtecla-${LIBTECLA_VERSION}.tar.gz . || \ 25 | cp ../../libtecla-${LIBTECLA_VERSION}.tar.gz . || \ 26 | cp ../../../libtecla-${LIBTECLA_VERSION}.tar.gz . || \ 27 | curl ${LIBTECLA_URL} -o libtecla-${LIBTECLA_VERSION}.tar.gz || \ 28 | wget ${LIBTECLA_URL} || \ 29 | fetch ${LIBTECLA_URL} || \ 30 | ftp ${LIBTECLA_URL} 31 | 32 | .tecla.build: tecla-display_message.patch libtecla-${LIBTECLA_VERSION}.tar.gz 33 | rm -rf libtecla && tar zxvf libtecla-${LIBTECLA_VERSION}.tar.gz && \ 34 | cd libtecla && patch -p1 < ../tecla-display_message.patch && \ 35 | ./configure --without-man-pages \ 36 | --disable-dependency-tracking \ 37 | --prefix=`pwd`/tecla-local-install && \ 38 | $(MAKE) install_lib install_inc && cd .. && \ 39 | touch .tecla.build && \ 40 | ranlib libtecla/tecla-local-install/lib/libtecla.a 41 | 42 | shakespeer_OBJS=${shakespeer_SOURCES:.c=.o} 43 | shakespeer: ${shakespeer_OBJS} \ 44 | ${TOP}/spclient/libspclient.a \ 45 | ${TOP}/splib/libsplib.a 46 | ${LINK} 47 | 48 | clean-local: 49 | rm -f shakespeer *.o 50 | -${MAKE} -C libtecla clean 51 | 52 | distclean: clean 53 | rm -rf .tecla.build libtecla 54 | 55 | 56 | -------------------------------------------------------------------------------- /cli/cfg.h: -------------------------------------------------------------------------------- 1 | #ifndef __cfg_h_ 2 | #define __cfg_h_ 3 | 4 | #include 5 | 6 | cfg_t *parse_config(void); 7 | 8 | #endif 9 | 10 | -------------------------------------------------------------------------------- /cli/confuse/Makefile: -------------------------------------------------------------------------------- 1 | TOP=../.. 2 | include ${TOP}/common.mk 3 | 4 | all-local: libconfuse.a 5 | 6 | CFLAGS+=-DPACKAGE_VERSION="\"2.5\"" -DPACKAGE_STRING="\"libConfuse_2.5\"" 7 | CFLAGS+=-DHAVE_STRING_H -DHAVE_STDLIB_H -DHAVE_UNISTD_H -DHAVE_STRDUP -DHAVE_STRCASECMP 8 | 9 | SOURCES=confuse.c lexer.c 10 | 11 | libconfuse.a: ${OBJS} 12 | rm -f $@ 13 | ar cru $@ $^ 14 | ranlib $@ 15 | 16 | lexer.c: lexer.l 17 | lex -Pcfg_yy -o$@ $< 18 | 19 | clean-local: 20 | rm -f ${OBJS} libconfuse.a lexer.c *~ 21 | 22 | -------------------------------------------------------------------------------- /cli/tecla-display_message.patch: -------------------------------------------------------------------------------- 1 | --- libtecla/getline.c 2004-10-31 21:02:11.000000000 +0000 2 | +++ libtecla.fixed/getline.c 2006-03-30 10:58:59.000000000 +0000 3 | @@ -66,6 +66,9 @@ 4 | #include 5 | #elif defined(HAVE_NCURSES_CURSES_H) 6 | #include 7 | +#else 8 | +# undef USE_TERMINFO 9 | +# undef USE_TERMCAP 10 | #endif 11 | /* 12 | * Include term.h where available. 13 | @@ -11348,6 +11351,30 @@ 14 | return status; 15 | } 16 | 17 | +int gl_display_message(GetLine *gl, const char *message) 18 | +{ 19 | + int waserr = 0; /* True after an error */ 20 | +/* 21 | + * Only display output when echoing is on. 22 | + */ 23 | + if(gl->echo) { 24 | + gl_erase_line(gl); 25 | +/* 26 | + * Display the list of provided messages. 27 | + */ 28 | + waserr = gl_print_raw_string(gl, 1, message, -1); 29 | +/* 30 | + * Start a newline. 31 | + */ 32 | + waserr = waserr || gl_print_raw_string(gl, 1, "\n\r", -1); 33 | +/* 34 | + * Arrange for the input line to be redrawn. 35 | + */ 36 | + gl_queue_redisplay(gl); 37 | + }; 38 | + return waserr; 39 | +} 40 | + 41 | /*....................................................................... 42 | * Block all of the signals that we are currently trapping. 43 | * 44 | --- libtecla-orig/libtecla.h Wed May 12 08:01:30 2004 45 | +++ libtecla/libtecla.h Fri Apr 29 13:21:24 2005 46 | @@ -1322,6 +1322,7 @@ 47 | const char *suffix, int fill_char, int def_width, 48 | int start, const char *string); 49 | 50 | +int gl_display_message(GetLine *gl, const char *message); 51 | 52 | /* 53 | * Enumerate the I/O modes supported by gl_get_line(). 54 | diff -u libtecla-orig/libtecla.map libtecla/libtecla.map 55 | --- libtecla-orig/libtecla.map Thu Mar 25 10:42:36 2004 56 | +++ libtecla/libtecla.map Fri Apr 29 13:48:51 2005 57 | @@ -152,4 +152,5 @@ 58 | gl_automatic_history; 59 | gl_query_char; 60 | gl_read_char; 61 | + gl_display_message; 62 | } tecla_l.5; 63 | -------------------------------------------------------------------------------- /configure: -------------------------------------------------------------------------------- 1 | . ./support/configure.sub 2 | 3 | check_c_compiler || exit 1 4 | 5 | search_libs bz2 BZ2_bzWriteOpen -lbz2 && search_header bz2 bzlib.h 6 | search_libs expat XML_SetElementHandler -lexpat && search_header expat expat.h 7 | search_libs libevent evhttp_connection_get_peer -levent && 8 | search_header libevent event.h '#include 9 | #include ' 10 | search_libs iconv iconv_open || search_libs iconv iconv_open -liconv 11 | check_iconv_constness 12 | check_function fgetln 13 | 14 | true 15 | 16 | -------------------------------------------------------------------------------- /gui/Aqua/MHSysTree.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2006 Martin Hedenfalk 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | */ 25 | 26 | #include "sys_tree.h" 27 | #import 28 | 29 | struct rb_entry 30 | { 31 | RB_ENTRY(rb_entry) entry; 32 | id obj; 33 | }; 34 | 35 | /* This is an objective-c wrapper around sys_tree. sys_tree is a red-black tree 36 | implementation. It invokes compare: on all objects you insert into it, to 37 | figure out where to sort your objects. */ 38 | 39 | @interface MHSysTree : NSObject 40 | { 41 | unsigned nitems; 42 | RB_HEAD(id_tree, rb_entry) root; 43 | } 44 | 45 | int id_cmp(struct rb_entry *a, struct rb_entry *b); 46 | 47 | RB_PROTOTYPE(id_tree, rb_entry, entry, id_cmp); 48 | 49 | - (id)init; 50 | 51 | - (void)addObject:(id)anObject; 52 | - (void)addObjectsFromArray:(NSArray *)anArray; 53 | - (void)removeObject:(id)anObject; 54 | - (void)removeAllObjects; 55 | 56 | - (unsigned)count; 57 | - (BOOL)containsObject:(id)anObject; 58 | - (id)find:(id)anObject; 59 | - (struct rb_entry *)lookup:(id)anObject; 60 | 61 | - (NSArray *)allObjects; 62 | 63 | - (void)removeEntry:(struct rb_entry *)anEntry; 64 | 65 | @end 66 | 67 | /* vim: ft=objc 68 | */ 69 | -------------------------------------------------------------------------------- /gui/Aqua/MenuButton.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * MenuButton.h 3 | * Fire 4 | * 5 | * Created by Colter Reed on Thu Nov 08 2001. 6 | * Copyright (c) 2001-2003 Fire Development Team and/or epicware, Inc. 7 | * All rights reserved. 8 | * 9 | * This program is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with this program; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #import 25 | 26 | @interface MenuButton : NSButton 27 | { 28 | NSTimer *clickHoldTimer; 29 | IBOutlet NSMenu *menu; 30 | BOOL menuDidDisplay; 31 | NSTimeInterval menuDelay; 32 | NSToolbarItem* toolbarItem; 33 | NSControlSize _controlSize; 34 | NSImage* _originalImage; 35 | } 36 | 37 | - (void)mouseDown:(NSEvent *)theEvent; 38 | - (void)mouseUp:(NSEvent *)theEvent; 39 | 40 | - (void)setMenuDelay:(NSTimeInterval)aDelay; 41 | - (NSTimeInterval)menuDelay; 42 | 43 | - (void)setMenu:(NSMenu *)aMenu; 44 | - (NSMenu *)menu; 45 | 46 | - (void)displayMenu; 47 | 48 | - (void)setControlSize:(NSControlSize)size; 49 | - (void)setToolbarItem:(NSToolbarItem*)item; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /gui/Aqua/NSMenu-MassRemovalAdditions.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 Markus Amalthea Magnuson 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | * 21 | * Part of this code is from Adium (AIMenuAdditions.h) 22 | * Copyright (C) 2001-2005, Adam Iser (adamiser@mac.com | http://www.adiumx.com) 23 | */ 24 | 25 | #import 26 | 27 | @interface NSMenu (MassRemovalAdditions) 28 | 29 | - (void)removeAllItems; 30 | - (void)removeAllItemsButFirst; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /gui/Aqua/NSMenu-MassRemovalAdditions.m: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 Markus Amalthea Magnuson 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | * 21 | * Part of this code is from Adium (AIMenuAdditions.m) 22 | * Copyright (C) 2001-2005, Adam Iser (adamiser@mac.com | http://www.adiumx.com) 23 | */ 24 | 25 | #import "NSMenu-MassRemovalAdditions.h" 26 | 27 | @implementation NSMenu (ItemCreationAdditions) 28 | 29 | - (void)removeAllItems 30 | { 31 | int count = [self numberOfItems]; 32 | while (count--) { 33 | [self removeItemAtIndex:0]; 34 | } 35 | } 36 | 37 | - (void)removeAllItemsButFirst 38 | { 39 | int count = [self numberOfItems]; 40 | if (count > 1) { 41 | while (--count) { 42 | [self removeItemAtIndex:1]; 43 | } 44 | } 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /gui/Aqua/NSMenu-UserCommandAdditions.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * Copyright 2005 Martin Hedenfalk 3 | * 4 | * This file is part of ShakesPeer. 5 | * 6 | * ShakesPeer is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ShakesPeer is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with ShakesPeer; if not, write to the Free Software 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 | */ 20 | 21 | #import 22 | 23 | @class SPUserCommand; 24 | 25 | @interface NSMenu (UserCommandAdditions) 26 | - (void)addUserCommand:(SPUserCommand *)userCommand action:(SEL)anAction 27 | target:(id)aTarget staticEntries:(int)staticEntries; 28 | @end 29 | 30 | -------------------------------------------------------------------------------- /gui/Aqua/NSMutableAttributedString-SmileyAdditions.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * Copyright 2004 Martin Hedenfalk 3 | * 4 | * This file is part of ShakesPeer. 5 | * 6 | * ShakesPeer is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ShakesPeer is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with ShakesPeer; if not, write to the Free Software 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 | */ 20 | 21 | #import 22 | 23 | @interface NSMutableAttributedString (SmileyAdditions) 24 | 25 | - (void)replaceSmilies; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /gui/Aqua/NSStringExtensions.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc fdm=indent foldnestmax=1 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface NSString (ShakesPeerExtensions) 25 | 26 | - (NSComparisonResult)numericalCompare:(NSString *)aString; 27 | - (NSString *)stringByDeletingLastWindowsPathComponent; 28 | - (NSString *)lastWindowsPathComponent; 29 | - (int)indexOfCharacter:(unichar)character fromIndex:(int)startIndex; 30 | - (int)occurencesOfString:(NSString *)aString; 31 | - (uint64_t)unsignedLongLongValue; 32 | - (NSAttributedString *)truncatedString:(NSLineBreakMode)mode; 33 | - (NSString *)stringWithoutWhitespace; 34 | + (NSString *)stringWithNowPlayingMessage; 35 | 36 | @end 37 | 38 | @interface NSMutableAttributedString (ShakesPeerExtensions) 39 | 40 | - (NSComparisonResult)compare:(NSMutableAttributedString *)aString; 41 | 42 | @end 43 | 44 | -------------------------------------------------------------------------------- /gui/Aqua/NSTextView-ChatFormattingAdditions.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 Kevan Carstensen 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | * 21 | */ 22 | 23 | #import 24 | 25 | 26 | @interface NSTextView (ChatFormattingAdditions) 27 | 28 | // Stuff gets added to the NSTextView through this. 29 | - (void)addChatMessage:(NSMutableAttributedString *)aString; 30 | 31 | // Helpers for certain types of messages: they all eventually end up invoking 32 | // addChatMessage:, but they do a bit of formatting on the message first. 33 | - (void)addStatusMessage:(NSString *)aMessage; 34 | 35 | - (void)addPublicMessage:(NSString *)aMessage 36 | fromNick:(NSString *)aNick 37 | myNick:(NSString *)myNick; 38 | 39 | - (void)clear; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural 5 | 6 | \f0\b\fs24 \cf0 Main author 7 | \b0 \ 8 | Martin Hedenfalk\ 9 | \ 10 | 11 | \b Additional code 12 | \b0 \ 13 | Jonathan Jansson\ 14 | Markus Amalthea Magnuson\ 15 | H\'e5kan Waara\ 16 | Kevin Ballard\ 17 | Zintis Petersons\ 18 | Kevan Carstensen\ 19 | \ 20 | 21 | \b Icons 22 | \b0 \ 23 | Jakub \'93Jimmac\'94 Steiner\ 24 | Markus Amalthea Magnuson\ 25 | Matt Ball (http://www.cocoadev.com/index.pl?RoyaltyFreeIcons)\ 26 | \ 27 | 28 | \b Tiger hash 29 | \b0 \ 30 | Eli Bihama (http://www.cs.technion.ac.il/~biham)\ 31 | Ross Anderson (http://www.cl.cam.ac.uk/users/rja14)\ 32 | \ 33 | 34 | \b Tiger tree hash and base32 code 35 | \b0 \ 36 | The Bitzi Corporation (Public Domain)\ 37 | \ 38 | 39 | \b NAT-PMP and UPnP library support\ 40 | 41 | \b0 Thomas Bernard (http://miniupnp.free.fr)\ 42 | TCMPortMapper framework (http://code.google.com/p/tcmportmapper/)\ 43 | \ 44 | 45 | \b URLTextView 46 | \b0 \ 47 | Aaron Sittig (http://www.blackholemedia.com/code)\ 48 | \ 49 | 50 | \b UKCrashReporter 51 | \b0 \ 52 | Copyright (c) 2006 M. Uli Kusterer} -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Bookmarks.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 4 | {CLASS = NSMenu; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 5 | {CLASS = NSObject; LANGUAGE = ObjC; }, 6 | { 7 | ACTIONS = { 8 | connectToSelectedBookmark = id; 9 | duplicateBookmark = id; 10 | editBookmarkCancel = id; 11 | editBookmarkExecute = id; 12 | editBookmarkShow = id; 13 | newBookmarkCancel = id; 14 | newBookmarkExecute = id; 15 | newBookmarkShow = id; 16 | removeBookmarkShow = id; 17 | setEncoding = id; 18 | }; 19 | CLASS = SPBookmarkController; 20 | LANGUAGE = ObjC; 21 | OUTLETS = { 22 | arrayController = NSArrayController; 23 | bookmarkMenu = NSMenu; 24 | bookmarkTable = NSTableView; 25 | bookmarkView = NSView; 26 | editBookmark = NSWindow; 27 | editBookmarkAddress = NSTextField; 28 | editBookmarkAutoconnect = NSButton; 29 | editBookmarkDescription = NSTextField; 30 | editBookmarkEncoding = NSPopUpButton; 31 | editBookmarkName = NSTextField; 32 | editBookmarkNickname = NSTextField; 33 | editBookmarkPassword = NSTextField; 34 | newBookmark = NSWindow; 35 | newBookmarkAddress = NSTextField; 36 | newBookmarkAutoconnect = NSButton; 37 | newBookmarkDescription = NSTextField; 38 | newBookmarkEncoding = NSPopUpButton; 39 | newBookmarkName = NSTextField; 40 | newBookmarkNickname = NSTextField; 41 | newBookmarkPassword = NSTextField; 42 | }; 43 | SUPERCLASS = NSObject; 44 | }, 45 | {CLASS = SPTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } 46 | ); 47 | IBVersion = 1; 48 | } -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Bookmarks.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 12 87 356 286 0 0 1024 746 7 | IBEditorPositions 8 | 9 | 5 10 | 223 373 578 297 0 0 1024 746 11 | 12 | IBFramework Version 13 | 489.0 14 | IBLastKnownRelativeProjectPath 15 | ../../ShakesPeer.xcodeproj 16 | IBOldestOS 17 | 5 18 | IBSystem Version 19 | 8S165 20 | targetFramework 21 | IBCocoaFramework 22 | 23 | 24 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Bookmarks.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Bookmarks.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/ChatWindow.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 4 | { 5 | ACTIONS = {sendMessage = id; }; 6 | CLASS = SPChatWindowController; 7 | LANGUAGE = ObjC; 8 | OUTLETS = {chatTextView = NSTextView; chatView = NSView; inputField = NSTextField; }; 9 | SUPERCLASS = NSObject; 10 | }, 11 | {CLASS = URLTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, 12 | {CLASS = XBorderedView; LANGUAGE = ObjC; SUPERCLASS = NSView; } 13 | ); 14 | IBVersion = 1; 15 | } -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/ChatWindow.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 31 58 356 240 0 0 1024 746 7 | IBEditorPositions 8 | 9 | 14 10 | 342 408 340 211 0 0 1024 746 11 | 12 | IBFramework Version 13 | 446.1 14 | IBSystem Version 15 | 8L127 16 | 17 | 18 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/ChatWindow.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/ChatWindow.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/DirectoryListing.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | ACTIONS 9 | 10 | copyMagnet 11 | id 12 | downloadSelectedItems 13 | id 14 | filter 15 | id 16 | onDoubleClick 17 | id 18 | refresh 19 | id 20 | toggleColumn 21 | id 22 | 23 | CLASS 24 | SPFilelistController 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | columnsMenu 30 | NSMenu 31 | filelist 32 | SPOutlineView 33 | filelistView 34 | NSView 35 | filterField 36 | NSSearchField 37 | flatButton 38 | NSButton 39 | magnetMenu 40 | NSMenuItem 41 | tcFilename 42 | NSTableColumn 43 | tcSize 44 | NSTableColumn 45 | tcTTH 46 | NSTableColumn 47 | 48 | SUPERCLASS 49 | NSObject 50 | 51 | 52 | CLASS 53 | NSMenu 54 | LANGUAGE 55 | ObjC 56 | SUPERCLASS 57 | NSObject 58 | 59 | 60 | ACTIONS 61 | 62 | 63 | id 64 | 65 | CLASS 66 | FirstResponder 67 | LANGUAGE 68 | ObjC 69 | SUPERCLASS 70 | NSObject 71 | 72 | 73 | CLASS 74 | NSObject 75 | LANGUAGE 76 | ObjC 77 | 78 | 79 | CLASS 80 | SPOutlineView 81 | LANGUAGE 82 | ObjC 83 | SUPERCLASS 84 | NSOutlineView 85 | 86 | 87 | IBVersion 88 | 1 89 | 90 | 91 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/DirectoryListing.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 649 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9E17 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/DirectoryListing.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/DirectoryListing.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Downloads.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 649 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9F33 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Downloads.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Downloads.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Friends.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | NSMenu 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSObject 14 | 15 | 16 | CLASS 17 | FirstResponder 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSObject 22 | 23 | 24 | CLASS 25 | NSObject 26 | LANGUAGE 27 | ObjC 28 | 29 | 30 | ACTIONS 31 | 32 | browseUser 33 | id 34 | editFriendCancel 35 | id 36 | editFriendExecute 37 | id 38 | editFriendShow 39 | id 40 | newFriendCancel 41 | id 42 | newFriendExecute 43 | id 44 | newFriendShow 45 | id 46 | removeFriendShow 47 | id 48 | sendPrivateMessage 49 | id 50 | 51 | CLASS 52 | SPFriendsController 53 | LANGUAGE 54 | ObjC 55 | OUTLETS 56 | 57 | editFriendCommentsField 58 | NSTextField 59 | editFriendNameField 60 | NSTextField 61 | editFriendSheet 62 | NSWindow 63 | friendMenu 64 | NSMenu 65 | friendsController 66 | NSArrayController 67 | friendsTable 68 | NSTableView 69 | friendsView 70 | NSView 71 | newFriendCommentsField 72 | NSTextField 73 | newFriendNameField 74 | NSTextField 75 | newFriendSheet 76 | NSWindow 77 | 78 | SUPERCLASS 79 | NSObject 80 | 81 | 82 | IBVersion 83 | 1 84 | 85 | 86 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Friends.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 644 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 4 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9C31 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Friends.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Friends.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Hub.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 644 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 118 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Hub.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Hub.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MainMenu.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 649 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9F33 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MainMenu.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/MainMenu.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MainWindow.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 649 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9F33 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MainWindow.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/MainWindow.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MessagePanel.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 4 | { 5 | CLASS = SPMessagePanel; 6 | LANGUAGE = ObjC; 7 | OUTLETS = {msgPanel = NSPanel; textView = NSTextView; }; 8 | SUPERCLASS = NSWindowController; 9 | } 10 | ); 11 | IBVersion = 1; 12 | } -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MessagePanel.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 69 58 356 240 0 0 1024 746 7 | IBFramework Version 8 | 446.1 9 | IBSystem Version 10 | 8L127 11 | 12 | 13 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/MessagePanel.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/MessagePanel.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Preferences.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 644 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 4 11 | IBOpenObjects 12 | 13 | 58 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Preferences.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Preferences.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/PublicHubs.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | { 4 | CLASS = DCHubArrayController; 5 | LANGUAGE = ObjC; 6 | SUPERCLASS = NSArrayController; 7 | }, 8 | { 9 | ACTIONS = {connect = id; refresh = id; tableDoubleActionConnect = id; }; 10 | CLASS = DCPublicHubsController; 11 | LANGUAGE = ObjC; 12 | OUTLETS = { 13 | addressField = NSTextField; 14 | arrayController = FilteringArrayController; 15 | hubListView = NSView; 16 | hubTable = NSTableView; 17 | refreshButton = NSButton; 18 | }; 19 | SUPERCLASS = NSObject; 20 | }, 21 | { 22 | ACTIONS = {search = id; }; 23 | CLASS = FilteringArrayController; 24 | LANGUAGE = ObjC; 25 | SUPERCLASS = NSArrayController; 26 | }, 27 | {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 28 | { 29 | ACTIONS = { 30 | addHubsToBookmarks = id; 31 | connect = id; 32 | refresh = id; 33 | tableDoubleActionConnect = id; 34 | toggleColumn = id; 35 | }; 36 | CLASS = SPPublicHubsController; 37 | LANGUAGE = ObjC; 38 | OUTLETS = { 39 | arrayController = FilteringArrayController; 40 | contextMenu = NSMenu; 41 | hubListView = NSView; 42 | hubTable = NSTableView; 43 | refreshButton = NSButton; 44 | }; 45 | SUPERCLASS = NSObject; 46 | }, 47 | {CLASS = SPTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, 48 | {CLASS = XBorderedView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 49 | {CLASS = XTextField; LANGUAGE = ObjC; SUPERCLASS = NSTextField; } 50 | ); 51 | IBVersion = 1; 52 | } -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/PublicHubs.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 412 85 382 268 0 0 1280 778 7 | IBEditorPositions 8 | 9 | 268 10 | 345 309 162 49 0 0 1024 746 11 | 5 12 | 330 316 620 443 0 0 1280 778 13 | 14 | IBFramework Version 15 | 446.1 16 | IBOpenObjects 17 | 18 | 5 19 | 20 | IBSystem Version 21 | 8N1150 22 | 23 | 24 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/PublicHubs.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/PublicHubs.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/SearchWindow.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | { 4 | ACTIONS = {search = id; }; 5 | CLASS = FilteringArrayController; 6 | LANGUAGE = ObjC; 7 | SUPERCLASS = NSArrayController; 8 | }, 9 | {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 10 | {CLASS = SPOutlineView; LANGUAGE = ObjC; SUPERCLASS = NSOutlineView; }, 11 | { 12 | ACTIONS = { 13 | autoMatchFilelist = id; 14 | copyTTH = id; 15 | doSearch = id; 16 | downloadFile = id; 17 | downloadParentDirectory = id; 18 | filter = id; 19 | getFilelist = id; 20 | relaunchSearch = id; 21 | startPrivateChat = id; 22 | toggleColumn = id; 23 | }; 24 | CLASS = SPSearchWindowController; 25 | LANGUAGE = ObjC; 26 | OUTLETS = { 27 | columnsMenu = NSMenu; 28 | contextMenu = NSMenu; 29 | menuItemCopyTTH = NSMenuItem; 30 | requireOpenSlotButton = NSButton; 31 | requireTTHButton = NSButton; 32 | searchField = NSSearchField; 33 | searchResultTable = SPOutlineView; 34 | statusField = NSTextField; 35 | tcHub = NSTableColumn; 36 | tcNick = NSTableColumn; 37 | tcPath = NSTableColumn; 38 | tcSize = NSTableColumn; 39 | tcSlots = NSTableColumn; 40 | tcSpeed = NSTableColumn; 41 | tcTTH = NSTableColumn; 42 | }; 43 | SUPERCLASS = NSWindowController; 44 | }, 45 | {CLASS = SPTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, 46 | {CLASS = XBorderedView; LANGUAGE = ObjC; SUPERCLASS = NSView; } 47 | ); 48 | IBVersion = 1; 49 | } -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/SearchWindow.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 13 58 356 240 0 0 1024 746 7 | IBEditorPositions 8 | 9 | 352 10 | 437 268 77 163 0 0 1024 746 11 | 82 12 | 361 268 245 156 0 0 1024 746 13 | 14 | IBFramework Version 15 | 446.1 16 | IBSystem Version 17 | 8L127 18 | 19 | 20 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/SearchWindow.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/SearchWindow.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/UKCrashReporter.strings: -------------------------------------------------------------------------------- 1 | /* Title of alert window when we had a crash: */ 2 | "WANT_TO_SEND_CRASH_TITLE" = "Do you want to report the last crash?"; 3 | 4 | /* Message for alert window when we had a crash: */ 5 | "WANT_TO_SEND_CRASH" = "The application %@ has recently crashed. To help improve it, you can send the system's crash log to the programmers working on this program, so they can use the information in it to fix the bug. Do you want to send the log?"; 6 | 7 | /* Name of OK button in alert window: */ 8 | "WANT_TO_SEND_CRASH_SEND" = "Send"; 9 | 10 | /* Name of Cancel button in alert window: */ 11 | "WANT_TO_SEND_CRASH_DONT_SEND" = "Don't Send"; 12 | 13 | /* URL of CGI script which we'll send the log to: */ 14 | "CRASH_REPORT_CGI_URL" = "http://bzero.se/shakespeercrash.php"; 15 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Uploads.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 649 7 | IBLastKnownRelativeProjectPath 8 | ../../ShakesPeer.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9F33 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/English.lproj/Uploads.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/English.lproj/Uploads.nib/keyedobjects.nib -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/AdvancedItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/AdvancedItem.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/ButtonContextUp.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/ButtonContextUp.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/IdentityItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/IdentityItem.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/NetworkItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/NetworkItem.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/ShareItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/ShareItem.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-cool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-cool.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-crying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-crying.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-happy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-happy.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-sad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-sad.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-saint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-saint.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-silly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-silly.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-smile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-smile.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face-wink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face-wink.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face10.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face12.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face13.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face14.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face16.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face17.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face19.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face20.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face5.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face7.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/Smileys/face9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/Smileys/face9.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/TableClose.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/TableClose.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/TableClosePressed.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/TableClosePressed.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/TableFind.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/TableFind.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/TableHub.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/TableHub.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/ToolbarAdvancedSearch.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/ToolbarAdvancedSearch.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/ToolbarConnect.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/ToolbarConnect.tif -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/ToolbarDrawer.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/ToolbarDrawer.tif -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/URLTextViewHand.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/URLTextViewHand.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/bookmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/bookmarks.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/chat.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/chat.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/connect.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/download.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/error.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/highlight_blue.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/highlight_blue.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/highlight_grey.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/highlight_grey.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/idle.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/minus.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/op.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/op.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/plus.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/public_hubs.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/public_hubs.tiff -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/queue.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/shakespeer.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/shakespeer.icns -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/transfers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/transfers.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/upload.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/Resources/Images/user.png -------------------------------------------------------------------------------- /gui/Aqua/Resources/Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ShakesPeer 9 | CFBundleIconFile 10 | shakespeer 11 | CFBundleIdentifier 12 | se.hedenfalk.shakespeer 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | APPL 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | @VERSION@ 21 | NSMainNibFile 22 | MainMenu 23 | NSPrincipalClass 24 | NSApplication 25 | CFBundleURLTypes 26 | 27 | 28 | CFBundleURLName 29 | Direct Connect Hub 30 | CFBundleURLSchemes 31 | 32 | dchub 33 | 34 | 35 | 36 | CFBundleURLName 37 | Magnet Link 38 | CFBundleURLSchemes 39 | 40 | magnet 41 | 42 | 43 | 44 | SUFeedURL 45 | http://shakespeer.googlecode.com/svn/appcast.xml 46 | 47 | 48 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/Makefile: -------------------------------------------------------------------------------- 1 | TOP=../../.. 2 | include ${TOP}/common.mk 3 | 4 | all-local: Info.plist 5 | 6 | Info.plist: Info.plist.in ${TOP}/version.mk 7 | sed -e "s/@VERSION@/${VERSION}/" \ 8 | -e "s/@PACKAGE@/${PACKAGE}/" \ 9 | -e "s/[$$](EXECUTABLE_NAME)/${PACKAGE}/" \ 10 | $< > $@ 11 | 12 | clean-local: 13 | 14 | -------------------------------------------------------------------------------- /gui/Aqua/Resources/debug-sphubd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # this script must be executed with an absolute path 4 | dir=`dirname $0` 5 | sphubd=$dir/sphubd 6 | 7 | args="" 8 | while test -n "$1"; do 9 | args=$args" '"$1"'" 10 | shift 11 | done 12 | 13 | cat >/tmp/gdb-sphubd.tmp < /tmp/gdb-start-sphubd.tmp < 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | #import "SPSideBar.h" 24 | 25 | @interface SPChatWindowController : NSObject 26 | { 27 | IBOutlet NSTextView *chatTextView; 28 | IBOutlet NSView *chatView; 29 | IBOutlet NSTextField *inputField; 30 | 31 | NSString *hubAddress; 32 | NSString *nick; 33 | NSString *myNick; 34 | NSString *hubname; 35 | BOOL highlighted; 36 | BOOL firstMessage; 37 | } 38 | 39 | - (id)initWithRemoteNick:(NSString *)remoteNick hub:(NSString *)aHubAddress myNick:(NSString *)aMyNick; 40 | 41 | - (IBAction)sendMessage:(id)sender; 42 | - (void)focusChatInput; 43 | 44 | - (NSImage *)image; 45 | - (NSString *)title; 46 | - (void)unbindControllers; 47 | 48 | @end 49 | 50 | -------------------------------------------------------------------------------- /gui/Aqua/SPClientBridge.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | void sp_callback(CFSocketRef s, CFSocketCallBackType callbackType, 23 | CFDataRef address, const void *data, void *info); 24 | void sendNotification(NSString *notificationName, NSString *key1, id arg1, ...); 25 | void sp_register_callbacks(sp_t *sp); 26 | -------------------------------------------------------------------------------- /gui/Aqua/SPFilelistController.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | #import "SPSideBar.h" 24 | #include "spclient.h" 25 | 26 | @class SPOutlineView; 27 | 28 | @interface SPFilelistController : NSObject 29 | { 30 | IBOutlet NSView *filelistView; 31 | IBOutlet SPOutlineView *filelist; 32 | IBOutlet NSSearchField *filterField; 33 | IBOutlet NSButton *flatButton; 34 | 35 | IBOutlet NSMenu *columnsMenu; 36 | IBOutlet NSMenuItem *magnetMenu; 37 | IBOutlet NSTableColumn *tcSize; 38 | IBOutlet NSTableColumn *tcTTH; 39 | IBOutlet NSTableColumn *tcFilename; 40 | 41 | NSMutableArray *rootItems; 42 | NSMutableArray *arrangedRootItems; 43 | BOOL flatStructure; 44 | 45 | NSString *nick; 46 | NSString *hubAddress; 47 | 48 | fl_dir_t *root; 49 | } 50 | - (id)initWithFile:(NSString *)aPath nick:(NSString *)aNick hub:(NSString *)aHubAddress; 51 | - (void)unbindControllers; 52 | - (NSView *)view; 53 | - (NSImage *)image; 54 | - (NSString *)title; 55 | - (NSMutableArray *)setFiles:(fl_dir_t *)dir; 56 | - (void)sortArray:(NSMutableArray *)anArray usingDescriptors:(NSArray *)sortDescriptors; 57 | 58 | - (void)onDoubleClick:(id)sender; 59 | - (IBAction)toggleColumn:(id)sender; 60 | - (IBAction)downloadSelectedItems:(id)sender; 61 | - (IBAction)copyMagnet:(id)sender; 62 | - (IBAction)filter:(id)sender; 63 | - (IBAction)refresh:(id)sender; 64 | 65 | @end 66 | 67 | -------------------------------------------------------------------------------- /gui/Aqua/SPFriendsController.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 Markus Amalthea Magnuson 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | #import "SPSideBar.h" 24 | 25 | @interface SPFriendsController : NSObject 26 | { 27 | NSMutableArray *friends; 28 | 29 | IBOutlet NSArrayController *friendsController; 30 | IBOutlet NSView *friendsView; 31 | IBOutlet NSTableView *friendsTable; 32 | IBOutlet NSMenu *friendMenu; 33 | 34 | IBOutlet NSWindow *newFriendSheet; 35 | IBOutlet NSTextField *newFriendNameField; 36 | IBOutlet NSTextField *newFriendCommentsField; 37 | 38 | IBOutlet NSWindow *editFriendSheet; 39 | IBOutlet NSTextField *editFriendNameField; 40 | IBOutlet NSTextField *editFriendCommentsField; 41 | } 42 | 43 | + (SPFriendsController *)sharedFriendsController; 44 | 45 | - (void)setFriends:(NSArray *)newFriends; 46 | - (void)addFriendWithName:(NSString *)name comments:(NSString *)comments; 47 | - (void)updateFriendTable; 48 | 49 | - (void)userUpdateNotification:(NSNotification *)aNotification; 50 | - (void)userLogoutNotification:(NSNotification *)aNotification; 51 | - (void)applicationWillTerminate; 52 | 53 | - (IBAction)browseUser:(id)sender; 54 | - (IBAction)sendPrivateMessage:(id)sender; 55 | 56 | - (void)newFriendSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; 57 | - (IBAction)newFriendShow:(id)sender; 58 | - (IBAction)newFriendExecute:(id)sender; 59 | - (IBAction)newFriendCancel:(id)sender; 60 | 61 | - (void)editFriendSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; 62 | - (IBAction)editFriendShow:(id)sender; 63 | - (IBAction)editFriendExecute:(id)sender; 64 | - (IBAction)editFriendCancel:(id)sender; 65 | 66 | - (void)removeFriendShow:(id)sender; 67 | - (void)removeFriendSheetDidEnd:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo; 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /gui/Aqua/SPGrowlBridge.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | #import 24 | 25 | extern NSString *SP_GROWL_HUB_CONNECTION_CLOSED; 26 | extern NSString *SP_GROWL_NEW_PRIVATE_CONVERSATION; 27 | extern NSString *SP_GROWL_PRIVATE_MESSAGE; 28 | extern NSString *SP_GROWL_NICK_IN_MAINCHAT; 29 | extern NSString *SP_GROWL_DOWNLOAD_FINISHED; 30 | 31 | @interface SPGrowlBridge : NSObject 32 | { 33 | } 34 | 35 | + (SPGrowlBridge *)sharedGrowlBridge; 36 | - (void)notifyWithName:(NSString *)name 37 | description:(NSString *)aDescription; 38 | 39 | @end 40 | 41 | -------------------------------------------------------------------------------- /gui/Aqua/SPLog.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | */ 3 | #import 4 | #include 5 | #include 6 | 7 | void SPLogMessage(NSString *fmt, ...); 8 | 9 | #define SPLog(fmt, ...) SPLogMessage(@"[%d] (%s:%i) " fmt, getpid(), __func__, __LINE__, ## __VA_ARGS__) 10 | 11 | -------------------------------------------------------------------------------- /gui/Aqua/SPLog.m: -------------------------------------------------------------------------------- 1 | #include "log.h" 2 | #include "SPlog.h" 3 | 4 | void SPLogMessage(NSString *fmt, ...); 5 | void SPLogMessage(NSString *fmt, ...) 6 | { 7 | va_list ap; 8 | va_start(ap, fmt); 9 | NSString *msg = [[NSString alloc] initWithFormat:fmt arguments:ap]; 10 | va_end(ap); 11 | 12 | sp_log(LOG_LEVEL_INFO, "%s", [msg UTF8String]); 13 | 14 | [msg release]; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /gui/Aqua/SPMainWindowController-Toolbar.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | #import "SPMainWindowController.h" 24 | 25 | @interface SPMainWindowController (SPMainWindowControllerToolbar) 26 | 27 | - (void)initializeToolbar; 28 | - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar 29 | itemForItemIdentifier:(NSString *)itemIdentifier 30 | willBeInsertedIntoToolbar:(BOOL)flag; 31 | - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar; 32 | - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar; 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /gui/Aqua/SPMessagePanel.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface SPMessagePanel : NSWindowController 25 | { 26 | IBOutlet NSPanel *msgPanel; 27 | IBOutlet NSTextView *textView; 28 | } 29 | 30 | + (id)sharedMessagePanel; 31 | - (void)show; 32 | - (void)close; 33 | - (BOOL)isKeyWindow; 34 | 35 | @end 36 | 37 | -------------------------------------------------------------------------------- /gui/Aqua/SPNetworkPortController.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 Håkan Waara 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | #import 22 | 23 | /* Manages ShakesPeer's UPnP/NAT-PMP support (automatic port forwarding). */ 24 | @class TCMPortMapping; 25 | @interface SPNetworkPortController : NSObject 26 | { 27 | // we could combine these into one object, but the framework has a bug (1.0-r4) 28 | // where it won't remove both the TCP and the UDP port mapping on shutdown if we do. 29 | TCMPortMapping *lastUDPPortMapping; 30 | TCMPortMapping *lastTCPPortMapping; 31 | } 32 | 33 | + (SPNetworkPortController *)sharedInstance; 34 | 35 | - (void)startup; 36 | - (void)changePort:(int)port; 37 | - (void)shutdown; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /gui/Aqua/SPNotificationNames.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2006 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | extern NSString *SPNotificationUserLogin; 25 | extern NSString *SPNotificationUserLogout; 26 | extern NSString *SPNotificationUserUpdate; 27 | extern NSString *SPNotificationStatusMessage; 28 | extern NSString *SPNotificationPublicMessage; 29 | extern NSString *SPNotificationPrivateMessage; 30 | extern NSString *SPNotificationHubAdd; 31 | extern NSString *SPNotificationHubnameChanged; 32 | extern NSString *SPNotificationSearchResponse; 33 | extern NSString *SPNotificationTransferStats; 34 | extern NSString *SPNotificationDownloadStarting; 35 | extern NSString *SPNotificationUploadStarting; 36 | extern NSString *SPNotificationDownloadFinished; 37 | extern NSString *SPNotificationDirectoryFinished; 38 | extern NSString *SPNotificationUploadFinished; 39 | extern NSString *SPNotificationFilelistFinished; 40 | extern NSString *SPNotificationConnectionClosed; 41 | extern NSString *SPNotificationConnectionFailed; 42 | extern NSString *SPNotificationHubRedirect; 43 | extern NSString *SPNotificationQueueAdd; 44 | extern NSString *SPNotificationQueueAddDirectory; 45 | extern NSString *SPNotificationQueueRemove; 46 | extern NSString *SPNotificationQueueRemoveFilelist; 47 | extern NSString *SPNotificationQueueRemoveDirectory; 48 | extern NSString *SPNotificationSourceAdd; 49 | extern NSString *SPNotificationSourceRemove; 50 | extern NSString *SPNotificationQueueAddFilelist; 51 | extern NSString *SPNotificationTransferAborted; 52 | extern NSString *SPNotificationShareStats; 53 | extern NSString *SPNotificationShareDuplicateFound; 54 | extern NSString *SPNotificationNeedPassword; 55 | extern NSString *SPNotificationServerDied; 56 | extern NSString *SPNotificationUserCommand; 57 | extern NSString *SPNotificationSetPriority; 58 | extern NSString *SPNotificationHubDisconnected; 59 | extern NSString *SPNotificationStartChat; 60 | extern NSString *SPNotificationEndChat; 61 | extern NSString *SPNotificationStoredFilelists; 62 | extern NSString *SPNotificationInitCompletion; 63 | 64 | -------------------------------------------------------------------------------- /gui/Aqua/SPOutlineView.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface SPOutlineView : NSOutlineView 25 | { 26 | NSTableColumn *typeSearchTableColumn; 27 | NSMutableString *keypressBuffer; 28 | NSTimer *bufferTimer; 29 | } 30 | 31 | - (void)setTypeSearchTableColumn:(NSTableColumn *)tableColumn; 32 | - (void)clearKeypressBuffer; 33 | - (BOOL)selectItemInArray:(NSArray *)rootArray byString:(NSString *)searchString; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /gui/Aqua/SPPreferenceController.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/gui/Aqua/SPPreferenceController.m -------------------------------------------------------------------------------- /gui/Aqua/SPProgressIndicatorCell.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2008 ShakesPeer developers 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface SPProgressIndicatorCell : NSLevelIndicatorCell 25 | { 26 | NSAttributedString *attributedStringValue; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /gui/Aqua/SPPublicHubsController.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * Mac DC++. An Aqua user interface for DC++. 3 | * Copyright (C) 2004 Jonathan Jansson, jonathan.dator@home.se 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | */ 19 | 20 | #import 21 | #import "SPSideBar.h" 22 | #include "hublist.h" 23 | 24 | @class FilteringArrayController; 25 | 26 | /*! 27 | * @class PublicHubsController 28 | * @abstract Does what Windows/PublicHubsFrm.cpp do in DC++ 29 | * @discussion 30 | * PublicHubsController is a subclass of NSTabViewItem. After initWithIdentifier: is called 31 | * it is ready to be put in an NSTabView. 32 | */ 33 | @interface SPPublicHubsController : NSObject 34 | { 35 | IBOutlet NSView *hubListView; 36 | IBOutlet FilteringArrayController *arrayController; 37 | IBOutlet NSTableView *hubTable; 38 | IBOutlet NSButton *refreshButton; 39 | 40 | IBOutlet NSMenu *contextMenu; 41 | 42 | NSMenu *columnsMenu; 43 | NSMutableArray *allTableColumns; 44 | 45 | NSMutableArray *hubs; 46 | BOOL refreshInProgress; 47 | } 48 | 49 | - (id)init; 50 | - (void)unbindControllers; 51 | - (id)view; 52 | - (NSString *)title; 53 | - (NSImage *)image; 54 | - (void)setHubsFromList:(hublist_t *)hublist; 55 | - (void)addHubsToBookmarks:(id)sender; 56 | 57 | - (IBAction)toggleColumn:(id)sender; 58 | - (IBAction)tableDoubleActionConnect:(id)sender; 59 | - (IBAction)connect:(id)sender; 60 | - (IBAction)refresh:(id)sender; 61 | 62 | @end 63 | 64 | -------------------------------------------------------------------------------- /gui/Aqua/SPTableView.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2004 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @protocol SPTableViewInformalProtocol 25 | 26 | - (NSMenu *)tableView:(NSTableView *)tableView menuForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex; 27 | 28 | @end 29 | 30 | @interface SPTableView : NSTableView 31 | { 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /gui/Aqua/SPTableView.m: -------------------------------------------------------------------------------- 1 | #import "SPTableView.h" 2 | 3 | @implementation SPTableView : NSTableView 4 | 5 | /* 6 | * Code by Timothy Hatcher, from http://www.cocoadev.com/index.pl?RightClickSelectInTableView 7 | * Modified by Martin Hedenfalk 8 | */ 9 | - (NSMenu *)menuForEvent:(NSEvent *)event 10 | { 11 | NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil]; 12 | int row = [self rowAtPoint:where]; 13 | int col = [self columnAtPoint:where]; 14 | 15 | if (row >= 0) { 16 | NSTableColumn *column = nil; 17 | if (col >= 0) 18 | column = [[self tableColumns] objectAtIndex:col]; 19 | 20 | if ([self numberOfSelectedRows] <= 1) { 21 | if ([[self delegate] respondsToSelector:@selector(tableView:shouldSelectRow:)]) { 22 | if ([[self delegate] tableView:self shouldSelectRow:row]) 23 | [self selectRow:row byExtendingSelection:NO]; 24 | } 25 | else { 26 | [self selectRow:row byExtendingSelection:NO]; 27 | } 28 | } 29 | 30 | if ([[self dataSource] respondsToSelector:@selector(tableView:menuForTableColumn:row:)]) 31 | return [[self dataSource] tableView:self menuForTableColumn:column row:row]; 32 | else 33 | return [self menu]; 34 | } 35 | 36 | [self deselectAll:nil]; 37 | return [self menu]; 38 | } 39 | 40 | /* method to detect an enter key press to connect to the selected hub, 41 | the code is from http://www.cocoadev.com/index.pl?DetectDeleteKeyPressInNSOutlineView */ 42 | - (BOOL)performKeyEquivalent:(NSEvent *)theEvent 43 | { 44 | NSString *chars = [theEvent charactersIgnoringModifiers]; 45 | 46 | if ([theEvent type] == NSKeyDown && [chars length] == 1) { 47 | int val = [chars characterAtIndex:0]; 48 | 49 | // check for the enter key 50 | if (val == 13) { 51 | if ([[self delegate] respondsToSelector:@selector(tableDidRecieveEnterKey:)]) { 52 | [[self delegate] performSelector:@selector(tableDidRecieveEnterKey:) withObject:self]; 53 | return YES; 54 | } 55 | } 56 | } 57 | 58 | return [super performKeyEquivalent:theEvent]; 59 | } 60 | 61 | @end 62 | 63 | -------------------------------------------------------------------------------- /gui/Aqua/SPTransformers.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc fdm=indent foldnestmax=1 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface HumanSizeTransformer : NSValueTransformer 25 | { 26 | } 27 | + (id)defaultHumanSizeTransformer; 28 | @end 29 | 30 | @interface HumanSpeedTransformer : NSValueTransformer 31 | { 32 | } 33 | @end 34 | 35 | @interface HumanTimeTransformer : NSValueTransformer 36 | { 37 | } 38 | @end 39 | 40 | @interface NickImageTransformer: NSValueTransformer 41 | { 42 | NSImage *defaultImage; 43 | NSImage *opImage; 44 | } 45 | + (id)defaultNickImageTransformer; 46 | @end 47 | 48 | @interface FiletypeImageTransformer: NSValueTransformer 49 | { 50 | NSImage *audioImage; 51 | NSImage *compressedImage; 52 | NSImage *documentImage; 53 | NSImage *executableImage; 54 | NSImage *pictureImage; 55 | NSImage *videoImage; 56 | NSImage *folderImage; 57 | NSImage *anyImage; 58 | } 59 | + (id)defaultFiletypeImageTransformer; 60 | @end 61 | 62 | @interface FilenameImageTransformer: NSValueTransformer 63 | { 64 | } 65 | @end 66 | 67 | @interface TransferImageTransformer: NSValueTransformer 68 | { 69 | NSImage *downloadImage; 70 | NSImage *uploadImage; 71 | NSImage *idleImage; 72 | NSImage *errorImage; 73 | } 74 | @end 75 | 76 | @interface TruncateTailTransformer : NSValueTransformer 77 | { 78 | } 79 | @end 80 | 81 | @interface FriendStatusTransformer : NSValueTransformer 82 | { 83 | } 84 | @end 85 | 86 | @interface FriendLastSeenTransformer : NSValueTransformer 87 | { 88 | } 89 | @end 90 | 91 | void registerSPTransformers(void); 92 | -------------------------------------------------------------------------------- /gui/Aqua/SPUser.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc fdm=indent foldnestmax=1 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface SPUser : NSObject 25 | { 26 | NSString *nick; 27 | NSAttributedString *displayNick; 28 | NSAttributedString *speed; 29 | NSAttributedString *description; 30 | NSAttributedString *tag; 31 | NSAttributedString *email; 32 | uint64_t size; 33 | BOOL isOperator; 34 | unsigned extraSlots; 35 | } 36 | 37 | - (id)initWithNick:(NSString *)aNick 38 | description:(NSString *)aDescription 39 | tag:(NSString *)aTag 40 | speed:(NSString *)aSpeed 41 | email:(NSString *)anEmail 42 | size:(NSNumber *)aSize 43 | isOperator:(BOOL)isOp 44 | extraSlots:(unsigned)anExtraSlots; 45 | 46 | + (id)userWithNick:(NSString *)aNick 47 | description:(NSString *)aDescription 48 | tag:(NSString *)aTag 49 | speed:(NSString *)aSpeed 50 | email:(NSString *)anEmail 51 | size:(NSNumber *)aSize 52 | isOperator:(BOOL)isOp 53 | extraSlots:(unsigned)anExtraSlots; 54 | 55 | + (id)userWithNick:(NSString *)aNick isOperator:(BOOL)isOp; 56 | 57 | - (NSAttributedString *)descriptionString; 58 | - (NSAttributedString *)tag; 59 | - (NSAttributedString *)speed; 60 | - (NSAttributedString *)email; 61 | - (NSString *)nick; 62 | - (NSAttributedString *)displayNick; 63 | - (uint64_t)size; 64 | - (unsigned)extraSlots; 65 | - (BOOL)isOperator; 66 | - (NSComparisonResult)compare:(SPUser *)aUser; 67 | 68 | - (void)updateDisplayNick; 69 | - (void)setDescription:(NSString *)aDescription; 70 | - (void)setTag:(NSString *)aTag; 71 | - (void)setSpeed:(NSString *)aSpeed; 72 | - (void)setEmail:(NSString *)anEmail; 73 | - (void)setSize:(NSNumber *)aSize; 74 | - (void)setIsOperator:(BOOL)aFlag; 75 | - (void)setExtraSlots:(int)aValue; 76 | 77 | @end 78 | 79 | -------------------------------------------------------------------------------- /gui/Aqua/SPUserCommand.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | @interface SPUserCommand : NSObject 25 | { 26 | NSString *title; 27 | NSString *command; 28 | NSString *address; 29 | int type; 30 | int context; 31 | } 32 | 33 | - (id)initWithTitle:(NSString *)aTitle 34 | command:(NSString *)aCommand 35 | type:(int)aType 36 | context:(int)aContext 37 | hub:(NSString *)anAddress; 38 | - (void)executeForNicks:(NSArray *)nickArray myNick:(NSString *)aMyNick; 39 | - (NSString *)title; 40 | - (NSString *)command; 41 | - (NSString *)address; 42 | - (int)type; 43 | - (int)context; 44 | 45 | @end 46 | 47 | -------------------------------------------------------------------------------- /gui/Aqua/SPUserDefaultKeys.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2006 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | extern NSString *SPPrefsLastSidebarItem; 25 | extern NSString *SPPrefsLastPrefPane; 26 | extern NSString *SPPrefsLastConnectedHubs; 27 | extern NSString *SPPrefsDownloadFolder; 28 | extern NSString *SPPrefsIncompleteFolder; 29 | extern NSString *SPPrefsNickname; 30 | extern NSString *SPPrefsSpeed; 31 | extern NSString *SPPrefsEmail; 32 | extern NSString *SPPrefsDescription; 33 | extern NSString *SPPrefsFontSize; 34 | extern NSString *SPPrefsUploadSlots; 35 | extern NSString *SPPrefsUploadSlotsPerHub; 36 | extern NSString *SPPrefsPort; 37 | extern NSString *SPPrefsAutomaticPortForwarding; 38 | extern NSString *SPPrefsSharedPaths; 39 | extern NSString *SPPrefsRecentHubs; 40 | extern NSString *SPPrefsHublists; 41 | extern NSString *SPPrefsHublistURL; 42 | extern NSString *SPPrefsKeepServerRunning; 43 | extern NSString *SPPrefsConnectionMode; 44 | extern NSString *SPPrefsLogLevel; 45 | extern NSString *SPPrefsSessionRestore; 46 | extern NSString *SPPrefsAutodetectIPAddress; 47 | extern NSString *SPPrefsExternalIPAddress; 48 | extern NSString *SPPrefsAllowHubIPOverride; 49 | extern NSString *SPPrefsConnectRemotely; 50 | extern NSString *SPPrefsRemoteSphubdAddress; 51 | extern NSString *SPPrefsShowSmileyIcons; 52 | extern NSString *SPPrefsRescanShareInterval; 53 | extern NSString *SPPrefsFollowHubRedirects; 54 | extern NSString *SPPrefsAutoSearchNewSources; 55 | extern NSString *SPPrefsDateOfPreviousVersionCheck; 56 | extern NSString *SPPrefsHashingPriority; 57 | extern NSString *SPPrefsDrawerIsVisible; 58 | extern NSString *SPPrefsDrawerHeight; 59 | extern NSString *SPPrefsRequireOpenSlots; 60 | extern NSString *SPPrefsRequireTTH; 61 | extern NSString *SPBookmarks; 62 | extern NSString *SPFriends; 63 | -------------------------------------------------------------------------------- /gui/Aqua/SidebarCell.h: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | 23 | #import 24 | 25 | @interface SidebarCell : NSActionCell 26 | { 27 | id objectValue; 28 | BOOL hoveringClose; 29 | NSRect closeButtonRect; 30 | } 31 | 32 | - (void)setObjectValue:(id )anObject; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /gui/Aqua/UKCrashReporter.h: -------------------------------------------------------------------------------- 1 | // 2 | // UKCrashReporter.h 3 | // NiftyFeatures 4 | // 5 | // Created by Uli Kusterer on Sat Feb 04 2006. 6 | // Copyright (c) 2006 M. Uli Kusterer. All rights reserved. 7 | // 8 | // Modified 2007-09-17 by martin@bzero.se for use in ShakesPeer. 9 | 10 | // ----------------------------------------------------------------------------- 11 | // Headers: 12 | // ----------------------------------------------------------------------------- 13 | 14 | #import 15 | 16 | 17 | // ----------------------------------------------------------------------------- 18 | // Prototypes: 19 | // ----------------------------------------------------------------------------- 20 | 21 | /* Call this sometime during startup (e.g. in applicationDidLaunch) and it'll 22 | check for a new crash log and offer to the user to send it. 23 | 24 | The crash log is sent to a CGI script whose URL you specify in the 25 | UKUpdateChecker.strings file. If you want, you can even have different 26 | URLs for different locales that way, in case a crash is caused by an error 27 | in a localized file. 28 | */ 29 | void UKCrashReporterCheckForCrash(NSString *appName); 30 | -------------------------------------------------------------------------------- /gui/Aqua/URLMutableAttributedString.h: -------------------------------------------------------------------------------- 1 | // vim: ft=objc 2 | // Additions to NSMutableAttributedString to find URLs 3 | // and mark them with the appropriate property 4 | // Copyright (c) 2002 Aaron Sittig 5 | 6 | #import 7 | 8 | @interface NSMutableAttributedString (URLTextViewAdditions) 9 | 10 | - (void)detectURLs:(NSColor*)linkColor; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /gui/Aqua/URLTextView.h: -------------------------------------------------------------------------------- 1 | // vim: ft=objc 2 | // URLTextView 3 | // NSTextView subclass to facilitate URL cursor and click tracking 4 | // Copyright (C) 2002 Aaron Sittig 5 | 6 | #import 7 | 8 | @interface URLTextView : NSTextView 9 | {} 10 | @end 11 | -------------------------------------------------------------------------------- /gui/Aqua/main.m: -------------------------------------------------------------------------------- 1 | /* vim: ft=objc 2 | * 3 | * Copyright 2005 Martin Hedenfalk 4 | * 5 | * This file is part of ShakesPeer. 6 | * 7 | * ShakesPeer is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * ShakesPeer is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with ShakesPeer; if not, write to the Free Software 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | #import 23 | 24 | int main(int argc, char *argv[]) 25 | { 26 | return NSApplicationMain(argc, (const char **) argv); 27 | } 28 | -------------------------------------------------------------------------------- /gui/Aqua/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildVersion 6 | 92 7 | CFBundleVersion 8 | 1.0 9 | ProductBuildVersion 10 | 7K571 11 | ProjectName 12 | NibPBTemplates 13 | SourceVersion 14 | 1200000 15 | 16 | 17 | -------------------------------------------------------------------------------- /gui/Makefile: -------------------------------------------------------------------------------- 1 | SUBDIRS = Aqua 2 | 3 | TOP=.. 4 | include ${TOP}/common.mk 5 | 6 | all-local: 7 | clean-local: 8 | 9 | -------------------------------------------------------------------------------- /spclient/Makefile: -------------------------------------------------------------------------------- 1 | BUILT_SOURCES=spclient_cmd.c spclient_cmd.h \ 2 | spclient_send.c spclient_send.h country_map.c 3 | 4 | TESTS=filelist_xml_test filelist_dclst_test \ 5 | hublist_test ui_connect_test 6 | check_PROGRAMS=$(TESTS) 7 | 8 | TOP=.. 9 | include ${TOP}/common.mk 10 | 11 | CFLAGS += $(HEADLESS_CFLAGS) 12 | LDFLAGS += $(HEADLESS_LDFLAGS) 13 | 14 | all-local: libspclient.a 15 | 16 | noinst_LIBRARIES = libspclient.a 17 | 18 | SOURCES = hublist.c spclient.c \ 19 | spclient_cmd.c spclient_send.c \ 20 | country_map.c \ 21 | filelist.c filelist_xml.c filelist_dclst.c 22 | 23 | libspclient.a: ${OBJS} 24 | rm -f $@ 25 | ar cru $@ ${OBJS} 26 | ranlib $@ 27 | 28 | country_map.c: gen_country_map.sh 29 | /bin/sh gen_country_map.sh > country_map.c 30 | 31 | spclient.o: spclient_cmd.c spclient_cmd.h spclient_send.c spclient_send.h 32 | 33 | spclient_cmd.c: spclient_cmd.in ${TOP}/support/gen_cmd_source.awk 34 | awk -f ${TOP}/support/gen_cmd_source.awk spclient_cmd.in > $@ 35 | spclient_cmd.h: spclient_cmd.in ${TOP}/support/gen_cmd_header.awk 36 | awk -f ${TOP}/support/gen_cmd_header.awk spclient_cmd.in > $@ 37 | 38 | spclient_send.c: ${TOP}/sphubd/ui_cmd.in ${TOP}/support/gen_send_source.awk 39 | awk -f ${TOP}/support/gen_send_source.awk ${TOP}/sphubd/ui_cmd.in > $@ 40 | spclient_send.h: ${TOP}/sphubd/ui_cmd.in ${TOP}/support/gen_send_header.awk 41 | awk -f ${TOP}/support/gen_send_header.awk ${TOP}/sphubd/ui_cmd.in > $@ 42 | 43 | # dummy rule needed for 'make dist' in certain cases 44 | list-en1-semic.txt: country_map.c 45 | 46 | filelist_xml_test: filelist_xml_test.o ${TOP}/splib/libsplib.a 47 | ${LINK} 48 | 49 | filelist_dclst_test: filelist_dclst_test.o ${TOP}/splib/libsplib.a 50 | ${LINK} 51 | 52 | hublist_test: hublist_test.o ${TOP}/splib/libsplib.a 53 | ${LINK} 54 | 55 | ui_connect_test: ui_connect_test.o ${TOP}/splib/libsplib.a 56 | ${LINK} 57 | 58 | CLEANFILES=*~ PublicHubList.config PublicHubList.xml 59 | 60 | clean-local: 61 | rm -f libspclient.a ${OBJS} ${BUILT_SOURCES} 62 | rm -f ${CLEANFILES} 63 | rm -f ${check_PROGRAMS} 64 | rm -f *.o 65 | 66 | -------------------------------------------------------------------------------- /spclient/PublicHubList.config.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/spclient/PublicHubList.config.bz2 -------------------------------------------------------------------------------- /spclient/PublicHubList.xml.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/spclient/PublicHubList.xml.bz2 -------------------------------------------------------------------------------- /spclient/filelist.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2005-2007 Martin Hedenfalk 3 | * 4 | * Permission to use, copy, modify, and distribute this software for any 5 | * purpose with or without fee is hereby granted, provided that the above 6 | * copyright notice and this permission notice appear in all copies. 7 | * 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 | */ 16 | 17 | #ifndef _fl_h_ 18 | #define _fl_h_ 19 | 20 | #include "sys_queue.h" 21 | 22 | #include 23 | 24 | #include "xml.h" 25 | #include "util.h" 26 | #include "xerr.h" 27 | 28 | struct fl_file; 29 | 30 | typedef struct fl_dir fl_dir_t; 31 | struct fl_dir 32 | { 33 | LIST_ENTRY(fl_dir) link; 34 | 35 | TAILQ_HEAD(fl_file_list, fl_file) files; 36 | char *path; 37 | unsigned nfiles; 38 | uint64_t size; 39 | }; 40 | 41 | typedef struct fl_file fl_file_t; 42 | struct fl_file 43 | { 44 | TAILQ_ENTRY(fl_file) link; 45 | 46 | char *name; 47 | share_type_t type; 48 | uint64_t size; 49 | char *tth; 50 | 51 | fl_dir_t *dir; 52 | }; 53 | 54 | fl_dir_t *fl_parse(const char *filename, xerr_t **err); 55 | 56 | typedef void (*fl_xml_file_callback_t)(const char *path, const char *tth, 57 | uint64_t size, void *user_data); 58 | 59 | typedef struct fl_xml_ctx fl_xml_ctx_t; 60 | struct fl_xml_ctx 61 | { 62 | LIST_HEAD(, fl_dir) dir_stack; 63 | fl_dir_t *root; 64 | FILE *fp; 65 | void *user_data; 66 | fl_xml_file_callback_t file_callback; 67 | xml_ctx_t *xml; 68 | }; 69 | 70 | int fl_parse_xml_chunk(fl_xml_ctx_t *ctx); 71 | fl_xml_ctx_t *fl_xml_prepare_file(const char *filename, 72 | fl_xml_file_callback_t file_callback, void *user_data); 73 | void fl_xml_free_context(fl_xml_ctx_t *ctx); 74 | fl_dir_t *fl_parse_xml(const char *filename); 75 | 76 | fl_dir_t *fl_parse_dclst(const char *filename); 77 | void fl_sort_recursive(fl_dir_t *dir); 78 | void fl_free_dir(fl_dir_t *dir); 79 | fl_dir_t *fl_find_directory(fl_dir_t *root, const char *directory); 80 | 81 | #endif 82 | 83 | -------------------------------------------------------------------------------- /spclient/fl_test2.DcLst: -------------------------------------------------------------------------------- 1 | spclient 2 | Makefile.am|1370 3 | Makefile.in|27748 4 | spclient.c|6211 5 | spclient.h|1991 6 | Makefile|26016 7 | hublist.o|11436 8 | hublist.c|4416 9 | spclient.o|15896 10 | hublist.h|1414 11 | filelist.o|17040 12 | filelist.c|7425 13 | filelist.h|435 14 | spclient_cmd.c|13101 15 | spclient_cmd.h|3375 16 | spclient_test.c|14839 17 | spclient_send.c|5074 18 | spclient_send.h|1958 19 | spclient_cmd.o|35508 20 | spclient_send.o|17648 21 | libspclient.a|98780 22 | spclient_test|193042 23 | spclient_cmd.in|2058 24 | spclient_test-spclient_test.o|39764 25 | spclient_test-ui_send.o|22376 26 | spclient_test-ui_list.o|12148 27 | filelist_test.c|1331 28 | filelist_test.c~|1315 29 | Makefile.am~|1189 30 | filelist_test-filelist_test.o|4660 31 | filelist_test|21425 32 | fl_test1.xml|123 33 | CVS 34 | Repository|20 35 | Root|35 36 | Entries|402 37 | -------------------------------------------------------------------------------- /spclient/fl_test3-invalid-utf8.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rufuscoder/Shakespeer/fce2853bb84a8fea271818882bb87f441f340b64/spclient/fl_test3-invalid-utf8.xml -------------------------------------------------------------------------------- /spclient/gen_country_map.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Fetches the list of 2-letter country codes from ISO's webpage and 4 | # formats them suitable to insert in a linked list. 5 | 6 | cat <
10 | #include 11 | 12 | struct country 13 | { 14 | LIST_ENTRY(country) link; 15 | char *code; 16 | char *country; 17 | }; 18 | 19 | static int initialized = 0; 20 | 21 | static LIST_HEAD(, country) country_list_head = LIST_HEAD_INITIALIZER(); 22 | 23 | static void add_country(const char *code, const char *country) 24 | { 25 | struct country *c = calloc(1, sizeof(struct country)); 26 | c->code = strdup(code); 27 | c->country = strdup(country); 28 | 29 | LIST_INSERT_HEAD(&country_list_head, c, link); 30 | } 31 | 32 | static void country_map_create(void) 33 | { 34 | HEADER 35 | 36 | URL=http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1-semic.txt 37 | 38 | set -e 39 | 40 | F="list-en1-semic.txt" 41 | if ! test -f $F; then 42 | curl -s "$URL" -o "$F" || wget "$URL" || fetch "$URL" || \ 43 | ftp $URL || lynx -source "$URL" > "$F" 44 | fi 45 | 46 | iconv -f latin1 -t utf-8 $F | tr -d '\r' | awk -F \; ' 47 | function capitalize(input, result, words, n, i, w) 48 | { 49 | result = "" 50 | n = split(input, words, " ") 51 | for(i = 1; i <= n; i++) 52 | { 53 | w = words[i] 54 | if(w == "OF" || w == "AND" || w == "THE") 55 | w = tolower(w) 56 | else 57 | w = substr(w, 1, 1) tolower(substr(w, 2)) 58 | if(i > 1) 59 | result = result " " 60 | result = result w 61 | } 62 | return result 63 | } 64 | NF == 2 && $2 ~ /[A-Z][A-Z]/ { 65 | printf(" add_country(\"%s\", \"%s\");\n", tolower($2), capitalize($1)); 66 | }' 67 | 68 | cat <