Implement removing repositories from list

https://bugzilla.gnome.org/show_bug.cgi?id=729729
This commit is contained in:
Jesse van den Kieboom 2014-06-25 22:54:00 +02:00
parent 6a182c1d39
commit 5d50b67b0c
2 changed files with 83 additions and 6 deletions

View file

@ -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());

View file

@ -16,6 +16,44 @@
<property name="margin_top">12</property>
<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>
@ -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>