aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Borner2021-04-26 19:25:17 +0200
committerMarvin Borner2021-04-26 19:25:17 +0200
commit5fdd1e5c0112db4c0c8646cc8fbc629bdb83355c (patch)
tree34179f19326df235588cb0398bf5271ec0dd58b4
parentd0ca7ba7dc479691ecb0f794293c3bb8613a8521 (diff)
OK
-rw-r--r--src/gui.c20
-rw-r--r--src/inc/gui.h1
-rw-r--r--src/warnings.c2
3 files changed, 23 insertions, 0 deletions
diff --git a/src/gui.c b/src/gui.c
index 21e3bf6..5f9945d 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -73,6 +73,7 @@ static void gui_init_highlighter(void)
GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
gtk_text_buffer_create_tag(buffer, "instr", "foreground", "#ff0000", NULL);
gtk_text_buffer_create_tag(buffer, "regs", "foreground", "#00ff00", NULL);
+ gtk_text_buffer_create_tag(buffer, "warning", "background", "#ff0000", NULL);
}
void gui_unhighlight(void)
@@ -84,6 +85,15 @@ void gui_unhighlight(void)
gtk_text_buffer_remove_all_tags(buffer, &start, &end);
}
+void gui_unhighlight_name(const char *tag_name)
+{
+ GtkTextIter start, end;
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
+
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_remove_tag_by_name(buffer, tag_name, &start, &end);
+}
+
void gui_highlight(u32 column, u32 line, u32 length, const char *tag_name)
{
GtkTextIter start, end;
@@ -272,6 +282,16 @@ static void gui_activate(GtkApplication *app, gpointer data)
gtk_source_view_set_show_line_marks(GTK_SOURCE_VIEW(text_view), TRUE);
gtk_box_pack_end(GTK_BOX(box), text_view, TRUE, TRUE, 0);
+ // Font
+ GtkCssProvider *provider = gtk_css_provider_new();
+ gtk_css_provider_load_from_data(
+ provider, "textview { font-family: Monospace; font-size: 11pt; }", -1, NULL);
+ gtk_style_context_add_provider(gtk_widget_get_style_context(text_view),
+ GTK_STYLE_PROVIDER(provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref(provider);
+
+ // Show all widgets!
gtk_widget_show_all(window);
// Only for testing purposes
diff --git a/src/inc/gui.h b/src/inc/gui.h
index db68fee..128a703 100644
--- a/src/inc/gui.h
+++ b/src/inc/gui.h
@@ -8,6 +8,7 @@ void gui_show_warning(const char *text);
void gui_show_info(const char *text);
void gui_unhighlight(void);
+void gui_unhighlight_name(const char *tag_name);
void gui_highlight(u32 column, u32 line, u32 length, const char *color);
#endif
diff --git a/src/warnings.c b/src/warnings.c
index b5a7851..8effbb2 100644
--- a/src/warnings.c
+++ b/src/warnings.c
@@ -35,6 +35,7 @@ void warnings_add(struct context *ctx, const char *fmt, ...)
// TODO: Print somewhere else (e.g. next to line)
void warnings_print(void)
{
+ gui_unhighlight_name("warning");
for (u32 i = 0; i < WARNING_COUNT; i++) {
if (!warnings[i].exists)
continue;
@@ -42,6 +43,7 @@ void warnings_print(void)
/* gui_show_warning(warnings[i].text); */
printf("Line %d:%d: %s\n", warnings[i].ctx.line, warnings[i].ctx.column,
warnings[i].text);
+ gui_highlight(warnings[i].ctx.column, warnings[i].ctx.line, 1, "warning");
}
}