Skip to content

Commit

Permalink
Split pull button in 2 buttons (fetch and pull)
Browse files Browse the repository at this point in the history
* One for fetch operations,
* One for rebase operations,

With there own default operation setting.

Improvement over gitextensions#3923
  • Loading branch information
pmiossec committed Oct 10, 2022
1 parent 902d920 commit d3c3ca7
Show file tree
Hide file tree
Showing 8 changed files with 140 additions and 44 deletions.
9 changes: 9 additions & 0 deletions GitCommands/Settings/AppSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -895,6 +895,15 @@ public enum PullAction
Default
}

/// <summary>
/// Gets or sets the default fetch action that is performed by the toolbar icon when it is clicked on.
/// </summary>
public static PullAction DefaultFetchAction
{
get => GetEnum("DefaultFetchAction", PullAction.Fetch);
set => SetEnum("DefaultFetchAction", value);
}

/// <summary>
/// Gets or sets the default pull action that is performed by the toolbar icon when it is clicked on.
/// </summary>
Expand Down
41 changes: 33 additions & 8 deletions GitUI/CommandsDialogs/FormBrowse.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

74 changes: 53 additions & 21 deletions GitUI/CommandsDialogs/FormBrowse.InitMenusAndToolbars.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ private void InitMenusAndToolbars(string? revFilter, string? pathFilter)
translateToolStripMenuItem,
recoverLostObjectsToolStripMenuItem,
branchSelect,
toolStripButtonFetch,
toolStripButtonPull,
pullToolStripMenuItem,
pullToolStripMenuItem1,
Expand Down Expand Up @@ -65,8 +66,9 @@ private void InitMenusAndToolbars(string? revFilter, string? pathFilter)

UpdateCommitButtonAndGetBrush(status: null, AppSettings.ShowGitStatusInBrowseToolbar);

FillNextFetchActionAsDefaultToolStripMenuItems();
FillNextPullActionAsDefaultToolStripMenuItems();
RefreshDefaultPullAction();
RefreshDefaultActions();

FillUserShells(defaultShell: BashShell.ShellName);

Expand Down Expand Up @@ -139,9 +141,32 @@ void WorkaroundToolbarLocationBug()
}
}

private void FillNextFetchActionAsDefaultToolStripMenuItems()
{
FillNextActionAsDefaultToolStripMenuItems(toolStripButtonFetch, setDefaultFetchButtonActionToolStripMenuItem,
(object sender, EventArgs eventArgs) =>
{
var clickedMenuItem = (ToolStripMenuItem)sender;
AppSettings.DefaultFetchAction = (AppSettings.PullAction)clickedMenuItem.Tag;
RefreshDefaultFetchAction();
});
}

private void FillNextPullActionAsDefaultToolStripMenuItems()
{
var setDefaultPullActionDropDown = (ToolStripDropDownMenu)setDefaultPullButtonActionToolStripMenuItem.DropDown;
FillNextActionAsDefaultToolStripMenuItems(toolStripButtonPull, setDefaultPullButtonActionToolStripMenuItem,
(object sender, EventArgs eventArgs) =>
{
var clickedMenuItem = (ToolStripMenuItem)sender;
AppSettings.DefaultPullAction = (AppSettings.PullAction)clickedMenuItem.Tag;
RefreshDefaultPullAction();
});
}

private void FillNextActionAsDefaultToolStripMenuItems(ToolStripSplitButton buttonActionToolStripMenuItem,
ToolStripMenuItem defaultButtonActionToolStripMenuItem, EventHandler setDefaultPullActionMenuItemClick)
{
var setDefaultPullActionDropDown = (ToolStripDropDownMenu)defaultButtonActionToolStripMenuItem.DropDown;

// Show both Check and Image margins in a menu
setDefaultPullActionDropDown.ShowImageMargin = true;
Expand All @@ -156,7 +181,7 @@ private void FillNextPullActionAsDefaultToolStripMenuItems()
}
};

var setDefaultPullActionDropDownItems = toolStripButtonPull.DropDownItems
var setDefaultPullActionDropDownItems = buttonActionToolStripMenuItem.DropDownItems
.OfType<ToolStripMenuItem>()
.Where(tsmi => tsmi.Tag is AppSettings.PullAction)
.Select(tsmi =>
Expand All @@ -170,19 +195,12 @@ private void FillNextPullActionAsDefaultToolStripMenuItems()
Tag = tsmi.Tag
};
tsi.Click += SetDefaultPullActionMenuItemClick;
tsi.Click += setDefaultPullActionMenuItemClick;
return tsi;
});

setDefaultPullActionDropDown.Items.AddRange(setDefaultPullActionDropDownItems.ToArray());

void SetDefaultPullActionMenuItemClick(object sender, EventArgs eventArgs)
{
var clickedMenuItem = (ToolStripMenuItem)sender;
AppSettings.DefaultPullAction = (AppSettings.PullAction)clickedMenuItem.Tag;
RefreshDefaultPullAction();
}
}

private void FillUserShells(string defaultShell)
Expand Down Expand Up @@ -234,36 +252,50 @@ private void FillUserShells(string defaultShell)
gitBashToolStripMenuItem.Tag = _shellProvider.GetShell(BashShell.ShellName);
}

private void RefreshDefaultActions()
{
RefreshDefaultFetchAction();
RefreshDefaultPullAction();
}

private void RefreshDefaultFetchAction()
{
RefreshDefaultAction(setDefaultFetchButtonActionToolStripMenuItem, AppSettings.DefaultFetchAction);
}

private void RefreshDefaultPullAction()
{
if (setDefaultPullButtonActionToolStripMenuItem is null)
RefreshDefaultAction(setDefaultPullButtonActionToolStripMenuItem, AppSettings.DefaultPullAction);
}

private void RefreshDefaultAction(ToolStripMenuItem? toolStripMenuItem, AppSettings.PullAction defaultPullAction)
{
if (toolStripMenuItem is null)
{
// We may get called while instantiating the form
return;
}

var defaultPullAction = AppSettings.DefaultPullAction;

foreach (ToolStripMenuItem menuItem in setDefaultPullButtonActionToolStripMenuItem.DropDown.Items)
foreach (ToolStripMenuItem menuItem in toolStripMenuItem.DropDown.Items)
{
menuItem.Checked = (AppSettings.PullAction)menuItem.Tag == defaultPullAction;
}

switch (defaultPullAction)
{
case AppSettings.PullAction.Fetch:
toolStripButtonPull.Image = Images.PullFetch.AdaptLightness();
toolStripButtonPull.ToolTipText = _pullFetch.Text;
toolStripButtonFetch.Image = Images.PullFetch.AdaptLightness();
toolStripButtonFetch.ToolTipText = _pullFetch.Text;
break;

case AppSettings.PullAction.FetchAll:
toolStripButtonPull.Image = Images.PullFetchAll.AdaptLightness();
toolStripButtonPull.ToolTipText = _pullFetchAll.Text;
toolStripButtonFetch.Image = Images.PullFetchAll.AdaptLightness();
toolStripButtonFetch.ToolTipText = _pullFetchAll.Text;
break;

case AppSettings.PullAction.FetchPruneAll:
toolStripButtonPull.Image = Images.PullFetchPruneAll.AdaptLightness();
toolStripButtonPull.ToolTipText = _pullFetchPruneAll.Text;
toolStripButtonFetch.Image = Images.PullFetchPruneAll.AdaptLightness();
toolStripButtonFetch.ToolTipText = _pullFetchPruneAll.Text;
break;

case AppSettings.PullAction.Merge:
Expand Down
19 changes: 15 additions & 4 deletions GitUI/CommandsDialogs/FormBrowse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -467,8 +467,9 @@ protected override void OnActivated(EventArgs e)
Handle,
new WindowsThumbnailToolbarButtons(
new WindowsThumbnailToolbarButton(toolStripButtonCommit.Text, toolStripButtonCommit.Image, CommitToolStripMenuItemClick),
new WindowsThumbnailToolbarButton(toolStripButtonPush.Text, toolStripButtonPush.Image, PushToolStripMenuItemClick),
new WindowsThumbnailToolbarButton(toolStripButtonPull.Text, toolStripButtonPull.Image, PullToolStripMenuItemClick)));
new WindowsThumbnailToolbarButton(toolStripButtonFetch.Text, toolStripButtonFetch.Image, fetchToolStripMenuItem_Click),
new WindowsThumbnailToolbarButton(toolStripButtonPull.Text, toolStripButtonPull.Image, PullToolStripMenuItemClick),
new WindowsThumbnailToolbarButton(toolStripButtonPush.Text, toolStripButtonPush.Image, PushToolStripMenuItemClick)));
}

this.InvokeAsync(OnActivate).FileAndForget();
Expand Down Expand Up @@ -509,7 +510,7 @@ protected override void OnClosed(EventArgs e)
protected override void OnUICommandsChanged(GitUICommandsChangedEventArgs e)
{
var oldCommands = e.OldCommands;
RefreshDefaultPullAction();
RefreshDefaultActions();

if (oldCommands is not null)
{
Expand Down Expand Up @@ -1405,7 +1406,7 @@ private void OnShowSettingsClick(object sender, EventArgs e)

_gitStatusMonitor.Active = NeedsGitStatusMonitor() && Module.IsValidGitWorkingDir();

RefreshDefaultPullAction();
RefreshDefaultActions();
}

private void TagToolStripMenuItemClick(object sender, EventArgs e)
Expand Down Expand Up @@ -2468,6 +2469,16 @@ private void pullToolStripMenuItem1_Click(object sender, EventArgs e)
DoPull(pullAction: AppSettings.FormPullAction, isSilent: false);
}

private void ToolStripButtonFetchClick(object sender, EventArgs e)
{
DoPull(pullAction: AppSettings.DefaultFetchAction, isSilent: true);
}

private void ToolStripButtonFetch_DropDownOpened(object sender, EventArgs e)
{
ToolStripFilters.PreventToolStripSplitButtonClosing(sender as ToolStripSplitButton);
}

private void mergeToolStripMenuItem_Click(object sender, EventArgs e)
{
DoPull(pullAction: AppSettings.PullAction.Merge, isSilent: true);
Expand Down
2 changes: 1 addition & 1 deletion GitUI/GitUICommands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1870,7 +1870,7 @@ private static void UpdateSettingsBasedOnArguments(IReadOnlyDictionary<string, s

if (arguments.ContainsKey("fetch"))
{
AppSettings.DefaultPullAction = AppSettings.PullAction.Fetch;
AppSettings.DefaultFetchAction = AppSettings.PullAction.Fetch;
}

if (arguments.ContainsKey("autostash"))
Expand Down
8 changes: 8 additions & 0 deletions GitUI/Translation/English.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -3103,6 +3103,10 @@ Do you want to continue?</source>
<source>&amp;Solve merge conflicts...</source>
<target />
</trans-unit>
<trans-unit id="setDefaultFetchButtonActionToolStripMenuItem.Text">
<source>Set default Fetch button action</source>
<target />
</trans-unit>
<trans-unit id="setDefaultPullButtonActionToolStripMenuItem.Text">
<source>Set &amp;default Pull button action</source>
<target />
Expand Down Expand Up @@ -3163,6 +3167,10 @@ Do you want to continue?</source>
<source>Commit</source>
<target />
</trans-unit>
<trans-unit id="toolStripButtonFetch.Text">
<source>Fetch</source>
<target />
</trans-unit>
<trans-unit id="toolStripButtonLevelUp.ToolTipText">
<source>Submodules</source>
<target />
Expand Down
Loading

0 comments on commit d3c3ca7

Please sign in to comment.