mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-10-02 14:13:48 +00:00
Send diff settings in uri
This commit is contained in:
parent
851ebd76d8
commit
5c1b7f9f0a
|
@ -60,6 +60,11 @@ namespace Gitg
|
|||
}
|
||||
}
|
||||
|
||||
public bool wrap { get; set; default = true; }
|
||||
public bool staged { get; set; default = false; }
|
||||
public bool unstaged { get; set; default = false; }
|
||||
public int tab_width { get; set; default = 4; }
|
||||
|
||||
static construct
|
||||
{
|
||||
s_diffmap = new Gee.HashMap<string, DiffView>();
|
||||
|
@ -68,6 +73,28 @@ namespace Gitg
|
|||
context.register_uri_scheme("gitg-diff", gitg_diff_request);
|
||||
}
|
||||
|
||||
private string json_settings()
|
||||
{
|
||||
var o = new Json.Object();
|
||||
|
||||
o.set_boolean_member("wrap", wrap);
|
||||
o.set_int_member("tab_width", tab_width);
|
||||
o.set_boolean_member("staged", staged);
|
||||
o.set_boolean_member("unstaged", unstaged);
|
||||
o.set_boolean_member("debug", Environment.get_variable("GITG_GTK_DIFF_VIEW_DEBUG") != null);
|
||||
|
||||
var gen = new Json.Generator();
|
||||
|
||||
var node = new Json.Node(Json.NodeType.OBJECT);
|
||||
node.set_object(o);
|
||||
|
||||
gen.set_root(node);
|
||||
|
||||
size_t l;
|
||||
var ret = gen.to_data(out l);
|
||||
return ret[0:(long)l];
|
||||
}
|
||||
|
||||
private static DiffViewRequest? parse_request(WebKit.URISchemeRequest request)
|
||||
{
|
||||
var uri = new Soup.URI(request.get_uri());
|
||||
|
@ -238,31 +265,16 @@ namespace Gitg
|
|||
// Load the diff base html
|
||||
var uri = "gitg-diff:///resource/org/gnome/gitg/gtk/diff-view/diff-view.html?viewid=" + s_diff_id.to_string();
|
||||
|
||||
// Add custom js as a query parameter
|
||||
if (custom_js != null)
|
||||
{
|
||||
uri += "&js=" + Soup.URI.encode(custom_js.get_uri(), null);
|
||||
}
|
||||
|
||||
// Add custom css as a query parameter
|
||||
if (custom_css != null)
|
||||
{
|
||||
uri += "&css=" + Soup.URI.encode(custom_css.get_uri(), null);
|
||||
}
|
||||
|
||||
if (dbg)
|
||||
{
|
||||
uri += "&debug=true";
|
||||
}
|
||||
uri += "&settings=" + Soup.URI.encode(json_settings(), null);
|
||||
|
||||
d_loaded = false;
|
||||
|
||||
load_uri(uri);
|
||||
}
|
||||
|
||||
public DiffView(File? custom_js)
|
||||
public DiffView()
|
||||
{
|
||||
Object(custom_js: custom_js);
|
||||
Object();
|
||||
}
|
||||
|
||||
private void update()
|
||||
|
@ -285,7 +297,7 @@ namespace Gitg
|
|||
|
||||
if (d_diff != null)
|
||||
{
|
||||
run_javascript.begin("update_diff(%lu);".printf(d_diffid), d_cancellable, (obj, res) => {
|
||||
run_javascript.begin("update_diff(%lu, %s);".printf(d_diffid, json_settings()), d_cancellable, (obj, res) => {
|
||||
try
|
||||
{
|
||||
run_javascript.end(res);
|
||||
|
|
|
@ -19,11 +19,13 @@ var settings = {
|
|||
wrap: true,
|
||||
tab_width: 4,
|
||||
debug: false,
|
||||
staged: false,
|
||||
unstaged: false,
|
||||
};
|
||||
|
||||
if ('settings' in params)
|
||||
{
|
||||
settings = $.merge(settings, JSON.parse(params.setttings));
|
||||
$.extend(settings, JSON.parse(params.settings));
|
||||
}
|
||||
|
||||
var templates = {};
|
||||
|
@ -116,8 +118,10 @@ function write_commit(commit)
|
|||
var html_builder_worker = 0;
|
||||
var html_builder_tick = 0;
|
||||
|
||||
function update_diff(id)
|
||||
function update_diff(id, lsettings)
|
||||
{
|
||||
$.extend(settings, lsettings);
|
||||
|
||||
if (html_builder_worker)
|
||||
{
|
||||
html_builder_worker.terminate();
|
||||
|
|
Loading…
Reference in a new issue