Add simple color picker to OSCViewer.

This commit is contained in:
Julian Frohmüller
2022-12-04 19:08:48 +01:00
parent ae22b10dd2
commit 656b8d9b30
3 changed files with 797 additions and 1 deletions
+302
View File
@@ -92,6 +92,9 @@ int main(int argc, char **argv)
// end of command line processing
// read the configuration file
read_config_file();
// initialize the memory for the progress log file
if (initialize_memory())
{
@@ -118,6 +121,11 @@ int main(int argc, char **argv)
gtk_window_set_default_size(GTK_WINDOW(main_window), MAINWINDOWWIDTH, MAINWINDOWHEIGTH);
gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
settings_window = GTK_WIDGET(gtk_builder_get_object(builder, "settings_window"));
gtk_window_set_keep_above(GTK_WINDOW(settings_window), TRUE);
gtk_window_set_title(GTK_WINDOW(settings_window), _("Settings"));
g_signal_connect(settings_window, "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL);
// set it to exit if closed
g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
@@ -131,11 +139,13 @@ int main(int argc, char **argv)
openmi = GTK_WIDGET(gtk_builder_get_object(builder, "openmi"));
domainmi = GTK_WIDGET(gtk_builder_get_object(builder, "domainmi"));
dmdedomainmi = GTK_WIDGET(gtk_builder_get_object(builder, "dmdedomainmi"));
settingsmi = GTK_WIDGET(gtk_builder_get_object(builder, "settingsmi"));
gtk_menu_item_set_label(GTK_MENU_ITEM(filemi), _("File"));
gtk_menu_item_set_label(GTK_MENU_ITEM(quitmi), _("Quit"));
gtk_menu_item_set_label(GTK_MENU_ITEM(openmi), _("Open"));
gtk_menu_item_set_label(GTK_MENU_ITEM(domainmi), _("Load Domain"));
gtk_menu_item_set_label(GTK_MENU_ITEM(dmdedomainmi), _("Load DMDE Bytes File"));
gtk_menu_item_set_label(GTK_MENU_ITEM(settingsmi), _("Settings"));
progress_log_label = GTK_WIDGET(gtk_builder_get_object(builder, "progress_log_label"));
domain_log_label = GTK_WIDGET(gtk_builder_get_object(builder, "domain_log_label"));
@@ -381,6 +391,61 @@ int main(int argc, char **argv)
gtk_menu_item_set_label(GTK_MENU_ITEM(helpmi), _("Help"));
gtk_menu_item_set_label(GTK_MENU_ITEM(aboutmi), _("About"));
// settings window
nontried_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "nontried_color_button"));
nontrimmed_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "nontrimmed_color_button"));
nondivided_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "nondivided_color_button"));
nonscraped_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "nonscraped_color_button"));
bad_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "bad_color_button"));
good_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "good_color_button"));
current_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "current_color_button"));
bad_head_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "bad_head_color_button"));
selected_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "selected_color_button"));
time_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "time_color_button"));
domain_color_button = GTK_WIDGET(gtk_builder_get_object(builder, "domain_color_button"));
nontried_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "nontried_color_label"));
nontrimmed_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "nontrimmed_color_label"));
nondivided_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "nondivided_color_label"));
nonscraped_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "nonscraped_color_label"));
bad_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "bad_color_label"));
good_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "good_color_label"));
current_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "current_color_label"));
bad_head_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "bad_head_color_label"));
selected_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "selected_color_label"));
time_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "time_color_label"));
domain_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "domain_color_label"));
block_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "block_color_label"));
marker_color_label = GTK_WIDGET(gtk_builder_get_object(builder, "marker_color_label"));
g_signal_connect(good_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(1));
g_signal_connect(bad_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(2));
g_signal_connect(nontried_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(3));
g_signal_connect(nontrimmed_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(4));
g_signal_connect(nondivided_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(5));
g_signal_connect(nonscraped_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(6));
g_signal_connect(domain_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(7));
g_signal_connect(time_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(8));
g_signal_connect(bad_head_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(9));
g_signal_connect(current_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(10));
g_signal_connect(selected_color_button, "color-set", G_CALLBACK(set_color), GINT_TO_POINTER(11));
gtk_label_set_text(GTK_LABEL(nontried_color_label), _("Non-Tried"));
gtk_label_set_text(GTK_LABEL(nontrimmed_color_label), _("Non-Trimmed"));
gtk_label_set_text(GTK_LABEL(nondivided_color_label), _("Non-Divided"));
gtk_label_set_text(GTK_LABEL(nonscraped_color_label), _("Non-Scraped"));
gtk_label_set_text(GTK_LABEL(bad_color_label), _("Bad"));
gtk_label_set_text(GTK_LABEL(good_color_label), _("Finished"));
gtk_label_set_text(GTK_LABEL(current_color_label), _("Current"));
gtk_label_set_text(GTK_LABEL(bad_head_color_label), _("Bad Head"));
gtk_label_set_text(GTK_LABEL(selected_color_label), _("Selected"));
gtk_label_set_text(GTK_LABEL(time_color_label), _("Time"));
gtk_label_set_text(GTK_LABEL(domain_color_label), _("Domain"));
gtk_label_set_text(GTK_LABEL(block_color_label), _("Block Colors"));
gtk_label_set_text(GTK_LABEL(marker_color_label), _("Marker Colors"));
// add keyboard shortcuts
GtkAccelGroup *accel_group = gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(main_window), accel_group);
@@ -404,6 +469,9 @@ int main(int argc, char **argv)
// set it to open a file if the dmde domain item is selected
g_signal_connect(G_OBJECT(dmdedomainmi), "activate", G_CALLBACK(select_dmde_domain), NULL);
// set it to open the settings window if the settings item is selected
g_signal_connect(G_OBJECT(settingsmi), "activate", G_CALLBACK(show_settings_window), NULL);
g_signal_connect(G_OBJECT(leftresbutton1), "activate", G_CALLBACK(change_left_resolution), GINT_TO_POINTER(1));
g_signal_connect(G_OBJECT(leftresbutton2), "activate", G_CALLBACK(change_left_resolution), GINT_TO_POINTER(2));
g_signal_connect(G_OBJECT(leftresbutton3), "activate", G_CALLBACK(change_left_resolution), GINT_TO_POINTER(3));
@@ -3169,4 +3237,238 @@ int print_gui_error_message(char *message, char *title, int type)
gtk_widget_destroy(window);
return 0;
}
void show_settings_window(void)
{
gtk_widget_show_all(settings_window);
GdkRGBA good_color_rgba;
good_color_rgba.red = ((good_color >> 16) & 0xFF) / 255.0;
good_color_rgba.green = ((good_color >> 8) & 0xFF) / 255.0;
good_color_rgba.blue = (good_color & 0xFF) / 255.0;
good_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(good_color_button), &good_color_rgba);
GdkRGBA bad_color_rgba;
bad_color_rgba.red = ((bad_color >> 16) & 0xFF) / 255.0;
bad_color_rgba.green = ((bad_color >> 8) & 0xFF) / 255.0;
bad_color_rgba.blue = (bad_color & 0xFF) / 255.0;
bad_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(bad_color_button), &bad_color_rgba);
GdkRGBA nontried_color_rgba;
nontried_color_rgba.red = ((nontried_color >> 16) & 0xFF) / 255.0;
nontried_color_rgba.green = ((nontried_color >> 8) & 0xFF) / 255.0;
nontried_color_rgba.blue = (nontried_color & 0xFF) / 255.0;
nontried_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(nontried_color_button), &nontried_color_rgba);
GdkRGBA nontrimmed_color_rgba;
nontrimmed_color_rgba.red = ((nontrimmed_color >> 16) & 0xFF) / 255.0;
nontrimmed_color_rgba.green = ((nontrimmed_color >> 8) & 0xFF) / 255.0;
nontrimmed_color_rgba.blue = (nontrimmed_color & 0xFF) / 255.0;
nontrimmed_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(nontrimmed_color_button), &nontrimmed_color_rgba);
GdkRGBA nondivided_color_rgba;
nondivided_color_rgba.red = ((nondivided_color >> 16) & 0xFF) / 255.0;
nondivided_color_rgba.green = ((nondivided_color >> 8) & 0xFF) / 255.0;
nondivided_color_rgba.blue = (nondivided_color & 0xFF) / 255.0;
nondivided_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(nondivided_color_button), &nondivided_color_rgba);
GdkRGBA nonscraped_color_rgba;
nonscraped_color_rgba.red = ((nonscraped_color >> 16) & 0xFF) / 255.0;
nonscraped_color_rgba.green = ((nonscraped_color >> 8) & 0xFF) / 255.0;
nonscraped_color_rgba.blue = (nonscraped_color & 0xFF) / 255.0;
nonscraped_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(nonscraped_color_button), &nonscraped_color_rgba);
GdkRGBA domain_color_rgba;
domain_color_rgba.red = ((domain_color >> 16) & 0xFF) / 255.0;
domain_color_rgba.green = ((domain_color >> 8) & 0xFF) / 255.0;
domain_color_rgba.blue = (domain_color & 0xFF) / 255.0;
domain_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(domain_color_button), &domain_color_rgba);
GdkRGBA time_color_rgba;
time_color_rgba.red = ((time_color >> 16) & 0xFF) / 255.0;
time_color_rgba.green = ((time_color >> 8) & 0xFF) / 255.0;
time_color_rgba.blue = (time_color & 0xFF) / 255.0;
time_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(time_color_button), &time_color_rgba);
GdkRGBA bad_head_color_rgba;
bad_head_color_rgba.red = ((bad_head_color >> 16) & 0xFF) / 255.0;
bad_head_color_rgba.green = ((bad_head_color >> 8) & 0xFF) / 255.0;
bad_head_color_rgba.blue = (bad_head_color & 0xFF) / 255.0;
bad_head_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(bad_head_color_button), &bad_head_color_rgba);
GdkRGBA current_color_rgba;
current_color_rgba.red = ((current_color_inner >> 16) & 0xFF) / 255.0;
current_color_rgba.green = ((current_color_inner >> 8) & 0xFF) / 255.0;
current_color_rgba.blue = (current_color_inner & 0xFF) / 255.0;
current_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(current_color_button), &current_color_rgba);
GdkRGBA selected_color_rgba;
selected_color_rgba.red = ((selected_color >> 16) & 0xFF) / 255.0;
selected_color_rgba.green = ((selected_color >> 8) & 0xFF) / 255.0;
selected_color_rgba.blue = (selected_color & 0xFF) / 255.0;
selected_color_rgba.alpha = 1.0;
gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(selected_color_button), &selected_color_rgba);
}
void set_color(GtkWidget *widget, gpointer data)
{
GdkRGBA color;
gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(widget), &color);
int color_int = ((int)(color.red * 255) << 16) + ((int)(color.green * 255) << 8) + (int)(color.blue * 255);
if (data == (gpointer)1)
{
good_color = color_int;
}
else if (data == (gpointer)2)
{
bad_color = color_int;
}
else if (data == (gpointer)3)
{
nontried_color = color_int;
}
else if (data == (gpointer)4)
{
nontrimmed_color = color_int;
}
else if (data == (gpointer)5)
{
nondivided_color = color_int;
}
else if (data == (gpointer)6)
{
nonscraped_color = color_int;
}
else if (data == (gpointer)7)
{
domain_color = color_int;
}
else if (data == (gpointer)8)
{
time_color = color_int;
}
else if (data == (gpointer)9)
{
bad_head_color = color_int;
}
else if (data == (gpointer)10)
{
current_color_inner = color_int;
current_color_outer = color_int;
}
else if (data == (gpointer)11)
{
selected_color = color_int;
}
write_config_file();
}
void read_config_file(void)
{
char config_file_name[256];
snprintf(config_file_name, sizeof(config_file_name), "%s/.oscviewer.cfg", getenv("HOME"));
FILE *config_file = fopen(config_file_name, "r");
if (config_file == NULL)
{
return;
}
char line[256];
while (fgets(line, sizeof(line), config_file))
{
if (line[0] == '#')
{
continue;
}
char *key = strtok(line, "=");
char *value = strtok(NULL, "=");
if (strcmp(key, "good_color") == 0)
{
good_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "bad_color") == 0)
{
bad_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "nontried_color") == 0)
{
nontried_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "nontrimmed_color") == 0)
{
nontrimmed_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "nondivided_color") == 0)
{
nondivided_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "nonscraped_color") == 0)
{
nonscraped_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "domain_color") == 0)
{
domain_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "time_color") == 0)
{
time_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "bad_head_color") == 0)
{
bad_head_color = strtol(value, NULL, 16);
}
else if (strcmp(key, "current_color_inner") == 0)
{
current_color_inner = strtol(value, NULL, 16);
}
else if (strcmp(key, "current_color_outer") == 0)
{
current_color_outer = strtol(value, NULL, 16);
}
else if (strcmp(key, "selected_color") == 0)
{
selected_color = strtol(value, NULL, 16);
}
}
fclose(config_file);
}
void write_config_file(void)
{
char config_file_name[256];
snprintf(config_file_name, sizeof(config_file_name), "%s/.oscviewer.cfg", getenv("HOME"));
FILE *config_file = fopen(config_file_name, "w");
if (config_file == NULL)
{
return;
}
fprintf(config_file, "# oscviewer config file\n");
fprintf(config_file, "good_color=%06X\n", good_color);
fprintf(config_file, "bad_color=%06X\n", bad_color);
fprintf(config_file, "nontried_color=%06X\n", nontried_color);
fprintf(config_file, "nontrimmed_color=%06X\n", nontrimmed_color);
fprintf(config_file, "nondivided_color=%06X\n", nondivided_color);
fprintf(config_file, "nonscraped_color=%06X\n", nonscraped_color);
fprintf(config_file, "domain_color=%06X\n", domain_color);
fprintf(config_file, "time_color=%06X\n", time_color);
fprintf(config_file, "bad_head_color=%06X\n", bad_head_color);
fprintf(config_file, "current_color_inner=%06X\n", current_color_inner);
fprintf(config_file, "current_color_outer=%06X\n", current_color_outer);
fprintf(config_file, "selected_color=%06X\n", selected_color);
fclose(config_file);
}
+458
View File
@@ -56,6 +56,19 @@
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="settingsmi">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Settings</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="quitmi">
<property name="visible">True</property>
@@ -826,4 +839,449 @@
</object>
</child>
</object>
<object class="GtkWindow" id="settings_window">
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="block_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">Block Colors</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="nontrimmed_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Non-Trimmed</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="nontrimmed_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="nondivided_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Non-Divided</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="nondivided_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="nonscraped_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Non-Scraped</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="nonscraped_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="bad_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Bad</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="bad_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="nontried_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Non-Tried</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="nontried_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="good_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Finished</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="good_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="marker_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">Marker Colors</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="domain_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Domain</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="domain_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="time_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Timing</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="time_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="bad_head_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Bad Head</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="bad_head_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">10</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="current_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Current</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="current_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">11</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="selected_color_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Selected</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="selected_color_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">12</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
+37 -1
View File
@@ -104,7 +104,6 @@ gint main_scrolled_window_height;
gint main_drawing_vbox_width;
gint main_drawing_vbox_height;
GtkWidget *language_window;
GtkWidget *main_window;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
@@ -118,6 +117,7 @@ GtkWidget *left_drawing_area;
GtkWidget *main_scrolled_window;
GtkWidget *main_drawing_vbox;
GtkWidget *frame;
GtkWidget *settings_window;
GtkWidget *progress_log_label;
GtkWidget *domain_log_label;
@@ -140,6 +140,7 @@ GtkWidget *quitmi;
GtkWidget *openmi;
GtkWidget *domainmi;
GtkWidget *dmdedomainmi;
GtkWidget *settingsmi;
GtkWidget *filew;
GtkWidget *domainw;
// options menu
@@ -209,6 +210,33 @@ GtkWidget *showtimingbutton40;
GtkWidget *showtimingbutton50;
GtkWidget *showtimingbutton60;
GtkWidget *nontried_color_button;
GtkWidget *nontrimmed_color_button;
GtkWidget *nondivided_color_button;
GtkWidget *nonscraped_color_button;
GtkWidget *bad_color_button;
GtkWidget *good_color_button;
GtkWidget *current_color_button;
GtkWidget *bad_head_color_button;
GtkWidget *selected_color_button;
GtkWidget *time_color_button;
GtkWidget *domain_color_button;
GtkWidget *nontried_color_label;
GtkWidget *nontrimmed_color_label;
GtkWidget *nondivided_color_label;
GtkWidget *nonscraped_color_label;
GtkWidget *bad_color_label;
GtkWidget *good_color_label;
GtkWidget *current_color_label;
GtkWidget *bad_head_color_label;
GtkWidget *selected_color_label;
GtkWidget *time_color_label;
GtkWidget *domain_color_label;
GtkWidget *block_color_label;
GtkWidget *marker_color_label;
int debug = 0;
int translate = 0;
char exit_message[EXIT_MESSAGE_SIZE];
@@ -395,6 +423,14 @@ long long process_information(long long position, long long size, int line);
int print_gui_error_message(char *message, char *title, int type);
void show_settings_window(void);
void set_color(GtkWidget *widget, gpointer data);
void read_config_file(void);
void write_config_file(void);
struct MemoryStruct
{
char *memory;