about summary refs log tree commit diff
path: root/utils/plot_ui/afl-plot-ui.c
diff options
context:
space:
mode:
authorDMaroo <dhruvmaru007@gmail.com>2021-08-08 14:52:25 +0530
committerDMaroo <dhruvmaru007@gmail.com>2021-08-08 14:52:25 +0530
commita92952fa03e7aeed5f47c24e295dfbe49851bc98 (patch)
treecace23c38036ba52ffee836066de7aa5a277b5a5 /utils/plot_ui/afl-plot-ui.c
parentdf74625df0324e17178dbf3c7c03484719ef6dd0 (diff)
downloadafl++-a92952fa03e7aeed5f47c24e295dfbe49851bc98.tar.gz
Added resizable panes instead of static separators in afl-plot-ui
The different plots can now be resized using dragging the panes.
The resizing isn't completely smooth from the visual POV (I'm guessing
this is because of embedding GNUplot), but once the position of the
panels are set, the rest of the visual experience is as smooth as it was
before.
Diffstat (limited to 'utils/plot_ui/afl-plot-ui.c')
-rw-r--r--utils/plot_ui/afl-plot-ui.c43
1 files changed, 26 insertions, 17 deletions
diff --git a/utils/plot_ui/afl-plot-ui.c b/utils/plot_ui/afl-plot-ui.c
index 1a1eb0ed..9e96ad5b 100644
--- a/utils/plot_ui/afl-plot-ui.c
+++ b/utils/plot_ui/afl-plot-ui.c
@@ -32,7 +32,8 @@ int main(int argc, char **argv) {
   GtkWidget *cbuttons_frame;
   GtkWidget *cbuttons_hbox;
 
-  GtkWidget *separator_maj, *separator_min1, *separator_min2, *separator_min3;
+  GtkWidget *separator_top;
+  GtkWidget *pane1, *pane2, *pane3;
 
   GtkWidget *plots_vbox;
   GtkWidget *plot_edges_frame, *plot_exec_speed_frame, *plot_high_freq_frame,
@@ -84,45 +85,53 @@ int main(int argc, char **argv) {
   gtk_container_add(GTK_CONTAINER(cbuttons_frame), cbuttons_hbox);
   gtk_box_pack_start(GTK_BOX(main_vbox), cbuttons_frame, FALSE, TRUE, 1);
 
-  separator_maj = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
-  gtk_box_pack_start(GTK_BOX(main_vbox), separator_maj, FALSE, TRUE, 1);
+  separator_top = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
+  gtk_box_pack_start(GTK_BOX(main_vbox), separator_top, FALSE, TRUE, 1);
 
   plots_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
 
   plot_edges_frame = gtk_frame_new("Edges");
-  gtk_container_set_border_width(GTK_CONTAINER(plot_edges_frame), 5);
+  gtk_frame_set_shadow_type(GTK_FRAME(plot_edges_frame), GTK_SHADOW_IN);
+  gtk_container_set_border_width(GTK_CONTAINER(plot_edges_frame), 10);
   plot_edges = gtk_socket_new();
+  gtk_widget_set_size_request(plot_edges, -1, 100);
   gtk_container_add(GTK_CONTAINER(plot_edges_frame), plot_edges);
 
   plot_exec_speed_frame = gtk_frame_new("Exec Speed");
-  gtk_container_set_border_width(GTK_CONTAINER(plot_exec_speed_frame), 5);
+  gtk_frame_set_shadow_type(GTK_FRAME(plot_exec_speed_frame), GTK_SHADOW_IN);
+  gtk_container_set_border_width(GTK_CONTAINER(plot_exec_speed_frame), 10);
   plot_exec_speed = gtk_socket_new();
+  gtk_widget_set_size_request(plot_exec_speed, -1, 100);
   gtk_container_add(GTK_CONTAINER(plot_exec_speed_frame), plot_exec_speed);
 
   plot_high_freq_frame = gtk_frame_new("High Frequency");
-  gtk_container_set_border_width(GTK_CONTAINER(plot_high_freq_frame), 5);
+  gtk_frame_set_shadow_type(GTK_FRAME(plot_high_freq_frame), GTK_SHADOW_IN);
+  gtk_container_set_border_width(GTK_CONTAINER(plot_high_freq_frame), 10);
   plot_high_freq = gtk_socket_new();
+  gtk_widget_set_size_request(plot_high_freq, -1, 100);
   gtk_container_add(GTK_CONTAINER(plot_high_freq_frame), plot_high_freq);
 
   plot_low_freq_frame = gtk_frame_new("Low Frequency");
-  gtk_container_set_border_width(GTK_CONTAINER(plot_low_freq_frame), 5);
+  gtk_frame_set_shadow_type(GTK_FRAME(plot_low_freq_frame), GTK_SHADOW_IN);
+  gtk_container_set_border_width(GTK_CONTAINER(plot_low_freq_frame), 10);
   plot_low_freq = gtk_socket_new();
+  gtk_widget_set_size_request(plot_low_freq, -1, 100);
   gtk_container_add(GTK_CONTAINER(plot_low_freq_frame), plot_low_freq);
 
-  separator_min1 = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
-  separator_min2 = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
-  separator_min3 = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
+  pane1 = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+  pane2 = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+  pane3 = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
 
-  gtk_box_pack_start(GTK_BOX(plots_vbox), plot_edges_frame, TRUE, TRUE, 1);
-  gtk_box_pack_start(GTK_BOX(plots_vbox), separator_min1, FALSE, TRUE, 1);
+  gtk_paned_pack1(GTK_PANED(pane1), plot_edges_frame, TRUE, FALSE);
+  gtk_paned_pack2(GTK_PANED(pane1), plot_exec_speed_frame, TRUE, FALSE);
 
-  gtk_box_pack_start(GTK_BOX(plots_vbox), plot_exec_speed_frame, TRUE, TRUE, 1);
-  gtk_box_pack_start(GTK_BOX(plots_vbox), separator_min2, FALSE, TRUE, 1);
+  gtk_paned_pack1(GTK_PANED(pane2), pane1, TRUE, FALSE);
+  gtk_paned_pack2(GTK_PANED(pane2), plot_high_freq_frame, TRUE, FALSE);
 
-  gtk_box_pack_start(GTK_BOX(plots_vbox), plot_high_freq_frame, TRUE, TRUE, 1);
-  gtk_box_pack_start(GTK_BOX(plots_vbox), separator_min3, FALSE, TRUE, 1);
+  gtk_paned_pack1(GTK_PANED(pane3), pane2, TRUE, FALSE);
+  gtk_paned_pack2(GTK_PANED(pane3), plot_low_freq_frame, TRUE, FALSE);
 
-  gtk_box_pack_start(GTK_BOX(plots_vbox), plot_low_freq_frame, TRUE, TRUE, 1);
+  gtk_box_pack_start(GTK_BOX(plots_vbox), pane3, TRUE, TRUE, 0);
 
   gtk_box_pack_start(GTK_BOX(main_vbox), plots_vbox, TRUE, TRUE, 1);