├── .gitattributes ├── .gitignore ├── .gitmodules ├── ApplicationController.h ├── ApplicationController.m ├── COPYING ├── CWQuickLook.h ├── Credits.html ├── DBPrefsWindowController.h ├── DBPrefsWindowController.m ├── Documentation ├── CallingFromWebKit.txt ├── GraphingAPI.txt ├── README └── ReleaseNotes │ ├── v0.2.1.txt │ ├── v0.2.txt │ ├── v0.3.1.txt │ ├── v0.3.txt │ ├── v0.4.1.txt │ ├── v0.4.txt │ ├── v0.5.txt │ ├── v0.6.1.txt │ ├── v0.6.2.txt │ ├── v0.6.3.txt │ ├── v0.6.txt │ ├── v0.7.1.txt │ └── v0.7.txt ├── English.lproj ├── InfoPlist.strings ├── MainMenu.xib ├── PBAddRemoteSheet.xib ├── PBCloneRepositoryPanel.xib ├── PBCloneRepsitoryToSheet.xib ├── PBCreateBranchSheet.xib ├── PBCreateTagSheet.xib ├── PBRemoteProgressSheet.xib ├── Preferences.xib └── RepositoryWindow.xib ├── GLFileView.h ├── GLFileView.m ├── GitTest_DataModel.xcdatamodel ├── elements └── layout ├── GitX.h ├── GitX.sdef ├── GitX.xcodeproj └── project.pbxproj ├── GitXRelativeDateFormatter.h ├── GitXRelativeDateFormatter.m ├── GitXScriptingConstants.h ├── GitXTesting-Info.plist ├── GitXTextFieldCell.h ├── GitXTextFieldCell.m ├── GitX_Prefix.pch ├── Images ├── AddBranchTemplate.png ├── AddBranchTemplate.psd ├── AddLabelTemplate.png ├── AddLabelTemplate.psd ├── AddRemote.acorn ├── AddRemote.png ├── Branch.png ├── CherryPickTemplate.png ├── CloneRepositoryFireworksTemplate.png ├── CloneRepositoryTemplate.png ├── CommitViewTemplate.png ├── CommitViewTemplate.psd ├── DetailViewTemplate.png ├── FetchTemplate.png ├── HistoryViewTemplate.png ├── HistoryViewTemplate.psd ├── MergeTemplate.png ├── Preferences │ └── Updates.png ├── PullTemplate.png ├── PushTemplate.png ├── RebaseTemplate.png ├── RemoteBranch.png ├── StageView.png ├── Tag.png ├── add_branch.psd ├── branch.tiff ├── deleted_file.png ├── empty_file.png ├── file_template.psd ├── folder.tiff ├── gitx_icon.psd ├── mainSplitterBar.tiff ├── mainSplitterDimple.tiff ├── new_file.png ├── remote.tiff ├── rewindImage.pdf ├── site_download_background.png └── tag.tiff ├── Info.plist ├── MGScopeBar ├── English.lproj │ ├── InfoPlist.strings │ └── MainMenu.xib ├── Info.plist ├── MGRecessedPopUpButtonCell.h ├── MGRecessedPopUpButtonCell.m ├── MGScopeBar.h ├── MGScopeBar.m ├── MGScopeBarDelegateProtocol.h ├── MGScopeBar_Prefix.pch ├── ReadMe.txt ├── Source Code License.rtf └── TODO ├── NSApplication+GitXScripting.h ├── NSApplication+GitXScripting.m ├── NSFileHandleExt.h ├── NSFileHandleExt.m ├── NSOutlineViewExt.h ├── NSOutlineViewExt.m ├── NSString_RegEx.h ├── NSString_RegEx.m ├── PBAddRemoteSheet.h ├── PBAddRemoteSheet.m ├── PBCLIProxy.h ├── PBCLIProxy.m ├── PBChangedFile.h ├── PBChangedFile.m ├── PBCloneRepositoryPanel.h ├── PBCloneRepositoryPanel.m ├── PBCloneRepsitoryToSheet.h ├── PBCloneRepsitoryToSheet.m ├── PBCollapsibleSplitView.h ├── PBCollapsibleSplitView.m ├── PBCommitHookFailedSheet.h ├── PBCommitHookFailedSheet.m ├── PBCommitHookFailedSheet.xib ├── PBCommitList.h ├── PBCommitList.m ├── PBCommitMessageView.h ├── PBCommitMessageView.m ├── PBCreateBranchSheet.h ├── PBCreateBranchSheet.m ├── PBCreateTagSheet.h ├── PBCreateTagSheet.m ├── PBDiffWindow.xib ├── PBDiffWindowController.h ├── PBDiffWindowController.m ├── PBEasyFS.h ├── PBEasyFS.m ├── PBEasyPipe.h ├── PBEasyPipe.m ├── PBFileChangesTableView.h ├── PBFileChangesTableView.m ├── PBGitBinary.h ├── PBGitBinary.m ├── PBGitCommit.h ├── PBGitCommit.m ├── PBGitCommitController.h ├── PBGitCommitController.m ├── PBGitCommitView.xib ├── PBGitConfig.h ├── PBGitConfig.m ├── PBGitDefaults.h ├── PBGitDefaults.m ├── PBGitGradientBarView.h ├── PBGitGradientBarView.m ├── PBGitGraphLine.h ├── PBGitGraphLine.m ├── PBGitGrapher.h ├── PBGitGrapher.mm ├── PBGitHistoryController.h ├── PBGitHistoryController.m ├── PBGitHistoryGrapher.h ├── PBGitHistoryGrapher.m ├── PBGitHistoryList.h ├── PBGitHistoryList.m ├── PBGitHistoryView.xib ├── PBGitIndex.h ├── PBGitIndex.m ├── PBGitIndexController.h ├── PBGitIndexController.m ├── PBGitLane.h ├── PBGitLane.mm ├── PBGitRef.h ├── PBGitRef.m ├── PBGitRefish.h ├── PBGitRepository.h ├── PBGitRepository.m ├── PBGitRevList.h ├── PBGitRevList.mm ├── PBGitRevSpecifier.h ├── PBGitRevSpecifier.m ├── PBGitRevisionCell.h ├── PBGitRevisionCell.m ├── PBGitSHA.h ├── PBGitSHA.m ├── PBGitSVBranchItem.h ├── PBGitSVBranchItem.m ├── PBGitSVFolderItem.h ├── PBGitSVFolderItem.m ├── PBGitSVOtherRevItem.h ├── PBGitSVOtherRevItem.m ├── PBGitSVRemoteBranchItem.h ├── PBGitSVRemoteBranchItem.m ├── PBGitSVRemoteItem.h ├── PBGitSVRemoteItem.m ├── PBGitSVStageItem.h ├── PBGitSVStageItem.m ├── PBGitSVTagItem.h ├── PBGitSVTagItem.m ├── PBGitSidebarController.h ├── PBGitSidebarController.m ├── PBGitSidebarView.xib ├── PBGitTree.h ├── PBGitTree.m ├── PBGitWindowController.h ├── PBGitWindowController.m ├── PBGitXMessageSheet.h ├── PBGitXMessageSheet.m ├── PBGitXMessageSheet.xib ├── PBGitXProtocol.h ├── PBGitXProtocol.m ├── PBGraphCellInfo.h ├── PBGraphCellInfo.m ├── PBHistorySearchController.h ├── PBHistorySearchController.m ├── PBIconAndTextCell.h ├── PBIconAndTextCell.m ├── PBNSURLPathUserDefaultsTransfomer.h ├── PBNSURLPathUserDefaultsTransfomer.m ├── PBNiceSplitView.h ├── PBNiceSplitView.m ├── PBPrefsWindowController.h ├── PBPrefsWindowController.m ├── PBQLOutlineView.h ├── PBQLOutlineView.m ├── PBQLTextView.h ├── PBQLTextView.m ├── PBRefContextDelegate.h ├── PBRefController.h ├── PBRefController.m ├── PBRefMenuItem.h ├── PBRefMenuItem.m ├── PBRemoteProgressSheet.h ├── PBRemoteProgressSheet.m ├── PBRepositoryDocumentController.h ├── PBRepositoryDocumentController.m ├── PBServicesController.h ├── PBServicesController.m ├── PBSourceViewAction.h ├── PBSourceViewAction.m ├── PBSourceViewBadge.h ├── PBSourceViewBadge.m ├── PBSourceViewCell.h ├── PBSourceViewCell.m ├── PBSourceViewItem.h ├── PBSourceViewItem.m ├── PBSourceViewItems.h ├── PBSourceViewRemote.h ├── PBSourceViewRemote.m ├── PBUnsortableTableHeader.h ├── PBUnsortableTableHeader.m ├── PBViewController.h ├── PBViewController.m ├── PBWebChangesController.h ├── PBWebChangesController.m ├── PBWebController.h ├── PBWebController.m ├── PBWebDiffController.h ├── PBWebDiffController.m ├── PBWebHistoryController.h ├── PBWebHistoryController.m ├── README ├── Rakefile ├── RoundedRectangle.h ├── RoundedRectangle.m ├── Site ├── .gitignore ├── Rakefile ├── UserManual │ ├── .gitignore │ ├── assets │ │ └── images │ │ │ ├── branch-lanes.png │ │ │ ├── branchswitcher.png │ │ │ ├── commitview.png │ │ │ ├── detailswitcher.png │ │ │ ├── display_diff.png │ │ │ ├── gistie.png │ │ │ ├── gitx.png │ │ │ ├── historyview.png │ │ │ ├── left-right.png │ │ │ ├── menubar.png │ │ │ ├── quicklook.png │ │ │ └── viewswitcher.png │ ├── template.html │ └── text │ │ ├── 01 - Introduction.markdown │ │ ├── 02 - Overview.markdown │ │ ├── 03 - Committing.markdown │ │ └── 04 - Advance GitX usage.markdown ├── assets │ ├── css │ │ ├── master.css │ │ └── usermanual.css │ └── images │ │ ├── bg.png │ │ ├── download.png │ │ ├── favicon.png │ │ ├── header.jpg │ │ └── qtime.png ├── lib │ └── release_notes.rb ├── templates │ ├── site.html │ └── sparkle.xml └── text │ ├── contact.markdown │ ├── contribute.markdown │ ├── index.markdown │ ├── links.markdown │ ├── release_history.markdown │ └── seeit.markdown ├── Sparkle.framework ├── Headers ├── Resources ├── Sparkle └── Versions │ ├── A │ ├── Headers │ │ ├── SUAppcast.h │ │ ├── SUAppcastItem.h │ │ ├── SUUpdater.h │ │ ├── SUVersionComparisonProtocol.h │ │ └── Sparkle.h │ ├── Resources │ │ ├── Info.plist │ │ ├── License.txt │ │ ├── SUModelTranslation.plist │ │ ├── SUStatus.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ ├── de.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── en.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── es.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── fr.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── fr_CA.lproj │ │ ├── it.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── nl.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── relaunch │ │ ├── ru.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ └── sv.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ └── Sparkle │ └── Current ├── SpeedTest-Info.plist ├── Terminal.h ├── UpdateKey.pem ├── build_libgit2.sh ├── feed.xml ├── gitx.icns ├── gitx.m ├── gitx_askpasswd_main.m ├── html ├── css │ ├── GitX.css │ ├── diff.css │ ├── notification.css │ ├── shCoreGitX.css │ └── shThemeGitX.css ├── dragtest.html ├── images │ ├── added.acorn │ ├── added.png │ ├── modified.acorn │ ├── modified.png │ ├── removed.acorn │ ├── removed.png │ ├── renamed.acorn │ ├── renamed.png │ └── spinner.gif ├── lib │ ├── GitX.js │ ├── diffHighlighter.js │ ├── keyboardNavigation.js │ ├── md5.js │ └── syntaxhighlighter │ │ ├── LGPL-LICENSE │ │ ├── MIT-LICENSE │ │ ├── compass │ │ ├── _theme_template.scss │ │ ├── config.rb │ │ ├── shCore.scss │ │ ├── shCoreDefault.scss │ │ ├── shCoreDjango.scss │ │ ├── shCoreEclipse.scss │ │ ├── shCoreEmacs.scss │ │ ├── shCoreFadeToGrey.scss │ │ ├── shCoreMDUltra.scss │ │ ├── shCoreMidnight.scss │ │ ├── shCoreRDark.scss │ │ ├── shThemeDefault.scss │ │ ├── shThemeDjango.scss │ │ ├── shThemeEclipse.scss │ │ ├── shThemeEmacs.scss │ │ ├── shThemeFadeToGrey.scss │ │ ├── shThemeMDUltra.scss │ │ ├── shThemeMidnight.scss │ │ └── shThemeRDark.scss │ │ ├── index.html │ │ ├── scripts │ │ ├── shAutoloader.js │ │ ├── shBrushAS3.js │ │ ├── shBrushAppleScript.js │ │ ├── shBrushBash.js │ │ ├── shBrushCSharp.js │ │ ├── shBrushColdFusion.js │ │ ├── shBrushCpp.js │ │ ├── shBrushCss.js │ │ ├── shBrushDelphi.js │ │ ├── shBrushDiff.js │ │ ├── shBrushErlang.js │ │ ├── shBrushGroovy.js │ │ ├── shBrushJScript.js │ │ ├── shBrushJava.js │ │ ├── shBrushJavaFX.js │ │ ├── shBrushObjC.js │ │ ├── shBrushPerl.js │ │ ├── shBrushPhp.js │ │ ├── shBrushPlain.js │ │ ├── shBrushPowerShell.js │ │ ├── shBrushPython.js │ │ ├── shBrushRuby.js │ │ ├── shBrushSass.js │ │ ├── shBrushScala.js │ │ ├── shBrushSql.js │ │ ├── shBrushVb.js │ │ ├── shBrushXml.js │ │ ├── shCore.js │ │ └── shLegacy.js │ │ ├── src │ │ ├── shAutoloader.js │ │ ├── shCore.js │ │ └── shLegacy.js │ │ ├── styles │ │ ├── shCore.css │ │ ├── shCoreDefault.css │ │ ├── shCoreDjango.css │ │ ├── shCoreEclipse.css │ │ ├── shCoreEmacs.css │ │ ├── shCoreFadeToGrey.css │ │ ├── shCoreMDUltra.css │ │ ├── shCoreMidnight.css │ │ ├── shCoreRDark.css │ │ ├── shThemeDefault.css │ │ ├── shThemeDjango.css │ │ ├── shThemeEclipse.css │ │ ├── shThemeEmacs.css │ │ ├── shThemeFadeToGrey.css │ │ ├── shThemeMDUltra.css │ │ ├── shThemeMidnight.css │ │ └── shThemeRDark.css │ │ └── tests │ │ ├── .rvmrc │ │ ├── brushes │ │ └── sass.html │ │ ├── brushes_tests.html │ │ ├── cases │ │ ├── 001_basic.html │ │ ├── 002_brushes.html │ │ ├── 003_script_tag.html │ │ ├── 004_url_parsing.html │ │ ├── 005_no_gutter.html │ │ ├── 006_pad_line_numbers.html │ │ ├── 007_collapse.html │ │ ├── 007_collapse_interaction.html │ │ ├── 008_first_line.html │ │ ├── 009_class_name.html │ │ ├── 010_highlight.html │ │ ├── 011_smart_tabs.html │ │ ├── 012_server_side.html │ │ ├── 013_html_script.html │ │ └── 014_legacy.html │ │ ├── commonjs_tests.js │ │ ├── js │ │ ├── jquery-1.4.2.js │ │ ├── qunit.css │ │ └── qunit.js │ │ ├── syntaxhighlighter_tests.html │ │ ├── theme_tests.html │ │ ├── webrick.rb │ │ └── webrick.sh └── views │ ├── blame │ ├── blame.css │ ├── blame.js │ └── index.html │ ├── commit │ ├── commit.css │ ├── commit.js │ ├── index.html │ └── multipleSelection.js │ ├── diff │ ├── diffWindow.css │ ├── diffWindow.js │ └── index.html │ ├── fileview │ ├── fileview.js │ ├── index.html │ └── index_test.html │ ├── history │ ├── history.css │ ├── history.js │ └── index.html │ └── log │ ├── format.html │ ├── index.html │ ├── log.css │ ├── log.js │ └── test.html ├── main.m ├── speed_test ├── README ├── array.m ├── global.c └── malloc.c ├── speedtest.h ├── speedtest.m ├── test ├── framework.rb └── index.rb └── version.plist /.gitattributes: -------------------------------------------------------------------------------- 1 | *.m diff=objc 2 | *.mm diff=objc -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | build/revision 3 | *.xcodeproj/ 4 | !*.xcodeproj/project.pbxproj 5 | Nightly.app.zip 6 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libgit2"] 2 | path = libgit2 3 | url = git://github.com/pieter/libgit2.git 4 | -------------------------------------------------------------------------------- /ApplicationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // GitTest_AppDelegate.h 3 | // GitTest 4 | // 5 | // Created by Pieter de Bie on 13-06-08. 6 | // Copyright __MyCompanyName__ 2008 . All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRepository.h" 11 | 12 | @class PBCloneRepositoryPanel; 13 | 14 | @interface ApplicationController : NSObject 15 | { 16 | IBOutlet NSWindow *window; 17 | IBOutlet id firstResponder; 18 | NSPersistentStoreCoordinator *persistentStoreCoordinator; 19 | NSManagedObjectModel *managedObjectModel; 20 | NSManagedObjectContext *managedObjectContext; 21 | 22 | PBCloneRepositoryPanel *cloneRepositoryPanel; 23 | } 24 | 25 | - (NSPersistentStoreCoordinator *)persistentStoreCoordinator; 26 | - (NSManagedObjectModel *)managedObjectModel; 27 | - (NSManagedObjectContext *)managedObjectContext; 28 | 29 | - (IBAction)openPreferencesWindow:(id)sender; 30 | - (IBAction)showAboutPanel:(id)sender; 31 | 32 | - (IBAction)installCliTool:(id)sender; 33 | 34 | - (IBAction)saveAction:sender; 35 | - (IBAction)showHelp:(id)sender; 36 | - (IBAction)reportAProblem:(id)sender; 37 | 38 | - (IBAction)showCloneRepository:(id)sender; 39 | @end 40 | -------------------------------------------------------------------------------- /Credits.html: -------------------------------------------------------------------------------- 1 | GitX Homepage -------------------------------------------------------------------------------- /Documentation/README: -------------------------------------------------------------------------------- 1 | This directory is meant to document some of the API's that we use -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.2.1.txt: -------------------------------------------------------------------------------- 1 | V0.2.1 2 | === 3 | * Added Sparkle update system 4 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.2.txt: -------------------------------------------------------------------------------- 1 | V0.2: Changes since v0.1 2 | ==== 3 | * The graph now has colors 4 | * There are now lables attached to commits -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.3.1.txt: -------------------------------------------------------------------------------- 1 | v0.3.1 2 | === 3 | * Fixed a serious crasher 4 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.3.txt: -------------------------------------------------------------------------------- 1 | V0.3: Changes since v0.2.1 2 | ==== 3 | * You can now pass on command-line arguments just like you can with 'git log' 4 | * The program has an icon 5 | * Also displays remote branches in the branch list 6 | * Is better in determining if a directory is a bare git repository 7 | * Support for --left-right: use 'gitx --left-right HEAD..origin/master' 8 | to see which commits are only on your branch or on their branch 9 | * Navigate through changed hunks by using j/k keys 10 | * Scroll down in webview by using space / shift-space 11 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.4.1.txt: -------------------------------------------------------------------------------- 1 | v0.4.1 2 | == 3 | 4 | This is a maintenance release. Most important fixes: 5 | 6 | * The diff display is now much faster 7 | * More locations are now searched for a default git 8 | * Code pasted online is now private 9 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.4.txt: -------------------------------------------------------------------------------- 1 | v0.4: Changes since v0.3.1 2 | === 3 | * A new commitview, allowing you to selectively add changes and commit them. 4 | * You can now upload a commit as a patch to gist.github.com 5 | * GitX now searches for your git binary in more directories and is smarter 6 | about reporting errors regarding git paths. 7 | * You can now remove branches by right-clicking on them in the detailed view 8 | * GitX now comes with a spicy new icon 9 | * The diff view has become prettier and now also highlights trailing 10 | whitespace. 11 | * Various little changes and stability improvement 12 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.5.txt: -------------------------------------------------------------------------------- 1 | v0.5 2 | ==== 3 | 4 | This feature release has several new smaller or larger features: 5 | 6 | * The current branch is now highlighted 7 | * In the commit view, there is an option to amend commits 8 | * The "Gist it" button now respects github.user/token 9 | * Display a gravatar of the committer 10 | * The commit message view now displays a vertical line at 50 characters 11 | * It is now possible to revert changes by using the context menu in the 12 | commit view 13 | * You can now stage only parts of a file by using the "Stage Hunk" buttons 14 | in the commit view 15 | * You can now use GitX to show a diff of anything, for example by using 16 | 'gitx --diff HEAD^^' or 'git diff HEAD~3 | gitx --diff' 17 | * You can now drag and drop refs to move them and also create branches 18 | 19 | In addition, the following bugs have been fixed: 20 | 21 | * Better detection of git version 22 | * Branch lines are no longer interspersed with half a pixel of whitespace 23 | * The toolbar keeps its state when switching views 24 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.6.1.txt: -------------------------------------------------------------------------------- 1 | v0.6.1 2 | === 3 | 4 | This is a bugfix release. The following bugs have been fixed: 5 | 6 | * The commit view shows new files with linebreaks 7 | * The history view works with Git >= 1.5.4 again 8 | * Reloading the detailed view in the History no longer causes an empty page 9 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.6.2.txt: -------------------------------------------------------------------------------- 1 | v0.6.2 2 | === 3 | 4 | This is a maintenance release. The following bugs have been fixed: 5 | 6 | * Fix many display bugs in the history view (Thanks to Johannes Gilger) 7 | * Fix moving of refs 8 | * GitX no longer stalls if you have a large amount of untracked files 9 | * GitX now asks for confirmation before deleting a branch 10 | * GitX no longer shows ghost files after staging a hunk 11 | * Dragging and dropping a tree now correctly copies all files 12 | 13 | In addition, the following features have been added: 14 | 15 | * There is now a 'New…' option to create a new repository 16 | * The 'Gist It' feature now asks for confirmation by default. This can be changed in the preferences 17 | * GitX can now open any directory by dragging it on the icon 18 | * GitX now asks for confirmation before deleting a branch 19 | 20 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.6.3.txt: -------------------------------------------------------------------------------- 1 | v0.6.3 2 | === 3 | 4 | This is a maintenance release. The following bugs have been fixed: 5 | 6 | * Fixed a problem where GitX could not open some directories, for example those that include a . [Johannes Gilger] 7 | * Fixed a performance issue when staging or unstaging a lot of files 8 | * Various buildfixes (Benjamin Kramer, Arjen Laarhoven) 9 | 10 | -------------------------------------------------------------------------------- /Documentation/ReleaseNotes/v0.7.1.txt: -------------------------------------------------------------------------------- 1 | v0.7.1 2 | === 3 | 4 | This is a maintenance release. The following bugs have been fixed: 5 | 6 | * The Tree View now tries to be smart about displaying binaries (Johannes) 7 | * GitX now correctly tries to require git v1.6.0 or higher (Pieter) 8 | * Amending commits if the author name has UTF-8 multi-byte characters now correctly works (Pieter) 9 | * GitX no longer stalls for large periods when refreshing in the commit view (Johannes, Pieter) 10 | * The history view tries to be less crashy when loading commits 11 | 12 | In addition, the Sparkle framework has been updated so that future updates will be signed 13 | -------------------------------------------------------------------------------- /English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /GLFileView.h: -------------------------------------------------------------------------------- 1 | // 2 | // GLFileView.h 3 | // GitX 4 | // 5 | // Created by German Laullon on 14/09/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBWebController.h" 11 | #import "MGScopeBarDelegateProtocol.h" 12 | #import "PBGitCommit.h" 13 | #import "PBGitHistoryController.h" 14 | #import "PBRefContextDelegate.h" 15 | 16 | @class PBGitGradientBarView; 17 | 18 | @interface GLFileView : PBWebController { 19 | IBOutlet PBGitHistoryController* historyController; 20 | IBOutlet MGScopeBar *typeBar; 21 | NSMutableArray *groups; 22 | NSString *logFormat; 23 | IBOutlet NSView *accessoryView; 24 | IBOutlet NSSplitView *fileListSplitView; 25 | } 26 | 27 | - (void)showFile; 28 | - (void)didLoad; 29 | - (NSString *)parseBlame:(NSString *)txt; 30 | - (NSString *)parseHTML:(NSString *)txt; 31 | 32 | @property(retain) NSMutableArray *groups; 33 | @property(retain) NSString *logFormat; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /GitTest_DataModel.xcdatamodel/elements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/GitTest_DataModel.xcdatamodel/elements -------------------------------------------------------------------------------- /GitTest_DataModel.xcdatamodel/layout: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/GitTest_DataModel.xcdatamodel/layout -------------------------------------------------------------------------------- /GitXRelativeDateFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // GitXRelativeDateFormatter.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 9/1/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface GitXRelativeDateFormatter : NSFormatter { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /GitXScriptingConstants.h: -------------------------------------------------------------------------------- 1 | // 2 | // GitXScriptingConstants.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 8/15/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #define kGitXBundleIdentifier @"nl.frim.GitX" 10 | 11 | 12 | #define kGitXAEKeyArgumentsList 'ARGS' 13 | 14 | #define kGitXCloneDestinationURLKey @"destinationURL" 15 | #define kGitXCloneIsBareKey @"isBare" 16 | 17 | #define kGitXFindSearchStringKey @"searchString" 18 | #define kGitXFindInModeKey @"inMode" 19 | -------------------------------------------------------------------------------- /GitXTesting-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.yourcompany.${PRODUCT_NAME:identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | FMWK 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | 20 | 21 | -------------------------------------------------------------------------------- /GitXTextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // GitXTextFieldCell.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 8/27/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBRefContextDelegate.h" 11 | 12 | 13 | @interface GitXTextFieldCell : NSTextFieldCell { 14 | IBOutlet id contextMenuDelegate; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GitXTextFieldCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // GitXTextFieldCell.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 8/27/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "GitXTextFieldCell.h" 10 | #import "PBGitCommit.h" 11 | #import "PBRefController.h" 12 | 13 | 14 | @implementation GitXTextFieldCell 15 | 16 | - (NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 17 | { 18 | // disables the cell's selection highlight 19 | return nil; 20 | } 21 | 22 | - (NSMenu *)menuForEvent:(NSEvent *)anEvent inRect:(NSRect)cellFrame ofView:(NSTableView *)commitList 23 | { 24 | NSInteger rowIndex = [commitList rowAtPoint:(cellFrame.origin)]; 25 | NSArray *items = [contextMenuDelegate menuItemsForRow:rowIndex]; 26 | if (!items) 27 | return nil; 28 | 29 | NSMenu *menu = [[NSMenu alloc] init]; 30 | [menu setAutoenablesItems:NO]; 31 | for (NSMenuItem *item in items) 32 | [menu addItem:item]; 33 | 34 | return menu; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /GitX_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'GitTest' target in the 'GitTest' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Images/AddBranchTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddBranchTemplate.png -------------------------------------------------------------------------------- /Images/AddBranchTemplate.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddBranchTemplate.psd -------------------------------------------------------------------------------- /Images/AddLabelTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddLabelTemplate.png -------------------------------------------------------------------------------- /Images/AddLabelTemplate.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddLabelTemplate.psd -------------------------------------------------------------------------------- /Images/AddRemote.acorn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddRemote.acorn -------------------------------------------------------------------------------- /Images/AddRemote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/AddRemote.png -------------------------------------------------------------------------------- /Images/Branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/Branch.png -------------------------------------------------------------------------------- /Images/CherryPickTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/CherryPickTemplate.png -------------------------------------------------------------------------------- /Images/CloneRepositoryFireworksTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/CloneRepositoryFireworksTemplate.png -------------------------------------------------------------------------------- /Images/CloneRepositoryTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/CloneRepositoryTemplate.png -------------------------------------------------------------------------------- /Images/CommitViewTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/CommitViewTemplate.png -------------------------------------------------------------------------------- /Images/CommitViewTemplate.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/CommitViewTemplate.psd -------------------------------------------------------------------------------- /Images/DetailViewTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/DetailViewTemplate.png -------------------------------------------------------------------------------- /Images/FetchTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/FetchTemplate.png -------------------------------------------------------------------------------- /Images/HistoryViewTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/HistoryViewTemplate.png -------------------------------------------------------------------------------- /Images/HistoryViewTemplate.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/HistoryViewTemplate.psd -------------------------------------------------------------------------------- /Images/MergeTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/MergeTemplate.png -------------------------------------------------------------------------------- /Images/Preferences/Updates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/Preferences/Updates.png -------------------------------------------------------------------------------- /Images/PullTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/PullTemplate.png -------------------------------------------------------------------------------- /Images/PushTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/PushTemplate.png -------------------------------------------------------------------------------- /Images/RebaseTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/RebaseTemplate.png -------------------------------------------------------------------------------- /Images/RemoteBranch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/RemoteBranch.png -------------------------------------------------------------------------------- /Images/StageView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/StageView.png -------------------------------------------------------------------------------- /Images/Tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/Tag.png -------------------------------------------------------------------------------- /Images/add_branch.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/add_branch.psd -------------------------------------------------------------------------------- /Images/branch.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/branch.tiff -------------------------------------------------------------------------------- /Images/deleted_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/deleted_file.png -------------------------------------------------------------------------------- /Images/empty_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/empty_file.png -------------------------------------------------------------------------------- /Images/file_template.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/file_template.psd -------------------------------------------------------------------------------- /Images/folder.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/folder.tiff -------------------------------------------------------------------------------- /Images/gitx_icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/gitx_icon.psd -------------------------------------------------------------------------------- /Images/mainSplitterBar.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/mainSplitterBar.tiff -------------------------------------------------------------------------------- /Images/mainSplitterDimple.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/mainSplitterDimple.tiff -------------------------------------------------------------------------------- /Images/new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/new_file.png -------------------------------------------------------------------------------- /Images/remote.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/remote.tiff -------------------------------------------------------------------------------- /Images/rewindImage.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/rewindImage.pdf -------------------------------------------------------------------------------- /Images/site_download_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/site_download_background.png -------------------------------------------------------------------------------- /Images/tag.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Images/tag.tiff -------------------------------------------------------------------------------- /MGScopeBar/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/MGScopeBar/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /MGScopeBar/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.yourcompany.${PRODUCT_NAME:identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | NSMainNibFile 24 | MainMenu 25 | NSPrincipalClass 26 | NSApplication 27 | 28 | 29 | -------------------------------------------------------------------------------- /MGScopeBar/MGRecessedPopUpButtonCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MGRecessedPopUpButtonCell.h 3 | // MGScopeBar 4 | // 5 | // Created by Matt Gemmell on 20/03/2008. 6 | // Copyright 2008 Instinctive Code. 7 | // 8 | 9 | #import 10 | 11 | /* 12 | This cell class is used only for NSPopUpButtons which do NOT automatically 13 | get their titles from their selected menu-items, since such popup-buttons 14 | are weirdly broken when using the recessed bezel-style. 15 | */ 16 | 17 | @interface MGRecessedPopUpButtonCell : NSPopUpButtonCell { 18 | NSButton *recessedButton; // we use a separate NSButton to do the bezel-drawing. 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /MGScopeBar/MGScopeBar_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MGScopeBar' target in the 'MGScopeBar' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /MGScopeBar/TODO: -------------------------------------------------------------------------------- 1 | MGScopeBar TODO 2 | 3 | 4 | - Maybe properly support a blue gradient appearance (like Mail in Tiger)? 5 | - Easy to change background gradient, but buttons/popups still highlight gray. 6 | 7 | - Accessibility support 8 | - The control needs to indicate which groups it contains, what selection-mode those groups support, etc. 9 | - Otherwise it's just an opaque group of buttons to VoiceOver. 10 | -------------------------------------------------------------------------------- /NSApplication+GitXScripting.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSApplication+GitXScripting.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 8/15/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSApplication (GitXScripting) 13 | 14 | - (void)showDiffScriptCommand:(NSScriptCommand *)command; 15 | - (void)initRepositoryScriptCommand:(NSScriptCommand *)command; 16 | - (void)cloneRepositoryScriptCommand:(NSScriptCommand *)command; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /NSFileHandleExt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Extension for NSFileHandle to make it capable of easy network programming 3 | * 4 | * Version 1.0, get the newest from http://michael.stapelberg.de/NSFileHandleExt.php 5 | * 6 | * Copyright 2007 Michael Stapelberg 7 | * 8 | * Distributed under BSD-License, see http://michael.stapelberg.de/BSD.php 9 | * 10 | */ 11 | 12 | #import 13 | #include 14 | #include 15 | #include 16 | #include 17 | 18 | @interface NSFileHandle(NSFileHandleExt) 19 | -(NSString*)readLine; 20 | @end 21 | -------------------------------------------------------------------------------- /NSOutlineViewExt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSOutlineViewExit.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/9/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSOutlineView (PBExpandParents) 13 | 14 | - (void)PBExpandItem:(id)item expandParents:(BOOL)expand; 15 | @end 16 | -------------------------------------------------------------------------------- /NSOutlineViewExt.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSOutlineViewExit.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/9/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "NSOutlineViewExt.h" 10 | 11 | 12 | @implementation NSOutlineView (PBExpandParents) 13 | 14 | - (void)PBExpandItem:(id)item expandParents:(BOOL)expand 15 | { 16 | NSMutableArray *parents = [NSMutableArray array]; 17 | while (item) { 18 | [parents insertObject:item atIndex:0]; 19 | item = [item parent]; 20 | } 21 | 22 | for (id p in parents) 23 | [self expandItem:p]; 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /NSString_RegEx.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString_RegEx.h 3 | // 4 | // Created by John R Chang on 2005-11-08. 5 | // This code is Creative Commons Public Domain. You may use it for any purpose whatsoever. 6 | // http://creativecommons.org/licenses/publicdomain/ 7 | // 8 | 9 | #import 10 | 11 | /* 12 | For regular expression help, see re_format(7) man page. 13 | */ 14 | 15 | @interface NSString (RegEx) 16 | 17 | /* 18 | Common are REG_ICASE and REG_NEWLINE. For other possible option flags, 19 | see regex(3) man page. You don't need to specify REG_EXTENDED. 20 | 21 | is the number of subexpressions to match. 22 | Returns an array of strings. The first string is the matching substring, 23 | the remaining are the matching subexpressions, up to nmatch+1 number. 24 | 25 | If nmatch is -1, works like grep. Returns an array containing self if matching. 26 | 27 | Returns nil if regular expression does not match or if an error has occurred. 28 | */ 29 | - (NSArray *) substringsMatchingRegularExpression:(NSString *)pattern count:(int)nmatch 30 | options:(int)options ranges:(NSArray **)ranges error:(NSError **)error; 31 | 32 | - (BOOL) grep:(NSString *)pattern options:(int)options; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /PBAddRemoteSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBAddRemoteSheet.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 12/8/09. 6 | // Copyright 2009 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @class PBGitRepository; 13 | 14 | @interface PBAddRemoteSheet : NSWindowController { 15 | PBGitRepository *repository; 16 | 17 | NSTextField *remoteName; 18 | NSTextField *remoteURL; 19 | NSTextField *errorMessage; 20 | 21 | NSOpenPanel *browseSheet; 22 | NSView *browseAccessoryView; 23 | } 24 | 25 | + (void) beginAddRemoteSheetForRepository:(PBGitRepository *)repo; 26 | 27 | - (IBAction) browseFolders:(id)sender; 28 | - (IBAction) addRemote:(id)sender; 29 | - (IBAction) orderOutAddRemoteSheet:(id)sender; 30 | - (IBAction) showHideHiddenFiles:(id)sender; 31 | 32 | 33 | @property (readwrite) PBGitRepository *repository; 34 | 35 | @property (readwrite) IBOutlet NSTextField *remoteName; 36 | @property (readwrite) IBOutlet NSTextField *remoteURL; 37 | @property (readwrite) IBOutlet NSTextField *errorMessage; 38 | 39 | @property (readwrite) NSOpenPanel *browseSheet; 40 | @property (readwrite) IBOutlet NSView *browseAccessoryView; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /PBCLIProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCLIProxy.h 3 | // GitX 4 | // 5 | // Created by Ciarán Walsh on 15/08/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBCLIProxy : NSObject 13 | { 14 | NSConnection *connection; 15 | } 16 | @property (retain) NSConnection* connection; 17 | @end 18 | 19 | #define ConnectionName @"GitX DO Connection" 20 | #define PBCLIProxyErrorDomain @"PBCLIProxyErrorDomain" 21 | 22 | @protocol GitXCliToolProtocol 23 | - (BOOL)openRepository:(NSURL*)repositoryPath arguments: (NSArray*) args error:(NSError**)error; 24 | - (void)openDiffWindowWithDiff:(NSString *)diff; 25 | @end -------------------------------------------------------------------------------- /PBChangedFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBChangedFile.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 22-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRepository.h" 11 | 12 | typedef enum { 13 | NEW, 14 | MODIFIED, 15 | DELETED 16 | } PBChangedFileStatus; 17 | 18 | @interface PBChangedFile : NSObject { 19 | NSString *path; 20 | BOOL hasStagedChanges; 21 | BOOL hasUnstagedChanges; 22 | 23 | // Index and HEAD stuff, to be used to revert changes 24 | NSString *commitBlobSHA; 25 | NSString *commitBlobMode; 26 | 27 | PBChangedFileStatus status; 28 | } 29 | 30 | 31 | @property (copy) NSString *path, *commitBlobSHA, *commitBlobMode; 32 | @property (assign) PBChangedFileStatus status; 33 | @property (assign) BOOL hasStagedChanges, hasUnstagedChanges; 34 | 35 | - (NSImage *)icon; 36 | - (NSString *)indexInfo; 37 | 38 | - (id) initWithPath:(NSString *)p; 39 | @end 40 | -------------------------------------------------------------------------------- /PBCloneRepositoryPanel.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCloneRepositoryPanel.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/7/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBCloneRepositoryPanel : NSWindowController { 13 | NSTextField *repositoryURL; 14 | NSTextField *destinationPath; 15 | NSTextField *errorMessage; 16 | NSView *repositoryAccessoryView; 17 | 18 | NSOpenPanel *browseRepositoryPanel; 19 | NSOpenPanel *browseDestinationPanel; 20 | 21 | NSString *path; 22 | BOOL isBare; 23 | } 24 | 25 | + (id) panel; 26 | + (void)beginCloneRepository:(NSString *)repository toURL:(NSURL *)targetURL isBare:(BOOL)bare; 27 | 28 | - (void)showMessageSheet:(NSString *)messageText infoText:(NSString *)infoText; 29 | - (void)showErrorSheet:(NSError *)error; 30 | 31 | - (IBAction) closeCloneRepositoryPanel:(id)sender; 32 | - (IBAction) clone:(id)sender; 33 | - (IBAction) browseRepository:(id)sender; 34 | - (IBAction) showHideHiddenFiles:(id)sender; 35 | - (IBAction) browseDestination:(id)sender; 36 | 37 | @property (assign) IBOutlet NSTextField *repositoryURL; 38 | @property (assign) IBOutlet NSTextField *destinationPath; 39 | @property (assign) IBOutlet NSTextField *errorMessage; 40 | @property (assign) IBOutlet NSView *repositoryAccessoryView; 41 | 42 | @property (assign) BOOL isBare; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /PBCloneRepsitoryToSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCloneRepsitoryToSheet.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/7/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @class PBGitRepository; 13 | 14 | @interface PBCloneRepsitoryToSheet : NSWindowController { 15 | PBGitRepository *repository; 16 | 17 | BOOL isBare; 18 | 19 | NSTextField *message; 20 | NSView *cloneToAccessoryView; 21 | } 22 | 23 | + (void) beginCloneRepsitoryToSheetForRepository:(PBGitRepository *)repo; 24 | 25 | 26 | @property (readwrite) PBGitRepository *repository; 27 | 28 | @property (readwrite) BOOL isBare; 29 | 30 | @property (readwrite) IBOutlet NSTextField *message; 31 | @property (readwrite) IBOutlet NSView *cloneToAccessoryView; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBCollapsibleSplitView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCollapsibleSplitView.h 3 | // GitX 4 | // 5 | // This is a limited subclass of a SplitView. It adds methods to aid in 6 | // collapsing/uncollapsing subviews using the mouse or programmatically. 7 | // Right now it only works for vertical layouts and with two subviews. 8 | // 9 | // Created by Johannes Gilger on 6/21/09. 10 | // Copyright 2009 Johannes Gilger. All rights reserved. 11 | // 12 | 13 | #import 14 | #import "PBNiceSplitView.h" 15 | 16 | @interface PBCollapsibleSplitView : PBNiceSplitView { 17 | CGFloat topViewMin; 18 | CGFloat bottomViewMin; 19 | CGFloat splitterPosition; 20 | } 21 | 22 | @property (readonly) CGFloat topViewMin; 23 | @property (readonly) CGFloat bottomViewMin; 24 | 25 | - (void)setTopMin:(CGFloat)topMin andBottomMin:(CGFloat)bottomMin; 26 | - (void)uncollapse; 27 | - (void)keyDown:(NSEvent *)event; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /PBCommitHookFailedSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCommitHookFailedSheet.h 3 | // GitX 4 | // 5 | // Created by Sebastian Staudt on 9/12/10. 6 | // Copyright 2010 Sebastian Staudt. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "PBGitCommitController.h" 12 | #import "PBGitXMessageSheet.h" 13 | 14 | 15 | @interface PBCommitHookFailedSheet : PBGitXMessageSheet 16 | { 17 | PBGitCommitController *commitController; 18 | } 19 | 20 | + (void)beginMessageSheetForWindow:(NSWindow *)parentWindow withMessageText:(NSString *)message infoText:(NSString *)info commitController:(PBGitCommitController *)controller; 21 | 22 | - (id)initWithWindowNibName:(NSString *)windowNibName andController:(PBGitCommitController *)controller; 23 | - (IBAction)forceCommit:(id)sender; 24 | 25 | @end -------------------------------------------------------------------------------- /PBCommitHookFailedSheet.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBCommitHookFailedSheet.m 3 | // GitX 4 | // 5 | // Created by Sebastian Staudt on 9/12/10. 6 | // Copyright 2010 Sebastian Staudt. All rights reserved. 7 | // 8 | 9 | #import "PBCommitHookFailedSheet.h" 10 | #import "PBGitWindowController.h" 11 | 12 | 13 | @implementation PBCommitHookFailedSheet 14 | 15 | #pragma mark - 16 | #pragma mark PBCommitHookFailedSheet 17 | 18 | + (void)beginMessageSheetForWindow:(NSWindow *)parentWindow withMessageText:(NSString *)message infoText:(NSString *)info commitController:(PBGitCommitController *)controller 19 | { 20 | PBCommitHookFailedSheet *sheet = [[self alloc] initWithWindowNibName:@"PBCommitHookFailedSheet" andController:controller]; 21 | [sheet beginMessageSheetForWindow:parentWindow withMessageText:message infoText:info]; 22 | } 23 | 24 | - (id)initWithWindowNibName:(NSString *)windowNibName andController:(PBGitCommitController *)controller; 25 | { 26 | self = [self initWithWindowNibName:windowNibName]; 27 | commitController = controller; 28 | 29 | return self; 30 | } 31 | 32 | - (IBAction)forceCommit:(id)sender 33 | { 34 | [self closeMessageSheet:self]; 35 | [commitController forceCommit:sender]; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /PBCommitList.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCommitList.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/11/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "PBGitHistoryController.h" 12 | 13 | @class PBWebHistoryController; 14 | 15 | @interface PBCommitList : NSTableView { 16 | IBOutlet WebView* webView; 17 | IBOutlet PBWebHistoryController *webController; 18 | IBOutlet PBGitHistoryController *controller; 19 | IBOutlet PBHistorySearchController *searchController; 20 | 21 | BOOL useAdjustScroll; 22 | NSPoint mouseDownPoint; 23 | } 24 | 25 | @property (readonly) NSPoint mouseDownPoint; 26 | @property (assign) BOOL useAdjustScroll; 27 | @end 28 | -------------------------------------------------------------------------------- /PBCommitMessageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCommitMessageView.h 3 | // GitX 4 | // 5 | // Created by Jeff Mesnil on 13/10/08. 6 | // Copyright 2008 Jeff Mesnil (http://jmesnil.net/). All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface PBCommitMessageView : NSTextView { 12 | 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /PBCommitMessageView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBCommitMessageView.m 3 | // GitX 4 | // 5 | // Created by Jeff Mesnil on 13/10/08. 6 | // Copyright 2008 Jeff Mesnil (http://jmesnil.net/). All rights reserved. 7 | // 8 | 9 | #import "PBCommitMessageView.h" 10 | #import "PBGitDefaults.h" 11 | 12 | @implementation PBCommitMessageView 13 | 14 | - (void)drawRect:(NSRect)aRect 15 | { 16 | [super drawRect:aRect]; 17 | 18 | // draw a vertical line after the given size (used as an indicator 19 | // for the first line of the commit message) 20 | if ([PBGitDefaults commitMessageViewHasVerticalLine]) { 21 | float characterWidth = [@" " sizeWithAttributes:[self typingAttributes]].width; 22 | float lineWidth = characterWidth * [PBGitDefaults commitMessageViewVerticalLineLength]; 23 | 24 | [[NSColor lightGrayColor] set]; 25 | float padding = [[self textContainer] lineFragmentPadding]; 26 | NSRect line; 27 | line.origin.x = padding + lineWidth; 28 | line.origin.y = 0; 29 | line.size.width = 1; 30 | line.size.height = [self bounds].size.height; 31 | NSRectFill(line); 32 | } 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /PBCreateBranchSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCreateBranchSheet.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 12/13/09. 6 | // Copyright 2009 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRefish.h" 11 | 12 | 13 | @class PBGitRepository; 14 | 15 | 16 | @interface PBCreateBranchSheet : NSWindowController { 17 | PBGitRepository *repository; 18 | id startRefish; 19 | 20 | BOOL shouldCheckoutBranch; 21 | 22 | NSTextField *branchNameField; 23 | NSTextField *errorMessageField; 24 | } 25 | 26 | + (void) beginCreateBranchSheetAtRefish:(id )ref inRepository:(PBGitRepository *)repo; 27 | 28 | 29 | - (IBAction) createBranch:(id)sender; 30 | - (IBAction) closeCreateBranchSheet:(id)sender; 31 | 32 | 33 | @property (retain) PBGitRepository *repository; 34 | @property (retain) id startRefish; 35 | 36 | @property (assign) BOOL shouldCheckoutBranch; 37 | 38 | @property (assign) IBOutlet NSTextField *branchNameField; 39 | @property (assign) IBOutlet NSTextField *errorMessageField; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /PBCreateTagSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBCreateTagSheet.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 12/18/09. 6 | // Copyright 2009 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRefish.h" 11 | 12 | 13 | @class PBGitRepository; 14 | 15 | 16 | @interface PBCreateTagSheet : NSWindowController { 17 | PBGitRepository *repository; 18 | id targetRefish; 19 | 20 | NSTextField *tagNameField; 21 | NSTextView *tagMessageText; 22 | NSTextField *errorMessageField; 23 | } 24 | 25 | + (void) beginCreateTagSheetAtRefish:(id )refish inRepository:(PBGitRepository *)repo; 26 | 27 | - (IBAction) createTag:(id)sender; 28 | - (IBAction) closeCreateTagSheet:(id)sender; 29 | 30 | 31 | @property (retain) PBGitRepository *repository; 32 | @property (retain) id targetRefish; 33 | 34 | @property (assign) IBOutlet NSTextField *tagNameField; 35 | @property (assign) IBOutlet NSTextView *tagMessageText; 36 | @property (assign) IBOutlet NSTextField *errorMessageField; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /PBDiffWindowController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBDiffWindowController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 13-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class PBGitCommit; 12 | 13 | @interface PBDiffWindowController : NSWindowController { 14 | NSString *diff; 15 | } 16 | 17 | + (void) showDiffWindowWithFiles:(NSArray *)filePaths fromCommit:(PBGitCommit *)startCommit diffCommit:(PBGitCommit *)diffCommit; 18 | - (id) initWithDiff:(NSString *)diff; 19 | 20 | @property (readonly) NSString *diff; 21 | @end 22 | -------------------------------------------------------------------------------- /PBEasyFS.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBEasyFS.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 6/17/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBEasyFS : NSObject { 13 | 14 | } 15 | + (NSString*) tmpNameWithSuffix: (NSString*) path; 16 | + (NSString*) tmpDirWithPrefix: (NSString*) path; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /PBEasyFS.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBEasyFS.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 6/17/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBEasyFS.h" 10 | 11 | 12 | @implementation PBEasyFS 13 | 14 | + (NSString*) tmpNameWithSuffix: (NSString*) path 15 | { 16 | NSString* newName = [NSString stringWithFormat: @"%@/XXXXXX%@", NSTemporaryDirectory(), path]; 17 | char *template = (char*) [newName fileSystemRepresentation]; 18 | int fd = mkstemps(template, [path length]); 19 | close(fd); 20 | return [NSString stringWithUTF8String:template]; 21 | } 22 | 23 | + (NSString*) tmpDirWithPrefix: (NSString*) path 24 | { 25 | NSString* newName = [NSString stringWithFormat: @"%@%@.XXXXXX", NSTemporaryDirectory(), path]; 26 | char *template = (char*) [newName fileSystemRepresentation]; 27 | template = mkdtemp(template); 28 | return [NSString stringWithUTF8String:template]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /PBEasyPipe.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBEasyPipe.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 16-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBEasyPipe : NSObject { 13 | 14 | } 15 | + (NSTask *) taskForCommand:(NSString *)cmd withArgs:(NSArray *)args inDir:(NSString *)dir; 16 | 17 | + (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args; 18 | + (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir; 19 | 20 | + (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args; 21 | + (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir; 22 | + (NSString*) outputForCommand:(NSString *) cmd 23 | withArgs:(NSArray *) args 24 | inDir:(NSString *) dir 25 | retValue:(int *) ret; 26 | + (NSString*) outputForCommand:(NSString *) cmd 27 | withArgs:(NSArray *) args 28 | inDir:(NSString *) dir 29 | inputString:(NSString *)input 30 | retValue:(int *) ret; 31 | + (NSString*) outputForCommand:(NSString *) cmd 32 | withArgs:(NSArray *) args 33 | inDir:(NSString *) dir 34 | byExtendingEnvironment:(NSDictionary *)dict 35 | inputString:(NSString *)input 36 | retValue:(int *) ret; 37 | 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /PBFileChangesTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBFileChangesTableView.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 09-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBFileChangesTableView : NSTableView { 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /PBFileChangesTableView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBFileChangesTableView.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 09-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import "PBFileChangesTableView.h" 10 | #import "PBGitIndexController.h" 11 | 12 | @implementation PBFileChangesTableView 13 | 14 | #pragma mark NSTableView overrides 15 | - (NSMenu *)menuForEvent:(NSEvent *)theEvent 16 | { 17 | if ([self delegate]) { 18 | NSPoint eventLocation = [self convertPoint: [theEvent locationInWindow] fromView: nil]; 19 | NSInteger rowIndex = [self rowAtPoint:eventLocation]; 20 | [self selectRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex] byExtendingSelection:TRUE]; 21 | return [[self delegate] menuForTable: self]; 22 | } 23 | 24 | return nil; 25 | } 26 | 27 | - (NSDragOperation) draggingSourceOperationMaskForLocal:(BOOL) local 28 | { 29 | return NSDragOperationEvery; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /PBGitBinary.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitBinary.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 04-10-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #define MIN_GIT_VERSION "1.6.0" 12 | 13 | @interface PBGitBinary : NSObject { 14 | 15 | } 16 | 17 | + (NSString *) path; 18 | + (NSString *) version; 19 | + (NSArray *) searchLocations; 20 | + (NSString *) notFoundError; 21 | @end 22 | -------------------------------------------------------------------------------- /PBGitCommitController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitCommitController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 19-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBViewController.h" 11 | 12 | @class PBGitIndexController, PBIconAndTextCell, PBWebChangesController, PBGitIndex; 13 | @class PBNiceSplitView; 14 | 15 | @interface PBGitCommitController : PBViewController { 16 | // This might have to transfer over to the PBGitRepository 17 | // object sometime 18 | PBGitIndex *index; 19 | 20 | IBOutlet NSTextView *commitMessageView; 21 | IBOutlet NSArrayController *unstagedFilesController; 22 | IBOutlet NSArrayController *cachedFilesController; 23 | IBOutlet NSButton *commitButton; 24 | 25 | IBOutlet PBGitIndexController *indexController; 26 | IBOutlet PBWebChangesController *webController; 27 | IBOutlet PBNiceSplitView *commitSplitView; 28 | } 29 | 30 | @property(readonly) PBGitIndex *index; 31 | 32 | - (IBAction) refresh:(id) sender; 33 | - (IBAction) commit:(id) sender; 34 | - (IBAction) forceCommit:(id) sender; 35 | - (IBAction)signOff:(id)sender; 36 | @end 37 | -------------------------------------------------------------------------------- /PBGitConfig.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitConfig.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 14-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitBinary.h" 11 | #import "PBEasyPipe.h" 12 | 13 | @interface PBGitConfig : NSObject { 14 | NSString *repositoryPath; 15 | } 16 | 17 | - init; 18 | - initWithRepositoryPath:(NSString *)path; 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitDefaults.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitDefaults.h 3 | // GitX 4 | // 5 | // Created by Jeff Mesnil on 19/10/08. 6 | // Copyright 2008 Jeff Mesnil (http://jmesnil.net/). All rights reserved. 7 | // 8 | 9 | @interface PBGitDefaults : NSObject 10 | { 11 | 12 | } 13 | 14 | + (int) commitMessageViewVerticalLineLength; 15 | + (BOOL) commitMessageViewHasVerticalLine; 16 | + (BOOL) isGistEnabled; 17 | + (BOOL) isGravatarEnabled; 18 | + (BOOL) confirmPublicGists; 19 | + (BOOL) isGistPublic; 20 | + (BOOL)showWhitespaceDifferences; 21 | + (BOOL)openCurDirOnLaunch; 22 | + (BOOL)showOpenPanelOnLaunch; 23 | + (BOOL) shouldCheckoutBranch; 24 | + (void) setShouldCheckoutBranch:(BOOL)shouldCheckout; 25 | + (NSString *) recentCloneDestination; 26 | + (void) setRecentCloneDestination:(NSString *)path; 27 | + (BOOL) showStageView; 28 | + (void) setShowStageView:(BOOL)suppress; 29 | + (BOOL) openPreviousDocumentsOnLaunch; 30 | + (void) setPreviousDocumentPaths:(NSArray *)documentPaths; 31 | + (NSArray *) previousDocumentPaths; 32 | + (void) removePreviousDocumentPaths; 33 | + (NSInteger) branchFilter; 34 | + (void) setBranchFilter:(NSInteger)state; 35 | + (NSInteger)historySearchMode; 36 | + (void)setHistorySearchMode:(NSInteger)mode; 37 | 38 | 39 | // Suppressed Dialog Warnings 40 | + (void)suppressDialogWarningForDialog:(NSString *)dialog; 41 | + (BOOL)isDialogWarningSuppressedForDialog:(NSString *)dialog; 42 | + (void)resetAllDialogWarnings; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /PBGitGradientBarView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitGradientBarView.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/22/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBGitGradientBarView : NSView { 13 | NSGradient *gradient; 14 | } 15 | 16 | - (void) setTopShade:(float)topShade bottomShade:(float)bottomShade; 17 | - (void) setTopColor:(NSColor *)topShade bottomColor:(NSColor *)bottomColor; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitGradientBarView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitGradientBarView.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/22/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitGradientBarView.h" 10 | 11 | 12 | 13 | @implementation PBGitGradientBarView 14 | 15 | 16 | - (id) initWithFrame:(NSRect)frame 17 | { 18 | self = [super initWithFrame:frame]; 19 | if (!self) 20 | return nil; 21 | 22 | [self setTopShade:1.0 bottomShade:0.0]; 23 | 24 | return self; 25 | } 26 | 27 | 28 | - (void) drawRect:(NSRect)dirtyRect 29 | { 30 | [gradient drawInRect:[self bounds] angle:90]; 31 | } 32 | 33 | 34 | - (void) setTopColor:(NSColor *)topColor bottomColor:(NSColor *)bottomColor 35 | { 36 | if (!topColor || !bottomColor) 37 | return; 38 | 39 | gradient = [[NSGradient alloc] initWithStartingColor:bottomColor endingColor:topColor]; 40 | [self setNeedsDisplay:YES]; 41 | } 42 | 43 | 44 | - (void) setTopShade:(float)topShade bottomShade:(float)bottomShade 45 | { 46 | NSColor *topColor = [NSColor colorWithCalibratedWhite:topShade alpha:1.0]; 47 | NSColor *bottomColor = [NSColor colorWithCalibratedWhite:bottomShade alpha:1.0]; 48 | [self setTopColor:topColor bottomColor:bottomColor]; 49 | } 50 | 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /PBGitGraphLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBLine.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | struct PBGitGraphLine 10 | { 11 | int upper : 1; 12 | int from : 8; 13 | int to : 8; 14 | int colorIndex : 8; 15 | }; 16 | -------------------------------------------------------------------------------- /PBGitGraphLine.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBLine.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBGitGraphLine.h" 10 | 11 | @implementation PBGitGraphLine 12 | @synthesize upper, from, to, colorIndex; 13 | - (id)initWithUpper: (char) u From: (char) f to: (char) t color: (char) c; 14 | { 15 | upper = u; 16 | from = f; 17 | to = t; 18 | colorIndex = c; 19 | return self; 20 | } 21 | 22 | + (PBGitGraphLine*) lowerLineFrom:(char) f to: (char) t color: (char) c 23 | { 24 | return [[PBGitGraphLine alloc] initWithUpper:0 From:f to:t color:c]; 25 | } 26 | 27 | + (PBGitGraphLine*) upperLineFrom:(char) f to: (char) t color: (char) c 28 | { 29 | return [[PBGitGraphLine alloc] initWithUpper:1 From:f to:t color: c]; 30 | } 31 | @end 32 | -------------------------------------------------------------------------------- /PBGitGrapher.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitGrapher.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 17-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitCommit.h" 11 | #import "PBGitGraphLine.h" 12 | #import "PBGraphCellInfo.h" 13 | 14 | @interface PBGitGrapher : NSObject { 15 | PBGraphCellInfo *previous; 16 | void *pl; 17 | int curLane; 18 | } 19 | 20 | - (id) initWithRepository:(PBGitRepository *)repo; 21 | - (void) decorateCommit:(PBGitCommit *)commit; 22 | @end 23 | -------------------------------------------------------------------------------- /PBGitHistoryGrapher.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitHistoryGrapher.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/20/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | #define kCurrentQueueKey @"kCurrentQueueKey" 13 | #define kNewCommitsKey @"kNewCommitsKey" 14 | 15 | 16 | @class PBGitGrapher; 17 | 18 | 19 | @interface PBGitHistoryGrapher : NSObject { 20 | id delegate; 21 | NSOperationQueue *currentQueue; 22 | 23 | NSMutableSet *searchSHAs; 24 | PBGitGrapher *grapher; 25 | BOOL viewAllBranches; 26 | } 27 | 28 | - (id) initWithBaseCommits:(NSSet *)commits viewAllBranches:(BOOL)viewAll queue:(NSOperationQueue *)queue delegate:(id)theDelegate; 29 | - (void) graphCommits:(NSArray *)revList; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /PBGitHistoryList.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitHistoryList.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/20/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @class PBGitRepository; 13 | @class PBGitRevSpecifier; 14 | @class PBGitRef; 15 | @class PBGitRevList; 16 | @class PBGitHistoryGrapher; 17 | @class PBGitSHA; 18 | 19 | @interface PBGitHistoryList : NSObject { 20 | PBGitRepository *repository; 21 | 22 | PBGitRevList *projectRevList; 23 | PBGitRevList *currentRevList; 24 | 25 | PBGitSHA *lastSHA; 26 | NSSet *lastRefSHAs; 27 | NSInteger lastBranchFilter; 28 | PBGitRef *lastRemoteRef; 29 | BOOL resetCommits; 30 | BOOL shouldReloadProjectHistory; 31 | 32 | PBGitHistoryGrapher *grapher; 33 | NSOperationQueue *graphQueue; 34 | 35 | NSMutableArray *commits; 36 | BOOL isUpdating; 37 | } 38 | 39 | - (id) initWithRepository:(PBGitRepository *)repo; 40 | - (void) forceUpdate; 41 | - (void) updateHistory; 42 | - (void)cleanup; 43 | 44 | - (void) updateCommitsFromGrapher:(NSDictionary *)commitData; 45 | 46 | 47 | @property (retain) PBGitRevList *projectRevList; 48 | @property (retain) NSMutableArray *commits; 49 | @property (readonly) NSArray *projectCommits; 50 | @property (assign) BOOL isUpdating; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /PBGitIndexController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitIndexController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 18-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitCommitController.h" 11 | #import "PBChangedFile.h" 12 | 13 | @interface PBGitIndexController : NSObject { 14 | IBOutlet NSArrayController *stagedFilesController, *unstagedFilesController; 15 | IBOutlet PBGitCommitController *commitController; 16 | 17 | IBOutlet NSTableView *unstagedTable; 18 | IBOutlet NSTableView *stagedTable; 19 | } 20 | 21 | - (IBAction) rowClicked:(NSCell *) sender; 22 | - (IBAction) tableClicked:(NSTableView *)tableView; 23 | 24 | - (NSMenu *) menuForTable:(NSTableView *)table; 25 | @end 26 | -------------------------------------------------------------------------------- /PBGitLane.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitLane.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | #import 9 | #include "git/oid.h" 10 | 11 | class PBGitLane { 12 | static int s_colorIndex; 13 | 14 | git_oid d_sha; 15 | int d_index; 16 | 17 | public: 18 | 19 | PBGitLane(git_oid *sha) 20 | { 21 | d_index = s_colorIndex++; 22 | d_sha = *sha; 23 | } 24 | 25 | PBGitLane(NSString *sha) 26 | { 27 | git_oid_mkstr(&d_sha, [sha UTF8String]); 28 | d_index = s_colorIndex++; 29 | } 30 | 31 | PBGitLane() 32 | { 33 | d_index = s_colorIndex++; 34 | } 35 | 36 | bool isCommit(git_oid sha) const 37 | { 38 | return !git_oid_cmp(&d_sha, &sha); 39 | } 40 | 41 | void setSha(git_oid sha); 42 | 43 | git_oid const *sha() const 44 | { 45 | return &d_sha; 46 | } 47 | 48 | int index() const; 49 | 50 | static void resetColors(); 51 | }; -------------------------------------------------------------------------------- /PBGitLane.mm: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitLane.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBGitLane.h" 10 | //class PBGitLane { 11 | // static int s_colorIndex; 12 | // 13 | // char d_sha[20]; 14 | // int d_index; 15 | // 16 | //public: 17 | // PBGitLane(NSString *sha); 18 | // 19 | // bool isCommit(NSString *sha) const; 20 | // int index(); const; 21 | // 22 | // static resetColors(); 23 | //}; 24 | 25 | int PBGitLane::s_colorIndex = 0; 26 | 27 | int PBGitLane::index() const 28 | { 29 | return d_index; 30 | } 31 | 32 | void PBGitLane::setSha(git_oid sha) 33 | { 34 | d_sha = sha; 35 | } 36 | 37 | void PBGitLane::resetColors() 38 | { 39 | s_colorIndex = 0; 40 | } 41 | -------------------------------------------------------------------------------- /PBGitRef.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitRef.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 06-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRefish.h" 11 | 12 | 13 | extern NSString * const kGitXTagType; 14 | extern NSString * const kGitXBranchType; 15 | extern NSString * const kGitXRemoteType; 16 | extern NSString * const kGitXRemoteBranchType; 17 | 18 | extern NSString * const kGitXTagRefPrefix; 19 | extern NSString * const kGitXBranchRefPrefix; 20 | extern NSString * const kGitXRemoteRefPrefix; 21 | 22 | 23 | @interface PBGitRef : NSObject { 24 | NSString* ref; 25 | } 26 | 27 | // 28 | - (NSString *) refishName; 29 | - (NSString *) shortName; 30 | - (NSString *) refishType; 31 | 32 | - (NSString *) tagName; 33 | - (NSString *) branchName; 34 | - (NSString *) remoteName; 35 | - (NSString *) remoteBranchName; 36 | 37 | - (NSString *) type; 38 | - (BOOL) isBranch; 39 | - (BOOL) isTag; 40 | - (BOOL) isRemote; 41 | - (BOOL) isRemoteBranch; 42 | 43 | - (PBGitRef *) remoteRef; 44 | 45 | - (BOOL) isEqualToRef:(PBGitRef *)otherRef; 46 | 47 | + (PBGitRef*) refFromString: (NSString*) s; 48 | - (PBGitRef*) initWithString: (NSString*) s; 49 | @property(readonly) NSString* ref; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /PBGitRefish.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitRefish.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 12/25/09. 6 | // Copyright 2009 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | // Several git commands can take a ref "refs/heads/master" or an SHA. 13 | // Use to accept a PBGitRef or a PBGitCommit without having to write 14 | // two separate methods. 15 | // 16 | // refishName the full name of the ref "refs/heads/master" or the full SHA 17 | // used in git commands 18 | // shortName a more user friendly version of the refName, "master" or a short SHA 19 | // refishType a short name for the type 20 | 21 | @protocol PBGitRefish 22 | 23 | - (NSString *) refishName; 24 | - (NSString *) shortName; 25 | - (NSString *) refishType; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /PBGitRevList.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitRevList.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 17-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class PBGitRepository; 12 | @class PBGitRevSpecifier; 13 | 14 | @interface PBGitRevList : NSObject { 15 | NSMutableArray *commits; 16 | 17 | PBGitRepository *repository; 18 | PBGitRevSpecifier *currentRev; 19 | BOOL isGraphing; 20 | 21 | NSThread *parseThread; 22 | BOOL isParsing; 23 | BOOL resetCommits; 24 | } 25 | 26 | - (id) initWithRepository:(PBGitRepository *)repo rev:(PBGitRevSpecifier *)rev shouldGraph:(BOOL)graph; 27 | - (void) loadRevisons; 28 | - (void)cancel; 29 | 30 | @property (retain) NSMutableArray *commits; 31 | @property (readonly) BOOL isParsing; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBGitRevSpecifier.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitRevSpecifier.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 12-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface PBGitRevSpecifier : NSObject { 13 | NSString *description; 14 | NSArray *parameters; 15 | NSURL *workingDirectory; 16 | BOOL isSimpleRef; 17 | } 18 | 19 | - (id) initWithParameters:(NSArray *)params description:(NSString *)descrip; 20 | - (id) initWithParameters:(NSArray*) params; 21 | - (id) initWithRef: (PBGitRef*) ref; 22 | 23 | - (NSString*) simpleRef; 24 | - (PBGitRef *) ref; 25 | - (BOOL) hasPathLimiter; 26 | - (BOOL) hasLeftRight; 27 | - (NSString *) title; 28 | 29 | - (BOOL) isEqual: (PBGitRevSpecifier*) other; 30 | - (BOOL) isAllBranchesRev; 31 | - (BOOL) isLocalBranchesRev; 32 | 33 | + (PBGitRevSpecifier *)allBranchesRevSpec; 34 | + (PBGitRevSpecifier *)localBranchesRevSpec; 35 | 36 | @property(retain) NSString *description; 37 | @property(readonly) NSArray *parameters; 38 | @property(retain) NSURL *workingDirectory; 39 | @property(readonly) BOOL isSimpleRef; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /PBGitRevisionCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitRevisionCell.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 17-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitGrapher.h" 11 | #import "PBGraphCellInfo.h" 12 | #import "PBGitHistoryController.h" 13 | #import "PBRefContextDelegate.h" 14 | 15 | @interface PBGitRevisionCell : NSActionCell { 16 | PBGitCommit *objectValue; 17 | PBGraphCellInfo *cellInfo; 18 | NSTextFieldCell *textCell; 19 | IBOutlet PBGitHistoryController *controller; 20 | IBOutlet id contextMenuDelegate; 21 | } 22 | 23 | - (int) indexAtX:(float)x; 24 | - (NSRect) rectAtIndex:(int)index; 25 | - (void) drawLabelAtIndex:(int)index inRect:(NSRect)rect; 26 | 27 | @property(retain) PBGitCommit* objectValue; 28 | @end 29 | -------------------------------------------------------------------------------- /PBGitSHA.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSHA.h 3 | // GitX 4 | // 5 | // Created by BrotherBard on 3/28/10. 6 | // Copyright 2010 BrotherBard. All rights reserved. 7 | // 8 | 9 | #import 10 | #include "git/oid.h" 11 | 12 | 13 | @interface PBGitSHA : NSObject { 14 | git_oid oid; 15 | NSString *string; 16 | } 17 | 18 | 19 | + (PBGitSHA *)shaWithOID:(git_oid)oid; 20 | + (PBGitSHA *)shaWithString:(NSString *)shaString; 21 | + (PBGitSHA *)shaWithCString:(const char *)shaCString; 22 | 23 | - (BOOL)isEqualToOID:(git_oid)other_oid; 24 | 25 | @property (readonly) git_oid oid; 26 | @property (readonly) NSString *string; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /PBGitSVBranchItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVBranchItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVBranchItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)branchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVBranchItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVBranchItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVBranchItem.h" 10 | 11 | 12 | @implementation PBGitSVBranchItem 13 | 14 | 15 | + (id)branchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier 16 | { 17 | PBGitSVBranchItem *item = [self itemWithTitle:[[revSpecifier description] lastPathComponent]]; 18 | item.revSpecifier = revSpecifier; 19 | 20 | return item; 21 | } 22 | 23 | 24 | - (NSImage *) icon 25 | { 26 | static NSImage *branchImage = nil; 27 | if (!branchImage) 28 | branchImage = [NSImage imageNamed:@"Branch.png"]; 29 | 30 | return branchImage; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBGitSVFolderItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVFolderItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVFolderItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)folderItemWithTitle:(NSString *)title; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVFolderItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVFolderItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVFolderItem.h" 10 | 11 | 12 | @implementation PBGitSVFolderItem 13 | 14 | 15 | + (id)folderItemWithTitle:(NSString *)title 16 | { 17 | PBGitSVFolderItem *item = [self itemWithTitle:title]; 18 | 19 | return item; 20 | } 21 | 22 | 23 | - (NSImage *) icon 24 | { 25 | static NSImage *folderImage = nil; 26 | if (!folderImage) { 27 | folderImage = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kGenericFolderIcon)]; 28 | [folderImage setSize:NSMakeSize(16,16)]; 29 | } 30 | 31 | return folderImage; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /PBGitSVOtherRevItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVOtherRevItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVOtherRevItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)otherItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVOtherRevItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVOtherRevItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVOtherRevItem.h" 10 | #import "PBGitRevSpecifier.h" 11 | 12 | 13 | @implementation PBGitSVOtherRevItem 14 | 15 | 16 | + (id)otherItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier 17 | { 18 | PBGitSVOtherRevItem *item = [self itemWithTitle:[revSpecifier title]]; 19 | item.revSpecifier = revSpecifier; 20 | 21 | return item; 22 | } 23 | 24 | 25 | - (NSImage *) icon 26 | { 27 | static NSImage *otherRevImage = nil; 28 | if (!otherRevImage) 29 | otherRevImage = [NSImage imageNamed:@"Branch.png"]; 30 | 31 | return otherRevImage; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /PBGitSVRemoteBranchItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVRemoteBranchItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVRemoteBranchItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)remoteBranchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVRemoteBranchItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVRemoteBranchItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVRemoteBranchItem.h" 10 | 11 | 12 | @implementation PBGitSVRemoteBranchItem 13 | 14 | 15 | + (id)remoteBranchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier 16 | { 17 | PBGitSVRemoteBranchItem *item = [self itemWithTitle:[[revSpecifier description] lastPathComponent]]; 18 | item.revSpecifier = revSpecifier; 19 | 20 | return item; 21 | } 22 | 23 | 24 | - (NSImage *) icon 25 | { 26 | static NSImage *remoteBranchImage = nil; 27 | if (!remoteBranchImage) 28 | remoteBranchImage = [NSImage imageNamed:@"RemoteBranch.png"]; 29 | 30 | return remoteBranchImage; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBGitSVRemoteItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVRemoteItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVRemoteItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)remoteItemWithTitle:(NSString *)title; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVRemoteItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVRemoteItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVRemoteItem.h" 10 | #import "PBGitRef.h" 11 | 12 | 13 | @implementation PBGitSVRemoteItem 14 | 15 | 16 | + (id)remoteItemWithTitle:(NSString *)title 17 | { 18 | PBGitSVRemoteItem *item = [self itemWithTitle:title]; 19 | 20 | return item; 21 | } 22 | 23 | 24 | - (NSImage *) icon 25 | { 26 | static NSImage *networkImage = nil; 27 | if (!networkImage) { 28 | networkImage = [NSImage imageNamed:NSImageNameNetwork]; 29 | [networkImage setSize:NSMakeSize(16,16)]; 30 | } 31 | 32 | return networkImage; 33 | } 34 | 35 | 36 | - (PBGitRef *) ref 37 | { 38 | return [PBGitRef refFromString:[kGitXRemoteRefPrefix stringByAppendingString:self.title]]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /PBGitSVStageItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVStageItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVStageItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id) stageItem; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVStageItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVStageItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVStageItem.h" 10 | 11 | 12 | @implementation PBGitSVStageItem 13 | 14 | 15 | + (id) stageItem 16 | { 17 | PBGitSVStageItem *item = [self itemWithTitle:@"Stage"]; 18 | 19 | return item; 20 | } 21 | 22 | 23 | - (NSImage *) icon 24 | { 25 | static NSImage *stageImage = nil; 26 | if (!stageImage) 27 | stageImage = [NSImage imageNamed:@"StageView"]; 28 | 29 | return stageImage; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /PBGitSVTagItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVTagItem.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | 13 | @interface PBGitSVTagItem : PBSourceViewItem { 14 | 15 | } 16 | 17 | + (id)tagItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBGitSVTagItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSVTagItem.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBGitSVTagItem.h" 10 | 11 | 12 | @implementation PBGitSVTagItem 13 | 14 | 15 | + (id)tagItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier 16 | { 17 | PBGitSVTagItem *item = [self itemWithTitle:[[revSpecifier description] lastPathComponent]]; 18 | item.revSpecifier = revSpecifier; 19 | 20 | return item; 21 | } 22 | 23 | 24 | - (NSImage *) icon 25 | { 26 | static NSImage *tagImage = nil; 27 | if (!tagImage) 28 | tagImage = [NSImage imageNamed:@"Tag.png"]; 29 | 30 | return tagImage; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBGitSidebarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitSidebar.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/8/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBViewController.h" 11 | 12 | @class PBSourceViewItem; 13 | @class PBGitHistoryController; 14 | @class PBGitCommitController; 15 | 16 | @interface PBGitSidebarController : PBViewController { 17 | IBOutlet NSWindow *window; 18 | IBOutlet NSOutlineView *sourceView; 19 | IBOutlet NSView *sourceListControlsView; 20 | IBOutlet NSPopUpButton *actionButton; 21 | IBOutlet NSSegmentedControl *remoteControls; 22 | 23 | NSMutableArray *items; 24 | 25 | /* Specific things */ 26 | PBSourceViewItem *stage; 27 | 28 | PBSourceViewItem *branches, *remotes, *tags, *others; 29 | 30 | PBGitHistoryController *historyViewController; 31 | PBGitCommitController *commitViewController; 32 | } 33 | 34 | - (void) selectStage; 35 | - (void) selectCurrentBranch; 36 | 37 | - (NSMenu *) menuForRow:(NSInteger)row; 38 | 39 | - (IBAction) fetchPullPushAction:(id)sender; 40 | 41 | - (void)setHistorySearch:(NSString *)searchString mode:(NSInteger)mode; 42 | 43 | @property(readonly) NSMutableArray *items; 44 | @property(readonly) NSView *sourceListControlsView; 45 | @property(readonly) PBGitHistoryController *historyViewController; 46 | @property(readonly) PBGitCommitController *commitViewController; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /PBGitTree.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitTree.h 3 | // GitTest 4 | // 5 | // Created by Pieter de Bie on 15-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRepository.h" 11 | 12 | @interface PBGitTree : NSObject { 13 | long long _fileSize; 14 | 15 | NSString* sha; 16 | NSString* path; 17 | PBGitRepository* repository; 18 | __weak PBGitTree* parent; 19 | NSArray* children; 20 | BOOL leaf; 21 | 22 | NSString* localFileName; 23 | NSDate* localMtime; 24 | } 25 | 26 | + (PBGitTree*) rootForCommit: (id) commit; 27 | + (PBGitTree*) treeForTree: (PBGitTree*) tree andPath: (NSString*) path; 28 | - (void) saveToFolder: (NSString *) directory; 29 | - (NSString *)textContents; 30 | - (NSString *)blame; 31 | - (NSString *) log:(NSString *)format; 32 | 33 | - (NSString*) tmpFileNameForContents; 34 | - (long long)fileSize; 35 | 36 | @property(copy) NSString* sha; 37 | @property(copy) NSString* path; 38 | @property(assign) BOOL leaf; 39 | @property(retain) PBGitRepository* repository; 40 | @property(assign) __weak PBGitTree* parent; 41 | 42 | @property(readonly) NSArray* children; 43 | @property(readonly) NSString* fullPath; 44 | @property(readonly) NSString* contents; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /PBGitXMessageSheet.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitXMessageSheet.h 3 | // GitX 4 | // 5 | // Created by BrotherBard on 7/4/10. 6 | // Copyright 2010 BrotherBard. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBGitXMessageSheet : NSWindowController 13 | { 14 | NSImageView *iconView; 15 | NSTextField *messageField; 16 | NSTextView *infoView; 17 | NSScrollView *scrollView; 18 | } 19 | 20 | + (void)beginMessageSheetForWindow:(NSWindow *)parentWindow withMessageText:(NSString *)message infoText:(NSString *)info; 21 | + (void)beginMessageSheetForWindow:(NSWindow *)parentWindow withError:(NSError *)error; 22 | 23 | 24 | - (void)beginMessageSheetForWindow:(NSWindow *)parentWindow withMessageText:(NSString *)message infoText:(NSString *)info; 25 | - (IBAction)closeMessageSheet:(id)sender; 26 | 27 | 28 | @property (assign) IBOutlet NSImageView *iconView; 29 | @property (assign) IBOutlet NSTextField *messageField; 30 | @property (assign) IBOutlet NSTextView *infoView; 31 | @property (assign) IBOutlet NSScrollView *scrollView; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /PBGitXProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGitXProtocol.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 01-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRepository.h" 11 | 12 | @interface PBGitXProtocol : NSURLProtocol { 13 | NSFileHandle *handle; 14 | } 15 | @end 16 | 17 | @interface NSURLRequest (PBGitXProtocol) 18 | @property (readonly) PBGitRepository *repository; 19 | @end 20 | 21 | @interface NSMutableURLRequest (PBGitXProtocol) 22 | @property (retain) PBGitRepository *repository; 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /PBGraphCellInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBGraphCellInfo.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitGraphLine.h" 11 | 12 | @interface PBGraphCellInfo : NSObject 13 | { 14 | int position; 15 | struct PBGitGraphLine *lines; 16 | int nLines; 17 | int numColumns; 18 | char sign; 19 | } 20 | 21 | @property(assign) struct PBGitGraphLine *lines; 22 | @property(assign) int nLines; 23 | @property(assign) int position, numColumns; 24 | @property(assign) char sign; 25 | 26 | 27 | - (id)initWithPosition:(int) p andLines:(struct PBGitGraphLine *) l; 28 | 29 | @end -------------------------------------------------------------------------------- /PBGraphCellInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBGraphCellInfo.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 27-08-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBGraphCellInfo.h" 10 | 11 | 12 | @implementation PBGraphCellInfo 13 | @synthesize lines, position, numColumns, sign, nLines; 14 | - (id)initWithPosition:(int)p andLines:(struct PBGitGraphLine *)l 15 | { 16 | position = p; 17 | lines = l; 18 | 19 | return self; 20 | } 21 | 22 | - (void)setLines:(struct PBGitGraphLine *)l 23 | { 24 | free(lines); 25 | lines = l; 26 | } 27 | 28 | -(void) finalize 29 | { 30 | free(lines); 31 | [super finalize]; 32 | } 33 | 34 | @end -------------------------------------------------------------------------------- /PBIconAndTextCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBIconAndTextCell.h 3 | // GitX 4 | // 5 | // Created by Ciarán Walsh on 23/09/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBIconAndTextCell : NSTextFieldCell 13 | { 14 | NSImage *image; 15 | BOOL mouseDownInButton; 16 | BOOL mouseHoveredInButton; 17 | } 18 | @property (retain) NSImage *image; 19 | 20 | - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView; 21 | - (NSSize)cellSize; 22 | @end 23 | -------------------------------------------------------------------------------- /PBNSURLPathUserDefaultsTransfomer.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBNSURLPathUserDefaultsTransfomer.h 3 | // GitX 4 | // 5 | // Created by Christian Jacobsen on 28/09/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBNSURLPathUserDefaultsTransfomer : NSValueTransformer { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /PBNSURLPathUserDefaultsTransfomer.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBNSURLPathUserDefaultsTransfomer.m 3 | // GitX 4 | // 5 | // Created by Christian Jacobsen on 28/09/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBNSURLPathUserDefaultsTransfomer.h" 10 | 11 | /* 12 | This ValueTransformer is used to store NSURLs in the user defaults system 13 | as strings, without a host part. It is assumed that the path is an absolute 14 | path in the local filesystem. 15 | */ 16 | 17 | @implementation PBNSURLPathUserDefaultsTransfomer 18 | 19 | + (Class)transformedValueClass { 20 | return [NSURL class]; 21 | } 22 | 23 | + (BOOL)allowsReverseTransformation { 24 | return YES; 25 | } 26 | 27 | - (id)transformedValue:(id)value { 28 | if(value == nil) 29 | { 30 | return nil; 31 | } 32 | 33 | return [NSURL URLWithString:value 34 | relativeToURL:[NSURL URLWithString:@"file://localhost/"]]; 35 | } 36 | 37 | - (id)reverseTransformedValue:(id)value { 38 | if(value == nil) 39 | { 40 | return nil; 41 | } 42 | 43 | return [value path]; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /PBNiceSplitView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBNiceSplitView.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 31-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface PBNiceSplitView : NSSplitView { 12 | 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /PBNiceSplitView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBNiceSplitView.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 31-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import "PBNiceSplitView.h" 10 | 11 | static NSImage *bar; 12 | static NSImage *grip; 13 | 14 | @implementation PBNiceSplitView 15 | 16 | +(void) initialize 17 | { 18 | NSString *barPath = [[NSBundle mainBundle] pathForResource:@"mainSplitterBar" ofType:@"tiff"]; 19 | bar = [[NSImage alloc] initWithContentsOfFile: barPath]; 20 | [bar setFlipped: YES]; 21 | 22 | NSString *gripPath = [[NSBundle mainBundle] pathForResource:@"mainSplitterDimple" ofType:@"tiff"]; 23 | grip = [[NSImage alloc] initWithContentsOfFile: gripPath]; 24 | [grip setFlipped: YES]; 25 | } 26 | 27 | - (void)drawDividerInRect:(NSRect)aRect 28 | { 29 | // Draw bar and grip onto the canvas 30 | NSRect gripRect = aRect; 31 | gripRect.origin.x = (NSMidX(aRect) - ([grip size].width/2)); 32 | gripRect.size.width = 8; 33 | 34 | [self lockFocus]; 35 | [bar drawInRect:aRect fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; 36 | [grip drawInRect:gripRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 37 | [self unlockFocus]; 38 | } 39 | 40 | - (CGFloat)dividerThickness 41 | { 42 | return 10.0; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /PBPrefsWindowController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBPrefsWindowController.h 3 | // GitX 4 | // 5 | // Created by Christian Jacobsen on 02/10/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DBPrefsWindowController.h" 11 | 12 | @interface PBPrefsWindowController : DBPrefsWindowController { 13 | /* Outlets for Preference Views */ 14 | IBOutlet NSView *generalPrefsView; 15 | IBOutlet NSView *integrationPrefsView; 16 | IBOutlet NSView *updatesPrefsView; 17 | 18 | /* Variables for the Updates View */ 19 | IBOutlet NSPathControl *gitPathController; 20 | IBOutlet NSImageView *badGitPathIcon; 21 | IBOutlet NSView *gitPathOpenAccessory; 22 | NSOpenPanel *gitPathOpenPanel; 23 | 24 | } 25 | 26 | - (IBAction) checkGitValidity: sender; 27 | - (void)pathCell:(NSPathCell *)pathCell willDisplayOpenPanel:(NSOpenPanel *)openPanel; 28 | - (IBAction) showHideAllFiles: sender; 29 | - (IBAction) resetGitPath: sender; 30 | - (IBAction)resetAllDialogWarnings:(id)sender; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /PBQLOutlineView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBQLOutlineView.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 6/17/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitHistoryController.h" 11 | 12 | @interface PBQLOutlineView : NSOutlineView { 13 | IBOutlet PBGitHistoryController* controller; 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /PBQLTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBQLTextView.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/22/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @class PBGitHistoryController; 13 | 14 | 15 | @interface PBQLTextView : NSTextView { 16 | IBOutlet PBGitHistoryController *controller; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBQLTextView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBQLTextView.m 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/22/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBQLTextView.h" 10 | #import "PBGitHistoryController.h" 11 | 12 | 13 | @implementation PBQLTextView 14 | 15 | - (void) keyDown: (NSEvent *) event 16 | { 17 | if ([[event characters] isEqualToString:@" "]) { 18 | [controller toggleQLPreviewPanel:self]; 19 | return; 20 | } 21 | 22 | [super keyDown:event]; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /PBRefContextDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBRefContextDelegate.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 01-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | 10 | @class PBGitRef; 11 | @class PBGitCommit; 12 | 13 | 14 | @protocol PBRefContextDelegate 15 | - (NSArray *) menuItemsForRef:(PBGitRef *)ref; 16 | - (NSArray *) menuItemsForCommit:(PBGitCommit *)commit; 17 | - (NSArray *)menuItemsForRow:(NSInteger)rowIndex; 18 | @end 19 | -------------------------------------------------------------------------------- /PBRefMenuItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBRefMenuItem.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 01-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRef.h" 11 | #import "PBGitCommit.h" 12 | 13 | @interface PBRefMenuItem : NSMenuItem { 14 | id refish; 15 | } 16 | 17 | @property (retain) id refish; 18 | 19 | + (PBRefMenuItem *) separatorItem; 20 | + (NSArray *) defaultMenuItemsForRef:(PBGitRef *)ref inRepository:(PBGitRepository *)repo target:(id)target; 21 | + (NSArray *) defaultMenuItemsForCommit:(PBGitCommit *)commit target:(id)target; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /PBRepositoryDocumentController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBRepositoryDocumentController.h 3 | // GitX 4 | // 5 | // Created by Ciarán Walsh on 15/08/2008. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRevSpecifier.h" 11 | 12 | 13 | @interface PBRepositoryDocumentController : NSDocumentController 14 | { 15 | 16 | } 17 | 18 | - (id) documentForLocation:(NSURL*) url; 19 | - (void)initNewRepositoryAtURL:(NSURL *)url; 20 | @end 21 | -------------------------------------------------------------------------------- /PBServicesController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBServicesController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 10/24/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBServicesController : NSObject { 13 | 14 | } 15 | 16 | - (NSString *)completeSHA1For:(NSString *)sha; 17 | 18 | - (void)completeSha:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error; 19 | @end 20 | -------------------------------------------------------------------------------- /PBSourceViewAction.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewAction.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/8/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | @interface PBSourceViewAction : PBSourceViewItem { 13 | NSImage *icon; 14 | } 15 | 16 | @property(retain) NSImage *icon; 17 | @end 18 | -------------------------------------------------------------------------------- /PBSourceViewAction.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewAction.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/8/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBSourceViewAction.h" 10 | 11 | 12 | @implementation PBSourceViewAction 13 | @synthesize icon; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /PBSourceViewBadge.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewBadge.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 2/13/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBSourceViewBadge : NSObject { 13 | 14 | } 15 | 16 | + (NSImage *) checkedOutBadgeForCell:(NSTextFieldCell *)cell; 17 | + (NSImage *) numericBadge:(NSInteger)number forCell:(NSTextFieldCell *)cell; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBSourceViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewCell.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 1/7/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBIconAndTextCell.h" 11 | 12 | 13 | @interface PBSourceViewCell : PBIconAndTextCell { 14 | BOOL isCheckedOut; 15 | } 16 | 17 | @property (assign) BOOL isCheckedOut; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /PBSourceViewItems.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewItems.h 3 | // GitX 4 | // 5 | // Created by Nathan Kinsinger on 3/2/10. 6 | // Copyright 2010 Nathan Kinsinger. All rights reserved. 7 | // 8 | 9 | #import "PBSourceViewItem.h" 10 | 11 | #import "PBGitSVStageItem.h" 12 | 13 | #import "PBGitRevSpecifier.h" 14 | #import "PBGitSVBranchItem.h" 15 | #import "PBGitSVRemoteItem.h" 16 | #import "PBGitSVRemoteBranchItem.h" 17 | #import "PBGitSVTagItem.h" 18 | #import "PBGitSVOtherRevItem.h" 19 | #import "PBGitSVFolderItem.h" -------------------------------------------------------------------------------- /PBSourceViewRemote.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewRemote.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/8/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBSourceViewItem.h" 11 | 12 | @interface PBSourceViewRemote : PBSourceViewItem { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /PBSourceViewRemote.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBSourceViewRemote.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 9/8/09. 6 | // Copyright 2009 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBSourceViewRemote.h" 10 | 11 | 12 | @implementation PBSourceViewRemote 13 | 14 | - (NSImage *)icon 15 | { 16 | return [NSImage imageNamed:@"remote"]; 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /PBUnsortableTableHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBUnsortableTableHeader.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 03-10-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface PBUnsortableTableHeader : NSTableHeaderView { 13 | IBOutlet NSArrayController *controller; 14 | int clickCount; 15 | int columnIndex; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /PBUnsortableTableHeader.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBUnsortableTableHeader.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 03-10-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBUnsortableTableHeader.h" 10 | 11 | 12 | @implementation PBUnsortableTableHeader 13 | 14 | - (void)mouseDown:(NSEvent *)theEvent 15 | { 16 | NSPoint location = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:[[self window] contentView]]; 17 | int aColumnIndex = [self columnAtPoint:location]; 18 | 19 | // If the user pressed on another column, reset 20 | if (aColumnIndex != columnIndex) 21 | { 22 | clickCount = 1; 23 | columnIndex = aColumnIndex; 24 | [super mouseDown:theEvent]; 25 | return; 26 | } 27 | 28 | // On the third click, reset the sorting and 29 | // Don't pass on the click 30 | if (++clickCount == 3) 31 | { 32 | clickCount = 0; 33 | controller.sortDescriptors = [NSArray array]; 34 | [controller rearrangeObjects]; 35 | return; 36 | } 37 | [super mouseDown:theEvent]; 38 | } 39 | @end 40 | -------------------------------------------------------------------------------- /PBViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBViewController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 22-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBGitRepository.h" 11 | #import "PBGitWindowController.h" 12 | 13 | @interface PBViewController : NSViewController { 14 | __weak PBGitRepository *repository; 15 | __weak PBGitWindowController *superController; 16 | 17 | NSString *status; 18 | BOOL isBusy; 19 | BOOL hasViewLoaded; 20 | } 21 | 22 | @property (readonly) __weak PBGitRepository *repository; 23 | @property(copy) NSString *status; 24 | @property(assign) BOOL isBusy; 25 | 26 | - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGitWindowController *)controller; 27 | 28 | /* closeView is called when the repository window will be closed */ 29 | - (void)closeView; 30 | 31 | /* Updateview is called every time it is loaded into the main view */ 32 | - (void) updateView; 33 | 34 | /* Called after awakeFromNib:, and the view has been loaded into the main view. 35 | * Useful for resizing stuff after everything has been set in the right position 36 | */ 37 | - (void)viewLoaded; 38 | 39 | - (NSResponder *)firstResponder; 40 | - (IBAction) refresh:(id)sender; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /PBViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBViewController.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 22-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "PBViewController.h" 10 | 11 | 12 | @implementation PBViewController 13 | 14 | @synthesize repository; 15 | @synthesize status; 16 | @synthesize isBusy; 17 | 18 | - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGitWindowController *)controller 19 | { 20 | NSString *nibName = [[[self class] description] stringByReplacingOccurrencesOfString:@"Controller" 21 | withString:@"View"]; 22 | if(self = [self initWithNibName:nibName bundle:nil]) { 23 | repository = theRepository; 24 | superController = controller; 25 | } 26 | 27 | return self; 28 | } 29 | 30 | - (void)closeView 31 | { 32 | [self unbind:@"repository"]; 33 | if (hasViewLoaded) 34 | [[self view] removeFromSuperview]; // remove the current view 35 | } 36 | 37 | - (void)awakeFromNib 38 | { 39 | hasViewLoaded = YES; 40 | } 41 | 42 | - (NSResponder *)firstResponder; 43 | { 44 | return nil; 45 | } 46 | 47 | - (IBAction) refresh: sender 48 | { 49 | } 50 | 51 | // The next methods should be implemented in the subclass if necessary 52 | - (void)updateView 53 | { 54 | } 55 | 56 | - (void)viewLoaded 57 | { 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /PBWebChangesController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBWebChangesController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 22-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBWebController.h" 11 | #import "PBGitCommitController.h" 12 | #import "PBChangedFile.h" 13 | 14 | @class PBGitIndexController; 15 | 16 | @interface PBWebChangesController : PBWebController { 17 | IBOutlet NSArrayController *unstagedFilesController; 18 | IBOutlet NSArrayController *cachedFilesController; 19 | IBOutlet PBGitCommitController *controller; 20 | IBOutlet PBGitIndexController *indexController; 21 | 22 | PBChangedFile *selectedFile; 23 | BOOL selectedFileIsCached; 24 | } 25 | 26 | - (void) refresh; 27 | - (void) setStateMessage:(NSString *)state; 28 | 29 | - (void) showMultiple:(NSArray *)files; 30 | @end 31 | -------------------------------------------------------------------------------- /PBWebController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBWebController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 08-10-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface PBWebController : NSObject { 13 | IBOutlet WebView* view; 14 | NSString *startFile; 15 | BOOL finishedLoading; 16 | 17 | // For async git reading 18 | NSMapTable *callbacks; 19 | 20 | // For the repository access 21 | IBOutlet id repository; 22 | } 23 | 24 | @property (retain) NSString *startFile; 25 | @property (retain) id repository; 26 | 27 | - (WebScriptObject *) script; 28 | - (void) closeView; 29 | @end 30 | -------------------------------------------------------------------------------- /PBWebDiffController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBWebDiffController.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 13-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBWebController.h" 11 | #import "PBDiffWindowController.h" 12 | 13 | @interface PBWebDiffController : PBWebController { 14 | IBOutlet PBDiffWindowController *diffController; 15 | } 16 | 17 | - (void) showDiff:(NSString *)diff; 18 | @end 19 | -------------------------------------------------------------------------------- /PBWebDiffController.m: -------------------------------------------------------------------------------- 1 | // 2 | // PBWebDiffController.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 13-10-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import "PBWebDiffController.h" 10 | 11 | 12 | @implementation PBWebDiffController 13 | 14 | - (void) awakeFromNib 15 | { 16 | startFile = @"diff"; 17 | [super awakeFromNib]; 18 | [diffController addObserver:self forKeyPath:@"diff" options:0 context:@"ChangedDiff"]; 19 | } 20 | 21 | - (void)closeView 22 | { 23 | [diffController removeObserver:self forKeyPath:@"diff"]; 24 | 25 | [super closeView]; 26 | } 27 | 28 | 29 | - (void) didLoad 30 | { 31 | [self showDiff:diffController.diff]; 32 | } 33 | 34 | - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 35 | { 36 | if ([(NSString *)context isEqualToString: @"ChangedDiff"]) 37 | [self showDiff:diffController.diff]; 38 | } 39 | 40 | - (void) showDiff: (NSString *) diff 41 | { 42 | if (diff == nil || !finishedLoading) 43 | return; 44 | 45 | id script = [view windowScriptObject]; 46 | if ([diff length] == 0) 47 | [script callWebScriptMethod:@"setMessage" withArguments:[NSArray arrayWithObject:@"There are no differences"]]; 48 | else 49 | [script callWebScriptMethod:@"showDiff" withArguments:[NSArray arrayWithObject:diff]]; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /PBWebHistoryController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PBWebGitController.h 3 | // GitTest 4 | // 5 | // Created by Pieter de Bie on 14-06-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "PBWebController.h" 11 | 12 | #import "PBGitCommit.h" 13 | #import "PBGitHistoryController.h" 14 | #import "PBRefContextDelegate.h" 15 | 16 | 17 | @class PBGitSHA; 18 | 19 | 20 | @interface PBWebHistoryController : PBWebController { 21 | IBOutlet PBGitHistoryController* historyController; 22 | IBOutlet id contextMenuDelegate; 23 | 24 | PBGitSHA* currentSha; 25 | NSString* diff; 26 | } 27 | 28 | - (void) changeContentTo: (PBGitCommit *) content; 29 | - (void) sendKey: (NSString*) key; 30 | 31 | @property (readonly) NSString* diff; 32 | @end 33 | -------------------------------------------------------------------------------- /RoundedRectangle.h: -------------------------------------------------------------------------------- 1 | // 2 | // RoundedRectangle.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 24-09-08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface NSBezierPath (RoundedRectangle) 13 | 14 | + (NSBezierPath *)bezierPathWithRoundedRect: (NSRect) aRect cornerRadius: (double) cRadius; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Site/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | -------------------------------------------------------------------------------- /Site/UserManual/.gitignore: -------------------------------------------------------------------------------- 1 | output/ 2 | -------------------------------------------------------------------------------- /Site/UserManual/assets/images/branch-lanes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/branch-lanes.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/branchswitcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/branchswitcher.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/commitview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/commitview.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/detailswitcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/detailswitcher.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/display_diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/display_diff.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/gistie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/gistie.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/gitx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/gitx.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/historyview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/historyview.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/left-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/left-right.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/menubar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/menubar.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/quicklook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/quicklook.png -------------------------------------------------------------------------------- /Site/UserManual/assets/images/viewswitcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/UserManual/assets/images/viewswitcher.png -------------------------------------------------------------------------------- /Site/UserManual/template.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | GitX Documentation 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 | 20 | 21 |
22 | 23 |
24 |
25 |
26 | 27 |
28 | <%= body %> 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 | 37 |
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Site/UserManual/text/01 - Introduction.markdown: -------------------------------------------------------------------------------- 1 | User Manual 2 | ----------- 3 | 4 | This is the GitX user's manual. This document tries to explain the most common used features and explains the concepts that might be confusing if you've never used a git GUI. 5 | 6 | ### Disclaimer 7 | 8 | GitX aims to be a graphical wrapper around the most-frequently used 9 | git-commands, enabling you to satisfy your daily git needs in one consistent 10 | program. GitX doesn't aspire to be a complete interface for the wide variety 11 | of git command-line programs with their ever-growing number of options. It's 12 | also no easy way to learn git. A sound understanding of how git stores data, 13 | how it works on that data and how to recover from (accidental) deletion of 14 | branches and commits will not only help you with git but will also enable you 15 | to learn GitX with greater confidence and speed. Since GitX is far from 16 | complete you'll probably still have to use it in conjunction with the 17 | command-line git for more complex tasks, such as merging or performing remote 18 | operations. -------------------------------------------------------------------------------- /Site/assets/css/usermanual.css: -------------------------------------------------------------------------------- 1 | pre 2 | { 3 | background: rgb(238, 238, 238) !important; 4 | display: block; 5 | width: 750px; 6 | padding: 5px; 7 | margin: 10px;; 8 | } 9 | 10 | code 11 | { 12 | font-family: 'andale mono'; 13 | } 14 | 15 | img 16 | { 17 | display: block; 18 | margin: 10px auto 10px auto; 19 | } 20 | 21 | img.floatleft 22 | { 23 | float: left; 24 | display: inline; 25 | margin: 10px; 26 | } 27 | 28 | img.floatright 29 | { 30 | float: right; 31 | display: inline; 32 | margin: 10px; 33 | } -------------------------------------------------------------------------------- /Site/assets/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/assets/images/bg.png -------------------------------------------------------------------------------- /Site/assets/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/assets/images/download.png -------------------------------------------------------------------------------- /Site/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/assets/images/favicon.png -------------------------------------------------------------------------------- /Site/assets/images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/assets/images/header.jpg -------------------------------------------------------------------------------- /Site/assets/images/qtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Site/assets/images/qtime.png -------------------------------------------------------------------------------- /Site/templates/sparkle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GitX 5 | http://github.com/pieter/gitx/wikis 6 | A more native clone of Gitk for OS X 7 | 8 | 9 | 10 | GitX <%= ReleaseNotes::last_version %> 11 | Thu, 29 Jan 2009 23:54:01 GMT 12 | 13 | 14 | 16 | body { 17 | font-size: 70%; 18 | } 19 | h1 { 20 | font-size: 160%; 21 | } 22 | 23 | <%= Markdown.new(ReleaseNotes::last_notes).to_html %> 24 | ]]> 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Site/text/contact.markdown: -------------------------------------------------------------------------------- 1 | <% @title = "Contact" %> 2 | Contact 3 | ------- 4 | 5 | The GitX repository can be found on Github at [http://github.com/pieter/gitx](http://www.github.com/pieter/gitx/wikis). 6 | 7 | GitX has a mailing list at [gitx@googlegroups.com](mailto:gitx@googlegroups.com) to which you can email any questions or patches. 8 | 9 | GitX is actively maintained by Pieter de Bie. You can email him at [frimmirf@gmail.com](mailto:frimmirf+gitx@gmail.com) or on twitter @pdebie 10 | -------------------------------------------------------------------------------- /Site/text/links.markdown: -------------------------------------------------------------------------------- 1 | <% @title = "Links" %> 2 |

3 | Links 4 |

5 | 6 | 14 | 15 |

Mailing list

16 | 17 | * [Google Groups](http://groups.google.com/group/gitx) 18 | * [Nabble archive](http://n2.nabble.com/GitX-f3079826.html) 19 | 20 |

Bug Reporting

21 | 24 | -------------------------------------------------------------------------------- /Site/text/release_history.markdown: -------------------------------------------------------------------------------- 1 | <% @title = "Release History" %> 2 |

3 | Release history 4 |

5 | 6 | <%= ReleaseNotes::aggregate_notes %> -------------------------------------------------------------------------------- /Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/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 | @class SUAppcastItem; 13 | @interface SUAppcast : NSObject { 14 | NSArray *items; 15 | NSString *userAgentString; 16 | id delegate; 17 | NSMutableData *incrementalData; 18 | } 19 | 20 | - (void)fetchAppcastFromURL:(NSURL *)url; 21 | - (void)setDelegate:delegate; 22 | - (void)setUserAgentString:(NSString *)userAgentString; 23 | 24 | - (NSArray *)items; 25 | 26 | @end 27 | 28 | @interface NSObject (SUAppcastDelegate) 29 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 30 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 31 | @end 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /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 | NSString *title; 14 | NSDate *date; 15 | NSString *itemDescription; 16 | 17 | NSURL *releaseNotesURL; 18 | 19 | NSString *DSASignature; 20 | NSString *minimumSystemVersion; 21 | 22 | NSURL *fileURL; 23 | NSString *versionString; 24 | NSString *displayVersionString; 25 | 26 | NSDictionary *propertiesDictionary; 27 | } 28 | 29 | // Initializes with data from a dictionary provided by the RSS class. 30 | - initWithDictionary:(NSDictionary *)dict; 31 | 32 | - (NSString *)title; 33 | - (NSString *)versionString; 34 | - (NSString *)displayVersionString; 35 | - (NSDate *)date; 36 | - (NSString *)itemDescription; 37 | - (NSURL *)releaseNotesURL; 38 | - (NSURL *)fileURL; 39 | - (NSString *)DSASignature; 40 | - (NSString *)minimumSystemVersion; 41 | 42 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 43 | - (NSDictionary *)propertiesDictionary; 44 | 45 | @end 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /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 | /*! 13 | @protocol 14 | @abstract Implement this protocol to provide version comparison facilities for Sparkle. 15 | */ 16 | @protocol SUVersionComparison 17 | 18 | /*! 19 | @method 20 | @abstract An abstract method to compare two version strings. 21 | @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. 22 | */ 23 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; 24 | 25 | @end 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /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 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | Sparkle 9 | CFBundleIdentifier 10 | org.andymatuschak.Sparkle 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Sparkle 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.5 Beta 6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 313 23 | 24 | 25 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Andy Matuschak 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 658 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9C7010 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 18 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 41 15 | 16 | IBSystem Version 17 | 10A96 18 | targetFramework 19 | IBCocoaFramework 20 | 21 | 22 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9D34 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | /Users/andym/Development/Build Products/Release (GC dual-mode; 10.5-only)/Sparkle.framework/Resources/fr.lproj -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 5 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | 6 12 | 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/relaunch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/relaunch -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9E17 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | { 4 | CLASS = FirstResponder; 5 | LANGUAGE = ObjC; 6 | SUPERCLASS = NSObject; 7 | }, 8 | { 9 | CLASS = NSApplication; 10 | LANGUAGE = ObjC; 11 | SUPERCLASS = NSResponder; 12 | }, 13 | { 14 | CLASS = NSObject; 15 | LANGUAGE = ObjC; 16 | }, 17 | { 18 | ACTIONS = { 19 | installUpdate = id; 20 | remindMeLater = id; 21 | skipThisVersion = id; 22 | }; 23 | CLASS = SUUpdateAlert; 24 | LANGUAGE = ObjC; 25 | OUTLETS = { 26 | delegate = id; 27 | description = NSTextField; 28 | releaseNotesView = WebView; 29 | }; 30 | SUPERCLASS = SUWindowController; 31 | }, 32 | { 33 | CLASS = SUWindowController; 34 | LANGUAGE = ObjC; 35 | SUPERCLASS = NSWindowController; 36 | } 37 | ); 38 | IBVersion = 1; 39 | } -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 69 14 356 240 0 0 1280 778 7 | IBFramework Version 8 | 489.0 9 | IBLastKnownRelativeProjectPath 10 | ../Sparkle.xcodeproj 11 | IBOldestOS 12 | 5 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /SpeedTest-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.yourcompany.${PRODUCT_NAME:identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | NSMainNibFile 20 | MainWindow 21 | 22 | 23 | -------------------------------------------------------------------------------- /UpdateKey.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQCHqXl7R4gxSzQbs9Rx2aah2Gv2MbU9 3 | b32EboHrtPu3Exm3xXlqL9V0OafZjAjnAUOVPa8VprWcF3j/OWk6R6KGLM3ThUUz 4 | 4XsqrKZGpHsTYIe+h8+ArTFnzsv2vHsNF2QkesDahE9lNGcgOQNyJy9XoWUJugaD 5 | JXpizG5fBDfVhOHDI8JPpDyHN9TSIgKYvgeKVvaE5sZ3csb7b1rP4gkB3q9c/h80 6 | ArBeBb5MOe1Iz0aVqidK0fJD66Ah29kvu9yUBkI8gYI/RsODpBS7BDpwZoTHf8TH 7 | TiYhF4fagzleQmda1+eP/FAJcKxmm1NfIBkPKzRaXtWU1jebea2TPMhDAhUAgGen 8 | jSgWMxjKWr9oVtlQqLrL+EMCggEABJHLgZObBVo+85CkJ/Mved+tcePXrWBwvQHE 9 | 8k8I5LmjrFsvMauuwjUvRQm5QyHvys7xETaoR25UuqQFLengeMgt9gFRoWkkIpgS 10 | VNDT8z30+HLsO41w0dKIsn6va5yGkD2fXfSzEqx6qMLPEQJ5nLDJoX03gfZeNFxh 11 | 9chRGJeo4twc1Or4G3EBurAn7Vr6rfQe21dogWTfAv9j6a22cOQObBc2B4z2S097 12 | jNtQ7W0DtYf8R+4qST6Jy7006KZdKmQeCJZaz1j24050VGTXi97wt7r7yXS7slZm 13 | o9hr5cXZTiMrREH098pPG36TEA8miVXxqUCJjDsKNMTyEsoNggOCAQUAAoIBAHHO 14 | Dhi58geSZQgzW+GEvPUAqQ0A/EMI5vNT8g3WsBLoMguWfntmoBjwZfwTue0EQyTU 15 | ouUOaiwtdbmz0XWbMOPIwjSOrWb3+nSQ8hc2m62xdFJnbv1JAYOJJKyjISY2+G6+ 16 | tjWpmv8Or07ao/u61ofCPFWEJwCQE9myrUG6ACyte3GRHqGX3A2IY/J7Ncok4S6I 17 | Zlp27z6beY3BYOM9QUwH1J6VmJn0CXH5jpMFsRo/c/b3iFWFZ80AzDnaX7DXPw8d 18 | 6BVyMZnw+YVNeam30i/at/Ic4hAxBuabBPMulurGY/c+nTW2QlIOCWDAnCQnJpQH 19 | ZSwhpZtVkisZuNaaK8M= 20 | -----END PUBLIC KEY----- 21 | -------------------------------------------------------------------------------- /build_libgit2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # build_libgit2.sh 4 | # GitX 5 | # 6 | # Created by BrotherBard on 7/3/10. 7 | # Copyright 2010 BrotherBard. All rights reserved. 8 | # 9 | # based on: http://log.yeahrightkeller.com/post/270155578/run-script-while-cleaning-in-xcode 10 | 11 | buildAction () { 12 | echo "Building libgit2..." 13 | if [[ -d .git ]] 14 | then 15 | export PATH=$PATH:$HOME/bin:$HOME/local/bin:/sw/bin:/opt/local/bin:`"$TARGET_BUILD_DIR"/gitx --git-path` 16 | git submodule init 17 | git submodule update 18 | cd libgit2 19 | rm -f libgit2.a 20 | make CFLAGS="-arch i386 -arch ppc -arch x86_64" 21 | ranlib libgit2.a 22 | else 23 | echo "error: Not a git repository." 24 | echo "error: clone GitX first so that the libgit2 submodule can be updated" 25 | exit 1 26 | fi 27 | } 28 | 29 | cleanAction () { 30 | echo "Cleaning libgit2..." 31 | cd libgit2 32 | make clean 33 | } 34 | 35 | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 36 | # MAIN 37 | 38 | #echo "Running with ACTION=${ACTION}" 39 | 40 | case $ACTION in 41 | # NOTE: it gets set to "" rather than "build" when doing a build. 42 | "") 43 | buildAction 44 | ;; 45 | 46 | "clean") 47 | cleanAction 48 | ;; 49 | esac 50 | 51 | exit 0 52 | 53 | -------------------------------------------------------------------------------- /gitx.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/gitx.icns -------------------------------------------------------------------------------- /html/css/GitX.css: -------------------------------------------------------------------------------- 1 | @import url("diff.css"); 2 | @import url("notification.css"); 3 | 4 | body { 5 | margin: 0; 6 | margin-top: 5px; 7 | width: 100%; 8 | font-family: 'Lucida Grande', Arial; 9 | } 10 | -------------------------------------------------------------------------------- /html/css/diff.css: -------------------------------------------------------------------------------- 1 | .diff .file { 2 | margin: 10px; 3 | padding: 10px; 4 | -webkit-border-radius: 10px; 5 | border: 1px solid #CCC; 6 | -webkit-box-shadow: 1px 1px 2px #DDD; 7 | } 8 | 9 | .diff .file .fileHeader { 10 | margin-top: -5px; 11 | padding-bottom: 1px; 12 | font-weight: bold; 13 | } 14 | 15 | .diff .file .diffContent { 16 | white-space: pre; 17 | font-family: Menlo, Monaco; 18 | } 19 | 20 | .diff .file .diffcontent .lineno { 21 | float: left; 22 | padding-left: 2px; 23 | padding-right: 2px; 24 | background-color: #ECECEC; 25 | color: #A9A9A9; 26 | border: 1px solid #DDDDDD; 27 | text-align: right; 28 | } 29 | 30 | .diff .file .diffContent .lines { 31 | overflow: auto; 32 | } 33 | 34 | .diff .file .diffContent .lines .hunkheader { 35 | background-color: #f7f7f7; 36 | color: #bbb; 37 | } 38 | 39 | 40 | .diff .file .diffcontent .lines .delline { 41 | background-color: #FEE; 42 | color: #B00; 43 | } 44 | 45 | .diff .file .diffcontent .lines .addline { 46 | background-color: #DFD; 47 | color: #080; 48 | } 49 | 50 | .diff .file .diffcontent .lines .whitespace { 51 | background-color: rgba(255,0,0,0.5); 52 | } 53 | 54 | #CurrentHunk { 55 | border-left: 5px solid black; 56 | } -------------------------------------------------------------------------------- /html/css/notification.css: -------------------------------------------------------------------------------- 1 | #notification { 2 | margin: 5px; 3 | padding: 3px; 4 | clear: both; 5 | 6 | border: 1px solid black; 7 | background-color: #f3f3f3; 8 | 9 | text-align: center; 10 | font-size: 80%; 11 | 12 | -webkit-border-radius: 2px; 13 | } 14 | 15 | #notification.success { 16 | background-color: #CCFF99; 17 | border: 1px solid #99CC66; 18 | } 19 | 20 | #notification.fail { 21 | background-color: #ff9999; 22 | border: 1px solid #cc6666; 23 | } -------------------------------------------------------------------------------- /html/images/added.acorn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/added.acorn -------------------------------------------------------------------------------- /html/images/added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/added.png -------------------------------------------------------------------------------- /html/images/modified.acorn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/modified.acorn -------------------------------------------------------------------------------- /html/images/modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/modified.png -------------------------------------------------------------------------------- /html/images/removed.acorn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/removed.acorn -------------------------------------------------------------------------------- /html/images/removed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/removed.png -------------------------------------------------------------------------------- /html/images/renamed.acorn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/renamed.acorn -------------------------------------------------------------------------------- /html/images/renamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/renamed.png -------------------------------------------------------------------------------- /html/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brotherbard/gitx/9dd29f6048525481a761a80a60c2da6b60e8a734/html/images/spinner.gif -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/MIT-LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2003, 2004 Jim Weirich 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/config.rb: -------------------------------------------------------------------------------- 1 | environment = :production 2 | project_type = :stand_alone 3 | http_path = "/" 4 | css_dir = "../styles" 5 | sass_dir = "." 6 | images_dir = "images" 7 | sass_options = { 8 | :line_numbers => false, 9 | :debug_info => false 10 | } 11 | 12 | # output_style = :compressed 13 | # output_style = :compact 14 | output_style = :expanded 15 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreDefault.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeDefault.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreDjango.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeDjango.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreEclipse.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeEclipse.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreEmacs.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeEmacs.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreFadeToGrey.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeFadeToGrey.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreMDUltra.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeMDUltra.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreMidnight.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeMidnight.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shCoreRDark.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeRDark.scss"; 3 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeDefault.scss: -------------------------------------------------------------------------------- 1 | // Default Syntax Highlighter theme. 2 | 3 | @import "_theme_template.scss"; 4 | 5 | .syntaxhighlighter { 6 | .keyword { font-weight: bold !important; } 7 | } 8 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeDjango.scss: -------------------------------------------------------------------------------- 1 | // Django SyntaxHighlighter theme 2 | 3 | $background: #0a2b1d !default; 4 | 5 | $line_highlighted_background: #233729 !default; 6 | $line_highlighted_number: white !default; 7 | 8 | $gutter_text: #497958 !default; 9 | $gutter_border_color: #41a83e !default; 10 | 11 | $toolbar_collapsed_a: #96dd3b !default; 12 | $toolbar_collapsed_a_hover: #fff !default; 13 | $toolbar_collapsed_background: #000 !default; 14 | 15 | $toolbar_a: #fff !default; 16 | $toolbar_a_hover: #ffe862 !default; 17 | 18 | $code_plain: #f8f8f8 !default; 19 | $code_comments: #336442 !default; 20 | $code_string: #9df39f !default; 21 | $code_keyword: #96dd3b !default; 22 | $code_preprocessor: #91bb9e !default; 23 | $code_variable: #ffaa3e !default; 24 | $code_value: #f7e741 !default; 25 | $code_functions: #ffaa3e !default; 26 | $code_constants: #e0e8ff !default; 27 | $code_color1: #eb939a !default; 28 | $code_color2: #91bb9e !default; 29 | $code_color3: #edef7d !default; 30 | 31 | @import "_theme_template.scss"; 32 | 33 | .syntaxhighlighter { 34 | .comments { font-style: italic !important; } 35 | .keyword { font-weight: bold !important; } 36 | } 37 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeEmacs.scss: -------------------------------------------------------------------------------- 1 | // Emacs SyntaxHighlighter theme based on theme by Joshua Emmons 2 | // http://www.skia.net/ 3 | 4 | $background: black !default; 5 | 6 | $line_highlighted_background: #2A3133 !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #d3d3d3 !default; 10 | $gutter_border_color: #990000 !default; 11 | 12 | $toolbar_collapsed_a: #ebdb8d !default; 13 | $toolbar_collapsed_a_hover: #ff7d27 !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #9ccff4 !default; 18 | 19 | $code_plain: #d3d3d3 !default; 20 | $code_comments: #ff7d27 !default; 21 | $code_string: #ff9e7b !default; 22 | $code_keyword: aqua !default; 23 | $code_preprocessor: #aec4de !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #81cef9 !default; 27 | $code_constants: #ff9e7b !default; 28 | $code_color1: #ebdb8d !default; 29 | $code_color2: #ff7d27 !default; 30 | $code_color3: #aec4de !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeFadeToGrey.scss: -------------------------------------------------------------------------------- 1 | // Fade to Grey SyntaxHighlighter theme based on theme by Brasten Sager 2 | // :http//www.ibrasten.com/ 3 | 4 | $background: #121212 !default; 5 | 6 | $line_highlighted_background: #2C2C29 !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #3185b9 !default; 11 | 12 | $toolbar_collapsed_a: #3185b9 !default; 13 | $toolbar_collapsed_a_hover: #d01d33 !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #96daff !default; 18 | 19 | $code_plain: white !default; 20 | $code_comments: #696854 !default; 21 | $code_string: #e3e658 !default; 22 | $code_keyword: #d01d33 !default; 23 | $code_preprocessor: #435a5f !default; 24 | $code_variable: #898989 !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #aaaaaa !default; 27 | $code_constants: #96daff !default; 28 | $code_color1: #ffc074 !default; 29 | $code_color2: #4a8cdb !default; 30 | $code_color3: #96daff !default; 31 | 32 | @import "_theme_template.scss"; 33 | 34 | .syntaxhighlighter { 35 | .functions { font-weight: bold !important; } 36 | } 37 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeMDUltra.scss: -------------------------------------------------------------------------------- 1 | // MDUltra SyntaxHighlighter theme based on Midnight Theme 2 | // http://www.mddev.co.uk/ 3 | 4 | $background: #222222 !default; 5 | 6 | $line_highlighted_background: #253e5a !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #38566f !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #428bdd !default; 13 | $toolbar_collapsed_a_hover: lime !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #aaaaff !default; 17 | $toolbar_a_hover: #9ccff4 !default; 18 | 19 | $code_plain: lime !default; 20 | $code_comments: #428bdd !default; 21 | $code_string: lime !default; 22 | $code_keyword: #aaaaff !default; 23 | $code_preprocessor: #8aa6c1 !default; 24 | $code_variable: aqua !default; 25 | $code_value: #f7e741 !default; 26 | $code_functions: #ff8000 !default; 27 | $code_constants: yellow !default; 28 | $code_color1: red !default; 29 | $code_color2: yellow !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeMidnight.scss: -------------------------------------------------------------------------------- 1 | // Midnight SyntaxHighlighter theme based on theme by J.D. Myers 2 | // http://webdesign.lsnjd.com/ 3 | 4 | $background: #0f192a !default; 5 | 6 | $line_highlighted_background: #253e5a !default; 7 | $line_highlighted_number: #38566f !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #428bdd !default; 13 | $toolbar_collapsed_a_hover: #1dc116 !default; 14 | $toolbar_collapsed_background: #000 !default; 15 | 16 | $toolbar_a: #D1EDFF !default; 17 | $toolbar_a_hover: #8aa6c1 !default; 18 | 19 | $code_plain: #d1edff !default; 20 | $code_comments: #428bdd !default; 21 | $code_string: #1dc116 !default; 22 | $code_keyword: #b43d3d !default; 23 | $code_preprocessor: #8aa6c1 !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #f7e741 !default; 26 | $code_functions: #ffaa3e !default; 27 | $code_constants: #e0e8ff !default; 28 | $code_color1: #f8bb00 !default; 29 | $code_color2: white !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/compass/shThemeRDark.scss: -------------------------------------------------------------------------------- 1 | // RDark SyntaxHighlighter theme based on theme by Radu Dineiu 2 | // http://www.vim.org/scripts/script.php?script_id=1732 3 | 4 | $background: #1b2426 !default; 5 | 6 | $line_highlighted_background: #323E41 !default; 7 | $line_highlighted_number: #b9bdb6 !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #5ba1cf !default; 13 | $toolbar_collapsed_a_hover: #5ce638 !default; 14 | $toolbar_collapsed_background: #000 !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #e0e8ff !default; 18 | 19 | $code_plain: #b9bdb6 !default; 20 | $code_comments: #878a85 !default; 21 | $code_string: #5ce638 !default; 22 | $code_keyword: #5ba1cf !default; 23 | $code_preprocessor: #435a5f !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #ffaa3e !default; 27 | $code_constants: #e0e8ff !default; 28 | $code_color1: #e0e8ff !default; 29 | $code_color2: white !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Hello SyntaxHighlighter 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Hello SyntaxHighlighter

15 |
16 | function helloSyntaxHighlighter()
17 | {
18 | 	return "hi!";
19 | }
20 | 
21 | 22 | 23 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/scripts/shBrushDiff.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | this.regexList = [ 25 | { regex: /^\+\+\+.*$/gm, css: 'color2' }, 26 | { regex: /^\-\-\-.*$/gm, css: 'color2' }, 27 | { regex: /^\s.*$/gm, css: 'color1' }, 28 | { regex: /^@@.*@@$/gm, css: 'variable' }, 29 | { regex: /^\+[^\+]{1}.*$/gm, css: 'string' }, 30 | { regex: /^\-[^\-]{1}.*$/gm, css: 'comments' } 31 | ]; 32 | }; 33 | 34 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 35 | Brush.aliases = ['diff', 'patch']; 36 | 37 | SyntaxHighlighter.brushes.Diff = Brush; 38 | 39 | // CommonJS 40 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 41 | })(); 42 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/scripts/shBrushPlain.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | ;(function() 18 | { 19 | // CommonJS 20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 21 | 22 | function Brush() 23 | { 24 | }; 25 | 26 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 27 | Brush.aliases = ['text', 'plain']; 28 | 29 | SyntaxHighlighter.brushes.Plain = Brush; 30 | 31 | // CommonJS 32 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 33 | })(); 34 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/.rvmrc: -------------------------------------------------------------------------------- 1 | rvm 1.8.7-p249@copydeca -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/001_basic.html: -------------------------------------------------------------------------------- 1 |
 2 | 	/**
 3 | 	 * multiline comment 
 4 | 	 */
 5 | 	
 6 | 	text
 7 | 	
 8 | 	// single line comment
 9 | 	
10 | 	text
11 | 	
12 | 	"string" text 'string' text "string"
13 | 	"string with \" escape" text 'string with \' escape' text "string with \" escape"
14 | 	
15 | 	var code = '\
16 | 		function helloWorld()\
17 | 		{\
18 | 			// this is great!\
19 | 			for(var i = 0; i <= 1; i++)\
20 | 				alert("yay");\
21 | 		}\
22 | 		';
23 | 
24 | 25 | 43 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/003_script_tag.html: -------------------------------------------------------------------------------- 1 |
2 | 22 |
23 | 24 | 43 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/004_url_parsing.html: -------------------------------------------------------------------------------- 1 |
 2 | /**
 3 |  * Please see <http://www.alexgorbatchev.come/?test=1&y=2>
 4 |  */
 5 | var home = "http://www.alexgorbatchev.come/?test=1&y=2;test/1/2/3;";
 6 | // < http://www.gnu.org/licenses/?test=1&y=2 >.
 7 | 
 8 | // Test embedded URLs that terminate at a left angle bracket.
 9 | // See bug #28: http://bitbucket.org/alexg/syntaxhighlighter/issue/28/
10 | "http://www.example.com/song2.mp3";
11 | 
12 | 13 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/005_no_gutter.html: -------------------------------------------------------------------------------- 1 |
 2 | 			public Image getImage(URL url, String name) {
 3 | 				try {
 4 | 					/*
 5 | 					   Regular multiline comment.
 6 | 					*/
 7 | 				    return getImage(new URL(url, name));
 8 | 				} catch (MalformedURLException e) {
 9 | 				    return null;
10 | 				}
11 | 			}
12 | 
13 | 14 | 34 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/006_pad_line_numbers.html: -------------------------------------------------------------------------------- 1 |
 2 | /**
 3 |  * Returns an Image object that can then be painted on the screen. 
 4 |  * The url argument must specify an absolute {@link URL}. The name
 5 |  * argument is a specifier that is relative to the url argument. 
 6 |  *
 7 |  * @param  url  an absolute URL giving the base location of the image
 8 |  * @param  name the location of the image, relative to the url argument
 9 |  * @return      the image at the specified URL
10 |  * @see         Image
11 |  */
12 | 
13 | 14 | 40 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/007_collapse_interaction.html: -------------------------------------------------------------------------------- 1 | 45 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/008_first_line.html: -------------------------------------------------------------------------------- 1 |
 2 | 	partial class Foo
 3 | 	{
 4 | 		function test()
 5 | 		{
 6 | 			yield return;
 7 | 		}
 8 | 	}
 9 | 
10 | 11 | 30 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/009_class_name.html: -------------------------------------------------------------------------------- 1 |
 2 | 	public Image getImage(URL url, String name) {
 3 | 		try {
 4 | 			/*
 5 | 			   Regular multiline comment.
 6 | 			*/
 7 | 		    return getImage(new URL(url, name));
 8 | 		} catch (MalformedURLException e) {
 9 | 		    return null;
10 | 		}
11 | 	}
12 | 
13 | 14 | 33 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/012_server_side.html: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 | 13 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/cases/013_html_script.html: -------------------------------------------------------------------------------- 1 |
 2 | <hello>
 3 | 	<%
 4 | 		package free.cafekiwi.gotapi;
 5 | 	%>
 6 | </hello>
 7 | 
 8 | 
11 | <%= print(); %>
12 | 
13 | 14 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/commonjs_tests.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is a CommonJS compatibility test. You can run this file with node. 3 | */ 4 | require.paths.unshift(__dirname + '/../scripts'); 5 | 6 | var sys = require('sys'), 7 | shSyntaxHighlighter = require('shCore').SyntaxHighlighter, 8 | code = 'test', 9 | brushes = [ 10 | 'AS3', 11 | 'AppleScript', 12 | 'Bash', 13 | 'CSharp', 14 | 'ColdFusion', 15 | 'Cpp', 16 | 'Css', 17 | 'Delphi', 18 | 'Diff', 19 | 'Erlang', 20 | 'Groovy', 21 | 'JScript', 22 | 'Java', 23 | 'JavaFX', 24 | 'Perl', 25 | 'Php', 26 | 'Plain', 27 | 'PowerShell', 28 | 'Python', 29 | 'Ruby', 30 | 'Sass', 31 | 'Scala', 32 | 'Sql', 33 | 'Vb', 34 | 'Xml' 35 | ] 36 | ; 37 | 38 | brushes.sort(); 39 | 40 | for (var i = 0; i < brushes.length; i++) 41 | { 42 | var name = brushes[i], 43 | brush = require('shBrush' + name).Brush 44 | ; 45 | 46 | brush = new brush(); 47 | brush.init({ toolbar: false }); 48 | 49 | var result = brush.getHtml(code); 50 | 51 | sys.puts(name + (result != null ? ': ok' : ': NOT OK')); 52 | } 53 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/webrick.rb: -------------------------------------------------------------------------------- 1 | require 'webrick' 2 | include WEBrick 3 | 4 | s = HTTPServer.new( 5 | :Port => 2010, 6 | :DocumentRoot => Dir::pwd 7 | ) 8 | s.mount('/sh/scripts', WEBrick::HTTPServlet::FileHandler, '../scripts') 9 | s.mount('/sh/styles', WEBrick::HTTPServlet::FileHandler, '../styles') 10 | trap('INT') { s.stop } 11 | s.start 12 | -------------------------------------------------------------------------------- /html/lib/syntaxhighlighter/tests/webrick.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ruby webrick.rb 3 | -------------------------------------------------------------------------------- /html/views/blame/blame.css: -------------------------------------------------------------------------------- 1 | table { 2 | border-collapse: collapse !important; 3 | border-spacing: 0 !important; 4 | } 5 | 6 | body,th, td { 7 | margin: 0 !important; 8 | padding: 0 !important; 9 | border: 0 !important; 10 | outline: 0 !important; 11 | font-size: 100% !important; 12 | vertical-align: baseline !important; 13 | background: transparent !important; 14 | } 15 | 16 | p.summary { 17 | } 18 | 19 | p{ 20 | margin: 0 !important; 21 | padding: 0 !important; 22 | font-size: 11px; 23 | font-family: Menlo, Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; 24 | white-space: nowrap; 25 | } 26 | 27 | tr.block.l3 p.summary, 28 | tr.block.l2 p.summary, 29 | tr.block.l1 p.summary{ 30 | display: none !important; 31 | } 32 | 33 | table.blocks td { 34 | vertical-align: top !important; 35 | } 36 | 37 | p.author { 38 | white-space: nowrap !important; 39 | } 40 | 41 | table.blocks { 42 | font: 11px "Menlo" !important !important; 43 | } 44 | 45 | table tr.block{ 46 | border-top: 1px solid #c9c9c9 !important; 47 | } 48 | table.blocks{ 49 | border-bottom: 1px solid #c9c9c9 !important; 50 | width: 100% !important; 51 | } 52 | 53 | table.blocks tr td:nth-of-type(2) { 54 | width: 100% !important; 55 | } 56 | 57 | table.blocks tr.block td:nth-of-type(1){ 58 | padding-right: 5px !important; 59 | padding-left: 5px !important; 60 | } -------------------------------------------------------------------------------- /html/views/blame/blame.js: -------------------------------------------------------------------------------- 1 | var showFile = function(txt) { 2 | $("txt").style.display = ""; 3 | $("txt").innerHTML="
"+txt+"
"; 4 | 5 | SyntaxHighlighter.defaults['toolbar'] = false; 6 | 7 | SyntaxHighlighter.highlight(); 8 | return; 9 | } 10 | -------------------------------------------------------------------------------- /html/views/blame/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
hola 13 | 14 | -------------------------------------------------------------------------------- /html/views/commit/multipleSelection.js: -------------------------------------------------------------------------------- 1 | var showMultipleFilesSelection = function(files) 2 | { 3 | hideNotification(); 4 | setTitle(""); 5 | 6 | var div = $("diff"); 7 | 8 | var contents = '
' + 9 | '
Multiple Selection
'; 10 | 11 | contents += "
    "; 12 | 13 | for (var i = 0; i < files.length; ++i) 14 | { 15 | var file = files[i]; 16 | contents += "
  • " + file.path + "
  • "; 17 | } 18 | contents += "
"; 19 | 20 | div.innerHTML = contents; 21 | div.style.display = ""; 22 | } -------------------------------------------------------------------------------- /html/views/diff/diffWindow.css: -------------------------------------------------------------------------------- 1 | #message { 2 | margin-left: 20px; 3 | margin-right: 20px; 4 | margin-top: 40px; 5 | text-align: center; 6 | font-size: 200%; 7 | padding: 20px; 8 | width: auto; 9 | 10 | background-color: #B4D7FF; 11 | border: 2px solid #45A1FE; 12 | 13 | -webkit-border-radius: 10px; 14 | } -------------------------------------------------------------------------------- /html/views/diff/diffWindow.js: -------------------------------------------------------------------------------- 1 | // for diffs shown in the PBDiffWindow 2 | 3 | var setMessage = function(message) { 4 | $("message").style.display = ""; 5 | $("message").innerHTML = message.escapeHTML(); 6 | $("diff").style.display = "none"; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /html/views/diff/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Details for commit 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 24 |
25 | 26 | -------------------------------------------------------------------------------- /html/views/fileview/fileview.js: -------------------------------------------------------------------------------- 1 | var showFile = function(txt) { 2 | $("source").style.display = ""; 3 | $("source").innerHTML="
"+txt+"
"; 4 | 5 | SyntaxHighlighter.defaults['toolbar'] = false; 6 | SyntaxHighlighter.highlight(); 7 | 8 | return; 9 | } 10 | 11 | var test=function(txt) { 12 | SyntaxHighlighter.defaults['toolbar'] = false; 13 | SyntaxHighlighter.highlight(); 14 | 15 | return; 16 | } 17 | -------------------------------------------------------------------------------- /html/views/fileview/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | -------------------------------------------------------------------------------- /html/views/log/format.html: -------------------------------------------------------------------------------- 1 |
2 |

%s

3 | 4 | 5 | 6 | 7 |
Author:%aN
Date:%ar
Commit:%H
8 |
9 | -------------------------------------------------------------------------------- /html/views/log/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Details for commit 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 |
19 | 20 | -------------------------------------------------------------------------------- /html/views/log/log.css: -------------------------------------------------------------------------------- 1 | .commit table tr td:nth-of-type(1){ 2 | text-align: right; 3 | color: gray; 4 | } 5 | 6 | .commit{ 7 | margin: 10px; 8 | padding: 10px; 9 | border-radius: 10px; 10 | border: 1px solid #CCC; 11 | -webkit-box-shadow: 1px 1px 2px #DDD; 12 | } -------------------------------------------------------------------------------- /html/views/log/log.js: -------------------------------------------------------------------------------- 1 | var selectCommit = function(a) { 2 | window.Controller.selectCommit_(a); 3 | return false; 4 | } 5 | 6 | var showFile = function(txt) { 7 | $("log").style.display = ""; 8 | $("log").innerHTML=txt; 9 | return; 10 | } 11 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GitTest 4 | // 5 | // Created by Pieter de Bie on 13-06-08. 6 | // Copyright __MyCompanyName__ 2008. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **) argv); 14 | } 15 | -------------------------------------------------------------------------------- /speed_test/README: -------------------------------------------------------------------------------- 1 | These tests demonstrate 3 different ways to allocate memory for the graph 2 | viewer. 3 | 4 | The methods: 5 | 6 | 1. global 7 | This method allocates a global memory pool that is used by all structs. 8 | It is the fastest method and should be easy to clean up. You do have to 9 | make sure that any pointers to the memory used by others is cleaned up. 10 | 1. malloc 11 | This methods does two mallocs for every iteration. It is slightly slower 12 | (2x as slow), but won't require as much unfragmented memory. It is harder 13 | to clean up this memory, as it requires an equal amount of free's. 14 | 2. array 15 | This method uses NSMutableArray's to store the necessary information. It is 16 | by far the slowest (10x slower than global) but will make use of 17 | Objective-C's garbage collection. This is the easiest way to go if it isn't 18 | too slow. Looping and creating the arrays takes about 2 seconds for 800k 19 | iterations. The question is if this significantly slows down the work. 20 | 21 | Results: 22 | 23 | global: 0.18 seconds 24 | malloc: 0.39 seconds 25 | array: 1.90 seconds 26 | 27 | -------------------------------------------------------------------------------- /speed_test/array.m: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int main() { 10 | srandomdev(); 11 | 12 | int i = 0; struct list* last; 13 | int num = atoi("8000000"); 14 | 15 | int size = 1000; 16 | int totColumns = 10000; 17 | int currentColumn = 0; 18 | 19 | NSMutableArray* array = [NSMutableArray arrayWithCapacity: 100*size]; 20 | 21 | for (i = 0; i < num; i++) { 22 | int numColumns = i % 5; 23 | 24 | NSMutableArray* arr = [NSMutableArray arrayWithCapacity: numColumns]; 25 | int j; 26 | for (j = 0; j < numColumns; j++) 27 | [arr addObject: @"Ha"]; 28 | [array addObject: arr]; 29 | } 30 | 31 | [array release]; 32 | return 0; 33 | } -------------------------------------------------------------------------------- /speed_test/malloc.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | struct list { 9 | struct hash* columns; 10 | int numColumns; 11 | }; 12 | struct hash { 13 | char value[40]; 14 | }; 15 | 16 | int main() { 17 | srandomdev(); 18 | 19 | int i = 0; struct list* last; 20 | int num = atoi("8000000"); 21 | 22 | int size = 1000; 23 | /* Initialize initial list of revisions */ 24 | struct list** revisionList = malloc(size * sizeof(struct list*)); 25 | 26 | struct hash standardColumn; 27 | strcpy(standardColumn.value, "Haha pieter"); 28 | for (i = 0; i < num; i++) { 29 | if (size <= i) { 30 | size *= 2; 31 | revisionList = realloc(revisionList, size * sizeof(struct list*)); 32 | } 33 | 34 | struct list* a = malloc(sizeof(struct list)); 35 | revisionList[i] = a; 36 | 37 | a->numColumns = i % 5; 38 | a->columns = malloc(a->numColumns * sizeof(struct hash)); 39 | int j; 40 | for (j = 0; j < a->numColumns; j++) { 41 | //ccolumns[currentColumn++] = st 42 | strncpy(a->columns[j].value, "Haha pieter is cool", 20); 43 | } 44 | } 45 | 46 | printf("Num value at 3000 is: %i vs %i\n", revisionList[3000]->numColumns, (int) (5 * random())); 47 | return 0; 48 | } -------------------------------------------------------------------------------- /speedtest.h: -------------------------------------------------------------------------------- 1 | // 2 | // speedtest.h 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 20-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface speedtest : NSObject { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /speedtest.m: -------------------------------------------------------------------------------- 1 | // 2 | // speedtest.m 3 | // GitX 4 | // 5 | // Created by Pieter de Bie on 20-11-08. 6 | // Copyright 2008 Pieter de Bie. All rights reserved. 7 | // 8 | 9 | #import "speedtest.h" 10 | #import "PBGitRepository.h" 11 | #import "PBGitRevList.h" 12 | 13 | int main() 14 | { 15 | PBGitRepository *repo = [[PBGitRepository alloc] initWithURL:[NSURL URLWithString:@"file:///Users/pieter/projects/git"]]; 16 | PBGitRevList *revList = [[PBGitRevList alloc] initWithRepository:repo]; 17 | PBGitRevSpecifier *revSpecifier = [[PBGitRevSpecifier alloc] initWithParameters:[NSArray arrayWithObject:@"master"]]; 18 | 19 | //[repo reloadRefs]; 20 | [revList walkRevisionListWithSpecifier:revSpecifier]; 21 | 22 | return 0; 23 | } -------------------------------------------------------------------------------- /test/framework.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env arch -i386 macruby 2 | 3 | require 'fileutils' 4 | 5 | TEST_DIR = File.dirname(__FILE__) 6 | FRAMEWORK_DIR = File.join(TEST_DIR, "..", "build", "Debug", "GitXTesting.framework") 7 | 8 | framework FRAMEWORK_DIR 9 | framework 'Cocoa' 10 | 11 | TEST_TMP_DIR = File.join(TEST_DIR, "tmp") 12 | FileUtils.mkdir_p(TEST_TMP_DIR) -------------------------------------------------------------------------------- /version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildVersion 6 | 18 7 | CFBundleVersion 8 | 1.0 9 | ProjectName 10 | NibPBTemplates 11 | SourceVersion 12 | 1200000 13 | 14 | 15 | --------------------------------------------------------------------------------