Get completely rid of all GTK2 code.

This commit is contained in:
Julian Frohmüller
2022-11-04 09:44:49 +01:00
parent 3bda803d2c
commit 9ecf2c7025
17 changed files with 38 additions and 19862 deletions
-3
View File
@@ -32,9 +32,6 @@ set(OSCVIEWER_LANG_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/oscviewer/Language" C
# Copyright year 2022
set(COPYRIGHT_YEAR 2022 CACHE STRING "Copyright Year")
# Set the GTK version to 3.x
set(GTKVER 3 CACHE STRING "GTK Version")
# If Git is installed, save the current revision number
find_package(Git)
+1 -6
View File
@@ -41,13 +41,8 @@
* Refactoring of codebase (get rid of -fcommon flag)
* Implement DKMS for driver (un-)installation
* Remove requirement for running as root
* Get completely rid of GTK2 code
* Add configuration files and presets for settings
#### 💣 Known Issues
* OSCViewer is extremely buggy in GTK3, it is recommended to build it with GTK2 for the time being
## 💾 Installation
Pre-built binaries aswell as Debian packages for OpenSuperClone can be found on the <a href=https://github.com/ISpillMyDrink/OpenSuperClone/releases>Release</a> page. The current pre-release is OpenSuperClone 2.4 RC2 and may be unstable, use at your own risk.
@@ -60,7 +55,7 @@ Pre-built binaries aswell as Debian packages for OpenSuperClone can be found on
- `cmake`
- `pkgconf`
- `libusb-dev`
- `libgtk-3-dev` (or `libgtk2.0-dev` if building for GTK2)
- `libgtk-3-dev`
```Bash
# Build OpenSuperClone and OSCViewer for Release and install to ./Release
+1 -5
View File
@@ -1,11 +1,7 @@
find_package(PkgConfig REQUIRED)
# Find GTK dependency
if(GTKVER EQUAL 2)
pkg_check_modules(GTK2 REQUIRED gtk+-2.0)
elseif(GTKVER EQUAL 3)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
endif()
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
# Find LibUSB dependency
pkg_check_modules(LIBUSB REQUIRED libusb)
+10 -17
View File
@@ -11,8 +11,8 @@ set(SOURCES
usbrelay.h
common.c
common.h
clone_gui${GTKVER}.c
clone_gui${GTKVER}.h
clone_gui.c
clone_gui.h
clone_gui_language.c
clone_gui_language.h
)
@@ -33,11 +33,11 @@ add_custom_command(
LIST(APPEND RESOURCES opensuperclone_help.h)
add_custom_command(
OUTPUT opensuperclone${GTKVER}_glade.h
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/opensuperclone${GTKVER}.glade opensuperclone${GTKVER}.glade
COMMAND xxd -i opensuperclone${GTKVER}.glade opensuperclone${GTKVER}_glade.h
OUTPUT opensuperclone_glade.h
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/opensuperclone.glade opensuperclone.glade
COMMAND xxd -i opensuperclone.glade opensuperclone_glade.h
)
LIST(APPEND RESOURCES opensuperclone${GTKVER}_glade.h)
LIST(APPEND RESOURCES opensuperclone_glade.h)
add_custom_command(
OUTPUT opensupertool_help.h
@@ -63,17 +63,10 @@ add_executable(opensuperclone ${SOURCES} ${RESOURCES})
target_include_directories(opensuperclone PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
# Add GTK dependency
if(GTKVER EQUAL 2)
target_include_directories(opensuperclone PRIVATE ${GTK2_INCLUDE_DIRS})
target_link_directories(opensuperclone PRIVATE ${GTK2_LIBRARY_DIRS})
target_compile_options(opensuperclone PRIVATE ${GTK2_CFLAGS_OTHER})
target_link_libraries(opensuperclone ${GTK2_LIBRARIES})
elseif(GTKVER EQUAL 3)
target_include_directories(opensuperclone PRIVATE ${GTK3_INCLUDE_DIRS})
target_link_directories(opensuperclone PRIVATE ${GTK3_LIBRARY_DIRS})
target_compile_options(opensuperclone PRIVATE ${GTK3_CFLAGS_OTHER})
target_link_libraries(opensuperclone ${GTK3_LIBRARIES})
endif()
target_include_directories(opensuperclone PRIVATE ${GTK3_INCLUDE_DIRS})
target_link_directories(opensuperclone PRIVATE ${GTK3_LIBRARY_DIRS})
target_compile_options(opensuperclone PRIVATE ${GTK3_CFLAGS_OTHER})
target_link_libraries(opensuperclone ${GTK3_LIBRARIES})
# Add LibUSB dependency
target_link_libraries(opensuperclone ${LIBUSB_LIBRARIES})
@@ -5,9 +5,9 @@
#include "config.h"
#include "clone_gui_common.h"
#include "clone_gui3.h"
#include "clone_gui.h"
#include "common.h"
#include "opensuperclone3_glade.h"
#include "opensuperclone_glade.h"
int start_gtk_ccc(int argc, char **argv, char *title, char *version)
{
@@ -67,7 +67,7 @@ int start_gtk_ccc(int argc, char **argv, char *title, char *version)
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3352,7 +3352,7 @@ void display_analyze_results_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3390,7 +3390,7 @@ void display_smart_data_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3415,7 +3415,7 @@ void display_identify_data_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3446,7 +3446,7 @@ void open_clone_settings_dialog_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3579,7 +3579,7 @@ void open_advanced_settings_dialog_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3752,7 +3752,7 @@ void open_timer_settings_dialog_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3922,7 +3922,7 @@ int open_ports_dialog_ccc(char *current_ports)
int confirm = 0;
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -3974,7 +3974,7 @@ int set_lun_dialog_ccc(int max_lun)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -4023,7 +4023,7 @@ void open_primary_relay_dialog_ccc(void)
{
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
@@ -4335,7 +4335,7 @@ int open_confirmation_dialog_ccc(char *message)
int confirm = 0;
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone3_glade, opensuperclone3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)opensuperclone_glade, opensuperclone_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
File diff suppressed because it is too large Load Diff
-689
View File
@@ -1,689 +0,0 @@
// Copyright (C) Scott Dwyer and OpenSuperClone contributors.
// You may use/distribute/modify this freely, under the terms of
// the GNU General Public License version 2 or later version.
// This software is distributed WITHOUT ANY WARRANTY.
#include <gtk/gtk.h>
#ifdef DEBUG
#include <curl/curl.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "opensuperclone_EULA.h"
#define TRANSLATETIMERALL 1000000000 // nanosecond delay for every translate call
#define TRANSLATETIMERFAST 10000000000 // nanosecond delay for each normal translate call
#define TRANSLATETIMERSLOW 2000000000 // nanosecond delay for each slow translate call
#define GTKCOLOR_BLACK "#000000" // (0,0,0)
#define GTKCOLOR_WHITE "#FFFFFF" // (255,255,255)
#define GTKCOLOR_RED "#FF0000" // (255,0,0)
#define GTKCOLOR_LIME "#00FF00" // (0,255,0)
#define GTKCOLOR_BLUE "#0000FF" // (0,0,255)
#define GTKCOLOR_YELLOW "#FFFF00" // (255,255,0)
#define GTKCOLOR_CYAN "#00FFFF" // (0,255,255)
#define GTKCOLOR_MAGENTA "#FF00FF" // (255,0,255)
#define GTKCOLOR_SILVER "#C0C0C0" // (192,192,192)
#define GTKCOLOR_LIGHTGRAY "#D3D3D3" // (211, 211, 211)
#define GTKCOLOR_DARKGREY "#A9A9A9" // (169, 169, 169)
#define GTKCOLOR_GRAY "#808080" // (128,128,128)
#define GTKCOLOR_MAROON "#800000" // (128,0,0)
#define GTKCOLOR_OLIVE "#808000" // (128,128,0)
#define GTKCOLOR_GREEN "#008000" // (0,128,0)
#define GTKCOLOR_PURPLE "#800080" // (128,0,128)
#define GTKCOLOR_TEAL "#008080" // (0,128,128)
#define GTKCOLOR_NAVY "#000080" // (0,0,128)
#define MAX_BUTTON_LABEL_SIZE 256
#define BUTTONID_PHASE1 1
#define BUTTONID_PHASE2 2
#define BUTTONID_PHASE3 3
#define BUTTONID_PHASE4 4
#define BUTTONID_DIVIDE 5
#define BUTTONID_DIVIDE2 6
#define BUTTONID_TRIM 7
#define BUTTONID_SCRAPE 8
#define BUTTONID_MARKBAD 9
#define BUTTONID_READBAD 10
#define BUTTONID_REVERSE 11
#define BUTTONID_SKIPFAST 12
#define BUTTONID_NOLOGBACK 13
#define BUTTONID_FORCE 14
#define BUTTONID_OFFSET 15
#define BUTTONID_FORCEDANGEROUS 16
#define BUTTONID_PIOMODE 17
#define BUTTONID_PHASETIMERS 18
#define BUTTONID_ENABLEPROCESSCHUNK 19
#define BUTTONID_ENABLEPHASELOGS 20
#define BUTTONID_ENABLESCSIWRITE 21
#define BUTTONID_ENABLEOUTPUTSECTOR 22
#define BUTTONID_USEPHYSICALSECTORSIZE 23
#define BUTTONID_COLORSTATUSBAR 24
#define BUTTONID_ENABLEREADTWICE 25
#define BUTTONID_POSITION 26
#define BUTTONID_IOSCSIONLY 27
#define BUTTONID_ENABLEREBUILDASSIST 28
#define BUTTONID_REBUILDASSIST 29
#define BUTTONID_ENABLERETRYCONNECTING 30
#define BUTTONID_DONTIDENTIFY 31
GtkWidget *language_window_ccc;
GtkWidget *main_label;
GtkWidget *main_frame;
GtkWidget *bottom_status_bar_ccc;
GtkWidget *main_window_ccc;
GtkWidget *main_vbox_ccc;
GtkWidget *main_hbox_ccc;
GtkWidget *button_bbk_ccc;
GtkWidget *button_unc_ccc;
GtkWidget *button_mc_ccc;
GtkWidget *button_idnf_ccc;
GtkWidget *button_mcr_ccc;
GtkWidget *button_abrt_ccc;
GtkWidget *button_tk0nf_ccc;
GtkWidget *button_amnf_ccc;
GtkWidget *button_bsy_ccc;
GtkWidget *button_drdy_ccc;
GtkWidget *button_df_ccc;
GtkWidget *button_dsc_ccc;
GtkWidget *button_drq_ccc;
GtkWidget *button_corr_ccc;
GtkWidget *button_idx_ccc;
GtkWidget *button_err_ccc;
GtkWidget *button_status_separator_ccc;
GdkColor button_color_ccc;
// file menu
GtkWidget *topmenubar_ccc;
GtkWidget *filemenu_ccc;
GtkWidget *filemi_ccc;
GtkWidget *quitmi_ccc;
GtkWidget *openmi_ccc;
GtkWidget *newmi_ccc;
GtkWidget *sourcemi_ccc;
GtkWidget *destinationmi_ccc;
GtkWidget *drivesmi_ccc;
GtkWidget *blockmi_ccc;
GtkWidget *drivemi_ccc;
GtkWidget *imagemi_ccc;
GtkWidget *devnullmi_ccc;
GtkWidget *filew_ccc;
GtkWidget *modemi_ccc;
GtkWidget *copyimagemi_ccc;
GtkWidget *genericmi_ccc;
GtkWidget *pass_automi_ccc;
GtkWidget *pass_scsimi_ccc;
GtkWidget *pass_atrami_ccc;
GtkWidget *directmi_ccc;
GtkWidget *ahcimi_ccc;
GtkWidget *usbmi_ccc;
GtkWidget *usbatami_ccc;
GtkWidget *settingsmi_ccc;
GtkWidget *advancedmi_ccc;
GtkWidget *clonemi_ccc;
GtkWidget *savemi_ccc;
GtkWidget *saveasmi_ccc;
GtkWidget *resetstatusmi_ccc;
GtkWidget *toolsmi_ccc;
GtkWidget *resetlogmi_ccc;
GtkWidget *repairlogmi_ccc;
GtkWidget *fillzeromi_ccc;
GtkWidget *fillmarkmi_ccc;
GtkWidget *fillerasemi_ccc;
GtkWidget *domainmi_ccc;
GtkWidget *importddmi_ccc;
GtkWidget *exportddmi_ccc;
GtkWidget *cleardomainmi_ccc;
GtkWidget *helpmi_ccc;
GtkWidget *aboutmi_ccc;
GtkWidget *timermi_ccc;
GtkWidget *installdrivermi_ccc;
GtkWidget *uninstalldrivermi_ccc;
GtkWidget *fixdrivermemorymi_ccc;
GtkWidget *driveronlymi_ccc;
GtkWidget *adddomainmi_ccc;
GtkWidget *newdomainmi_ccc;
GtkWidget *savedomainmi_ccc;
GtkWidget *savedomainasmi_ccc;
GtkWidget *activatewithfilemi_ccc;
GtkWidget *removeactivationmi_ccc;
GtkWidget *disableportsmi_ccc;
GtkWidget *restoreportsmi_ccc;
GtkWidget *displayidentifymi_ccc;
GtkWidget *displayanalyzemi_ccc;
GtkWidget *displaysmartmi_ccc;
GtkWidget *primaryrelaymi_ccc;
GtkWidget *chooseprimaryrelaymi_ccc;
GtkWidget *disableusbmassmi_ccc;
GtkWidget *restoreusbmassmi_ccc;
GtkWidget *choose_source_dialog_window_ccc;
GtkWidget *choose_source_scrolled_window_ccc;
GtkWidget *choose_source_vbox_ccc;
GtkWidget *choose_destination_dialog_window_ccc;
GtkWidget *choose_destination_scrolled_window_ccc;
GtkWidget *choose_destination_vbox_ccc;
GtkWidget *choose_usb_dialog_window_ccc;
GtkWidget *choose_usb_scrolled_window_ccc;
GtkWidget *choose_usb_vbox_ccc;
GtkWidget *connect_button_ccc;
GtkWidget *disconnect_button_ccc;
GtkWidget *start_button_ccc;
GtkWidget *stop_button_ccc;
GtkWidget *analyze_button_ccc;
GtkWidget *analyze_long_button_ccc;
GtkWidget *smart_button_ccc;
GtkWidget *clone_mode_button_ccc;
GtkWidget *agressive_driver_checkbutton_ccc;
GtkWidget *driver_mode1_button_ccc;
GtkWidget *driver_mode2_button_ccc;
GtkWidget *driver_mode3_button_ccc;
GtkWidget *driver_mode4_button_ccc;
GtkWidget *driver_mode5_button_ccc;
GtkWidget *soft_reset_button_ccc;
GtkWidget *hard_reset_button_ccc;
GtkWidget *phase_control_label_ccc;
GtkWidget *phase1_check_button_ccc;
GtkWidget *phase2_check_button_ccc;
GtkWidget *phase3_check_button_ccc;
GtkWidget *phase4_check_button_ccc;
GtkWidget *divide_check_button_ccc;
GtkWidget *divide2_check_button_ccc;
GtkWidget *trim_check_button_ccc;
GtkWidget *scrape_check_button_ccc;
GtkWidget *markbad_check_button_ccc;
GtkWidget *readbad_check_button_ccc;
GtkWidget *rebuild_assist_check_button_ccc;
GtkWidget *reverse_check_button_ccc;
GtkWidget *skipfast_check_button_ccc;
GtkWidget *retries_button_label_ccc;
GtkWidget *retries_spin_button_ccc;
GtkWidget *clustersize_button_label_ccc;
GtkWidget *clustersize_spin_button_ccc;
GtkWidget *inputoffset_button_label_ccc;
GtkWidget *inputoffset_spin_button_ccc;
GtkWidget *size_button_label_ccc;
GtkWidget *size_spin_button_ccc;
GtkWidget *blocksize_button_label_ccc;
GtkWidget *blocksize_spin_button_ccc;
GtkWidget *skipsize_button_label_ccc;
GtkWidget *skipsize_spin_button_ccc;
GtkWidget *maxskipsize_button_label_ccc;
GtkWidget *maxskipsize_spin_button_ccc;
GtkWidget *skipthreshold_button_label_ccc;
GtkWidget *skipthreshold_spin_button_ccc;
GtkWidget *rateskip_button_label_ccc;
GtkWidget *rateskip_spin_button_ccc;
GtkWidget *exitonslow_button_label_ccc;
GtkWidget *exitonslow_spin_button_ccc;
GtkWidget *exitonslowtime_button_label_ccc;
GtkWidget *exitonslowtime_spin_button_ccc;
GtkWidget *no_log_backup_checkbutton_ccc;
GtkWidget *force_mounted_checkbutton_ccc;
GtkWidget *force_dangerous_checkbutton_ccc;
GtkWidget *enable_output_offset_checkbutton_ccc;
GtkWidget *output_offset_spinbutton_ccc;
GtkWidget *output_offset_button_label_ccc;
GtkWidget *enable_current_position_checkbutton_ccc;
GtkWidget *current_position_spinbutton_ccc;
GtkWidget *current_position_button_label_ccc;
GtkWidget *action_on_error_label_ccc;
GtkWidget *stop_on_error_radio_button_ccc;
GtkWidget *call_command_radio_button_ccc;
GtkWidget *command_to_call_text_ccc;
GtkWidget *test_command_button_ccc;
GtkWidget *primary_relay_on_error_radio_button_ccc;
GtkWidget *write_buffer_disable_radio_button_ccc;
GtkWidget *write_buffer_enable_radio_button_ccc;
GtkWidget *write_buffer_label_ccc;
GtkWidget *timer_settings_label_ccc;
GtkWidget *timer_settings_info_label_ccc;
GtkWidget *initial_busy_wait_time_button_label_ccc;
GtkWidget *initial_busy_wait_time_spinbutton_ccc;
GtkWidget *busy_wait_time_button_label_ccc;
GtkWidget *busy_wait_time_spinbutton_ccc;
GtkWidget *soft_reset_time_button_label_ccc;
GtkWidget *soft_reset_time_spinbutton_ccc;
GtkWidget *hard_reset_time_button_label_ccc;
GtkWidget *hard_reset_time_spinbutton_ccc;
GtkWidget *power_cycle_time_button_label_ccc;
GtkWidget *power_cycle_time_spinbutton_ccc;
GtkWidget *general_timout_button_label_ccc;
GtkWidget *general_timeout_spinbutton_ccc;
GtkWidget *action_power_cycle_label_ccc;
GtkWidget *stop_on_power_cycle_radio_button_ccc;
GtkWidget *call_power_command_radio_button_ccc;
GtkWidget *power_command_to_call_text_ccc;
GtkWidget *primary_relay_power_cycle_radio_button_ccc;
GtkWidget *test_power_command_button_ccc;
GtkWidget *pio_mode_checkbutton_ccc;
GtkWidget *phase_timers_label_ccc;
GtkWidget *phase_timers_checkbutton_ccc;
GtkWidget *p12_soft_reset_time_button_label_ccc;
GtkWidget *p12_soft_reset_time_spinbutton_ccc;
GtkWidget *p3_soft_reset_time_button_label_ccc;
GtkWidget *p3_soft_reset_time_spinbutton_ccc;
GtkWidget *p4_soft_reset_time_button_label_ccc;
GtkWidget *p4_soft_reset_time_spinbutton_ccc;
GtkWidget *td_soft_reset_time_button_label_ccc;
GtkWidget *td_soft_reset_time_spinbutton_ccc;
GtkWidget *d2_soft_reset_time_button_label_ccc;
GtkWidget *d2_soft_reset_time_spinbutton_ccc;
GtkWidget *sc_soft_reset_time_button_label_ccc;
GtkWidget *sc_soft_reset_time_spinbutton_ccc;
GtkWidget *rt_soft_reset_time_button_label_ccc;
GtkWidget *rt_soft_reset_time_spinbutton_ccc;
GtkWidget *always_wait_for_reset_timers_checkbutton_ccc;
GtkWidget *usb_resets_label_ccc;
GtkWidget *enable_usb_bulk_reset_checkbutton_ccc;
GtkWidget *enable_usb_soft_reset_checkbutton_ccc;
GtkWidget *enable_usb_hard_reset_checkbutton_ccc;
GtkWidget *enable_usb_port_reset_checkbutton_ccc;
GtkWidget *sectorsize_button_label_ccc;
GtkWidget *sectorsize_spinbutton_ccc;
GtkWidget *alignment_button_label_ccc;
GtkWidget *alignment_spinbutton_ccc;
GtkWidget *maxreadrate_button_label_ccc;
GtkWidget *maxreadrate_spinbutton_ccc;
GtkWidget *enable_rebuild_assist_checkbutton_ccc;
GtkWidget *enable_process_chunk_checkbutton_ccc;
GtkWidget *enable_read_twice_checkbutton_ccc;
GtkWidget *enable_retry_connecting_checkbutton_ccc;
GtkWidget *enable_phase_log_checkbutton_ccc;
GtkWidget *confirmation_box_label_ccc;
GtkWidget *disable_ports_label_ccc;
GtkWidget *disable_ports_info_label_ccc;
GtkWidget *current_ports_label_ccc;
GtkWidget *current_ports_info_label_ccc;
GtkWidget *set_disabled_ports_label_ccc;
GtkWidget *set_disabled_ports_text_ccc;
GtkWidget *updated_ports_label_ccc;
GtkWidget *updated_ports_info_label_ccc;
GtkWidget *update_ports_button_ccc;
GtkWidget *select_lun_label_ccc;
GtkWidget *select_lun_info_label_ccc;
GtkWidget *lun_values_label_ccc;
GtkWidget *lun_values_info_label_ccc;
GtkWidget *set_current_lun_label_ccc;
GtkWidget *current_lun_spinbutton_ccc;
GtkWidget *enable_scsi_write_checkbutton_ccc;
GtkWidget *enable_output_sector_size_checkbutton_ccc;
GtkWidget *output_sector_size_button_label_ccc;
GtkWidget *driver_io_scsi_only_checkbutton_ccc;
GtkWidget *use_physical_sector_size_for_virtual_checkbutton_ccc;
GtkWidget *output_sector_size_spinbutton_ccc;
GtkWidget *driver_error_options_label_ccc;
GtkWidget *driver_return_error_radio_button_ccc;
GtkWidget *driver_return_zeros_radio_button_ccc;
GtkWidget *driver_return_marked_radio_button_ccc;
GtkWidget *virtual_disk_device_name_label_ccc;
GtkWidget *virtual_disk_device_name_text_ccc;
GtkWidget *driver_minimum_cluster_size_button_label_ccc;
GtkWidget *driver_minimum_cluster_size_spinbutton_ccc;
GtkWidget *enable_extended_analyze_checkbutton_ccc;
GtkWidget *use_color_statusbar_checkbutton_ccc;
GtkWidget *primary_relay_settings_label_ccc;
GtkWidget *primary_relay_settings_info_label_ccc;
GtkWidget *label_current_primary_relay_board_ccc;
GtkWidget *data_current_relay_board_a_ccc;
GtkWidget *primary_relay_board_settings_label_ccc;
GtkWidget *primary_relay_activation_label_ccc;
GtkWidget *activate_primary_relay1_checkbutton_ccc;
GtkWidget *activate_primary_relay2_checkbutton_ccc;
GtkWidget *activate_primary_relay3_checkbutton_ccc;
GtkWidget *activate_primary_relay4_checkbutton_ccc;
GtkWidget *activate_primary_relay5_checkbutton_ccc;
GtkWidget *activate_primary_relay6_checkbutton_ccc;
GtkWidget *activate_primary_relay7_checkbutton_ccc;
GtkWidget *activate_primary_relay8_checkbutton_ccc;
GtkWidget *primary_relay_deactivation_label_ccc;
GtkWidget *deactivate_primary_relay1_checkbutton_ccc;
GtkWidget *deactivate_primary_relay2_checkbutton_ccc;
GtkWidget *deactivate_primary_relay3_checkbutton_ccc;
GtkWidget *deactivate_primary_relay4_checkbutton_ccc;
GtkWidget *deactivate_primary_relay5_checkbutton_ccc;
GtkWidget *deactivate_primary_relay6_checkbutton_ccc;
GtkWidget *deactivate_primary_relay7_checkbutton_ccc;
GtkWidget *deactivate_primary_relay8_checkbutton_ccc;
GtkWidget *primary_relay_activate_time_label_ccc;
GtkWidget *primary_relay_energize_time_spinbutton_ccc;
GtkWidget *primary_relay_delay_time_label_ccc;
GtkWidget *primary_relay_delay_time_spinbutton_ccc;
GtkWidget *test_primary_relay_button_ccc;
GtkWidget *activate_primary_relay_button_ccc;
GtkWidget *deactivate_primary_relay_button_ccc;
GtkWidget *activate_primary_relay_button_main_ccc;
GtkWidget *deactivate_primary_relay_button_main_ccc;
GtkWidget *disable_identify_checkbutton_ccc;
GtkWidget *label_project_ccc;
GtkWidget *data_project_ccc;
GtkWidget *label_domain_ccc;
GtkWidget *data_domain_ccc;
GtkWidget *label_source_ccc;
GtkWidget *data_source_ccc;
GtkWidget *label_destination_ccc;
GtkWidget *data_destination_ccc;
GtkWidget *label_totallba_ccc;
GtkWidget *data_totallba_ccc;
GtkWidget *label_lbatoread_ccc;
GtkWidget *data_lbatoread_ccc;
GtkWidget *label_domainsize_ccc;
GtkWidget *data_domainsize_ccc;
GtkWidget *label_runtime_ccc;
GtkWidget *data_runtime_ccc;
GtkWidget *label_remainingtime_ccc;
GtkWidget *data_remainingtime_ccc;
GtkWidget *label_currentposition_ccc;
GtkWidget *data_currentposition_ccc;
GtkWidget *label_currentstatus_ccc;
GtkWidget *data_currentstatus_ccc;
GtkWidget *label_currentrate_ccc;
GtkWidget *data_currentrate_ccc;
GtkWidget *label_recentrate_ccc;
GtkWidget *data_recentrate_ccc;
GtkWidget *label_totalrate_ccc;
GtkWidget *data_totalrate_ccc;
GtkWidget *label_skipsize_ccc;
GtkWidget *data_skipsize_ccc;
GtkWidget *label_slowskips_ccc;
GtkWidget *data_slowskips_ccc;
GtkWidget *label_skips_ccc;
GtkWidget *data_skips_ccc;
GtkWidget *label_skipruns_ccc;
GtkWidget *data_skipruns_ccc;
GtkWidget *label_skipresets_ccc;
GtkWidget *data_skipresets_ccc;
GtkWidget *label_runsize_ccc;
GtkWidget *data_runsize_ccc;
GtkWidget *label_finished_ccc;
GtkWidget *data_finished_ccc;
GtkWidget *label_nontried_ccc;
GtkWidget *data_nontried_ccc;
GtkWidget *label_nontrimmed_ccc;
GtkWidget *data_nontrimmed_ccc;
GtkWidget *label_nondivided_ccc;
GtkWidget *data_nondivided_ccc;
GtkWidget *label_nonscraped_ccc;
GtkWidget *data_nonscraped_ccc;
GtkWidget *label_bad_ccc;
GtkWidget *data_bad_ccc;
GtkWidget *label_datapreview_ccc;
GtkWidget *data_datapreview_ccc;
GtkWidget *label_longestreadtime_ccc;
GtkWidget *data_longestreadtime_ccc;
GtkWidget *label_filled_ccc;
GtkWidget *data_filled_ccc;
GtkWidget *label_retried_ccc;
GtkWidget *data_retried_ccc;
GtkWidget *label_retrypasses_ccc;
GtkWidget *data_retrypasses_ccc;
GtkWidget *label_drivermode_ccc;
GtkWidget *data_drivermode_ccc;
// GtkWidget *label__ccc;
// GtkWidget *data__ccc;
GtkAdjustment *gtk_adjustment_ccc;
gint display_status_timer_ccc = 0;
int display_status_timer_running_ccc = 0;
char program_title[256];
int source_chosen_ccc = 0;
int destination_chosen_ccc = 0;
int destination_size_valid_ccc = 0;
int project_chosen_ccc = 0;
int connected_ccc = 0;
int running_ccc = 0;
int new_project_ccc = 0;
int color_switch_flag_ccc = 0;
bool destination_is_generic_ccc = false;
int disabled_ports_changed_ccc = 0;
int usbr1_chosen_ccc = 0;
void select_file_ccc(void);
void select_ddrescue_file_ccc(void);
void export_ddrescue_file_ccc(void);
void new_file_ccc(void);
void save_file_ccc(void);
void save_file_as_ccc(void);
void save_domain_ccc(void);
void save_domain_as_ccc(void);
static void new_domain_file_ccc(char *log_file);
static void load_log_file_ccc(char *log_file);
static void add_domain_file_ccc(char *log_file);
static void load_domain_file_ccc(char *log_file);
static void new_log_file_ccc(char *log_file);
static void load_ddrescue_log_file_ccc(char *log_file);
void export_language_file_ccc(void);
static void file_export_sel_ccc(char *export_file);
void import_language_file_ccc(void);
static void file_import_sel_ccc(char *import_file);
int set_language_ccc(void);
void choose_source_ccc(void);
void get_source_from_button_ccc(GtkWidget *widget, gpointer data);
void choose_destination_ccc(void);
void get_destination_from_button_ccc(GtkWidget *widget, gpointer data);
void choose_image_ccc(void);
void choose_null_ccc(void);
void set_connected_ccc(void);
void set_disconnected_ccc(void);
void clear_destination_ccc(void);
void set_stop_signal_ccc(void);
void start_cloning_ccc(void);
void quit_and_close_ccc(void);
void open_clone_settings_dialog_ccc(void);
void open_advanced_settings_dialog_ccc(void);
void open_timer_settings_dialog_ccc(void);
void activate_status_buttons_ccc(void);
void deactivate_status_buttons_ccc(void);
void set_mode_ccc(void);
void update_status_buttons_ccc(void);
void set_state_from_button_ccc(GtkWidget *widget, gpointer data);
void do_reset_status_ccc(void);
void do_reset_log_status_ccc(void);
void do_repair_log_ccc(void);
void about_ccc(void);
void start_display_status_update_timer_ccc(void);
gint display_status_update_action_ccc(gpointer data);
void set_driver_mode_button_status_ccc(bool active);
void check_driver_null_condition_ccc(void);
void update_ports_ccc(void);
void start_analyzing_ccc(void);
void display_analyze_results_ccc(void);
void get_smart_data_ccc(void);
void display_smart_data_ccc(void);
void display_identify_data_ccc(void);
void choose_primary_usb_ccc(void);
void get_usb_from_button_ccc(GtkWidget *w, gpointer data);
void clear_usbr1_ccc(void);
void clear_usbd1_ccc(void);
void map_heads_ccc(void);
int set_data_dump_filename_ccc(void);
void get_data_dump_filename_ccc(void);
void analyze_quick_ccc(void);
void analyze_long_ccc(void);
struct MemoryStruct
{
char *memory;
size_t size;
};
char *languages_ccc[] = {
// "Afrikaans","af","Afrikaans",
// "Albanian","sq","shqiptar",
// "Amharic","am","አማርኛ",
"Arabic", "ar", "عربى",
// "Armenian","hy","հայերեն",
// "Azeerbaijani","az","Azeerbaijani",
// "Basque","eu","Euskal",
// "Belarusian","be","беларускі",
// "Bengali","bn","বাঙালি",
// "Bosnian","bs","bosanski",
// "Bulgarian","bg","български",
// "Catalan","ca","català",
// "Cebuano","ceb","Cebuano",
// "Chichewa","ny","Chichewa",
"Chinese (Simplified)", "zh-CN", "简体中文)",
// "Chinese (Traditional)","zh-TW","中國傳統的)",
// "Corsican","co","Corsu",
// "Croatian","hr","hrvatski",
// "Czech","cs","čeština",
// "Danish","da","dansk",
// "Dutch","nl","Nederlands",
// "Esperanto","eo","Esperanto",
// "Estonian","et","eesti",
// "Filipino","tl","Pilipino",
// "Finnish","fi","Suomalainen",
"French", "fr", "français",
// "Frisian","fy","Frysk",
// "Galician","gl","galego",
// "Georgian","ka","ქართული",
"German", "de", "Deutsche",
// "Greek","el","Ελληνικά",
// "Gujarati","gu","ગુજરાતી",
// "Haitian Creole","ht","kreyòl ayisyen",
// "Hausa","ha","Hausa",
// "Hawaiian","haw","ʻŌlelo Hawaiʻi",
// "Hebrew","iw","עִברִית",
"Hindi", "hi", "हिंदी",
// "Hmong","hmn","Hmong",
// "Hungarian","hu","Magyar",
// "Icelandic","is","icelandic",
// "Igbo","ig","Igbo",
"Indonesian", "id", "bahasa Indonesia",
// "Irish","ga","Gaeilge",
"Italian", "it", "italiano",
"Japanese", "ja", "日本語",
// "Javanese","jw","Jawa",
// "Kannada","kn","ಕನ್ನಡ",
// "Kazakh","kk","Қазақ",
// "Khmer","km","ភាសាខ្មែរ",
// "Korean","ko","한국어",
// "Kurdish","ku","Kurdî",
// "Kyrgyz","ky","Кыргызча",
// "Lao","lo","ລາວ",
// "Latin","la","Latine",
// "Latvian","lv","Latvijas",
// "Lithuanian","lt","Lietuvos",
// "Luxembourgish","lb","lëtzebuergesch",
// "Macedonian","mk","Македонски",
// "Malagasy","mg","Malagasy",
// "Malay","ms","Malay",
// "Malayalam","ml","മലയാളം",
// "Maltese","mt","Malti",
// "Maori","mi","Maori",
// "Marathi","mr","मराठी",
// "Mongolian","mn","Монгол",
// "Burmese","my","မြန်မာ",
// "Nepali","ne","नेपाली",
// "Norwegian","no","norsk",
// "Pashto","ps","پښتو",
// "Persian","fa","فارسی",
// "Polish","pl","Polskie",
"Portuguese", "pt", "Português",
// "Punjabi","pa","ਪੰਜਾਬੀ",
// "Romanian","ro","Română",
"Russian", "ru", "русский",
// "Samoan","sm","Samoa",
// "Scots Gaelic","gd","Gàidhlig",
// "Serbian","sr","Српски",
// "Sesotho","st","Sesotho",
// "Shona","sn","Shona",
// "Sindhi","sd","سنڌي",
// "Sinhala","si","සිංහල",
// "Slovak","sk","slovenský",
// "Slovenian","sl","slovenski",
// "Somali","so","Soomaali",
"Spanish", "es", "Español",
// "Sundanese","su","Sunda",
// "Swahili","sw","Kiswahili",
// "Swedish","sv","svenska",
// "Tajik","tg","Тоҷикистон",
// "Tamil","ta","தமிழ்",
// "Telugu","te","తెలుగు",
// "Thai","th","ไทย",
// "Turkish","tr","Türk",
// "Ukrainian","uk","український",
// "Urdu","ur","اردو",
// "Uzbek","uz","O'zbekiston",
// "Vietnamese","vi","Tiếng Việt",
// "Welsh","cy","Cymraeg",
// "Xhosa","xh","isiXhosa",
// "Yiddish","yi","ייִדיש",
// "Yoruba","yo","yorùbá",
// "Zulu","zu","Zulu"
};
#define n_languages_ccc (sizeof(languages_ccc) / sizeof(const char *))
File diff suppressed because it is too large Load Diff
+10 -17
View File
@@ -1,15 +1,15 @@
set(SOURCES
oscviewer${GTKVER}.c
oscviewer${GTKVER}.h
oscviewer.c
oscviewer.h
)
# Generate header files from resources
add_custom_command(
OUTPUT oscviewer${GTKVER}_glade.h
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/oscviewer${GTKVER}.glade oscviewer${GTKVER}.glade
COMMAND xxd -i oscviewer${GTKVER}.glade oscviewer${GTKVER}_glade.h
OUTPUT oscviewer_glade.h
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/oscviewer.glade oscviewer.glade
COMMAND xxd -i oscviewer.glade oscviewer_glade.h
)
LIST(APPEND RESOURCES oscviewer${GTKVER}_glade.h)
LIST(APPEND RESOURCES oscviewer_glade.h)
# Generate config file for OSCViewer
configure_file(config.h.in config.h)
@@ -21,17 +21,10 @@ add_executable(oscviewer ${SOURCES} ${RESOURCES})
target_include_directories(oscviewer PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
# Add GTK dependency
if(GTKVER EQUAL 2)
target_include_directories(oscviewer PRIVATE ${GTK2_INCLUDE_DIRS})
target_link_directories(oscviewer PRIVATE ${GTK2_LIBRARY_DIRS})
target_compile_options(oscviewer PRIVATE ${GTK2_CFLAGS_OTHER})
target_link_libraries(oscviewer ${GTK2_LIBRARIES})
elseif(GTKVER EQUAL 3)
target_include_directories(oscviewer PRIVATE ${GTK3_INCLUDE_DIRS})
target_link_directories(oscviewer PRIVATE ${GTK3_LIBRARY_DIRS})
target_compile_options(oscviewer PRIVATE ${GTK3_CFLAGS_OTHER})
target_link_libraries(oscviewer ${GTK3_LIBRARIES})
endif()
target_include_directories(oscviewer PRIVATE ${GTK3_INCLUDE_DIRS})
target_link_directories(oscviewer PRIVATE ${GTK3_LIBRARY_DIRS})
target_compile_options(oscviewer PRIVATE ${GTK3_CFLAGS_OTHER})
target_link_libraries(oscviewer ${GTK3_LIBRARIES})
target_compile_options(oscviewer PRIVATE ${CC_OPTIONS})
@@ -4,8 +4,8 @@
// This software is distributed WITHOUT ANY WARRANTY.
#include "config.h"
#include "oscviewer3.h"
#include "oscviewer3_glade.h"
#include "oscviewer.h"
#include "oscviewer_glade.h"
char *title = "OSCViewer";
char *version_number = OSCVIEWER_VERSION;
@@ -123,7 +123,7 @@ int main(int argc, char **argv)
GtkBuilder *builder = gtk_builder_new();
GError *err = NULL; // It is mandatory to initialize to NULL
if (0 == gtk_builder_add_from_string(builder, (const gchar *)oscviewer3_glade, oscviewer3_glade_len, &err))
if (0 == gtk_builder_add_from_string(builder, (const gchar *)oscviewer_glade, oscviewer_glade_len, &err))
{
fprintf(stderr, "Error adding build from file. Error: %s\n", err->message);
}
File diff suppressed because it is too large Load Diff
-619
View File
@@ -1,619 +0,0 @@
// Copyright (C) Scott Dwyer and OpenSuperClone contributors.
// You may use/distribute/modify this freely, under the terms of
// the GNU General Public License version 2 or later version.
// This software is distributed WITHOUT ANY WARRANTY.
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <getopt.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include <stdint.h>
#include <math.h>
#include <malloc.h>
#include <gtk/gtk.h>
#include <cairo.h>
#ifdef DEBUG
#include <curl/curl.h>
#endif
#include <sys/stat.h>
#define LANGFILE 0
#define LANGQUIT 1
#define LANGOPEN 2
#define LANGERROR 3
#define LANGWARN 4
#define LANGLANGUAGE 5
#define LANGEXPORTLANG 6
#define LANGIMPORTLANG 7
#define LANGLANGEXPORTERR 8
#define LANGLANGIMPORTERR 9
#define LANGLANGIMPORTERR2 10
#define LANGLANGCHANGESUCCESS 11
#define LANGSUCCESS 12
#define LANGOPTIONS 13
#define LANGLEFTRES 14
#define LANGMAINRES 15
#define LANGMAINSIZE 16
#define LANGAUTOUPDATE 17
#define LANGSHOWBADHEAD 18
#define LANGNONTRIMMED 19
#define LANGNONDIVIDED 20
#define LANGNONSCRAPED 21
#define LANGBAD 22
#define LANGNONTRIED 23
#define LANGFINISHED 24
#define LANGCURRENT 25
#define LANGBADHEAD 26
#define LANG1PT 27
#define LANG2PT 28
#define LANG3PT 29
#define LANG4PT 30
#define LANG6PT 31
#define LANG8PT 32
#define LANG10PT 33
#define LANG12PT 34
#define LANG14PT 35
#define LANG16PT 36
#define LANG4K 37
#define LANG8K 38
#define LANG16K 39
#define LANG32K 40
#define LANG64K 41
#define LANG128K 42
#define LANG256K 43
#define LANG512K 44
#define LANG1M 45
#define LANGOFF 46
#define LANG5SEC 47
#define LANG10SEC 48
#define LANG30SEC 49
#define LANG1MIN 50
#define LANG2MIN 51
#define LANG5MIN 52
#define LANGSHOWGOODDATA 53
#define LANGGOODDATA 54
#define LANG2M 55
#define LANG4M 56
#define LANG8M 57
#define LANG16M 58
#define LANGSHOWTIMING 59
#define LANGTIMING 60
#define LANGDOMAIN 61
#define LANGSHOWDOMAIN 62
#define LANGDOMAINBLOCKNOTFOUND 63
#define LANGDMDEDOMAIN 64
#define LANGAREAS 65
#define LANGDUMMY 66 // always put at bottom of language list
// TODO MAKE SURE TO UPDATE COUNT EVERY TIME! it should be one more than last defined
#define LANGCOUNT 67
#define MAXLANGLENGTH 256
char enlang[LANGCOUNT][MAXLANGLENGTH];
char curlang[LANGCOUNT][MAXLANGLENGTH];
char newlang[LANGCOUNT][MAXLANGLENGTH];
char program_title[256];
GtkWidget *filelangex;
GtkWidget *filelangim;
int setup_enlanguage(void);
int copy_enlanguage(void);
int copy_newlanguage(void);
#define TRANSLATETIMERALL 1000000000 // nanosecond delay for every translate call
#define TRANSLATETIMERFAST 10000000000 // nanosecond delay for each normal translate call
#define TRANSLATETIMERSLOW 2000000000 // nanosecond delay for each slow translate call
#define BLACK 0x000000 // (0,0,0)
#define WHITE 0xFFFFFF // (255,255,255)
#define RED 0xFF0000 // (255,0,0)
#define LIME 0x00FF00 // (0,255,0)
#define BLUE 0x0000FF // (0,0,255)
#define YELLOW 0xFFFF00 // (255,255,0)
#define CYAN 0x00FFFF // (0,255,255)
#define MAGENTA 0xFF00FF // (255,0,255)
#define SILVER 0xC0C0C0 // (192,192,192)
#define GRAY 0x808080 // (128,128,128)
#define MAROON 0x800000 // (128,0,0)
#define OLIVE 0x808000 // (128,128,0)
#define GREEN 0x008000 // (0,128,0)
#define PURPLE 0x800080 // (128,0,128)
#define TEAL 0x008080 // (0,128,128)
#define NAVY 0x000080 // (0,0,128)
#define ORANGE 0xFFA500 // (255,165,0)
#define MYBLUE 0x0080FF // (0,128,255)
#define MYORANGE 0xFF8000 // (255,128,0)
#define NONTRIED 0
#define NONTRIMMED 0x10
#define NONDIVIDED 0x20
#define NONSCRAPED 0x30
#define BAD 0x40
#define BAD_HEAD 0x80
#define FINISHED 0x7f
#define STATUS_MASK 0xff
#define INFO_MASK 0xffffff00
#define BAD_HEAD_MASK 0xffffffffffffff7f
#define NONTRIED_BIT 0x0001
#define NONTRIMMED_BIT 0x0002
#define NONDIVIDED_BIT 0x0004
#define NONSCRAPED_BIT 0x0008
#define BAD_BIT 0x0010
#define BAD_HEAD_BIT 0x0020
#define FINISHED_BIT 0x0040
#define UNKNOWN_BIT 0x0080
#define MAINWINDOWWIDTH 800
#define MAINWINDOWHEIGTH 600
#define LEFTSQUARESIZE 2
#define MAINSQUARESIZE 8
#define MAINGRIDSIZE 65536
#define DISPLAY_MESSAGE_SIZE 4096
#define EXIT_MESSAGE_SIZE 2048
#define TEMP_MESSAGE_SIZE 2048
#define DEBUG_MESSAGE_SIZE 4096
#define ERROR_MESSAGE_SIZE 1024
#define MAX_LINE_LENGTH 256
gint main_window_width = MAINWINDOWWIDTH;
gint main_window_height = MAINWINDOWHEIGTH;
gint main_vbox_width;
gint main_vbox_height;
gint main_hbox_width;
gint main_hbox_height;
gint left_vbox_width;
gint left_vbox_height;
gint right_vbox_width;
gint right_vbox_height;
gint top_hbox_width;
gint top_hbox_height;
gint top_info_width;
gint top_info_height;
gint top_drawing_area_width;
gint top_drawing_area_height;
gint main_drawing_area_width;
gint main_drawing_area_height;
gint left_drawing_area_width;
gint left_drawing_area_height;
gint main_scrolled_window_width;
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;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *top_hbox;
GtkWidget *top_info_box;
GtkWidget *top_drawing_area;
GtkWidget *main_drawing_area;
GtkWidget *left_drawing_area;
GtkWidget *main_scrolled_window;
GtkWidget *main_drawing_vbox;
GtkWidget *frame;
GtkWidget *progress_log_label;
GtkWidget *domain_log_label;
GtkWidget *block_information_label;
// menu items
GtkWidget *menubar;
GtkWidget *menuvbox;
GtkWidget *menuseparater;
// file menu
GtkWidget *filemenu;
GtkWidget *filemi;
GtkWidget *quitmi;
GtkWidget *openmi;
GtkWidget *domainmi;
GtkWidget *dmdedomainmi;
GtkWidget *filew;
GtkWidget *domainw;
// options menu
GtkWidget *optionsmenu;
GtkWidget *optionsmi;
GtkWidget *leftresmenu;
GtkWidget *leftresolutionmi;
GtkWidget *leftresbutton1;
GtkWidget *leftresbutton2;
GtkWidget *leftresbutton3;
GtkWidget *leftresbutton4;
GtkWidget *mainresmenu;
GtkWidget *mainresolutionmi;
GtkWidget *mainresbutton4;
GtkWidget *mainresbutton6;
GtkWidget *mainresbutton8;
GtkWidget *mainresbutton10;
GtkWidget *mainresbutton12;
GtkWidget *mainresbutton14;
GtkWidget *mainresbutton16;
GtkWidget *maingridsizemi;
GtkWidget *mainsizemenu;
GtkWidget *mainsizebutton4k;
GtkWidget *mainsizebutton8k;
GtkWidget *mainsizebutton16k;
GtkWidget *mainsizebutton32k;
GtkWidget *mainsizebutton64k;
GtkWidget *mainsizebutton128k;
GtkWidget *mainsizebutton256k;
GtkWidget *mainsizebutton512k;
GtkWidget *mainsizebutton1m;
GtkWidget *mainsizebutton2m;
GtkWidget *mainsizebutton4m;
GtkWidget *mainsizebutton8m;
GtkWidget *mainsizebutton16m;
GtkWidget *autoupdatemi;
GtkWidget *autoupdatemenu;
GtkWidget *autoupdatebuttonoff;
GtkWidget *autoupdatebutton5s;
GtkWidget *autoupdatebutton10s;
GtkWidget *autoupdatebutton30s;
GtkWidget *autoupdatebutton1m;
GtkWidget *autoupdatebutton2m;
GtkWidget *autoupdatebutton5m;
GtkWidget *showbadcheck;
GtkWidget *showdomaincheck;
GtkWidget *optionsw;
GSList *leftresgroup = NULL;
GSList *mainresgroup = NULL;
GSList *mainsizegroup = NULL;
GSList *autoupgroup = NULL;
GtkWidget *showgoodcheck;
GtkWidget *showtimemi;
GtkWidget *showtimingbuttonoff;
GtkWidget *showtimingbutton1;
GtkWidget *showtimingbutton2;
GtkWidget *showtimingbutton3;
GtkWidget *showtimingbutton4;
GtkWidget *showtimingbutton5;
GtkWidget *showtimingbutton7;
GtkWidget *showtimingbutton10;
GtkWidget *showtimingbutton15;
GtkWidget *showtimingbutton20;
GtkWidget *showtimingbutton25;
GtkWidget *showtimingbutton30;
GtkWidget *showtimingbutton40;
GtkWidget *showtimingbutton50;
GtkWidget *showtimingbutton60;
int debug = 0;
int translate = 0;
char exit_message[EXIT_MESSAGE_SIZE];
char display_message[DISPLAY_MESSAGE_SIZE];
char tempmessage[TEMP_MESSAGE_SIZE];
char debug_message[DEBUG_MESSAGE_SIZE];
char error_message[ERROR_MESSAGE_SIZE];
char log_file[1024];
char domain_file[1024];
int log_rows = 1000;
int domain_rows = 1000;
int total_lines = 0;
int domain_lines = 0;
int regular_domain = 0;
long long *lposition;
long long *lsize;
long long *lstatus;
long long *temp_lposition;
long long *temp_lsize;
long long *temp_lstatus;
long long *dposition;
long long *dsize;
long long *dstatus;
long long *temp_dposition;
long long *temp_dsize;
long long *temp_dstatus;
long long current_position = 0;
long long current_status = 0;
long long total_size = 0;
int sector_size = 512;
long long temp_nontried = 0;
long long temp_nontrimmed = 0;
long long temp_nondivided = 0;
long long temp_nonscraped = 0;
long long temp_bad = 0;
long long temp_finished = 0;
long long temp_hightime = 0;
int ddrescue_log = 0;
char ddrstatus = ' ';
double rcolor = 0;
double gcolor = 0;
double bcolor = 0;
int left_square_size = LEFTSQUARESIZE;
int main_square_size = MAINSQUARESIZE;
int square_adjust = 0;
int nontried_color = BLACK;
int nontrimmed_color = SILVER;
int nondivided_color = GRAY;
int nonscraped_color = MYBLUE;
int bad_color = RED;
int good_color = LIME;
int unknown_color = BLACK;
int current_color_outer = YELLOW;
int current_color_inner = YELLOW;
int bad_head_color = PURPLE;
int selected_color = WHITE;
int time_color = WHITE;
int domain_color = YELLOW;
int main_grid_size = MAINGRIDSIZE;
gint timeout_tag = 0;
int autotimer_on = 0;
int show_bad_head = 0;
int show_good_data = 0;
int show_timing = 0;
int show_domain = 0;
int mouse_x = 0;
int mouse_y = 0;
int mouse_x_old = 0;
int mouse_y_old = 0;
void help(void);
void version(void);
static gboolean on_button_press(GtkWidget *widget, GdkEventButton *event, GdkWindowEdge edge);
static gboolean main_drawing_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data);
static gboolean left_vbox_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data);
static gboolean top_drawing_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data);
void getsize_main_window(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_hbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_left_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_right_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_top_hbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_top_info_box(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_top_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_left_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_drawing_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_scrolled_window(GtkWidget *widget, GtkAllocation *allocation, void *data);
void change_main_resolution(GtkWidget *w, gpointer data);
void change_main_grid_size(GtkWidget *w, gpointer data);
void redraw_main_drawing_area(void);
void redraw_top_drawing_area(void);
void change_left_resolution(GtkWidget *w, gpointer data);
void redraw_left_vbox(void);
int initialize_memory(void);
int increase_log_memory(int new_lines);
int increase_domain_memory(int new_lines);
int message_exit(char *message);
int message_display(char *message);
int message_now(char *message);
int message_debug(char *message, int level);
int message_error(char *message);
int clear_error_message(void);
int read_log_file(char *log_file);
int read_domain_file(char *domain_file);
int read_domain_dmde_file(char *dmde_file);
int add_to_domain(long long position, long long size);
int insert_domain_line(int line, long long position, long long size, long long status);
int find_domain_block(long long position);
int delete_domain_line(int line);
gint reload_file(void);
void set_autoupdate_timer(GtkWidget *w, gpointer data);
void toggle_showbad(GtkWidget *w, gpointer data);
void toggle_showgood(GtkWidget *w, gpointer data);
void set_show_timing(GtkWidget *w, gpointer data);
void toggle_showdomain(GtkWidget *w, gpointer data);
int check_log(void);
void select_file(void);
void select_domain(void);
void select_dmde_domain(void);
static void file_ok_sel(GtkWidget *w, GtkFileSelection *fs);
static void domain_ok_sel(GtkWidget *w, GtkFileSelection *fs);
static void dmde_domain_ok_sel(GtkWidget *w, GtkFileSelection *fs);
void get_rgb_color(int color);
int get_color_from_status(int status_bits);
int get_block_status(long long position, long long size);
int get_block_timing(long long position, long long size);
int get_block_information(long long position, long long size);
int process_domain(long long position, int size, int status, int status_mask);
int find_block(long long position);
int process_status(int line);
long long process_information(long long position, long long size, int line);
int do_nanosleep(unsigned long long time);
int set_language(void);
int print_gui_error_message(char *message, char *title, int type);
void export_language_file(void);
static void file_export_sel(GtkWidget *w, GtkFileSelection *fs);
void import_language_file(void);
static void file_import_sel(char *import_file);
int translate_all(void);
int translate_language(char *fromlang, char *translang, char *language, char *native);
int translate_language_slow(char *fromlang, char *translang, char *language, char *native);
char *get_translated_data(char *url_data);
struct MemoryStruct
{
char *memory;
size_t size;
};
char *languages[] = {
// "Afrikaans","af","Afrikaans",
// "Albanian","sq","shqiptar",
// "Amharic","am","አማርኛ",
"Arabic", "ar", "عربى",
// "Armenian","hy","հայերեն",
// "Azeerbaijani","az","Azeerbaijani",
// "Basque","eu","Euskal",
// "Belarusian","be","беларускі",
// "Bengali","bn","বাঙালি",
// "Bosnian","bs","bosanski",
// "Bulgarian","bg","български",
// "Catalan","ca","català",
// "Cebuano","ceb","Cebuano",
// "Chichewa","ny","Chichewa",
"Chinese (Simplified)", "zh-CN", "简体中文)",
// "Chinese (Traditional)","zh-TW","中國傳統的)",
// "Corsican","co","Corsu",
// "Croatian","hr","hrvatski",
// "Czech","cs","čeština",
// "Danish","da","dansk",
// "Dutch","nl","Nederlands",
// "Esperanto","eo","Esperanto",
// "Estonian","et","eesti",
// "Filipino","tl","Pilipino",
// "Finnish","fi","Suomalainen",
"French", "fr", "français",
// "Frisian","fy","Frysk",
// "Galician","gl","galego",
// "Georgian","ka","ქართული",
"German", "de", "Deutsche",
// "Greek","el","Ελληνικά",
// "Gujarati","gu","ગુજરાતી",
// "Haitian Creole","ht","kreyòl ayisyen",
// "Hausa","ha","Hausa",
// "Hawaiian","haw","ʻŌlelo Hawaiʻi",
// "Hebrew","iw","עִברִית",
"Hindi", "hi", "हिंदी",
// "Hmong","hmn","Hmong",
// "Hungarian","hu","Magyar",
// "Icelandic","is","icelandic",
// "Igbo","ig","Igbo",
"Indonesian", "id", "bahasa Indonesia",
// "Irish","ga","Gaeilge",
"Italian", "it", "italiano",
"Japanese", "ja", "日本語",
// "Javanese","jw","Jawa",
// "Kannada","kn","ಕನ್ನಡ",
// "Kazakh","kk","Қазақ",
// "Khmer","km","ភាសាខ្មែរ",
// "Korean","ko","한국어",
// "Kurdish","ku","Kurdî",
// "Kyrgyz","ky","Кыргызча",
// "Lao","lo","ລາວ",
// "Latin","la","Latine",
// "Latvian","lv","Latvijas",
// "Lithuanian","lt","Lietuvos",
// "Luxembourgish","lb","lëtzebuergesch",
// "Macedonian","mk","Македонски",
// "Malagasy","mg","Malagasy",
// "Malay","ms","Malay",
// "Malayalam","ml","മലയാളം",
// "Maltese","mt","Malti",
// "Maori","mi","Maori",
// "Marathi","mr","मराठी",
// "Mongolian","mn","Монгол",
// "Burmese","my","မြန်မာ",
// "Nepali","ne","नेपाली",
// "Norwegian","no","norsk",
// "Pashto","ps","پښتو",
// "Persian","fa","فارسی",
// "Polish","pl","Polskie",
"Portuguese", "pt", "Português",
// "Punjabi","pa","ਪੰਜਾਬੀ",
// "Romanian","ro","Română",
"Russian", "ru", "русский",
// "Samoan","sm","Samoa",
// "Scots Gaelic","gd","Gàidhlig",
// "Serbian","sr","Српски",
// "Sesotho","st","Sesotho",
// "Shona","sn","Shona",
// "Sindhi","sd","سنڌي",
// "Sinhala","si","සිංහල",
// "Slovak","sk","slovenský",
// "Slovenian","sl","slovenski",
// "Somali","so","Soomaali",
"Spanish", "es", "Español",
// "Sundanese","su","Sunda",
// "Swahili","sw","Kiswahili",
// "Swedish","sv","svenska",
// "Tajik","tg","Тоҷикистон",
// "Tamil","ta","தமிழ்",
// "Telugu","te","తెలుగు",
// "Thai","th","ไทย",
// "Turkish","tr","Türk",
// "Ukrainian","uk","український",
// "Urdu","ur","اردو",
// "Uzbek","uz","O'zbekiston",
// "Vietnamese","vi","Tiếng Việt",
// "Welsh","cy","Cymraeg",
// "Xhosa","xh","isiXhosa",
// "Yiddish","yi","ייִדיש",
// "Yoruba","yo","yorùbá",
// "Zulu","zu","Zulu"
};
#define n_languages (sizeof(languages) / sizeof(const char *))
-847
View File
@@ -1,847 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.10 -->
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="main_window">
<property name="can_focus">False</property>
<property name="border_width">2</property>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="filemi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">file</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="openmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">open</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="domainmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">domain</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="dmdedomainmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">dmde domain</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separatormenuitem2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="quitmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">quit</property>
<property name="use_underline">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="optionsmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">options</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="leftresolutionmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">left panel resolution</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="leftresbutton1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">1pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="leftresbutton2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">2pt</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_as_radio">True</property>
<property name="group">leftresbutton1</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="leftresbutton3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">3pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">leftresbutton1</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="leftresbutton4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">leftresbutton1</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="mainresolutionmi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">main panel resolution</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">6pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">8pt</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton10">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">10pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton12">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">12pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton14">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">14pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainresbutton16">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">16pt</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainresbutton4</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="maingridsizemi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">main grid size</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton4k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton8k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">8k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton16k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">16k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton32k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">32k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton64k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">64k</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton128k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">128k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton256k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">256k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton512k">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">512k</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton1m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">1m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton2m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">2m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton4m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton8m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">8m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="mainsizebutton16m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">16m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">mainsizebutton4k</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem" id="autoupdatemi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">auto update</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebuttonoff">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">off</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_as_radio">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton5s">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">5s</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton10s">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">10s</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton30s">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">30s</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton1m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">1m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton2m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">2m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="autoupdatebutton5m">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">5m</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">autoupdatebuttonoff</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="showgoodcheck">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">show good data</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="showbadcheck">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">show bad head</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="showtimemi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">show timing</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkRadioMenuItem" id="showtimingbuttonoff">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">off</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_as_radio">True</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">1</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">2</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">3</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">4</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">5</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">7</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton10">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">10</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton15">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">15</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton20">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">20</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton25">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">25</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton30">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">30</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton40">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">40</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton50">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">50</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
<child>
<object class="GtkRadioMenuItem" id="showtimingbutton60">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">60</property>
<property name="use_underline">True</property>
<property name="draw_as_radio">True</property>
<property name="group">showtimingbuttonoff</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="showdomaincheck">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">show domain</property>
<property name="use_underline">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="progress_log_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="domain_log_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="main_hbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkVBox" id="left_vbox">
<property name="width_request">100</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">2</property>
<child>
<object class="GtkDrawingArea" id="left_drawing_area">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="right_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">2</property>
<child>
<object class="GtkHBox" id="top_hbox">
<property name="height_request">100</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">2</property>
<child>
<object class="GtkHBox" id="top_info_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">2</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFixed" id="fixed1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="block_information_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="x">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkDrawingArea" id="top_drawing_area">
<property name="width_request">400</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="main_drawing_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkScrolledWindow" id="main_scrolled_window">
<property name="width_request">400</property>
<property name="height_request">300</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkViewport" id="viewport1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="main_drawing_area">
<property name="width_request">200</property>
<property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>