Save the position correctly (it wasn't saving before). Restore the position sometime after awakeFromNib otherwise the superview's size will not have been set yet.
Also constrain the divider from moving unless the lower view is too small.
Highlights any commit that touches a file.
The "Show history of file" context menu item will now set the path search instead of creating a rev specifier.
Previously searching would filter the commits in the commit tableview to only show the commits that matched the search. However the context of where those commits exist in the history is lost.
With this patch all the commits are shown but the commits that match the search are highlighted with a light blue background. In addition there is a forward/back button to step through the matches.
A new search controller:
- keeps track of the matching results
- finds the next or previous result
- displays the number of matches found or "Not found"
- shows/hides the # of matches text and the next/last stepper button
- shows a small bezel style window with a rewind icon indicating that the selection has cycled (pressing next when at the last match or previous when at the first)
- sets up the search predicate which covers Subject, Author and SHA (previously this was three different searches)
- stores search results in an NSIndexSet to make finding if a row is in the set faster (needed at drawing time)
Highlighting of search result rows is done in PBCommitList -drawRow:clipRect:
PBGitTextFieldCell is a subclass of NSTextFieldCell that disables the cell's selection highlighting.
Supporting Find Next and Find Previous (cmd-g and cmd-shift-g) menu commands required changing the action method of the menu items because NSTextFields (seem to) actively disable items in the Find menu.
rewindImage.pdf created by Nathan Kinsinger
Sending the arguments with the openURL:... message allows the repository document to modify it's UI without the UI flashing between states as it opens.
Covers all the existing functionality of the CLI, but modifies:
- "--all" "--local" "--branch" change the branch filter
- cleaned up the usage (help) text and added info on missing commands
- looks up the full ref name of refs so the name of a branch or tag can be entered (the user can enter "master" instead of "refs/heads/master")
Modified the History Controller to watch for and react to branch filter changes.
The GitX.h file is generated by the 'sdp' tool in a run script build phase called 'Generate Scripting Bridge Header' based on the content of GitX.sdef. It is used by the Scripting Bridge so that other apps (in this case the gitx CLI) can call Applescript commands on GitX in objective-c.
This is important for large repositories as the commit will be selected when it is added instead of waiting for all the commits to be loaded.
Stop attempts to select the current commit again if it's already selected.
No longer need the updatedGraph property on the history list.
- make sure to remove themselves from KV and notification center observers
- add the PBWebHistoryController to PBHistoryController so it can be told to close
- replaced the -removeView methods with -closeView (-removeView was not being used)
- clear any obj-c objects set in web scripting objects
This last item seems to be the reason that the web controllers and the current commit did not get collected which then held the repository document from being collected as well.
This is a convenience class to replace using NSStrings to store and compare SHAs. PBGitSHA has a much faster isEqual: function.
It is <NSCopying> compliant and implements isEqual: and hash so it can be used as a key in dictionaries.
If the current branch filter is switched to "All" or "Local" the index that's
calculated as being the targeted index to scroll to visible, is off by the amount
in Y that the bottom split view separator is off from a multiple of rows.
-adjustScroll: on PBCommitList is called automatically whenever the list needs
laying out.
An ivar keeps track if we come from the -scrollSelectionToTopOfViewFrom: method
of PBGitHistoryController.
I'll leave the commented out NSLogs in there in case they're needed for debugging
again later.
- only maintains one item, if multiple items are selected then only the first one will stay selected
- if the file is removed in the new commit then don't select anything, then if a new commit is selected that does have that file it will be selected again
- this does not maintain the expanded state of folders other than the one(s) that contain the selected file
- in PBGitHistory.xib Tree Controller turn off:
- Avoid Empty Selection
- Select Inserted Objects
In 10.6 Apple removed the private QL API that existed in 10.5 and added a new public API. However they did not port the new API back to 10.5 so we have to do some work to get it working in both.
This patch has GitX choose the correct version at run time.
- The delegate code is based on Apple's QuickLookDownloader example project
- added three of the public API methods to CWQuickLook.h to avoid warnings about unknown method calls
- In ApplicationController try to load the public API first then load the private one if it fails
- Created PBQLTextView, a subclass of NSTextView to allow the space key event to toggle the preview panel
- PBGitHistoryView.xib:
- set the text view's class to PBQLTextView
- connected the history controller to the controller outlet
- bound the quick look button's enabled binding to File's Owner.selectedCommitDetailsIndex
- added "Quick Look" to the quick look button's tooltip
- The commit list table view toggles the panel if the tree view is active
- changed name of the toggle IBAction method which caused MainMenu.xib and PBGitHistoryView.xib to update
- filters for All, Local/Remote, and the selected branch
- "Local" includes both branches and tags
- "Remote" includes all branches from the same remote as the selected remote branch (i.e. not other remotes)
Changes to make the above work:
- add a history list class between the repository and rev list
- store a project rev list with all the commits from the project
- use the project rev list to graph the history for individual branches when there have been no changes
- use a different rev list to show non-simple revs (history of a file, revs from the gitx tool)
- update the commits in chunks to a mutable array so the table view's array controller has less work to do
- only update the project rev list from git when actually necessary
- don't add the All Branches and Local Branches revs to the branches array
- some changes related to forcing the project's rev list to update when changes are made
- some changes related to not causing updates too often
- store the selected filter in user defaults
- when the graphing is done select the commit for the branch
It was no longer opening the tree view because the index in setTreeView: was wrong.
Removing the raw view was started in 34394d056b. Finish removing the raw view stuff and clean things up.
- remove the rawCommit property
- fix the incorrect index of the tree view setter
- define symbols for the indexes
- rename the selectedTab property to indicate what is being selected
- rename realCommit to selectedCommit to better indicate what it's for
- define a key for the defaults
- add Create Branch and Create Tag buttons
- icons are modified versions of Kim Does's icons (from ca7816b523) made a bit smaller to fit in the buttons better
- add Merge, Cherry Pick, and Rebase buttons
- icons by Nathan Kinsinger
- add an action menu for the selected ref in the source view
- add Add Remote, Fetch, Pull and Push buttons to the bottom bar
- Add Remote icon by Nathan Kinsinger
- Fetch, Pull and Push icons are modified versions of André Berg's icons (from 4396081c07) made a bit smaller to fit in the UI better.
- move the status message for both the history view and the commit/stage view
- all PBViewControllers now have status and isBusy properties and can use those to put a message in the bottom bar when they are the active content controller of the window
The new cell handles:
- showing contextual menus
- drawing a badge for the checked out branch
Needed to add the reference to the ref controller to the history controller.
- remove the separate window toolbars from the history and commit views and create a new window toolbar in the repository window
- add new toolbars inside the history view
- new class to draw a gradient in the background of a view
- moved the search field from the main toolbar to the scope bar
Remove the sidebar from the history controller and put it under the control of the window controller.
- the window controller is the delegate of the split view and controls resizing so the source list stays the same width as the window resizes
- the sidebar controller tells the window controller which content view to show
- removed the view selector from the toolbars of the history and commit xibs (the menu and keyboard shortcuts command-1 and command-2 still switch between the views)
- added horizontal lines to the history and commit xibs to delineate the bottom toolbar area
A Create Tag item:
- A new class (and xib) PBCreateTagSheet
- In the Repository menu
- In the contextual menu for commits
PBRefController the method tagInfo:
- renamed to showTagInfoSheet:
- moved it under the Tags mark
Update the methods for creating a branch.
- create new class and xib PBCreateBranchSheet
- remove old addRef: methods and iVars from PBRefController
- remove old sheet from PBHistoryView.xib
- put the implementation method in PBGitRepository
- add a contextual menu item for commits
- shows an error sheet
- ask the commitController to rearrangeObjects to make sure the new branch is shown
- switch from using "update-ref" to "branch" so that branches starting at a remote branch will track automatically (or not depending on the repo's settings)
This adds a subclass to PBNiceSplitView which has collapsible subviews
as well as an uncollapse-method. The initWithTopMin method is used to
set the minimum sizes for the subviews.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
* commit 'origin/master':
CommitController: Don't turn of off automatic rearranging
PBGitRepository: Clean up the readFromURL: method
PBGitRepository: Fix opening of large directories due to bug in NSFileWrapper.
PBGitIndexController: Renamed "Revert" to "Discard"
CommitController: Reject merges
HistoryController: Add "Open Files" menu item
WebHistoryView: Also use the tree context menu
HistoryController: Use a programatically created context menu
WebHistoryController: Refactor menu search to be recursive
HistoryController: Add some marks
PBGitHistory: Add "Show in Finder" to files
Display context menu in the history tree to show related commits
History fileview: select current item on rightclick
PBGitConfig: Add missing sentinel
Remove use of deprecated stringWithCString
HistoryView: only add parents if parents array exists
keyboardNavigation: Fix keys 'c' and 'v' from webView
Site: add link to Twitter
Conflicts:
PBGitHistoryView.xib
PBGitIndexController.m
This allows us to differentiate between one or multiple files,
and will also come in use when we want to create a context menu
from the webview later on
We now use representedObjects to store the selected paths.
That should make it possible to reuse the menu's from somewhere else.
This adds the "Show in Finder" menu-entry and logic to files in the
tree-view of the history. Also the button "Show commits touching paths"
was renamed to "Show history of files".
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>