[gitg] Implement removing repositories from list
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Implement removing repositories from list
- Date: Wed, 25 Jun 2014 20:55:05 +0000 (UTC)
commit 5d50b67b0c77b37bd0baac726b235f6963fa86ba
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Wed Jun 25 22:54:00 2014 +0200
Implement removing repositories from list
https://bugzilla.gnome.org/show_bug.cgi?id=729729
libgitg/gitg-repository-list-box.vala | 41 +++++++++++++++++-
libgitg/resources/gitg-repository-list-box-row.ui | 48 ++++++++++++++++++--
2 files changed, 83 insertions(+), 6 deletions(-)
---
diff --git a/libgitg/gitg-repository-list-box.vala b/libgitg/gitg-repository-list-box.vala
index 5d5ad07..9d18e72 100644
--- a/libgitg/gitg-repository-list-box.vala
+++ b/libgitg/gitg-repository-list-box.vala
@@ -43,6 +43,10 @@ namespace Gitg
private Gtk.Arrow d_arrow;
[GtkChild]
private Gtk.Spinner d_spinner;
+ [GtkChild]
+ private Gtk.Button d_remove_button;
+
+ public signal void request_remove();
public Repository? repository
{
@@ -64,6 +68,14 @@ namespace Gitg
}
}
+ public bool can_remove
+ {
+ set
+ {
+ d_remove_button.sensitive = value;
+ }
+ }
+
public DateTime time
{
get { return d_time; }
@@ -127,6 +139,12 @@ namespace Gitg
{
Object(repository_name: name, branch_name: branch_name, has_remote:
has_remote);
}
+
+ [GtkCallback]
+ private void remove_button_clicked(Gtk.Button remove)
+ {
+ request_remove();
+ }
}
public signal void repository_activated(Repository repository);
@@ -251,6 +269,8 @@ namespace Gitg
{
Row? row = get_row_for_repository(repository);
+ var f = repository.workdir != null ? repository.workdir : repository.location;
+
if (row == null)
{
string head_name = "";
@@ -271,6 +291,26 @@ namespace Gitg
row = new Row(repository.name, head_name, has_remote);
row.repository = repository;
row.show();
+
+ if (f != null)
+ {
+ row.request_remove.connect(() => {
+ try
+ {
+ var recent_manager = Gtk.RecentManager.get_default();
+ recent_manager.remove_item(f.get_uri());
+ } catch {}
+
+ remove(row);
+ });
+
+ row.can_remove = true;
+ }
+ else
+ {
+ row.can_remove = false;
+ }
+
add(row);
}
else
@@ -280,7 +320,6 @@ namespace Gitg
invalidate_sort();
}
- var f = repository.workdir != null ? repository.workdir : repository.location;
if (f != null)
{
add_repository_to_recent_manager(f.get_uri());
diff --git a/libgitg/resources/gitg-repository-list-box-row.ui
b/libgitg/resources/gitg-repository-list-box-row.ui
index 86c5c62..345f451 100644
--- a/libgitg/resources/gitg-repository-list-box-row.ui
+++ b/libgitg/resources/gitg-repository-list-box-row.ui
@@ -17,6 +17,44 @@
<property name="margin_bottom">12</property>
<property name="column_spacing">10</property>
<child>
+ <object class="GtkAlignment" id="delete_button_align">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_focus">False</property>
+ <property name="is_focus">False</property>
+ <property name="yscale">0</property>
+ <property name="yalign">0.5</property>
+ <child>
+ <object class="GtkButton" id="d_remove_button">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_focus">False</property>
+ <property name="is_focus">False</property>
+ <property name="vexpand">False</property>
+ <property name="relief">none</property>
+ <property name="tooltip_text" translatable="yes">Remove the repository from the list
(does not delete the repository from disk)</property>
+ <signal name="clicked" handler="remove_button_clicked" swapped="no"/>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child>
+ <object class="GtkImage" id="delete_image">
+ <property name="visible">True</property>
+ <property name="pixel_size">16</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkImage" id="d_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -25,7 +63,7 @@
<property name="stock">gtk-missing-image</property>
</object>
<packing>
- <property name="left_attach">0</property>
+ <property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">2</property>
@@ -43,7 +81,7 @@
<property name="ellipsize">end</property>
</object>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
@@ -63,7 +101,7 @@
</style>
</object>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">2</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
@@ -78,7 +116,7 @@
<property name="shadow_type">none</property>
</object>
<packing>
- <property name="left_attach">2</property>
+ <property name="left_attach">3</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">2</property>
@@ -91,7 +129,7 @@
<property name="is_focus">False</property>
</object>
<packing>
- <property name="left_attach">3</property>
+ <property name="left_attach">4</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">2</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]