Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Resources/Locales/de_DE.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Andere Tabs schließen</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Rechte Tabs schließen</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Kopiere Repository-Pfad</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">In neues Fenster verschieben</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">In neues Fenster kopieren</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositories</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Einfügen</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">Vor {0} Tagen</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/en_US.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Close Other Tabs</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Close Tabs to the Right</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copy Repository Path</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Move into New Window</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Copy into New Window</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositories</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Paste</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} days ago</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/es_ES.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Cerrar Otras Pestañas</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Cerrar Pestañas a la Derecha</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copiar Ruta del Repositorio</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Mover a Nueva Ventana</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Copiar a Nueva Ventana</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositorios</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Pegar</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">Hace {0} días</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/fr_FR.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Fermer les autres onglets</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Fermer les onglets à droite</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copier le chemin vers le dépôt</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Déplacer vers une nouvelle fenêtre</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Copier vers une nouvelle fenêtre</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Dépôts</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Coller</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">il y a {0} jours</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/it_IT.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Chiudi Altri Tab</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Chiudi i Tab a Destra</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copia Percorso Repository</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Sposta in Nuova Finestra</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Copia in Nuova Finestra</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repository</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Incolla</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} giorni fa</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ja_JP.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">他のタブを閉じる</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">右のタブを閉じる</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">リポジトリパスをコピー</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">新しいウィンドウに移動</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">新しいウィンドウにコピー</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">リポジトリ</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">貼り付け</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} 日前</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/pt_BR.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Fechar Outras Abas</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Fechar Abas à Direita</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copiar Caminho do Repositório</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Mover para Nova Janela</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Copiar para Nova Janela</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositórios</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Colar</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} dias atrás</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ru_RU.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Закрыть другие вкладки</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Закрыть вкладки справа</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Копировать путь репозитория</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Переместить в новое окно</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Копировать в новое окно</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Репозитории</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Вставить</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} дней назад</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ta_IN.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">பிற தாவல்களை மூடு</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">வலதுபுறத்தில் உள்ள தாவல்களை மூடு</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">களஞ்சிய பாதை நகலெடு</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">புதிய சாளரத்திற்கு நகர்த்து</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">புதிய சாளரத்திற்கு நகலெடு</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">களஞ்சியங்கள்</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">ஒட்டு</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} நாட்களுக்கு முன்பு</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/uk_UA.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Закрити інші вкладки</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Закрити вкладки праворуч</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Копіювати шлях до сховища</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">Перемістити в нове вікно</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">Копіювати в нове вікно</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Сховища</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">Вставити</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} днів тому</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/zh_CN.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">关闭其他标签页</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">关闭右侧标签页</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">复制仓库路径</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">移动到新窗口</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">复制到新窗口</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">新标签页</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">粘贴</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0}天前</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/zh_TW.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,8 @@
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">關閉其他分頁</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">關閉右側分頁</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">複製存放庫路徑</x:String>
<x:String x:Key="Text.PageTabBar.Tab.MoveToNewWindow" xml:space="preserve">移動到新視窗</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyToNewWindow" xml:space="preserve">複製到新視窗</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">新分頁</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">貼上</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} 天前</x:String>
Expand Down
51 changes: 49 additions & 2 deletions src/ViewModels/Launcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,15 @@ public IDisposable Switcher
private set => SetProperty(ref _switcher, value);
}

public Launcher(string startupRepo)
public bool IsSecondaryWindow
{
get => _isSecondaryWindow;
set => SetProperty(ref _isSecondaryWindow, value);
}

public event Action OnRequestClose;

public Launcher(string startupRepo, bool isSecondaryWindow = false)
{
_ignoreIndexChange = true;

Expand Down Expand Up @@ -116,6 +124,8 @@ public Launcher(string startupRepo)

if (string.IsNullOrEmpty(_title))
UpdateTitle();

IsSecondaryWindow = isSecondaryWindow;
}

public void Quit()
Expand Down Expand Up @@ -273,7 +283,10 @@ public void CloseTab(LauncherPage page)
}
else
{
App.Quit(0);
if (IsSecondaryWindow)
OnRequestClose?.Invoke();
else
App.Quit(0);
}

return;
Expand Down Expand Up @@ -495,6 +508,24 @@ public ContextMenu CreateContextForPageTab(LauncherPage page)

if (page.Node.IsRepository)
{
var moveToNewWindow = new MenuItem();
moveToNewWindow.Header = App.Text("PageTabBar.Tab.MoveToNewWindow");
moveToNewWindow.Click += (_, e) =>
{
MoveToNewWindow(page);
e.Handled = true;
};
menu.Items.Add(moveToNewWindow);

var copyToNewWindow = new MenuItem();
copyToNewWindow.Header = App.Text("PageTabBar.Tab.CopyToNewWindow");
copyToNewWindow.Click += (_, e) =>
{
CopyToNewWindow(page);
e.Handled = true;
};
menu.Items.Add(copyToNewWindow);

var bookmark = new MenuItem();
bookmark.Header = App.Text("PageTabBar.Tab.Bookmark");
bookmark.Icon = App.CreateMenuIcon("Icons.Bookmark");
Expand Down Expand Up @@ -534,6 +565,21 @@ public ContextMenu CreateContextForPageTab(LauncherPage page)
return menu;
}

public void MoveToNewWindow(LauncherPage page)
{
NewWindow(page);
CloseTab(page);
}

public void CopyToNewWindow(LauncherPage page) => NewWindow(page);

private void NewWindow(LauncherPage page)
{
var newWindow = new Views.Launcher() { DataContext = new Launcher(page.Node.Id, true) };
newWindow.RegisterOnRequestClose();
newWindow.Show();
}

private string GetRepositoryGitDir(string repo)
{
var fullpath = Path.Combine(repo, ".git");
Expand Down Expand Up @@ -611,5 +657,6 @@ private void UpdateTitle()
private bool _ignoreIndexChange = false;
private string _title = string.Empty;
private IDisposable _switcher = null;
private bool _isSecondaryWindow = false;
}
}
7 changes: 7 additions & 0 deletions src/Views/Launcher.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Platform;
using Avalonia.Threading;
using Avalonia.VisualTree;

namespace SourceGit.Views
Expand Down Expand Up @@ -85,6 +86,12 @@ public Launcher()
WindowStartupLocation = WindowStartupLocation.CenterScreen;
}

public void RegisterOnRequestClose()
{
if (DataContext is ViewModels.Launcher vm)
vm.OnRequestClose += () => Dispatcher.UIThread.Post(Close);
}

public void BringToTop()
{
if (WindowState == WindowState.Minimized)
Expand Down
Loading