├── .gitignore ├── .gitmodules ├── BitMarkets ├── Base.lproj │ └── MainMenu.xib ├── Bitmarkets.temp_caseinsensitive_rename-Info.plist ├── Bitmarkets.temp_caseinsensitive_rename-Prefix.pch ├── Classes │ └── Market │ │ ├── Base │ │ ├── Bitmarkets.h │ │ ├── Bitmarkets.m │ │ ├── MKAboutNode.h │ │ ├── MKAboutNode.m │ │ ├── MKDirectMessages.h │ │ ├── MKDirectMessages.m │ │ ├── MKMarketChannel.h │ │ ├── MKMarketChannel.m │ │ ├── MKMarkets.h │ │ ├── MKMarkets.m │ │ ├── MKRootNode.h │ │ ├── MKRootNode.m │ │ ├── MKUpdateMessage.h │ │ ├── MKUpdateMessage.m │ │ ├── MKUpdatesSubscription.h │ │ └── MKUpdatesSubscription.m │ │ ├── Groups │ │ ├── MKCategory.h │ │ ├── MKCategory.m │ │ ├── MKGroup.h │ │ ├── MKGroup.m │ │ ├── MKMsgGroup.h │ │ ├── MKMsgGroup.m │ │ ├── MKRegion.h │ │ └── MKRegion.m │ │ ├── Helpers │ │ ├── MKCurrency.h │ │ ├── MKCurrency.m │ │ ├── MKExchangeRate.h │ │ └── MKExchangeRate.m │ │ ├── Transactions │ │ ├── Buys │ │ │ ├── MKBuy.h │ │ │ ├── MKBuy.m │ │ │ ├── MKBuys.h │ │ │ ├── MKBuys.m │ │ │ └── Stages │ │ │ │ ├── Bid │ │ │ │ ├── MKBidMsg.h │ │ │ │ ├── MKBidMsg.m │ │ │ │ ├── MKBuyBid.h │ │ │ │ └── MKBuyBid.m │ │ │ │ ├── Complete │ │ │ │ ├── MKBuyComplete.h │ │ │ │ └── MKBuyComplete.m │ │ │ │ ├── Delivery │ │ │ │ ├── MKBuyDelivery.h │ │ │ │ ├── MKBuyDelivery.m │ │ │ │ ├── MKBuyDeliveryAddress.h │ │ │ │ ├── MKBuyDeliveryAddress.m │ │ │ │ ├── MKBuyerAddressMsg.h │ │ │ │ └── MKBuyerAddressMsg.m │ │ │ │ ├── Lock │ │ │ │ ├── MKBuyLockEscrow.h │ │ │ │ ├── MKBuyLockEscrow.m │ │ │ │ ├── MKBuyLockEscrowMsg.h │ │ │ │ └── MKBuyLockEscrowMsg.m │ │ │ │ └── Release │ │ │ │ ├── MKBuyPaymentMsg.h │ │ │ │ ├── MKBuyPaymentMsg.m │ │ │ │ ├── MKBuyPostPaymentMsg.h │ │ │ │ ├── MKBuyPostPaymentMsg.m │ │ │ │ ├── MKBuyPostRefundMsg.h │ │ │ │ ├── MKBuyPostRefundMsg.m │ │ │ │ ├── MKBuyRefundRequestMsg.h │ │ │ │ ├── MKBuyRefundRequestMsg.m │ │ │ │ ├── MKBuyReleaseEscrow.h │ │ │ │ └── MKBuyReleaseEscrow.m │ │ ├── MKDeliveryAddress.h │ │ ├── MKDeliveryAddress.m │ │ ├── MKEscrow.h │ │ ├── MKEscrow.m │ │ ├── MKLock.h │ │ ├── MKLock.m │ │ ├── MKRelease.h │ │ ├── MKRelease.m │ │ ├── MKStage.h │ │ ├── MKStage.m │ │ ├── MKTransaction.h │ │ ├── MKTransaction.m │ │ ├── MKTransactions.h │ │ ├── MKTransactions.m │ │ ├── Msg │ │ │ ├── MKCancelConfirmed.h │ │ │ ├── MKCancelConfirmed.m │ │ │ ├── MKCancelMsg.h │ │ │ ├── MKCancelMsg.m │ │ │ ├── MKConfirmLockEscrowMsg.h │ │ │ ├── MKConfirmLockEscrowMsg.m │ │ │ ├── MKConfirmMsg.h │ │ │ ├── MKConfirmMsg.m │ │ │ ├── MKConfirmPaymentMsg.h │ │ │ ├── MKConfirmPaymentMsg.m │ │ │ ├── MKConfirmRefundMsg.h │ │ │ ├── MKConfirmRefundMsg.m │ │ │ ├── MKLockMsg.h │ │ │ ├── MKLockMsg.m │ │ │ ├── MKMessages.h │ │ │ ├── MKMessages.m │ │ │ ├── MKMsg.h │ │ │ ├── MKMsg.m │ │ │ ├── MKSellLockEscrowMsg.h │ │ │ ├── MKSellLockEscrowMsg.m │ │ │ ├── MKSetupLockMsg.h │ │ │ ├── MKSetupLockMsg.m │ │ │ ├── MKTxMsg.h │ │ │ └── MKTxMsg.m │ │ └── Sells │ │ │ ├── MKSell.h │ │ │ ├── MKSell.m │ │ │ ├── MKSells.h │ │ │ ├── MKSells.m │ │ │ └── Stages │ │ │ ├── Bid │ │ │ ├── MKAcceptBidMsg.h │ │ │ ├── MKAcceptBidMsg.m │ │ │ ├── MKRejectBidMsg.h │ │ │ ├── MKRejectBidMsg.m │ │ │ ├── MKSellBid.h │ │ │ ├── MKSellBid.m │ │ │ ├── MKSellBids.h │ │ │ └── MKSellBids.m │ │ │ ├── Complete │ │ │ ├── MKSellComplete.h │ │ │ └── MKSellComplete.m │ │ │ ├── Delivery │ │ │ ├── MKSellDelivery.h │ │ │ ├── MKSellDelivery.m │ │ │ ├── MKSellDeliveryAddress.h │ │ │ ├── MKSellDeliveryAddress.m │ │ │ ├── MKSellPostedMsg.h │ │ │ └── MKSellPostedMsg.m │ │ │ ├── Lock │ │ │ ├── MKSellLockEscrow.h │ │ │ └── MKSellLockEscrow.m │ │ │ ├── Post │ │ │ ├── MKClosePostMsg.h │ │ │ ├── MKClosePostMsg.m │ │ │ ├── MKPost.h │ │ │ ├── MKPost.m │ │ │ ├── MKPostMsg.h │ │ │ └── MKPostMsg.m │ │ │ └── Release │ │ │ ├── MKSellAcceptPaymentMsg.h │ │ │ ├── MKSellAcceptPaymentMsg.m │ │ │ ├── MKSellAcceptRefundRequestMsg.h │ │ │ ├── MKSellAcceptRefundRequestMsg.m │ │ │ ├── MKSellRejectRefundRequestMsg.h │ │ │ ├── MKSellRejectRefundRequestMsg.m │ │ │ ├── MKSellReleaseEscrow.h │ │ │ └── MKSellReleaseEscrow.m │ │ └── Views │ │ ├── BNKeyView.h │ │ ├── BNKeyView.m │ │ ├── BNWalletView.h │ │ ├── BNWalletView.m │ │ ├── MKActionsView.h │ │ ├── MKActionsView.m │ │ ├── MKAttachmentView.h │ │ ├── MKAttachmentView.m │ │ ├── MKDragFileWell.h │ │ ├── MKDragFileWell.m │ │ ├── MKNodeView.h │ │ ├── MKNodeView.m │ │ ├── MKPanelManager.h │ │ ├── MKPanelManager.m │ │ ├── MKPanelView.h │ │ ├── MKPanelView.m │ │ ├── MKPasswordView.h │ │ ├── MKPasswordView.m │ │ ├── MKPostView.h │ │ ├── MKPostView.m │ │ ├── MKStatusView.h │ │ ├── MKStatusView.m │ │ ├── MKStepView.h │ │ ├── MKStepView.m │ │ ├── MKStepsView.h │ │ ├── MKStepsView.m │ │ ├── MKTextFieldCell.h │ │ ├── MKTextFieldCell.m │ │ ├── MKTxProgressView.h │ │ └── MKTxProgressView.m ├── Images.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_515x512@2x.png ├── MKAppDelegate.h ├── MKAppDelegate.m ├── en.lproj │ └── InfoPlist.strings ├── main.m └── resources │ ├── app_icon │ ├── icon_128x128.png │ ├── icon_128x128@2x.png │ ├── icon_16x16.png │ ├── icon_16x16@2x.png │ ├── icon_256x256.png │ ├── icon_256x256@2x.png │ ├── icon_32x32.png │ ├── icon_32x32@2x.png │ ├── icon_512x512.png │ └── icon_515x512@2x.png │ ├── categories copy.json │ ├── categories.json │ ├── icons │ ├── Top │ │ ├── add_active.png │ │ ├── add_inactive.png │ │ ├── compose_active.png │ │ ├── composeicon_inactive.png │ │ ├── delete_active.png │ │ ├── delete_inactive.png │ │ ├── forward_active.png │ │ ├── message_active.png │ │ ├── message_inactive.png │ │ ├── refresh_active.png │ │ ├── refresh_inactive.png │ │ ├── reply_active.png │ │ ├── reply_inactive.png │ │ ├── send_active.png │ │ └── send_inactive.png │ ├── categories │ │ ├── bitcoin.png │ │ ├── camera.png │ │ ├── clothing.png │ │ ├── computing.png │ │ ├── litecoin.png │ │ ├── mobile.png │ │ ├── music.png │ │ ├── sports.png │ │ └── tv.png │ ├── left_active.png │ ├── location_active.png │ ├── profile_active.png │ └── right_active.png │ ├── licenses │ ├── bitcoinj │ │ └── COPYING.txt │ ├── bitmessage │ │ └── COPYING.txt │ ├── open sans │ │ └── LICENSE.txt │ ├── python │ │ └── LICENSE.txt │ ├── tor │ │ └── LICENSE.txt │ ├── xmlrpc │ │ └── LICENSE.txt │ └── zipkit │ │ └── COPYING.txt │ ├── regions.json │ ├── regions_hierarchical.json │ └── themes │ └── themes.json ├── BitMarketsTests ├── BitMarketsTests.m ├── Bitmarkets.temp_caseinsensitive_renameTests-Info.plist └── en.lproj │ └── InfoPlist.strings ├── Bitmarkets.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── Bitmarkets.xcscmblueprint ├── CHANGELOG ├── LICENSE ├── Notes ├── Escrow.txt └── ItemAttributes.txt ├── README.md ├── ToDo.txt ├── Vendor ├── Sparkle │ └── Sparkle.framework │ │ ├── Headers │ │ ├── Resources │ │ ├── Sparkle │ │ └── Versions │ │ ├── A │ │ ├── Headers │ │ │ ├── SUAppcast.h │ │ │ ├── SUAppcastItem.h │ │ │ ├── SUStandardVersionComparator.h │ │ │ ├── SUUpdater.h │ │ │ ├── SUVersionComparisonProtocol.h │ │ │ ├── SUVersionDisplayProtocol.h │ │ │ └── Sparkle.h │ │ ├── Resources │ │ │ ├── Autoupdate.app │ │ │ │ └── Contents │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── MacOS │ │ │ │ │ └── Autoupdate │ │ │ │ │ ├── PkgInfo │ │ │ │ │ └── Resources │ │ │ │ │ ├── AppIcon.icns │ │ │ │ │ ├── SUStatus.nib │ │ │ │ │ ├── ar.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── cs.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── da.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── de.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── el.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── en.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── es.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── fr.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── is.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── it.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ja.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ko.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── nb.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── nl.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pl.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pt_BR.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pt_PT.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ro.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ru.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sk.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sl.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sv.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── th.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── tr.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── uk.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── zh_CN.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ └── zh_TW.lproj │ │ │ │ │ └── Sparkle.strings │ │ │ ├── Info.plist │ │ │ ├── SUModelTranslation.plist │ │ │ ├── SUStatus.nib │ │ │ ├── ar.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── cs.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── da.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── de.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── el.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── en.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── es.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── fr.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── fr_CA.lproj │ │ │ ├── is.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── it.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── ja.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── ko.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── nb.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── nl.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── pl.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── pt.lproj │ │ │ ├── pt_BR.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── pt_PT.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── ro.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── ru.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── sk.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── sl.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── sv.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── th.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── tr.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── uk.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── zh_CN.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ └── zh_TW.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ └── Sparkle │ │ └── Current └── fonts │ └── Open_Sans │ ├── LICENSE.txt │ ├── OpenSans-Bold.ttf │ ├── OpenSans-BoldItalic.ttf │ ├── OpenSans-ExtraBold.ttf │ ├── OpenSans-ExtraBoldItalic.ttf │ ├── OpenSans-Italic.ttf │ ├── OpenSans-Light.ttf │ ├── OpenSans-LightItalic.ttf │ ├── OpenSans-Regular.ttf │ ├── OpenSans-Semibold.ttf │ └── OpenSans-SemiboldItalic.ttf ├── add.sh ├── checkout.sh ├── commit.sh ├── dist ├── generate_keys.sh ├── generate_xml.sh ├── sign_update.sh └── template.xml ├── find_projects_path_errors.sh ├── init.sh ├── pull.sh ├── push.sh └── status.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | profile 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | 20 | #CocoaPods 21 | Pods 22 | 23 | Bitmarkets.zip 24 | dist/keys/* 25 | .metadata -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "submodules/BitmessageKit"] 2 | path = submodules/BitmessageKit 3 | url = git@github.com:Voluntarynet/BitmessageKit.git 4 | branch = master 5 | [submodule "submodules/FoundationCategoriesKit"] 6 | path = submodules/FoundationCategoriesKit 7 | url = git@github.com:Voluntarynet/FoundationCategoriesKit.git 8 | branch = master 9 | [submodule "submodules/NavKit"] 10 | path = submodules/NavKit 11 | url = git@github.com:Voluntarynet/NavKit.git 12 | branch = master 13 | [submodule "submodules/NavNodeKit"] 14 | path = submodules/NavNodeKit 15 | url = git@github.com:Voluntarynet/NavNodeKit.git 16 | branch = master 17 | [submodule "submodules/BitnashKit"] 18 | path = submodules/BitnashKit 19 | url = git@github.com:Voluntarynet/BitnashKit.git 20 | branch = master 21 | -------------------------------------------------------------------------------- /BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ATSApplicationFontsPath 6 | fonts/Open_Sans 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | net.voluntary.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 0.9.2 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 0.9.2 27 | LSApplicationCategoryType 28 | public.app-category.business 29 | LSMinimumSystemVersion 30 | ${MACOSX_DEPLOYMENT_TARGET} 31 | NSAppTransportSecurity 32 | 33 | NSAllowsArbitraryLoads 34 | 35 | 36 | NSHumanReadableCopyright 37 | Copyright © 2014 voluntary.net. All rights reserved. 38 | NSMainNibFile 39 | MainMenu 40 | NSPrincipalClass 41 | NSApplication 42 | SUAllowsAutomaticUpdates 43 | 44 | SUEnableAutomaticChecks 45 | 46 | SUFeedURL 47 | http://voluntary.net/bitmarkets/sparkle/feed.rss 48 | SUScheduledCheckInterval 49 | 86400 50 | SUShowReleaseNotes 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/Bitmarkets.h: -------------------------------------------------------------------------------- 1 | // 2 | // Bitmarkets.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 10/28/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface Bitmarkets : NSObject 12 | 13 | + nodeRoot; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/Bitmarkets.m: -------------------------------------------------------------------------------- 1 | // 2 | // Bitmarkets.m 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 10/28/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "Bitmarkets.h" 10 | #import "MKRootNode.h" 11 | 12 | @implementation Bitmarkets 13 | 14 | + nodeRoot 15 | { 16 | return MKRootNode.sharedMKRootNode; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKAboutNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAboutNode.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAboutNode : NavInfoNode 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKDirectMessages.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDirectMessages.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKDirectMessages : NSObject 12 | 13 | @property (assign, nonatomic) BOOL needsToFetch; 14 | 15 | - (void)fetch; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarketChannel.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarketChannel.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // This object reads messages from the bitmarkets channel, 9 | // creates objects for each as a child to the appropriate 10 | // MKCategory 11 | // 12 | 13 | #import 14 | #import 15 | 16 | @interface MKMarketChannel : NavNode 17 | 18 | @property (strong, nonatomic) NSString *passphrase; 19 | @property (strong, nonatomic) BMChannel *channel; 20 | 21 | @property (assign, nonatomic) BOOL needsToFetchChannelMessages; 22 | //@property (assign, nonatomic) BOOL needsToFetchDirectMessages; 23 | @property (assign, nonatomic) long totalPostCount; 24 | 25 | - (void)fetch; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarkets.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarkets.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKMarketChannel.h" 12 | #import "MKDirectMessages.h" 13 | #import "MKUpdatesSubscription.h" 14 | 15 | #import "MKRegion.h" 16 | #import "MKCategory.h" 17 | 18 | #import "MKBuys.h" 19 | #import "MKBuy.h" 20 | 21 | #import "MKSells.h" 22 | #import "MKSell.h" 23 | 24 | @interface MKMarkets : NavInfoNode 25 | 26 | @property (strong, nonatomic) MKRegion *rootRegion; 27 | 28 | //@property (strong, nonatomic) MKCategory *rootCategory; 29 | @property (strong, nonatomic) MKMarketChannel *mkChannel; 30 | @property (strong, nonatomic) MKDirectMessages *mkDirectMessages; 31 | @property (strong, nonatomic) MKUpdatesSubscription *mkUpdatesSubscription; 32 | 33 | @property (strong, nonatomic) MKBuys *buys; 34 | @property (strong, nonatomic) MKSells *sells; 35 | 36 | 37 | - (void)read; 38 | - (void)write; 39 | - (BOOL)handleMsg:(MKMsg *)mkMsg; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarkets.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarkets.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMarkets.h" 10 | #import "MKExchangeRate.h" 11 | #import 12 | #import 13 | 14 | @implementation MKMarkets 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | self.nodeTitle = @"BitMarkets"; 20 | self.nodeSuggestedWidth = @150; 21 | 22 | self.nodeShouldSortChildren = @NO; 23 | 24 | _rootRegion = (MKRegion *)[MKRegion rootInstance]; 25 | 26 | [self addChild:self.rootRegion]; 27 | 28 | if (NO) 29 | { 30 | [_rootRegion setShouldInlineChildren:YES]; 31 | _rootRegion.nodeSuggestedWidth = @250; 32 | } 33 | 34 | self.mkChannel = [[MKMarketChannel alloc] init]; 35 | [self addChild:self.mkChannel]; 36 | 37 | self.mkDirectMessages = [[MKDirectMessages alloc] init]; 38 | //[self addChild:self.mkDirectMessages]; 39 | 40 | //self.mkUpdatesSubscription = [[MKUpdatesSubscription alloc] init]; 41 | 42 | self.buys = [[MKBuys alloc] init]; 43 | //[_buys read]; 44 | [self addChild:_buys]; 45 | 46 | self.sells = [[MKSells alloc] init]; 47 | //[_sells read]; 48 | [self addChild:_sells]; 49 | 50 | [self.mkChannel performSelector:@selector(fetch) withObject:nil afterDelay:0.0]; 51 | [self.rootRegion updateCounts]; 52 | self.rootRegion.nodeDoesRememberChildPath = @YES; 53 | 54 | //[MKExchangeRate shared]; 55 | 56 | [self setRefreshInterval:10]; 57 | return self; 58 | } 59 | 60 | - (void)read 61 | { 62 | [_buys read]; 63 | [_sells read]; 64 | } 65 | 66 | - (void)write 67 | { 68 | [_buys write]; 69 | [_sells write]; 70 | } 71 | 72 | - (BOOL)handleMsg:(MKMsg *)msg 73 | { 74 | if ([self.sells handleMsg:msg]) 75 | { 76 | return YES; 77 | } 78 | 79 | if ([self.buys handleMsg:msg]) 80 | { 81 | return YES; 82 | } 83 | 84 | return NO; 85 | } 86 | 87 | - (void)refresh 88 | { 89 | if (BNErrorReport.sharedBNErrorReport.isOpen) 90 | { 91 | return; 92 | } 93 | 94 | @try 95 | { 96 | [self.sells update]; 97 | [self.buys update]; 98 | [self.mkChannel fetch]; 99 | 100 | //[NSException raise:@"test error report" format:@""]; 101 | } 102 | @catch (NSException *exception) 103 | { 104 | [BNErrorReport.sharedBNErrorReport reportException:exception]; 105 | } 106 | } 107 | 108 | - (void)delete 109 | { 110 | return; 111 | } 112 | 113 | @end 114 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKRootNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRootNode.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | 14 | #import "MKMarkets.h" 15 | #import "MKSells.h" 16 | #import "MKBuys.h" 17 | 18 | @interface MKRootNode : NavInfoNode 19 | 20 | @property (strong, nonatomic) BMClient *bmClient; 21 | @property (strong, nonatomic) MKMarkets *markets; 22 | @property (strong, nonatomic) BNWallet *wallet; 23 | 24 | + (MKRootNode *)sharedMKRootNode; 25 | - (BMIdentity *)bitmarketsUserIdentity; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdateMessage.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdateMessage.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKUpdateMessage : NSObject 13 | 14 | @property (strong, nonatomic) NSDictionary *dict; 15 | @property (strong, nonatomic) BMMessage *bmMessage; 16 | 17 | - (NSString *)version; 18 | - (BOOL)isNewer; 19 | - (void)deleteIfOlder; 20 | - (void)showAlert; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdateMessage.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdateMessage.m 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // example update message 9 | 10 | /* 11 | 12 | { 13 | "_type" : "UpdateMsg", 14 | "version" : "0.0", 15 | "url" : "https://voluntary.net.s3.amazonaws.com/Bitmarkets.0.0.zip", 16 | "message" : "lots of fixes", 17 | "hashSha256" : "...", 18 | "commitHash" : "...", 19 | } 20 | 21 | */ 22 | 23 | #import "MKUpdateMessage.h" 24 | 25 | @implementation MKUpdateMessage 26 | 27 | - (NSString *)currentVersion 28 | { 29 | NSDictionary *info = [NSBundle bundleForClass:[self class]].infoDictionary; 30 | NSString *versionString = [info objectForKey:@"CFBundleVersion"]; 31 | return versionString; 32 | } 33 | 34 | - (NSString *)version 35 | { 36 | return [self.dict objectForKey:@"version"]; 37 | } 38 | 39 | - (NSComparisonResult)compare:(id)anObject 40 | { 41 | return [self.version versionCompare:[(MKUpdateMessage *)anObject version]]; 42 | } 43 | 44 | - (BOOL)isNewer 45 | { 46 | return [self.version versionCompare:self.currentVersion] == NSOrderedDescending; 47 | } 48 | 49 | - (BOOL)isCurrentVersion 50 | { 51 | return [self.version versionCompare:self.currentVersion] == NSOrderedSame; 52 | } 53 | 54 | - (void)deleteIfOlder 55 | { 56 | if (!self.isNewer) 57 | { 58 | [self.bmMessage delete]; 59 | } 60 | } 61 | 62 | - (void)showAlert 63 | { 64 | 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdatesSubscription.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdatesSubscription.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // This object reads messages from the bitmarkets channel, 9 | // creates objects for each as a child to the appropriate 10 | // MKCategory 11 | // 12 | 13 | #import 14 | #import 15 | 16 | @interface MKUpdatesSubscription : NavNode 17 | 18 | @property (strong, nonatomic) NSString *updatesAddress; 19 | @property (strong, nonatomic) BMSubscription *subscription; 20 | 21 | @property (assign) BOOL needsToFetch; 22 | 23 | @property (strong, nonatomic) NSMutableDictionary *shownMessages; 24 | 25 | - (void)fetch; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCategory.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | 11 | @interface MKCategory : MKMsgGroup 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKGroup.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | //@class MKMsg; 14 | 15 | @interface MKGroup : NavInfoNode 16 | 17 | @property (strong, nonatomic) NSString *name; 18 | @property (strong, nonatomic) JSONDB *db; 19 | @property (strong, nonatomic) NSMutableArray *dictPropertyNames; 20 | //@property (assign, nonatomic) NSInteger count; 21 | 22 | + (MKGroup *)rootInstance; 23 | 24 | - (void)setDict:(NSDictionary *)dict; 25 | - (NSDictionary *)dict; 26 | 27 | - (void)setPropertiesDict:(NSDictionary *)dict; 28 | - (NSDictionary *)propertiesDict; 29 | 30 | - (void)addPropertyName:(NSString *)aName; 31 | 32 | 33 | - (void)read; 34 | - (void)write; 35 | 36 | - (NSArray *)groupSubpaths; 37 | - (NSArray *)groupNamePath; 38 | 39 | - (void)updateCounts; 40 | - (NSInteger)countOfLeafChildren; 41 | 42 | - (BNWallet *)runningWallet; 43 | 44 | //- (BOOL)handleMsg:(MKMsg *)mkMsg; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKMsgGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsgGroup.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/19/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKMsg.h" 11 | 12 | @interface MKMsgGroup : MKGroup 13 | 14 | - (BOOL)handleMsg:(MKMsg *)mkMsg; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKMsgGroup.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsgGroup.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/19/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | #import "MKMsg.h" 11 | 12 | @implementation MKMsgGroup 13 | 14 | - (BOOL)handleMsg:(MKMsg *)mkMsg // put in parent class of Buys and Sells 15 | { 16 | for (MKMsgGroup *child in self.children) 17 | { 18 | if ([child respondsToSelector:@selector(handleMsg:)]) 19 | { 20 | BOOL didHandle = [child handleMsg:mkMsg]; 21 | 22 | if (didHandle) 23 | { 24 | return YES; 25 | } 26 | } 27 | } 28 | 29 | return NO; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKRegion.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRegion.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | 11 | @interface MKRegion : MKMsgGroup 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKRegion.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKRegion.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRegion.h" 10 | #import "MKCategory.h" 11 | 12 | @implementation MKRegion 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | self.nodeSuggestedWidth = @150; 18 | self.nodeShouldSortChildren = @YES; 19 | return self; 20 | } 21 | 22 | - (JSONDB *)db 23 | { 24 | JSONDB *db = [super db]; 25 | db.name = @"regions.json"; 26 | db.location = JSONDB_IN_APP_WRAPPER; 27 | return db; 28 | } 29 | 30 | - (void)setDict:(NSDictionary *)dict 31 | { 32 | [super setDict:dict]; 33 | 34 | if (self.children.count == 0) 35 | { 36 | [self setChildren:[MKCategory rootInstance].children]; 37 | } 38 | } 39 | 40 | // search 41 | 42 | - (BOOL)canSearch 43 | { 44 | NavNode *firstChild = [self.children firstObject]; 45 | 46 | if (firstChild && [firstChild isKindOfClass:self.class]) 47 | { 48 | return YES; 49 | } 50 | 51 | return NO; 52 | } 53 | 54 | - (BOOL)nodeMatchesSearch:(NSString *)aString 55 | { 56 | for (NSString *word in [self.nodeTitle componentsSeparatedByString:@" "]) 57 | { 58 | if ([word hasPrefix:aString]) 59 | { 60 | return YES; 61 | } 62 | } 63 | 64 | return NO; 65 | } 66 | 67 | /* 68 | - (BOOL)nodeMatchesSearch:(NSString *)aString 69 | { 70 | for (id child in self.children) 71 | { 72 | if ([child nodeMatchesSearch:aString]) 73 | { 74 | return YES; 75 | } 76 | } 77 | 78 | return NO; 79 | } 80 | */ 81 | 82 | @end 83 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKCurrency.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCurrency.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 8/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKCurrency : NSObject 12 | 13 | @property (strong, nonatomic) NSNumber *btcAmount; 14 | 15 | - (NSString *)formattedPriceSetString; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKCurrency.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCurrency.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 8/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCurrency.h" 10 | #import "MKExchangeRate.h" 11 | #import 12 | #import 13 | 14 | @implementation MKCurrency 15 | 16 | /* 17 | - (NSNumberFormatter *)priceFormatter 18 | { 19 | NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 20 | //[formatter setLocalizesFormat:NO]; 21 | [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 22 | [formatter setPartialStringValidationEnabled:YES]; 23 | [formatter setMinimum:0]; 24 | [formatter setMaximumFractionDigits:6]; 25 | [formatter setMaximumIntegerDigits:3]; 26 | return formatter; 27 | } 28 | */ 29 | 30 | - (NSString *)formattedPriceForSymbol:(NSString *)aSymbol 31 | { 32 | NSNumber *rateForSymbol = @1.0; 33 | NSInteger sigDigits = 1; 34 | 35 | if ([aSymbol isEqualToString:@"BTC"] || [aSymbol isEqualToString:@"XBT"]) 36 | { 37 | rateForSymbol = @1.0; 38 | sigDigits = 4; 39 | } 40 | else 41 | { 42 | MKExchangeRate *rate = [MKExchangeRate shared]; 43 | rateForSymbol = [rate btcPerSymbol:aSymbol]; 44 | } 45 | 46 | if (rateForSymbol == nil) 47 | { 48 | return nil; 49 | } 50 | 51 | NSNumber *priceForSymbol = @(self.btcAmount.floatValue * rateForSymbol.floatValue); 52 | NSString *formattedPrice = [priceForSymbol asFormattedStringWithFractionalDigits:sigDigits]; 53 | return formattedPrice; 54 | } 55 | 56 | - (NSArray *)defaultSymbols 57 | { 58 | return @[@"BTC", @"USD", @"EUR"]; 59 | } 60 | 61 | - (NSString *)formattedPriceSetString 62 | { 63 | NSString *outputString = @""; 64 | NSString *separator = @" "; 65 | 66 | for (NSString *symbol in self.defaultSymbols) 67 | { 68 | NSString *price = [self formattedPriceForSymbol:symbol]; 69 | 70 | if (price) 71 | { 72 | if (outputString.length) 73 | { 74 | outputString = [outputString stringByAppendingString:separator]; 75 | } 76 | 77 | outputString = [outputString stringByAppendingString:price]; 78 | //outputString = [outputString stringByAppendingString:@" "]; 79 | outputString = [outputString stringByAppendingString:symbol]; 80 | } 81 | } 82 | 83 | // /NSLog(@"outputString '%@'", outputString); 84 | return outputString; 85 | } 86 | 87 | @end 88 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKExchangeRate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKExchangeRate.h 3 | // BitMarkets 4 | // 5 | // Created by Adam Thorsen on 4/27/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKExchangeRate : NSObject 12 | 13 | @property (strong, nonatomic) NSURLConnection *connection; 14 | @property (strong, nonatomic) NSMutableData *responseData; 15 | @property (strong, nonatomic) NSMutableDictionary *rates; 16 | @property (strong, nonatomic) NSTimer *repeatingTimer; 17 | 18 | - (NSNumber *)btcPerSymbol:(NSString *)symbol; 19 | - (void)startRepeatingTimer; 20 | - (void)update; 21 | 22 | + (MKExchangeRate *)shared; 23 | 24 | //- (NSString *)formattedPriceForSymbol:(NSString *)aSymbol; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuy.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuy.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKTransaction.h" 11 | #import "MKPost.h" 12 | #import "MKBuyBid.h" 13 | #import "MKBuyLockEscrow.h" 14 | #import "MKBuyDelivery.h" 15 | #import "MKBuyReleaseEscrow.h" 16 | #import "MKTxProgressView.h" 17 | #import "MKBuyComplete.h" 18 | 19 | @interface MKBuy : MKTransaction 20 | 21 | @property (strong, nonatomic) MKBuyBid *bid; 22 | @property (strong, nonatomic) MKBuyLockEscrow *lockEscrow; 23 | @property (strong, nonatomic) MKBuyDelivery *delivery; 24 | @property (strong, nonatomic) MKBuyReleaseEscrow *releaseEscrow; 25 | @property (strong, nonatomic) MKBuyComplete *complete; 26 | 27 | - (MKBidMsg *)bidMsg; 28 | - (BOOL)isCanceled; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuys.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuys.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKBuy.h" 11 | #import "MKTransactions.h" 12 | 13 | @interface MKBuys : MKTransactions 14 | 15 | - (MKBuy *)addBuy; 16 | 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuys.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuys.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuys.h" 10 | #import "MKBuy.h" 11 | 12 | @implementation MKBuys 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | self.nodeChildClass = MKBuy.class; 18 | // [self read]; 19 | return self; 20 | } 21 | 22 | - (NSString *)nodeTitle 23 | { 24 | return @"Buys"; 25 | } 26 | 27 | - (MKBuy *)addBuy 28 | { 29 | MKBuy *buy = [super addChild]; 30 | [self write]; 31 | return buy; 32 | } 33 | 34 | - (void)delete 35 | { 36 | return; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @class MKPost; 12 | 13 | @interface MKBidMsg : MKMsg 14 | 15 | - (void)setupForPost:(MKPost *)mkPost; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKBidMsg.h" 11 | #import "MKRootNode.h" 12 | 13 | @implementation MKBidMsg 14 | 15 | - (NSString *)nodeTitle 16 | { 17 | if (self.isInBuy) 18 | { 19 | return @"Bid Sent"; 20 | } 21 | 22 | return [NSString stringWithFormat:@"Bid received from %@", self.sellerAddress]; 23 | 24 | //return @"Bid Received"; 25 | } 26 | 27 | - (NSString *)nodeSubtitle 28 | { 29 | return self.dateString; 30 | 31 | /* 32 | if (self.isInBuy) 33 | { 34 | return self.dateString; 35 | } 36 | 37 | return [NSString stringWithFormat:@"From %@", self.sellerAddress]; 38 | */ 39 | } 40 | 41 | - (void)setupForPost:(MKPost *)mkPost 42 | { 43 | //[self.dict addEntriesFromDictionary:mkPost.propertiesDict]; 44 | 45 | self.postUuid = mkPost.postUuid; 46 | self.sellerAddress = mkPost.sellerAddress; 47 | self.buyerAddress = self.myAddress; 48 | } 49 | 50 | - (BOOL)send 51 | { 52 | self.debug = YES; 53 | return [self sendToSeller]; 54 | } 55 | 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBuyBid.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyBid.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBidMsg.h" 11 | #import "MKAcceptBidMsg.h" 12 | #import "MKRejectBidMsg.h" 13 | 14 | @interface MKBuyBid : MKStage 15 | 16 | - (MKBidMsg *)bidMsg; 17 | - (MKAcceptBidMsg *)acceptMsg; 18 | - (MKRejectBidMsg *)rejectMsg; 19 | 20 | - (BOOL)wasSent; 21 | - (BOOL)wasAccepted; 22 | - (BOOL)wasRejected; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyComplete.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBuyDeliveryAddress.h" 11 | #import "MKBuyerAddressMsg.h" 12 | 13 | @class MKBuy; 14 | 15 | @interface MKBuyComplete : MKStage 16 | 17 | - (BOOL)isComplete; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyComplete.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyComplete.h" 10 | #import "MKBuy.h" 11 | 12 | @implementation MKBuyComplete 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | 18 | return self; 19 | } 20 | 21 | // node 22 | 23 | - (NSNumber *)nodeSuggestedWidth 24 | { 25 | return @300; 26 | } 27 | 28 | - (NSString *)nodeTitle 29 | { 30 | return @"Complete"; 31 | } 32 | 33 | - (MKBuy *)buy 34 | { 35 | return (MKBuy *)self.nodeParent; 36 | } 37 | 38 | - (NSString *)nodeSubtitle 39 | { 40 | /* 41 | if (self.buy.releaseEscrow.wasPaid) 42 | { 43 | return @"Complete! Payment made to seller & deposit returned"; 44 | } 45 | 46 | if (self.buy.releaseEscrow.wasRefunded) 47 | { 48 | return @"Complete! Payment refunded by seller & deposit returned"; 49 | } 50 | */ 51 | 52 | return self.buy.releaseEscrow.nodeSubtitle; 53 | } 54 | 55 | - (NSString *)nodeNote 56 | { 57 | if (self.isComplete) 58 | { 59 | return @"✓"; 60 | } 61 | 62 | return nil; 63 | } 64 | 65 | - (BOOL)isActive 66 | { 67 | return NO; 68 | } 69 | 70 | - (BOOL)isComplete 71 | { 72 | return self.buy.releaseEscrow.isComplete; 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDelivery.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBuyDeliveryAddress.h" 11 | #import "MKBuyerAddressMsg.h" 12 | 13 | @class MKBuy; 14 | 15 | @interface MKBuyDelivery : MKStage 16 | 17 | - (MKBuyDeliveryAddress *)address; 18 | - (MKBuyerAddressMsg *)addressMsg; 19 | - (MKBuy *)buy; 20 | 21 | - (void)update; 22 | - (void)sendAddress; 23 | - (BOOL)isApproved; 24 | 25 | - (BOOL)isComplete; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKDeliveryAddress.h" 10 | #import "MKBuyerAddressMsg.h" 11 | 12 | @interface MKBuyDeliveryAddress : MKDeliveryAddress 13 | 14 | - (void)approve; 15 | - (BOOL)isApproved; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyerAddressMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyerAddressMsg : MKMsg 12 | 13 | - (NSDictionary *)addressDict; 14 | - (void)setAddressDict:(NSDictionary *)aDict; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyerAddressMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyerAddressMsg.h" 10 | 11 | @implementation MKBuyerAddressMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | if (self.isInBuy) 16 | { 17 | return @"Sent Address"; 18 | } 19 | 20 | return @"Received Address"; 21 | } 22 | 23 | - (BOOL)send 24 | { 25 | return [super sendToSeller]; 26 | } 27 | 28 | - (NSDictionary *)addressDict 29 | { 30 | return self.payload; 31 | } 32 | 33 | - (void)setAddressDict:(NSDictionary *)aDict 34 | { 35 | [self setPayload:aDict]; 36 | } 37 | 38 | - (id)descriptionJSONObject 39 | { 40 | return [super descriptionJSONObject]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyLockEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLock.h" 10 | 11 | @interface MKBuyLockEscrow : MKLock 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyLockEscrowMSg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKBuyLockEscrowMsg : MKLockMsg 12 | 13 | - (void)broadcast; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKBuyPaymentMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPaymentMsg.h" 10 | 11 | @implementation MKBuyPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyPostPaymentMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPostPaymentMsg.h" 10 | 11 | @implementation MKBuyPostPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostRefundMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyPostRefundMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostRefundMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPostRefundMsg.h" 10 | 11 | @implementation MKBuyPostRefundMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKBuyRefundRequestMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyRefundRequestMsg.h" 10 | 11 | @implementation MKBuyRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyReleaseEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyReleaseEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRelease.h" 10 | 11 | @interface MKBuyReleaseEscrow : MKRelease 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKBuyerAddressMsg.h" 11 | 12 | @interface MKDeliveryAddress : MKGroup 13 | 14 | @property (strong, nonatomic) NSMutableDictionary *addressDict; 15 | @property (assign, nonatomic) BOOL isEditable; 16 | 17 | /* 18 | @property (strong, nonatomic) NSString *addressee; 19 | @property (strong, nonatomic) NSString *address1; 20 | @property (strong, nonatomic) NSString *address2; 21 | @property (strong, nonatomic) NSString *country; 22 | */ 23 | 24 | /* 25 | // name 26 | 27 | - (void)setAddressee:(NSString *)aString; 28 | - (NSString *)addressee; 29 | 30 | // address1 31 | 32 | - (void)setAddress1:(NSString *)aString; 33 | - (NSString *)address1; 34 | 35 | // address2 36 | 37 | - (void)setAddress2:(NSString *)aString; 38 | - (NSString *)address2; 39 | 40 | // country 41 | 42 | - (void)setCountry:(NSString *)aString; 43 | - (NSString *)country; 44 | */ 45 | // checks 46 | 47 | - (BOOL)isFilled; 48 | - (BOOL)canSend; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKCancelMsg.h" 11 | #import "MKCancelConfirmed.h" 12 | 13 | @class MKBuy; 14 | @class MKSell; 15 | 16 | @interface MKEscrow : MKStage 17 | 18 | @property (strong, nonatomic) NSString *error; 19 | 20 | - (MKBuy *)buy; 21 | - (BOOL)isBuy; 22 | 23 | - (MKSell *)sell; 24 | - (BOOL)isSell; 25 | 26 | 27 | - (BOOL)isCancelConfirmed; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKEscrow.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrow.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | #import "MKBuy.h" 11 | #import "MKSell.h" 12 | 13 | @implementation MKEscrow 14 | 15 | // buy 16 | 17 | - (MKBuy *)buy 18 | { 19 | MKBuy *buy = (MKBuy *)[self firstInParentChainOfClass:MKBuy.class]; 20 | assert(buy != nil); 21 | return buy; 22 | } 23 | 24 | - (BOOL)isBuy 25 | { 26 | return self.buy != nil; 27 | } 28 | 29 | // sell 30 | 31 | - (MKSell *)sell 32 | { 33 | MKSell *sell = (MKSell *)[self firstInParentChainOfClass:MKSell.class]; 34 | assert(sell != nil); 35 | return sell; 36 | } 37 | 38 | - (BOOL)isSell 39 | { 40 | return self.sell != nil; 41 | } 42 | 43 | 44 | - (BOOL)isCancelConfirmed 45 | { 46 | [NSException raise:@"MKEscrow subclasses should override isCancelled method" format:@""]; 47 | return NO; 48 | } 49 | 50 | 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKLock.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKLock.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | #import "MKPost.h" 11 | 12 | @class MKSell; 13 | @class MKBuy; 14 | @class MKBuyLockEscrowMsg; 15 | @class MKSellLockEscrowMsg; 16 | // messages 17 | 18 | #import "MKBidMsg.h" 19 | #import "MKSetupLockMsg.h" 20 | #import "MKConfirmLockEscrowMsg.h" 21 | #import "MKCancelMsg.h" 22 | #import "MKSellLockEscrowMsg.h" 23 | 24 | 25 | @interface MKLock : MKEscrow 26 | 27 | - (BOOL)isConfirmed; 28 | 29 | // messages 30 | 31 | 32 | // messages 33 | 34 | - (MKBidMsg *)bidMsg; 35 | - (MKSetupLockMsg *)setupLockMsg; 36 | - (MKBuyLockEscrowMsg *)buyLockEscrowMsg; 37 | - (MKSellLockEscrowMsg *)sellLockEscrowMsg; 38 | - (MKLockMsg *)lockEscrowMsgToConfirm; 39 | - (MKConfirmLockEscrowMsg *)confirmLockEscrowMsg; 40 | - (MKCancelMsg *)cancelMsg; 41 | - (void)postLock:(MKLockMsg *)msg; 42 | - (void)sendMsg:(MKMsg *)msg; //subclasses should override 43 | 44 | 45 | //state machine 46 | - (void)update; 47 | 48 | // lock cancel 49 | 50 | - (BOOL)canCancel; 51 | 52 | - (BOOL)isCancelling; 53 | 54 | - (BOOL)isCancelConfirmed; 55 | - (MKCancelConfirmed *)cancelConfirmedMsg; 56 | 57 | - (MKPost *)mkPost; 58 | - (NSNumber *)lockEscrowPriceInSatoshi; 59 | 60 | - (NSString *)txDescription; 61 | - (BOOL)isBuyer; 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKRelease.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRelease.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | 11 | @class MKSell; 12 | @class MKBuy; 13 | 14 | // payment 15 | 16 | #import "MKBuyPaymentMsg.h" 17 | #import "MKSellAcceptPaymentMsg.h" 18 | 19 | // refund 20 | 21 | #import "MKBuyRefundRequestMsg.h" 22 | #import "MKSellAcceptRefundRequestMsg.h" 23 | #import "MKSellRejectRefundRequestMsg.h" 24 | 25 | // confirm 26 | 27 | #import "MKConfirmRefundMsg.h" 28 | #import "MKConfirmPaymentMsg.h" 29 | 30 | 31 | 32 | @interface MKRelease : MKEscrow 33 | 34 | 35 | - (NSString *)shortStatus; 36 | 37 | // checks 38 | 39 | - (BOOL)wasPaid; 40 | - (BOOL)wasRefunded; 41 | 42 | // payment messages 43 | 44 | - (MKBuyPaymentMsg *)buyPaymentMsg; 45 | - (MKSellAcceptPaymentMsg *)sellAcceptPaymentMsg; 46 | 47 | // refund messages 48 | 49 | - (MKBuyRefundRequestMsg *)buyRequestRefundMsg; 50 | - (MKSellAcceptRefundRequestMsg *)sellAcceptRefundRequestMsg; 51 | - (MKSellRejectRefundRequestMsg *)sellRejectRefundRequestMsg; 52 | 53 | // confirm messages 54 | 55 | - (MKConfirmRefundMsg *)confirmRefundMsg; 56 | - (MKConfirmPaymentMsg *)confirmPaymentMsg; 57 | 58 | // confirm checks 59 | 60 | - (void)lookForConfirmsIfNeeded; 61 | - (void)lookForPaymentConfirmIfNeeded; 62 | - (void)lookForRefundConfirmIfNeeded; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKStage.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStage.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | 11 | @class MKTransaction; 12 | 13 | @interface MKStage : MKGroup 14 | 15 | - (BOOL)isActive; 16 | - (BOOL)isComplete; 17 | 18 | - (MKTransaction *)transaction; 19 | 20 | - (MKStage *)nextStage; 21 | - (MKStage *)previousStage; 22 | 23 | - (BOOL)canDelete; 24 | - (BOOL)prepareToDelete; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKStage.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKStep.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKTransaction.h" 11 | #import 12 | 13 | @implementation MKStage 14 | 15 | - (BOOL)isActive 16 | { 17 | [NSException raise:@"subclasses must override" format:@""]; 18 | return YES; 19 | } 20 | 21 | - (BOOL)isComplete 22 | { 23 | [NSException raise:@"subclasses must override" format:@""]; 24 | return NO; 25 | } 26 | 27 | - (MKTransaction *)transaction 28 | { 29 | return (MKTransaction *)self.nodeParent; 30 | } 31 | 32 | - (MKStage *)nextStage 33 | { 34 | return [self.transaction.stages objectAfter:self]; 35 | } 36 | 37 | - (MKStage *)previousStage 38 | { 39 | return [self.transaction.stages objectBefore:self]; 40 | } 41 | 42 | - (BOOL)canDelete 43 | { 44 | return YES; 45 | } 46 | 47 | - (BOOL)prepareToDelete 48 | { 49 | return YES; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransaction.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransaction.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKMessages.h" 11 | #import "MKMsgGroup.h" 12 | #import "MKPost.h" 13 | 14 | @class BNTx; 15 | 16 | @interface MKTransaction : MKMsgGroup 17 | 18 | @property (strong, nonatomic) MKPost *mkPost; 19 | @property (strong, nonatomic) NSString *error; 20 | 21 | - (NSArray *)visibleStages; 22 | - (MKStage *)currentStage; 23 | - (NSArray *)stages; 24 | 25 | 26 | - (NSString *)statusTitle; 27 | - (NSString *)nodeSubtitleDetailed; 28 | 29 | - (void)update; 30 | 31 | - (BOOL)isBuy; 32 | - (NSString *)description; 33 | 34 | 35 | - (BOOL)canDelete; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransactions.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransactions.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | #import "MKTransaction.h" 11 | 12 | @interface MKTransactions : MKMsgGroup 13 | 14 | - (void)update; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransactions.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransactions.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTransactions.h" 10 | 11 | @implementation MKTransactions 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | self.nodeShouldUseCountForNodeNote = @YES; 17 | self.nodeSuggestedWidth = @350; 18 | return self; 19 | } 20 | 21 | - (NSString *)nodeNote 22 | { 23 | if (self.children.count > 0) 24 | { 25 | return [NSString stringWithFormat:@"%i", (int)self.children.count]; 26 | } 27 | 28 | return nil; 29 | } 30 | 31 | - (JSONDB *)db 32 | { 33 | JSONDB *db = [super db]; 34 | db.name = NSStringFromClass(self.class); 35 | db.location = JSONDB_IN_APP_SUPPORT_FOLDER; 36 | return db; 37 | } 38 | 39 | - (void)write 40 | { 41 | [super write]; 42 | } 43 | 44 | - (void)read 45 | { 46 | [super read]; 47 | [self update]; 48 | [self postParentChainChanged]; 49 | } 50 | 51 | - (void)removeChild:(id)aChild 52 | { 53 | [super removeChild:aChild]; 54 | [self write]; 55 | } 56 | 57 | - (BOOL)canSearch 58 | { 59 | return self.children.count > 0; 60 | } 61 | 62 | /* 63 | - (NSString *)verifyActionMessage:(NSString *)aString 64 | { 65 | if ([aString isEqualToString:@"delete"]) 66 | { 67 | return @"Are you sure you want to delete this? If the sale is in progress, you may loose your escrow."; 68 | } 69 | 70 | return nil; 71 | } 72 | */ 73 | 74 | - (void)update 75 | { 76 | for (id child in self.children) 77 | { 78 | if ([child respondsToSelector:@selector(update)]) 79 | { 80 | [child update]; 81 | } 82 | } 83 | 84 | [self writeIfNeeded]; 85 | } 86 | 87 | - (void)writeIfNeeded 88 | { 89 | if ([self isDirtyRecursive]) 90 | { 91 | [self write]; 92 | [self setCleanRecursive]; 93 | } 94 | } 95 | 96 | - (void)notifyChainDirty 97 | { 98 | NSLog(@"%@ notifyChainDirty", NSStringFromClass(self.class)); 99 | //[self write]; 100 | } 101 | 102 | 103 | @end 104 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelConfirmed.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKCancelConfirmed : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelConfirmed.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCancelConfirmed.h" 10 | 11 | @implementation MKCancelConfirmed 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKCancelMsg : MKLockMsg 12 | 13 | - (void)broadcast; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCancelMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKCancelMsg 13 | 14 | - (void)configureTx 15 | { 16 | if (self.lockNode.lockEscrowMsgToConfirm) 17 | { 18 | self.tx = self.lockNode.lockEscrowMsgToConfirm.tx.cancellationTx; 19 | [self.tx unlockInputs]; 20 | [self.tx sign]; 21 | } 22 | else 23 | { 24 | self.tx = nil; 25 | } 26 | 27 | } 28 | 29 | - (void)broadcast 30 | { 31 | if (self.tx) 32 | { 33 | self.payload = self.tx.asJSONObject; 34 | [self write]; 35 | [self.tx broadcast]; 36 | } 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmLockEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmLockEscrowMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmLockEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmLockEscrowMsg.h" 10 | 11 | @implementation MKConfirmLockEscrowMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/30/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKConfirmMsg : MKMsg 12 | 13 | @property (strong, nonatomic) NSDictionary *tx; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/30/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @implementation MKConfirmMsg 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | [self addPropertyName:@"tx"]; 17 | return self; 18 | } 19 | 20 | - (NSString *)nodeTitle 21 | { 22 | return [NSString stringWithFormat:@"Transaction %@", [self.tx objectForKey:@"txid"]]; 23 | } 24 | 25 | - (NSString *)nodeSubtitle 26 | { 27 | return [NSString stringWithFormat:@"Confirmed %@", self.dateString]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmPaymentMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmPaymentMsg.h" 10 | 11 | @implementation MKConfirmPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmRefundMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmRefundMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmRefundMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmRefundMsg.h" 10 | 11 | @implementation MKConfirmRefundMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @class MKLock; 12 | 13 | @interface MKLockMsg : MKTxMsg 14 | 15 | - (MKLock *)lockNode; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKLockMsg 13 | 14 | - (MKLock *)lockNode 15 | { 16 | return (MKLock *)[self nodeParent]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMessages.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMessages.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKPostMsg.h" 11 | 12 | @interface MKMessages : MKGroup 13 | 14 | - (MKPostMsg *)postMsg; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMessages.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMessages.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMessages.h" 10 | #import "MKPost.h" 11 | 12 | @implementation MKMessages 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | return self; 18 | } 19 | 20 | - (NSNumber *)nodeSuggestedWidth 21 | { 22 | return @360; 23 | } 24 | 25 | - (NSString *)nodeTitle 26 | { 27 | return @"Messages"; 28 | } 29 | 30 | - (MKPostMsg *)postMsg 31 | { 32 | return [self.children firstObjectOfClass:MKPost.class]; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import 11 | 12 | // message names 13 | 14 | @interface MKMsg : MKGroup 15 | 16 | @property (strong, nonatomic) NSString *postUuid; 17 | @property (strong, nonatomic) NSString *sellerAddress; 18 | @property (strong, nonatomic) NSString *buyerAddress; 19 | @property (strong, nonatomic) NSNumber *dateNumber; 20 | 21 | @property (strong, nonatomic) NSDictionary *payload; 22 | 23 | @property (strong, nonatomic) BMMessage *bmMessage; 24 | @property (strong, nonatomic) NSString *ackData; 25 | @property (assign, nonatomic) BOOL updatingStatus; 26 | @property (assign, nonatomic) BOOL debug; 27 | 28 | + (MKMsg *)withBMMessage:(BMMessage *)bmMessage; 29 | 30 | // checking sender 31 | 32 | - (BOOL)bmSenderIsBuyer; // only works when first received 33 | - (BOOL)bmSenderIsSeller; // only works when first received 34 | 35 | // --- valid --- 36 | 37 | - (BOOL)hasValidPostUuid; 38 | - (BOOL)hasValidSellerAddress; 39 | - (BOOL)isValid; 40 | 41 | - (NSString *)myAddress; 42 | 43 | - (NSString *)classNameSansPrefix; 44 | 45 | - (NSString *)subject; 46 | 47 | // date 48 | 49 | - (void)addDate; 50 | - (void)setDate:(NSDate *)aDate; 51 | - (NSDate *)date; 52 | 53 | - (NSString *)dateString; 54 | 55 | //status 56 | 57 | - (BOOL)wasSent; 58 | 59 | // --- setter / getters --- 60 | 61 | - (void)setPostUuid:(NSString *)postUuid; 62 | - (NSString *)postUuid; 63 | 64 | - (void)setSellerAddress:(NSString *)sellerAddress; 65 | - (NSString *)sellerAddress; 66 | 67 | - (void)setBuyerAddress:(NSString *)buyerAddress; 68 | - (NSString *)buyerAddress; 69 | 70 | // copy 71 | 72 | - (void)copyThreadFrom:(MKMsg *)msg; 73 | 74 | // send 75 | 76 | - (BOOL)send; 77 | 78 | - (BOOL)sendFromSellerToChannel; 79 | - (BOOL)sendToBuyer; 80 | - (BOOL)sendToSeller; 81 | 82 | - (BOOL)isInBuy; 83 | - (BOOL)isInSell; 84 | 85 | - (BMSentMessage *)sentMessage; 86 | 87 | // debugging 88 | 89 | - (id)descriptionJSONObject; 90 | 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKLockEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKSellLockEscrowMsg : MKLockMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKLockEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellLockEscrowMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKSellLockEscrowMsg 13 | 14 | - (void)configureTx 15 | { 16 | self.tx = [self.runningWallet newTx]; 17 | [self.tx configureForEscrowWithInputTx:self.lockNode.setupLockMsg.tx]; 18 | [self.tx lockInputs]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSetupLockMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSetupLockMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKSetupLockMsg : MKLockMsg 12 | 13 | @property (strong, nonatomic) NSNumber *broadcastDateNumber; 14 | 15 | - (void)configureAndBroadcastTx; 16 | //- (void)broadcastIfNeeded; 17 | 18 | - (void)returnChangeToWallet; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKTxMsg : MKMsg 12 | 13 | @property BNTx *tx; 14 | 15 | - (void)configureTx; 16 | - (BOOL)isTxConfirmed; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | #import "MKBuyLockEscrow.h" 11 | #import 12 | 13 | @implementation MKTxMsg 14 | 15 | @synthesize tx = _tx; 16 | 17 | - (BNTx *)tx 18 | { 19 | if (!_tx && self.payload && self.runningWallet) 20 | { 21 | self.tx = (BNTx *)[self.payload asObjectFromJSONObject]; 22 | self.tx.wallet = self.runningWallet; 23 | } 24 | 25 | return _tx; 26 | } 27 | 28 | - (void)setTx:(BNTx *)tx 29 | { 30 | _tx = tx; 31 | } 32 | 33 | 34 | - (BOOL)isTxConfirmed 35 | { 36 | if (self.tx) 37 | { 38 | [self.tx refresh]; 39 | return self.tx.isConfirmed; 40 | } 41 | else 42 | { 43 | return NO; 44 | } 45 | } 46 | 47 | - (void)configureTx 48 | { 49 | [NSException raise:@"Subclasses should override" format:@""]; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSell.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKTransaction.h" 11 | #import "MKPost.h" 12 | #import "MKSellBids.h" 13 | #import "MKSellLockEscrow.h" 14 | #import "MKSellDelivery.h" 15 | #import "MKSellReleaseEscrow.h" 16 | #import "MKSellBid.h" 17 | #import "MKSellComplete.h" 18 | 19 | @class MKSells; 20 | 21 | @interface MKSell : MKTransaction 22 | 23 | //@property (strong, nonatomic) MKPost *mkPost; 24 | @property (strong, nonatomic) MKSellBids *bids; 25 | @property (strong, nonatomic) MKSellLockEscrow *lockEscrow; 26 | @property (strong, nonatomic) MKSellDelivery *delivery; 27 | @property (strong, nonatomic) MKSellReleaseEscrow *releaseEscrow; 28 | @property (strong, nonatomic) MKSellComplete *complete; 29 | 30 | - (MKBidMsg *)acceptedBidMsg; 31 | 32 | - (BOOL)isCanceled; 33 | 34 | - (MKSells *)sells; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSells.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSells.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKSell.h" 11 | #import "MKTransactions.h" 12 | 13 | @interface MKSells : MKTransactions 14 | 15 | - (MKSell *)addSell; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSells.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSells.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKSells.h" 11 | #import "MKSell.h" 12 | #import "MKMsg.h" 13 | 14 | @implementation MKSells 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | self.nodeChildClass = MKSell.class; 20 | return self; 21 | } 22 | 23 | - (NSString *)nodeTitle 24 | { 25 | return @"Sells"; 26 | } 27 | 28 | - (MKSell *)addSell 29 | { 30 | MKSell *sell = [super addChild]; 31 | [self write]; 32 | return sell; 33 | } 34 | 35 | // test 36 | 37 | - (void)write 38 | { 39 | [super write]; 40 | } 41 | 42 | - (void)read 43 | { 44 | [super read]; 45 | } 46 | 47 | - (void)delete 48 | { 49 | return; 50 | } 51 | 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAcceptBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKAcceptBidMsg : MKMsg 12 | 13 | - (BOOL)send; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKAcceptBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKAcceptBidMsg.h" 10 | 11 | @implementation MKAcceptBidMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | return @"Bid Accepted"; 16 | } 17 | 18 | - (BOOL)send 19 | { 20 | return [self sendToBuyer]; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRejectBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKRejectBidMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKRejectBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRejectBidMsg.h" 10 | 11 | @implementation MKRejectBidMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | //if (self.isInBuy) 16 | return @"Bid Rejected"; 17 | } 18 | 19 | - (BOOL)send 20 | { 21 | return [self sendToBuyer]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBid.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellBid.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKBidMsg.h" 11 | #import 12 | 13 | @interface MKSellBid : MKGroup 14 | 15 | @property (strong, nonatomic) NSString *error; 16 | 17 | - (MKBidMsg *)bidMsg; 18 | 19 | - (void)update; 20 | 21 | - (BOOL)wasAccepted; 22 | - (BOOL)wasRejected; 23 | 24 | - (void)accept; 25 | - (void)reject; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBids.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellBids.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKSellBid.h" 11 | 12 | @interface MKSellBids : MKStage 13 | 14 | //- (void)setAcceptedBid:(MKSellBid *)sellBid; 15 | 16 | - (MKSellBid *)acceptedBid; 17 | - (BOOL)isComplete; 18 | 19 | - (void)sendClosePost; 20 | - (void)rejectUnacceptedBids; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | 11 | @interface MKSellComplete : MKStage 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellComplete.h" 10 | #import "MKSell.h" 11 | #import "MKSellReleaseEscrow.h" 12 | 13 | @implementation MKSellComplete 14 | 15 | - (id)init 16 | { 17 | self = [super init]; 18 | return self; 19 | } 20 | 21 | - (MKSell *)sell 22 | { 23 | return (MKSell *)self.nodeParent; 24 | } 25 | 26 | - (NSString *)nodeTitle 27 | { 28 | return @"Complete"; 29 | } 30 | 31 | - (BOOL)isActive 32 | { 33 | return NO; 34 | } 35 | 36 | - (BOOL)isComplete 37 | { 38 | return self.sell.releaseEscrow.isComplete; 39 | } 40 | 41 | - (NSString *)nodeSubtitle 42 | { 43 | /* 44 | if (self.sell.releaseEscrow.wasPaid) 45 | { 46 | return @"Complete! Payment & deposit refund is in your wallet"; 47 | } 48 | 49 | if (self.sell.releaseEscrow.wasRefunded) 50 | { 51 | return @"Complete! Payment refunded to buyer & your deposit is returned"; 52 | } 53 | */ 54 | 55 | return self.sell.releaseEscrow.nodeSubtitle; 56 | } 57 | 58 | - (NSString *)nodeNote 59 | { 60 | if (self.isComplete) 61 | { 62 | return @"✓"; 63 | } 64 | 65 | return nil; 66 | } 67 | 68 | - (void)update 69 | { 70 | 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDelivery.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKSellPostedMsg.h" 11 | 12 | @interface MKSellDelivery : MKStage 13 | 14 | @property (strong, nonatomic) NSNumber *hasViewedAddress; 15 | 16 | - (BOOL)isComplete; 17 | 18 | - (MKSellPostedMsg *)postedMsg; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKDeliveryAddress.h" 10 | 11 | @interface MKSellDeliveryAddress : MKDeliveryAddress 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDeliveryAddress.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellDeliveryAddress.h" 10 | 11 | @implementation MKSellDeliveryAddress 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | self.isEditable = NO; 17 | self.nodeViewClass = NavMirrorView.class; 18 | return self; 19 | } 20 | 21 | - (NSString *)nodeTitle 22 | { 23 | return @"Buyer's Address"; 24 | } 25 | 26 | - (NSString *)nodeSubtitle 27 | { 28 | if (self.isFilled) 29 | { 30 | return @"received "; 31 | } 32 | 33 | return @"awaiting from buyer"; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellPostedMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKSellPostedMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellPostedMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellPostedMsg.h" 10 | 11 | @implementation MKSellPostedMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Lock/MKSellLockEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellLockEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLock.h" 10 | 11 | @interface MKSellLockEscrow : MKLock 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKClosePostMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/18/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKClosePostMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKClosePostMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/18/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKClosePostMsg.h" 10 | 11 | @implementation MKClosePostMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPost.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPost.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKPostMsg.h" 11 | #import "MKBidMsg.h" 12 | #import 13 | 14 | //@class MKPostMsg; 15 | //@class MKBidMsg; 16 | 17 | @interface MKPost : MKStage 18 | 19 | @property (strong, nonatomic) NSDate *date; 20 | 21 | // msg properties 22 | 23 | @property (strong, nonatomic) NSString *postUuid; 24 | 25 | @property (strong, nonatomic) NSString *title; 26 | @property (strong, nonatomic) NSNumber *priceInSatoshi; 27 | @property (strong, nonatomic) NSString *postDescription; 28 | 29 | @property (strong, nonatomic) NSArray *regionPath; 30 | @property (strong, nonatomic) NSArray *categoryPath; 31 | @property (strong, nonatomic) NSString *sellerAddress; 32 | @property (strong, nonatomic) NSArray *attachments; 33 | @property (strong, nonatomic) BMMessage *bmMessage; // used only for browsable listing, so we can delete msg when receiving a close request 34 | @property (strong, nonatomic) NSString *composeError; 35 | 36 | @property (strong, nonatomic) NSNumber *firstPostDateNumber; 37 | @property (strong, nonatomic) NSNumber *lastPostDateNumber; 38 | 39 | 40 | // --- repost & expire --- 41 | 42 | + (NSNumber *)repostPeriodInSeconds; 43 | + (NSNumber *)expirePeriodInSeconds; 44 | - (BOOL)needsExpire; 45 | - (BOOL)needsRepost; 46 | - (void)repostIfNeeded; 47 | - (void)expireIfNeeded; 48 | 49 | // ------------------------ 50 | 51 | - (NSArray *)postMessagePropertyNames; 52 | 53 | - (BOOL)isEditable; 54 | - (BOOL)canBuy; 55 | 56 | - (void)setPriceInBtc:(NSNumber *)btcNumber; 57 | - (NSNumber *)priceInBtc; 58 | - (NSNumber *)minimumPriceInBtc; 59 | - (NSNumber *)minimumTestPriceInBtc; 60 | - (BOOL)hasPriceWithinMinMaxRange; 61 | 62 | - (BOOL)placeInMarketsPath; 63 | - (BOOL)isAlreadyInMarketsPath; 64 | 65 | - (void)copy:(MKPost *)aPost; 66 | - (NSString *)titleOrDefault; 67 | 68 | // messages 69 | 70 | - (MKPostMsg *)postMsg; 71 | 72 | - (MKPostMsg *)sendPostMsg; 73 | - (MKBidMsg *)sendBidMsg; 74 | 75 | - (BOOL)isComplete; 76 | 77 | // equality 78 | 79 | - (NSUInteger)hash; 80 | - (BOOL)isEqual:(id)object; 81 | 82 | - (NSNumber *)priceInSatoshi; 83 | 84 | - (void)close; 85 | 86 | 87 | @end 88 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPostMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @class MKPost; 12 | 13 | @interface MKPostMsg : MKMsg 14 | 15 | - (void)sendPost:(MKPost *)aPost; 16 | - (MKPost *)mkPost; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPostMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKPostMsg.h" 12 | #import "MKRootNode.h" 13 | 14 | @implementation MKPostMsg 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | 20 | return self; 21 | } 22 | 23 | /* 24 | - (NSString *)nodeNote 25 | { 26 | return self.bmStatus; 27 | } 28 | */ 29 | 30 | - (NSUInteger)hash 31 | { 32 | return self.postUuid.hash; 33 | } 34 | 35 | - (BOOL)isEqual:(MKPostMsg *)object 36 | { 37 | if (![object isKindOfClass:MKPostMsg.class]) 38 | { 39 | return NO; 40 | } 41 | 42 | return [self.postUuid isEqualToString:object.postUuid]; 43 | } 44 | 45 | - (void)sendPost:(MKPost *)mkPost 46 | { 47 | NSMutableDictionary *payload = [NSMutableDictionary dictionaryWithDictionary:mkPost.propertiesDict]; 48 | [payload removeKeysNotInArray:mkPost.postMessagePropertyNames]; 49 | 50 | self.sellerAddress = self.myAddress; 51 | self.buyerAddress = nil; 52 | self.postUuid = mkPost.postUuid; 53 | 54 | [self setPayload:payload]; 55 | [self send]; 56 | } 57 | 58 | - (BOOL)isValid 59 | { 60 | BOOL validUuid = self.hasValidPostUuid; 61 | BOOL validSeller = self.hasValidSellerAddress; 62 | return validUuid && validSeller; 63 | } 64 | 65 | - (BOOL)send 66 | { 67 | return [self sendFromSellerToChannel]; 68 | } 69 | 70 | - (MKPost *)mkPost 71 | { 72 | MKPost *mkPost = [[MKPost alloc] init]; 73 | [mkPost setPropertiesDict:self.payload]; 74 | mkPost.bmMessage = self.bmMessage; 75 | return mkPost; 76 | } 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKSellAcceptPaymentMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellAcceptPaymentMsg.h" 10 | 11 | @implementation MKSellAcceptPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKSellAcceptRefundRequestMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellAcceptRefundRequestMsg.h" 10 | 11 | @implementation MKSellAcceptRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellRejectRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKSellRejectRefundRequestMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellRejectRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellRejectRefundRequestMsg.h" 10 | 11 | @implementation MKSellRejectRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellReleaseEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellReleaseEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRelease.h" 10 | 11 | @interface MKSellReleaseEscrow : MKRelease 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNKeyView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BNKeyView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/29/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BNKeyView : NSView 12 | 13 | @property (strong, nonatomic) BNKey *node; 14 | @property (strong, nonatomic) NavView *navView; 15 | @property (strong, nonatomic) NSImageView *qrCodeImageView; 16 | @property (strong, nonatomic) NSTextView *qrCodeTextView; 17 | @property (assign, nonatomic) CGFloat qrWidth; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNKeyView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BNKeyView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/29/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "BNKeyView.h" 12 | 13 | @implementation BNKeyView 14 | 15 | - (id)initWithFrame:(NSRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | 19 | if (self) 20 | { 21 | [self setAutoresizesSubviews:YES]; 22 | [self setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable]; 23 | 24 | self.qrWidth = 512; 25 | self.qrCodeImageView = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, _qrWidth)]; 26 | [self addSubview:self.qrCodeImageView]; 27 | 28 | self.qrCodeTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, 20)]; 29 | [self addSubview:self.qrCodeTextView]; 30 | 31 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:self.node]; 32 | } 33 | 34 | return self; 35 | } 36 | 37 | - (void)dealloc 38 | { 39 | [NSNotificationCenter.defaultCenter removeObserver:self]; 40 | } 41 | 42 | - (void)syncToNode 43 | { 44 | NSLog(@"_node.address = %@", _node.address); 45 | 46 | self.qrCodeImageView.image = [QRCodeGenerator qrImageForString:_node.address imageSize:_qrWidth]; 47 | self.qrCodeTextView.string = _node.address; 48 | [_qrCodeTextView setThemePath:@"qr/address"]; 49 | [_qrCodeTextView setEditable:NO]; 50 | [_qrCodeTextView setNeedsDisplay:YES]; 51 | } 52 | 53 | - (void)drawRect:(NSRect)dirtyRect 54 | { 55 | [super drawRect:dirtyRect]; 56 | [[NSColor whiteColor] set]; 57 | NSRectFill(dirtyRect); 58 | } 59 | 60 | - (void)setNode:(BNKey *)node 61 | { 62 | if (_node != node) 63 | { 64 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node]; 65 | _node = node; 66 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:_node]; 67 | [self syncToNode]; 68 | } 69 | 70 | [self layout]; 71 | } 72 | 73 | - (void)setFrame:(NSRect)frameRect 74 | { 75 | [super setFrame:frameRect]; 76 | [self layout]; 77 | } 78 | 79 | - (void)layout 80 | { 81 | CGFloat minx = self.superview.width/2; 82 | CGFloat miny = self.superview.height/2; 83 | CGFloat min = minx < miny ? minx : miny; 84 | 85 | [self.qrCodeImageView setHeight:min]; 86 | [self.qrCodeImageView setWidth:min]; 87 | 88 | [self.qrCodeImageView centerXInSuperview]; 89 | [self.qrCodeImageView centerYInSuperview]; 90 | [self.qrCodeTextView placeYBelow:self.qrCodeImageView margin:20]; 91 | [self.qrCodeTextView centerXInSuperview]; 92 | [self setNeedsDisplay:YES]; 93 | } 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNWalletView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BNWalletView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/26/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKNodeView.h" 10 | #import "MKStatusView.h" 11 | 12 | @interface BNWalletView : MKNodeView 13 | 14 | @property (assign, nonatomic) NavView *navView; 15 | 16 | @property (strong, nonatomic) MKStatusView *statusView; 17 | @property (strong, nonatomic) NSScrollView *scrollView; 18 | @property (strong, nonatomic) NSTableView *tableView; 19 | @property (strong, nonatomic) NSTextView *standinText; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKActionsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKActionsView.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 2/21/14. 6 | // Copyright (c) 2014 Bitmarkets.org. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKTextView.h" 12 | 13 | @interface MKActionsView : NSView 14 | 15 | @property (assign, nonatomic) NavView *navView; 16 | @property (assign, nonatomic) NavNode *node; 17 | 18 | @property (strong, nonatomic) NavColoredView *group; 19 | 20 | - (void)prepareToDisplay; 21 | - (void)selectFirstResponder; 22 | 23 | - (BOOL)handlesNodeActions; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKAttachmentView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAttachmentView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKDragFileWell.h" 12 | 13 | @protocol MKAttachmentViewProtocol 14 | - (void)changedAttachment:sender; 15 | @end 16 | 17 | @interface MKAttachmentView : NavColoredView 18 | 19 | @property (assign, nonatomic) id delegate; 20 | 21 | @property (strong, nonatomic) MKDragFileWell *dragWell; 22 | @property (strong, nonatomic) NavTextView *instructions; 23 | @property (strong, nonatomic) NSButton *closeButton; 24 | @property (assign, nonatomic) BOOL editable; 25 | 26 | - (void)setImage:(NSImage *)image; 27 | - (NSImage *)image; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKDragFileWell.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @protocol MKDragFileWellProtocol 4 | - (void)droppedInWell:sender; 5 | - (BOOL)acceptsDrop:sender; 6 | @end 7 | 8 | @interface MKDragFileWell : NSImageView 9 | 10 | @property (strong, nonatomic) NSArray *filePaths; 11 | @property (assign, nonatomic) id delegate; 12 | @property (assign, nonatomic) BOOL canDrag; 13 | @property (assign, nonatomic) BOOL canDrop; 14 | @property (assign, nonatomic) NSUInteger resizeImageUntilLessThanKb; 15 | 16 | - (void)filePaths:(NSArray *)array; 17 | - (NSArray *)filePaths; 18 | 19 | - (void)setImage:(NSImage *)image; 20 | //- (NSImage *)image; 21 | 22 | // -- dragging destination 23 | 24 | - (NSDragOperation)draggingSession:(NSDraggingSession *)session 25 | sourceOperationMaskForDraggingContext:(NSDraggingContext)context; 26 | 27 | - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal; 28 | - (unsigned int)draggingEntered:(id )sender; 29 | - (BOOL)draggingUpdated:(id )sender; 30 | - (void)draggingExited:(id )sender; 31 | - (BOOL)performDragOperation:(id )sender; 32 | 33 | // delegate methods -- dragging source 34 | 35 | - (void)copy:sender; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKNodeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKNodeView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKNodeView : NavColoredView 13 | 14 | @property (strong, nonatomic) NavNode *node; 15 | 16 | - (void)layout; // subclasses should override 17 | - (void)syncFromNode; // subclasses should override 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKNodeView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKNodeView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKNodeView.h" 10 | 11 | @implementation MKNodeView 12 | 13 | - (id)initWithFrame:(NSRect)frame 14 | { 15 | self = [super initWithFrame:frame]; 16 | 17 | if (self) 18 | { 19 | self.backgroundColor = [NSColor whiteColor]; 20 | } 21 | 22 | return self; 23 | } 24 | 25 | - (void)dealloc 26 | { 27 | [NSNotificationCenter.defaultCenter removeObserver:self]; 28 | } 29 | 30 | - (void)setFrame:(NSRect)frameRect 31 | { 32 | [super setFrame:frameRect]; 33 | [self layout]; 34 | } 35 | 36 | - (void)layout 37 | { 38 | 39 | } 40 | 41 | - (void)setNode:(NavNode *)node 42 | { 43 | if (_node != node) 44 | { 45 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node]; 46 | _node = node; 47 | if (_node) 48 | { 49 | [NSNotificationCenter.defaultCenter addObserver:self 50 | selector:@selector(nodeChanged:) 51 | name:nil 52 | object:_node]; 53 | [self syncFromNode]; 54 | } 55 | } 56 | } 57 | 58 | - (void)nodeChanged:(NSNotification *)aNote 59 | { 60 | [self syncFromNode]; 61 | } 62 | 63 | - (void)syncFromNode 64 | { 65 | 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelManager.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKPanelView.h" 11 | 12 | @interface MKPanelManager : NSObject 13 | 14 | @property (strong, nonatomic) NSView *panelReceiver; 15 | 16 | + (MKPanelManager *)sharedPanelManager; 17 | 18 | - (MKPanelView *)openNewPanel; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelManager.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKPanelManager.h" 10 | #import "MKPanelView.h" 11 | 12 | @implementation MKPanelManager 13 | 14 | static MKPanelManager *sharedPanelManager = nil; 15 | 16 | + (MKPanelManager *)sharedPanelManager 17 | { 18 | if (!sharedPanelManager) 19 | { 20 | sharedPanelManager = [[MKPanelManager alloc] init]; 21 | } 22 | 23 | return sharedPanelManager; 24 | } 25 | 26 | - (void)setPanelReceiver:(NSView *)panelReceiver 27 | { 28 | _panelReceiver = panelReceiver; 29 | } 30 | 31 | - (MKPanelView *)receiverPanelView 32 | { 33 | if (_panelReceiver) 34 | { 35 | for (NSView *subview in _panelReceiver.subviews) 36 | { 37 | if ([subview isKindOfClass:MKPanelView.class]) 38 | { 39 | return (MKPanelView *)subview; 40 | } 41 | } 42 | } 43 | 44 | return nil; 45 | } 46 | 47 | - (MKPanelView *)openNewPanel 48 | { 49 | if (_panelReceiver && !self.receiverPanelView) 50 | { 51 | MKPanelView *panelView = [[MKPanelView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 52 | [_panelReceiver addSubview:panelView]; 53 | [panelView layout]; 54 | return panelView; 55 | } 56 | else 57 | { 58 | NSString *error = @"no panel receiver"; 59 | NSLog(@"%@ %@", self.className, error); 60 | [NSException raise:error format:@""]; 61 | } 62 | 63 | return nil; 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKPanelView : NSView 13 | 14 | @property (strong, nonatomic) NSView *innerView; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPasswordView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPasswordView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKPasswordView : NSView 13 | 14 | @property (strong, nonatomic) NavTextView *info; 15 | @property (strong, nonatomic) NSSecureTextField *password; 16 | @property (strong, nonatomic) NSSecureTextField *passwordConfirm; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPasswordView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPasswordView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKPasswordView.h" 10 | 11 | @implementation MKPasswordView 12 | 13 | - (id)initWithFrame:(NSRect)frame 14 | { 15 | self = [super initWithFrame:frame]; 16 | 17 | if (self) 18 | { 19 | _info = [[NavTextView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 20 | [_info setThemePath:@"password/info"]; 21 | [self addSubview:_info]; 22 | 23 | _password = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 24 | [_password setThemePath:@"password/password"]; 25 | [self addSubview:_password]; 26 | 27 | _passwordConfirm = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 28 | [_passwordConfirm setThemePath:@"password/password"]; 29 | [self addSubview:_passwordConfirm]; 30 | } 31 | 32 | return self; 33 | } 34 | 35 | - (BOOL)hasPassword 36 | { 37 | return NO; 38 | } 39 | 40 | - (void)setup 41 | { 42 | [_passwordConfirm setHidden:self.hasPassword]; 43 | 44 | if (!self.hasPassword) 45 | { 46 | [_info setString:@"Please choose a password"]; 47 | [_passwordConfirm setHidden:NO]; 48 | [self.window makeFirstResponder:_password]; 49 | } 50 | else 51 | { 52 | [_passwordConfirm setHidden:YES]; 53 | } 54 | } 55 | 56 | - (void)layout 57 | { 58 | [_password centerXInSuperview]; 59 | [_password centerYInSuperview]; 60 | 61 | [_info centerXInSuperview]; 62 | [_info placeYAbove:_password margin:20]; 63 | 64 | [_passwordConfirm placeYBelow:_password margin:20]; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPostView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BMAddressedView.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 2/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKSell.h" 12 | #import "MKExchangeRate.h" 13 | #import "MKAttachmentView.h" 14 | 15 | @interface MKPostView : NSView 16 | 17 | @property (assign, nonatomic) NavView *navView; 18 | @property (assign, nonatomic) NavNode *node; 19 | 20 | // scrolling 21 | 22 | @property (strong, nonatomic) NavColoredView *documentView; 23 | @property (strong, nonatomic) NSScrollView *scrollView; 24 | 25 | // content 26 | 27 | @property (strong, nonatomic) NavAdvTextView *title; 28 | //@property (strong, nonatomic) IBOutlet NSTextView *quantity; 29 | @property (strong, nonatomic) NavAdvTextView *price; 30 | @property (strong, nonatomic) NavAdvTextView *errorText; 31 | @property (strong, nonatomic) NavRoundButtonView *postOrBuyButton; 32 | 33 | @property (strong, nonatomic) NavColoredView *separator; 34 | 35 | @property (strong, nonatomic) NavAdvTextView *postDescription; 36 | 37 | @property (strong, nonatomic) NSImageView *regionIcon; 38 | @property (strong, nonatomic) NSTextView *region; 39 | 40 | @property (strong, nonatomic) NSImageView *categoryIcon; 41 | @property (strong, nonatomic) NSTextView *category; 42 | 43 | @property (strong, nonatomic) NSImageView *fromAddressIcon; 44 | @property (strong, nonatomic) NSTextView *fromAddress; 45 | 46 | @property (strong, nonatomic) MKAttachmentView *attachmentView; 47 | 48 | @property (assign, nonatomic) BOOL isUpdating; 49 | @property (assign, nonatomic) BOOL editable; 50 | 51 | @property (strong, nonatomic) MKExchangeRate * exchangeRate; 52 | 53 | @property (assign, nonatomic) BOOL needsLocalLayout; 54 | 55 | 56 | + (CGFloat)leftMargin; 57 | 58 | - (MKSell *)sell; 59 | 60 | - (void)selectFirstResponder; 61 | 62 | - (void)setEditable:(BOOL)isEditable; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStatusView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStatusView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStatusView : MKNodeView 13 | 14 | @property (strong, nonatomic) NavColoredView *buttonsView; 15 | @property (strong, nonatomic) NavTextView *statusTextView; 16 | @property (strong, nonatomic) NavTextView *subtitleTextView; 17 | @property (strong, nonatomic) NSString *title; 18 | 19 | @property (assign, nonatomic) SEL titleSelector; 20 | @property (assign, nonatomic) SEL subtitleSelector; 21 | 22 | 23 | - (NSDictionary *)nodeTitleAttributes; 24 | - (void)setupButtons; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStepView : MKNodeView 13 | 14 | @property (assign, nonatomic) BOOL hasArrow; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepsView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStepsView : MKNodeView 13 | 14 | @property (assign, nonatomic) id delegate; 15 | 16 | - (void)syncFromNode; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepsView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepsView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStepsView.h" 10 | #import "MKStepView.h" 11 | #import "MKTransaction.h" 12 | 13 | @implementation MKStepsView 14 | 15 | - (id)initWithFrame:(NSRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | 19 | if (self) 20 | { 21 | self.backgroundColor = [NSColor whiteColor]; 22 | } 23 | 24 | return self; 25 | } 26 | 27 | - (MKTransaction *)transaction 28 | { 29 | return (MKTransaction *)self.node; 30 | } 31 | 32 | - (void)setNode:(NavNode *)node 33 | { 34 | [super setNode:node]; 35 | [self setupViews]; 36 | } 37 | 38 | - (void)syncFromNode 39 | { 40 | for (MKStepView *stepView in self.subviews) 41 | { 42 | [stepView syncFromNode]; 43 | } 44 | 45 | // are the stages looking at the nextStage to see how to render? 46 | // if so, we might need to do a 2nd eval 47 | 48 | /* 49 | for (MKStepView *stepView in self.subviews) 50 | { 51 | [stepView syncFromNode]; 52 | } 53 | */ 54 | } 55 | 56 | - (void)setupViews 57 | { 58 | [self removeAllSubviews]; 59 | MKStepView *stepView = nil; 60 | 61 | for (NavNode *subnode in self.transaction.visibleStages) 62 | { 63 | stepView = [[MKStepView alloc] initWithFrame:NSMakeRect(0, 0, 100, self.height)]; 64 | [stepView setNode:subnode]; 65 | [self addSubview:stepView]; 66 | stepView.hasArrow = YES; 67 | } 68 | 69 | if (stepView) 70 | { 71 | stepView.hasArrow = NO; 72 | } 73 | 74 | [self layout]; 75 | } 76 | 77 | - (void)layout 78 | { 79 | NSInteger count = self.transaction.visibleStages.count; 80 | 81 | for (MKStepView *stepView in self.subviews) 82 | { 83 | [stepView setWidth:self.width/count]; 84 | } 85 | 86 | [self stackSubviewsLeftToRightWithMargin:0.0]; 87 | 88 | NSView *lastView = self.subviews.lastObject; 89 | 90 | if (lastView) 91 | { 92 | [lastView setWidth:self.width - lastView.x]; 93 | } 94 | 95 | } 96 | 97 | /* 98 | - (void)display 99 | { 100 | return; 101 | } 102 | */ 103 | 104 | - (void)drawRect:(NSRect)dirtyRect 105 | { 106 | [super drawRect:dirtyRect]; 107 | } 108 | 109 | @end 110 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTextFieldCell.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKTextFieldCell : NSTextFieldCell 12 | 13 | @property (assign, nonatomic) CGFloat marginLeft; 14 | @property (assign, nonatomic) CGFloat marginRight; 15 | @property (assign, nonatomic) CGFloat marginTop; 16 | @property (assign, nonatomic) CGFloat marginBottom; 17 | 18 | @property (assign, nonatomic) CGFloat bottomLineWidth; 19 | @property (strong, nonatomic) NSColor *lineColor; 20 | 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTextFieldCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTextFieldCell.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTextFieldCell.h" 10 | 11 | @implementation MKTextFieldCell 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | 17 | if (self) 18 | { 19 | self.marginLeft = 10.0; 20 | self.marginRight = 10.0; 21 | self.lineColor = [NSColor colorWithCalibratedWhite:.8 alpha:1.0]; 22 | } 23 | 24 | return self; 25 | } 26 | 27 | - (NSRect)drawingRectForBounds:(NSRect)rect 28 | { 29 | return [self titleRectForBounds:rect]; 30 | } 31 | 32 | - (NSRect)titleRectForBounds:(NSRect)rect 33 | { 34 | NSRect rectInset = NSMakeRect( 35 | rect.origin.x + self.marginLeft, 36 | rect.origin.y + _marginBottom, 37 | rect.size.width - self.marginLeft - self.marginRight, 38 | rect.size.height - self.marginBottom - self.marginTop); 39 | 40 | // vertically center 41 | NSSize titleSize = [[self attributedStringValue] size]; 42 | rectInset.origin.y += (rectInset.size.height - titleSize.height)/2.0 - 0.5; 43 | 44 | return [super drawingRectForBounds:rectInset]; 45 | } 46 | 47 | 48 | - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 49 | { 50 | [super drawInteriorWithFrame:cellFrame inView:controlView]; 51 | 52 | if (self.bottomLineWidth) 53 | { 54 | CGFloat x = cellFrame.origin.x; 55 | CGFloat y = cellFrame.origin.y; 56 | CGFloat h = cellFrame.size.height; 57 | CGFloat w = cellFrame.size.width; 58 | 59 | [self.lineColor set]; 60 | 61 | [NSBezierPath setDefaultLineCapStyle:NSButtLineCapStyle]; 62 | 63 | NSBezierPath *aPath = [NSBezierPath bezierPath]; 64 | [aPath setLineWidth:self.bottomLineWidth]; 65 | [aPath moveToPoint:NSMakePoint(x, y+h)]; 66 | [aPath lineToPoint:NSMakePoint(x+w, y+h)]; 67 | [aPath setLineCapStyle:NSSquareLineCapStyle]; 68 | [aPath stroke]; 69 | } 70 | } 71 | 72 | - (void)highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView *)controlView 73 | { 74 | /* 75 | [super drawRect:dirtyRect]; 76 | [[NSColor whiteColor] set]; 77 | NSRectFill(dirtyRect); 78 | 79 | [self drawInteriorWithFrame:cellFrame inView:controlView]; 80 | */ 81 | } 82 | 83 | 84 | 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTxProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxProgressView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/4/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKNodeView.h" 12 | #import "MKStepsView.h" 13 | #import "MKTransaction.h" 14 | #import "MKStatusView.h" 15 | #import "MKPostView.h" 16 | 17 | @interface MKTxProgressView : MKNodeView 18 | 19 | @property (assign, nonatomic) NavView *navView; 20 | 21 | @property (strong, nonatomic) MKStepsView *stepsView; 22 | @property (strong, nonatomic) MKStatusView *statusView; 23 | @property (strong, nonatomic) NavColoredView *bottomView; 24 | @property (strong, nonatomic) MKPostView *postView; 25 | @property (strong, nonatomic) NavColoredView *maskView; // overlays grey 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "icon_16x16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "icon_16x16@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "icon_32x32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "icon_32x32@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "icon_128x128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "icon_128x128@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "icon_256x256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "icon_256x256@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "icon_512x512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "icon_515x512@2x.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png -------------------------------------------------------------------------------- /BitMarkets/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BMKAppDelegate.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | //#import "MKRootNode.h" 13 | 14 | @interface MKAppDelegate : NavAppController 15 | 16 | //@property (strong, nonatomic) MKRootNode *rootNode; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /BitMarkets/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_128x128.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_128x128@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_16x16.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_16x16@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_256x256.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_256x256@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_32x32.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_32x32@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_512x512.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_515x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/app_icon/icon_515x512@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/categories copy.json: -------------------------------------------------------------------------------- 1 | { 2 | "_type": "Group", 3 | "name": "For Sale", 4 | 5 | "children": [ 6 | { "_type": "Category", "name" : "Antiques"}, 7 | { "_type": "Category", "name" : "Appliances" }, 8 | { "_type": "Category", "name" : "Arts and Crafts" }, 9 | { "_type": "Category", "name" : "Auto Parts" }, 10 | { "_type": "Category", "name" : "Bags" }, 11 | { "_type": "Category", "name" : "Beauty and Health" }, 12 | { "_type": "Category", "name" : "Bikes" }, 13 | { "_type": "Category", "name" : "Boats" }, 14 | { "_type": "Category", "name" : "Books" }, 15 | { "_type": "Category", "name" : "Business" }, 16 | { "_type": "Category", "name" : "CDs/DVD/VHS" }, 17 | { "_type": "Category", "name" : "Cell Phones" }, 18 | { "_type": "Category", "name" : "Men's Clothing", }, 19 | { "_type": "Category", "name" : "Women's Clothing", }, 20 | { "_type": "Category", "name" : "Collectibles" }, 21 | { "_type": "Category", "name" : "Computer" }, 22 | { "_type": "Category", "name" : "Electronics" }, 23 | { "_type": "Category", "name" : "Farm and Garden" }, 24 | { "_type": "Category", "name" : "Furniture" }, 25 | { "_type": "Category", "name" : "General" }, 26 | { "_type": "Category", "name" : "Heavy Equipment" }, 27 | { "_type": "Category", "name" : "Household" }, 28 | { "_type": "Category", "name" : "Jewelry" }, 29 | { "_type": "Category", "name" : "Materials" }, 30 | { "_type": "Category", "name" : "Motorcycles" }, 31 | { "_type": "Category", "name" : "Musical Instruments" }, 32 | { "_type": "Category", "name" : "RVs & Camping" }, 33 | { "_type": "Category", "name" : "Photo and Video" }, 34 | { "_type": "Category", "name" : "Shoes" }, 35 | { "_type": "Category", "name" : "Sporting" }, 36 | { "_type": "Category", "name" : "Tickets" }, 37 | { "_type": "Category", "name" : "Tools" }, 38 | { "_type": "Category", "name" : "Toys and Games" }, 39 | { "_type": "Category", "name" : "Vehicles" }, 40 | { "_type": "Category", "name" : "Video Gaming" } 41 | ] 42 | } -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/add_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/add_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/add_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/add_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/compose_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/compose_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/composeicon_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/composeicon_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/delete_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/delete_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/delete_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/delete_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/forward_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/forward_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/message_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/message_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/message_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/message_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/refresh_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/refresh_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/refresh_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/refresh_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/reply_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/reply_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/reply_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/reply_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/send_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/send_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/send_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/Top/send_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/bitcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/bitcoin.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/camera.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/clothing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/clothing.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/computing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/computing.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/litecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/litecoin.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/mobile.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/music.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/sports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/sports.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/categories/tv.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/left_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/left_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/location_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/location_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/profile_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/profile_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/right_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/BitMarkets/resources/icons/right_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/bitmessage/COPYING.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2014 Jonathan Warren 2 | Copyright (c) 2013-2014 The Bitmessage Developers 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/xmlrpc/LICENSE.txt: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | ## The Cocoa XML-RPC Framework is distributed under the MIT License: 4 | 5 | Copyright (c) 2012 Eric Czarny 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of 8 | this software and associated documentation files (the "Software"), to deal in 9 | the Software without restriction, including without limitation the rights to 10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | of the Software, and to permit persons to whom the Software is furnished to do 12 | so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/zipkit/COPYING.txt: -------------------------------------------------------------------------------- 1 | ZipKit is covered under the following BSD-style license: 2 | ================================================================ 3 | Copyright (c) 2009, Karl Moskowski 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are 8 | met: 9 | 10 | * Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | * Redistributions in binary form must reproduce the above 13 | copyright notice, this list of conditions and the following disclaimer 14 | in the documentation and/or other materials provided with the 15 | distribution. 16 | * Neither the name of Karl Moskowski nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | ================================================================ 32 | 33 | Acknowledgement using this text is appreciated: 34 | ZipKit developed by Karl Moskowski. 35 | https://github.com/kolpanic/ZipKit 36 | 37 | ------------------------------------------------------------------------------------------------ 38 | 39 | The GMAppleDouble class used in this project is part of the MacFUSE project by Google Inc. 40 | 41 | 42 | See the file COPYING.TXT in the MacFUSE folder for license details. 43 | -------------------------------------------------------------------------------- /BitMarketsTests/BitMarketsTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // BitMarketsTests.m 3 | // BitMarketsTests 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BitMarketsTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation BitMarketsTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /BitMarketsTests/Bitmarkets.temp_caseinsensitive_renameTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.Bitmarkets.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /BitMarketsTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Bitmarkets.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | version 0.8.7.15 (Dec 10, 2014) 2 | - added Global region 3 | - fix for post layout bug 4 | - initial work on app updates via subscription 5 | 6 | version 0.8.7.14 7 | - automatic periodic reposting until a bid is accepted 8 | - window size now remembered and min window size fix 9 | - added a test category folder 10 | - seller can only post if they have sufficient funds for escrow 11 | - increased minimum price for posts 12 | - added a simple channel syncing indicator 13 | - fix for wallet balance formatting 14 | - changed "0 confirms" to "Unconfirmed" string in UI 15 | - use ... on long post names for nodeTitle 16 | - withdraw network warning 17 | - fix button overlap bug 18 | - use lower limit when posting to Tests 19 | - fixed issue with sending bid to self 20 | 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Voluntary.net 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Notes/Escrow.txt: -------------------------------------------------------------------------------- 1 | 2 | Lock Escrow 3 | 4 | 1. MKBuyLockEscrow sendLockToSeller method 5 | - send buyer's utx inputs 6 | 7 | 2. MKSellLockEscrow sendLock method 8 | - add seller's utx input and signs 9 | 10 | 3. MKBuyLockEscrow postLockToBlockchain method 11 | - buyer sign tx and post 12 | 13 | 4. MKBuyLockEscrow lookForConfirm method 14 | - look for confirm in blockchain 15 | - addChild: MKConfirmLockEscrowMsg 16 | 17 | 5. MKSellLockEscrow lookForConfirm method 18 | - look for confirm in blockchain 19 | - addChild: MKConfirmLockEscrowMsg 20 | 21 | 22 | 23 | 24 | Release Escrow - buyer pays 25 | 26 | 1. MKBuyReleaseEscrow sendPayment method 27 | - send buyer's utxs inputs in MKBuyPaymentMsg 28 | 29 | 2. MKSellReleaseEscrow acceptPayment method (called when MKBuyPaymentMsg received) 30 | - add seller's utx input and signs 31 | - sends to buyer in MKSellAcceptPaymentMsg 32 | 33 | 3. MKBuyReleaseEscrow postPaymentToBlockchain 34 | - buyer sign tx and post 35 | 36 | [confirms work same as lock confirms?] 37 | 38 | 39 | 40 | 41 | Release Escrow - buyer requests refund 42 | 43 | 1. MKBuyReleaseEscrow requestRefund method 44 | - send buyer's utxs inputs in MKBuyRequestRefundMsg 45 | 46 | 2. MKSellReleaseEscrow acceptRefundRequest method (call via user input) 47 | - add seller's utx input and signs 48 | - sends to buyer in MKSellAcceptRefundMsg 49 | 50 | 3. MKBuyReleaseEscrow postPaymentToBlockchain 51 | - buyer sign tx and post 52 | 53 | [confirms work same as lock confirms?] 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Notes/ItemAttributes.txt: -------------------------------------------------------------------------------- 1 | 2 | region: array 3 | category: array 4 | 5 | title: short string 6 | description: long string 7 | quantity: number 8 | price: number 9 | attachments: [{}, ...] 10 | 11 | considering adding these: 12 | 13 | size: string 14 | color: string 15 | gender: M/F 16 | brand: string 17 | model: string 18 | year: number [1900-next year?] 19 | age: number 20 | condition: string 21 | grade: string, grade metric: string 22 | purity/quality: number %? 23 | milage: number 24 | 25 | 26 | [post, delete] 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcast.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcast.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCAST_H 10 | #define SUAPPCAST_H 11 | 12 | @protocol SUAppcastDelegate; 13 | 14 | @class SUAppcastItem; 15 | @interface SUAppcast : NSObject 16 | 17 | @property (weak) id delegate; 18 | @property (copy) NSString *userAgentString; 19 | 20 | - (void)fetchAppcastFromURL:(NSURL *)url; 21 | 22 | @property (readonly, copy) NSArray *items; 23 | @end 24 | 25 | @protocol SUAppcastDelegate 26 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 27 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcastItem.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCASTITEM_H 10 | #define SUAPPCASTITEM_H 11 | 12 | @interface SUAppcastItem : NSObject 13 | @property (copy, readonly) NSString *title; 14 | @property (copy, readonly) NSDate *date; 15 | @property (copy, readonly) NSString *itemDescription; 16 | @property (strong, readonly) NSURL *releaseNotesURL; 17 | @property (copy, readonly) NSString *DSASignature; 18 | @property (copy, readonly) NSString *minimumSystemVersion; 19 | @property (copy, readonly) NSString *maximumSystemVersion; 20 | @property (strong, readonly) NSURL *fileURL; 21 | @property (copy, readonly) NSString *versionString; 22 | @property (copy, readonly) NSString *displayVersionString; 23 | @property (copy, readonly) NSDictionary *deltaUpdates; 24 | @property (strong, readonly) NSURL *infoURL; 25 | 26 | // Initializes with data from a dictionary provided by the RSS class. 27 | - (instancetype)initWithDictionary:(NSDictionary *)dict; 28 | - (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error; 29 | 30 | @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate; 31 | @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate; 32 | 33 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 34 | @property (readonly, copy) NSDictionary *propertiesDictionary; 35 | 36 | - (NSURL *)infoURL; 37 | 38 | @end 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUStandardVersionComparator.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUSTANDARDVERSIONCOMPARATOR_H 10 | #define SUSTANDARDVERSIONCOMPARATOR_H 11 | 12 | 13 | #import "SUVersionComparisonProtocol.h" 14 | 15 | /*! 16 | Sparkle's default version comparator. 17 | 18 | This comparator is adapted from MacPAD, by Kevin Ballard. 19 | It's "dumb" in that it does essentially string comparison, 20 | in components split by character type. 21 | */ 22 | @interface SUStandardVersionComparator : NSObject 23 | 24 | /*! 25 | Returns a singleton instance of the comparator. 26 | */ 27 | + (SUStandardVersionComparator *)defaultComparator; 28 | 29 | /*! 30 | Compares version strings through textual analysis. 31 | 32 | See the implementation for more details. 33 | */ 34 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; 35 | @end 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionComparisonProtocol.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H 10 | #define SUVERSIONCOMPARISONPROTOCOL_H 11 | 12 | #import 13 | 14 | /*! 15 | Provides version comparison facilities for Sparkle. 16 | */ 17 | @protocol SUVersionComparison 18 | 19 | /*! 20 | An abstract method to compare two version strings. 21 | 22 | Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, 23 | and NSOrderedSame if they are equivalent. 24 | */ 25 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD! 26 | 27 | @end 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionDisplayProtocol.h 3 | // EyeTV 4 | // 5 | // Created by Uli Kusterer on 08.12.09. 6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | /*! 13 | Applies special display formatting to version numbers. 14 | */ 15 | @protocol SUVersionDisplay 16 | 17 | /*! 18 | Formats two version strings. 19 | 20 | Both versions are provided so that important distinguishing information 21 | can be displayed while also leaving out unnecessary/confusing parts. 22 | */ 23 | - (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/Sparkle.h: -------------------------------------------------------------------------------- 1 | // 2 | // Sparkle.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SPARKLE_H 10 | #define SPARKLE_H 11 | 12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless 13 | // there are name-space collisions) so we can list all of them to start with: 14 | 15 | #import 16 | 17 | #import 18 | #import 19 | #import 20 | #import 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 13E28 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | Autoupdate 11 | CFBundleIconFile 12 | AppIcon 13 | CFBundleIdentifier 14 | org.sparkle-project.Sparkle.Autoupdate 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.7.1 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.7.1 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 5B1008 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 13C64 33 | DTSDKName 34 | macosx10.9 35 | DTXcode 36 | 0511 37 | DTXcodeBuild 38 | 5B1008 39 | LSBackgroundOnly 40 | 1 41 | LSMinimumSystemVersion 42 | 10.7 43 | LSUIElement 44 | 1 45 | NSMainNibFile 46 | MainMenu 47 | NSPrincipalClass 48 | NSApplication 49 | 50 | 51 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 13E28 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | Sparkle 11 | CFBundleIdentifier 12 | org.andymatuschak.Sparkle 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Sparkle 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.7.1 git 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 9516d6d 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 5B1008 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 13C64 33 | DTSDKName 34 | macosx10.9 35 | DTXcode 36 | 0511 37 | DTXcodeBuild 38 | 5B1008 39 | 40 | 41 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | fr.lproj -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt.lproj: -------------------------------------------------------------------------------- 1 | pt_BR.lproj -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Italic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Light.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/3001dd90f0946e86abad994d2797fc7a2295368c/Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf -------------------------------------------------------------------------------- /add.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git add . 2 | git add . 3 | -------------------------------------------------------------------------------- /checkout.sh: -------------------------------------------------------------------------------- 1 | cd submodules 2 | 3 | 4 | cd BitnashKit 5 | pwd 6 | git checkout master 7 | git push origin master 8 | cd .. 9 | 10 | 11 | cd BitmessageKit 12 | cd submodules 13 | 14 | 15 | cd FoundationCategoriesKit 16 | pwd 17 | git checkout master 18 | git push origin master 19 | cd .. 20 | 21 | cd NavKit 22 | pwd 23 | git checkout master 24 | git push origin master 25 | cd .. 26 | 27 | cd NavNodeKit 28 | pwd 29 | git checkout master 30 | git push origin master 31 | cd .. 32 | 33 | cd SystemInfoKit 34 | pwd 35 | git checkout master 36 | git push origin master 37 | cd .. 38 | 39 | cd TorServerKit 40 | cd submodules/SystemInfoKit 41 | pwd 42 | git checkout master 43 | git push origin master 44 | cd .. 45 | 46 | cd ../../../TorServerKit 47 | pwd 48 | git checkout master 49 | git push origin master 50 | 51 | cd ../../../BitmessageKit 52 | pwd 53 | git checkout master 54 | git push origin master 55 | 56 | cd ../../../Bitmarkets 57 | pwd 58 | git checkout master 59 | git push origin master 60 | -------------------------------------------------------------------------------- /commit.sh: -------------------------------------------------------------------------------- 1 | cd submodules 2 | 3 | 4 | cd BitnashKit 5 | pwd 6 | git add . 7 | git commit . -s 8 | cd .. 9 | 10 | 11 | cd BitmessageKit 12 | cd submodules 13 | 14 | 15 | cd FoundationCategoriesKit 16 | pwd 17 | git add . 18 | git commit . -s 19 | cd .. 20 | 21 | cd NavKit 22 | pwd 23 | git add . 24 | git commit . -s 25 | cd .. 26 | 27 | cd NavNodeKit 28 | pwd 29 | git add . 30 | git commit . -s 31 | cd .. 32 | 33 | cd SystemInfoKit 34 | pwd 35 | git add . 36 | git commit . -s 37 | cd .. 38 | 39 | cd TorServerKit 40 | cd submodules/SystemInfoKit 41 | pwd 42 | git add . 43 | git commit . -s 44 | cd ../.. 45 | 46 | pwd 47 | git add . 48 | git commit . -s 49 | 50 | cd ../../../BitmessageKit 51 | pwd 52 | git add . 53 | git commit . -s 54 | 55 | cd ../.. 56 | pwd 57 | git add . 58 | git commit . -s 59 | -------------------------------------------------------------------------------- /dist/generate_keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | for file in "dsaparam.pem" "dsa_priv.pem" "dsa_pub.pem"; do 4 | if [ -e "$file" ]; then 5 | echo "There's already a $file here! Move it aside or be more careful!" 6 | exit 1 7 | fi 8 | done 9 | 10 | openssl="/usr/bin/openssl" 11 | $openssl gendsa <($openssl dsaparam 4096) -out dsa_priv.pem 12 | chmod 0400 dsa_priv.pem 13 | $openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem 14 | chmod 0444 dsa_pub.pem 15 | 16 | echo " 17 | Generated private and public keys: dsa_priv.pem and dsa_pub.pem. 18 | BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE! 19 | If you lose it, your users will be unable to upgrade!" 20 | 21 | open -R dsa_priv.pem 22 | -------------------------------------------------------------------------------- /dist/generate_xml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FEED_TITLE="title" 4 | LINK="http://voluntary.net/bitpostcast.xml" 5 | FEED_DESCRIPTION="Bitmarkets Changelog" 6 | VERSION="1.0" 7 | DESCRIPTION="list of items" 8 | PUB_DATE=$(date -u) 9 | URL="http://link.to.app/Bitmarkets.zip" 10 | FILENAME="./Bitmarkets.zip" 11 | LENGTH=$(stat -f%z "$FILENAME") 12 | DSA_SIGNATURE=$(dist/sign_update.sh $FILENAME dist/keys/dsa_priv.pem) 13 | 14 | sed -e "s;%FEED_TITLE%;$FEED_TITLE;g" -e "s;%LINK%;$LINK;g" -e "s;%FEED_DESCRIPTION%;$FEED_DESCRIPTION;g" -e "s;%VERSION%;$VERSION;g" -e "s;%DESCRIPTION%;$DESCRIPTION;g" -e "s;%PUB_DATE%;$PUB_DATE;g" -e "s;%URL%;$URL;g" -e "s;%LENGTH%;$LENGTH;g" -e "s;%DSA_SIGNATURE%;$DSA_SIGNATURE;g" dist/template.xml 15 | -------------------------------------------------------------------------------- /dist/sign_update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | set -o pipefail 4 | if [ "$#" -ne 2 ]; then 5 | echo "Usage: $0 update_archive private_key" 6 | exit 1 7 | fi 8 | openssl=/usr/bin/openssl 9 | $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64 10 | -------------------------------------------------------------------------------- /dist/template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %FEED_TITLE% 5 | %LINK% 6 | %FEED_DESCRIPTION% 7 | en 8 | 9 | toVersion %VERSION% 10 | 11 | 14 | 15 | %PUB_DATE% 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /find_projects_path_errors.sh: -------------------------------------------------------------------------------- 1 | find . -name project.pbxproj | awk '{print "echo " $1 "; grep Users " $1}' | bash 2 | 3 | -------------------------------------------------------------------------------- /init.sh: -------------------------------------------------------------------------------- 1 | git submodule sync 2 | git submodule init 3 | git submodule update --init --recursive --force 4 | 5 | -------------------------------------------------------------------------------- /pull.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git pull origin master 2 | git pull origin master 3 | -------------------------------------------------------------------------------- /push.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git push origin master 2 | git push origin master 3 | git push origin --tags 4 | -------------------------------------------------------------------------------- /status.sh: -------------------------------------------------------------------------------- 1 | git status 2 | git submodule foreach --recursive git status 3 | --------------------------------------------------------------------------------