mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-10-02 14:13:48 +00:00
Clean author details
This commit is contained in:
parent
e15a8a5482
commit
aa6789406f
|
@ -25,6 +25,9 @@ namespace Gitg
|
||||||
//Do this to pull in config.h before glib.h (for gettext)
|
//Do this to pull in config.h before glib.h (for gettext)
|
||||||
private const string version = Gitg.Config.VERSION;
|
private const string version = Gitg.Config.VERSION;
|
||||||
|
|
||||||
|
private const string USER_NAME_PROP = "user.name";
|
||||||
|
private const string USER_EMAIL_PROP = "user.email";
|
||||||
|
|
||||||
[GtkChild (name = "entry_name")]
|
[GtkChild (name = "entry_name")]
|
||||||
private unowned Gtk.Entry d_entry_name;
|
private unowned Gtk.Entry d_entry_name;
|
||||||
|
|
||||||
|
@ -100,7 +103,7 @@ namespace Gitg
|
||||||
|
|
||||||
// Translators: %s is the repository name
|
// Translators: %s is the repository name
|
||||||
d_checkbutton_override_global.label = _("Override global details for repository “%s”:").printf(d_repository_name);
|
d_checkbutton_override_global.label = _("Override global details for repository “%s”:").printf(d_repository_name);
|
||||||
d_checkbutton_override_global.active = (config_is_local("user.name") || config_is_local("user.email"));
|
d_checkbutton_override_global.active = (config_is_local(USER_NAME_PROP) || config_is_local(USER_EMAIL_PROP));
|
||||||
|
|
||||||
d_checkbutton_override_global.notify["active"].connect(update_sensitivity);
|
d_checkbutton_override_global.notify["active"].connect(update_sensitivity);
|
||||||
d_checkbutton_override_global.show();
|
d_checkbutton_override_global.show();
|
||||||
|
@ -163,62 +166,75 @@ namespace Gitg
|
||||||
|
|
||||||
private void update_entries(Ggit.Config config)
|
private void update_entries(Ggit.Config config)
|
||||||
{
|
{
|
||||||
d_entry_name.set_text(read_config_string(config, "user.name").chomp());
|
d_entry_name.set_text(read_config_string(config, USER_NAME_PROP).strip());
|
||||||
d_entry_email.set_text(read_config_string(config, "user.email").chomp());
|
d_entry_email.set_text(read_config_string(config, USER_EMAIL_PROP).strip());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void delete_local_entries()
|
private void delete_local_entry(string name) {
|
||||||
{
|
try {
|
||||||
try
|
if (d_config.get_entry(name).get_level() == Ggit.ConfigLevel.LOCAL) {
|
||||||
{
|
d_config.delete_entry(name);
|
||||||
if (d_config.get_entry("user.name").get_level() == Ggit.ConfigLevel.LOCAL)
|
|
||||||
{
|
|
||||||
d_config.delete_entry("user.name");
|
|
||||||
}
|
}
|
||||||
} catch {}
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
private void set_property(string name, string value) {
|
||||||
{
|
bool empty_value = value == null || value.strip().len() == 0;
|
||||||
if (d_config.get_entry("user.email").get_level() == Ggit.ConfigLevel.LOCAL)
|
if (empty_value) {
|
||||||
{
|
d_config.delete_entry(name);
|
||||||
d_config.delete_entry("user.email");
|
} else {
|
||||||
|
d_config.set_string(name, value.strip());
|
||||||
}
|
}
|
||||||
} catch {}
|
}
|
||||||
|
|
||||||
|
private bool exists_local_property(string name) {
|
||||||
|
var config = d_config.open_level(Ggit.ConfigLevel.LOCAL);
|
||||||
|
string value = read_config_string(config, name);
|
||||||
|
return value != null && value.strip().len() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void response(int id) {
|
public override void response(int id) {
|
||||||
if (id == Gtk.ResponseType.OK)
|
bool destroy_dialog = true;
|
||||||
{
|
if (id == Gtk.ResponseType.OK) {
|
||||||
try
|
try {
|
||||||
{
|
if (d_repository_name != null) {
|
||||||
if (d_repository_name != null)
|
if (d_checkbutton_override_global.active) {
|
||||||
{
|
set_property(USER_NAME_PROP, d_entry_name.get_text());
|
||||||
if (d_checkbutton_override_global.active)
|
set_property(USER_EMAIL_PROP, d_entry_email.get_text());
|
||||||
{
|
} else {
|
||||||
d_config.set_string("user.name", d_entry_name.get_text());
|
if (exists_local_property(USER_NAME_PROP) || exists_local_property(USER_EMAIL_PROP)) {
|
||||||
d_config.set_string("user.email", d_entry_email.get_text());
|
var alert_dialog = new Gtk.MessageDialog (this, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING,
|
||||||
|
Gtk.ButtonsType.OK_CANCEL,
|
||||||
|
_("Disable override will clean existing local author details. Are you sure?"), null);
|
||||||
|
alert_dialog.response.connect ((id) => {
|
||||||
|
if (id == Gtk.ResponseType.OK) {
|
||||||
|
delete_local_entry(USER_NAME_PROP);
|
||||||
|
delete_local_entry(USER_EMAIL_PROP);
|
||||||
|
} else {
|
||||||
|
destroy_dialog = false;
|
||||||
}
|
}
|
||||||
else
|
alert_dialog.destroy();
|
||||||
{
|
});
|
||||||
delete_local_entries();
|
|
||||||
|
alert_dialog.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
{
|
set_property(USER_NAME_PROP, d_entry_name.get_text());
|
||||||
d_config.set_string("user.name", d_entry_name.get_text());
|
set_property(USER_EMAIL_PROP, d_entry_email.get_text());
|
||||||
d_config.set_string("user.email", d_entry_email.get_text());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Error e)
|
catch (Error e) {
|
||||||
{
|
|
||||||
show_config_error(_("Failed to set Git user config."), e.message);
|
show_config_error(_("Failed to set Git user config."), e.message);
|
||||||
destroy();
|
destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(destroy_dialog) {
|
||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void show_config_error(string primary_message, string secondary_message)
|
private void show_config_error(string primary_message, string secondary_message)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue