diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e14959..1c1ffae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/README.md b/README.md index 61c4a75..00b14d6 100644 --- a/README.md +++ b/README.md @@ -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 Release 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 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 22a3fed..503d587 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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) diff --git a/src/opensuperclone/CMakeLists.txt b/src/opensuperclone/CMakeLists.txt index 22410ad..96d90fc 100644 --- a/src/opensuperclone/CMakeLists.txt +++ b/src/opensuperclone/CMakeLists.txt @@ -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}) diff --git a/src/opensuperclone/clone_gui3.c b/src/opensuperclone/clone_gui.c similarity index 99% rename from src/opensuperclone/clone_gui3.c rename to src/opensuperclone/clone_gui.c index cec25d5..2475946 100644 --- a/src/opensuperclone/clone_gui3.c +++ b/src/opensuperclone/clone_gui.c @@ -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); } diff --git a/src/opensuperclone/clone_gui3.h b/src/opensuperclone/clone_gui.h similarity index 100% rename from src/opensuperclone/clone_gui3.h rename to src/opensuperclone/clone_gui.h diff --git a/src/opensuperclone/clone_gui2.c b/src/opensuperclone/clone_gui2.c deleted file mode 100644 index 9caf0b0..0000000 --- a/src/opensuperclone/clone_gui2.c +++ /dev/null @@ -1,5629 +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 "config.h" -#include "clone_gui_common.h" -#include "clone_gui2.h" -#include "common.h" -#include "opensuperclone2_glade.h" - -int start_gtk_ccc(int argc, char **argv, char *title, char *version) -{ - // setup initial language - setup_enlanguage_ccc(); - copy_enlanguage_ccc(); - - // initialize memory so it is ready - return_value_ccc = initialize_logfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - return -1; - } - return_value_ccc = initialize_domainfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - return -1; - } - return_value_ccc = initialize_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - return -1; - } - - char window_title[256]; - strcpy(window_title, title); - strcat(window_title, " "); - strcat(window_title, version); - - strcpy(program_title, "_"); - strcat(program_title, title); - strcat(program_title, "_"); - strcat(program_title, version); - strcat(program_title, "_"); - - gtk_init(&argc, &argv); - - if (translate_ccc) - { - translate_all_ccc(); - exit(0); - } - - set_language_ccc(); - - if (enable_data_dump_ccc || enable_dump_identify_on_check_ccc) - { - set_data_dump_filename_ccc(); - char temp_string[256]; - dump_info_to_filename_ccc(data_dump_filename_ccc, "*****************************************************************\n"); - sprintf(temp_string, "********** %s %s data dump file **********\n", title_ccc, version_number_ccc); - dump_info_to_filename_ccc(data_dump_filename_ccc, temp_string); - } - - 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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - - main_window_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "window_main")); - if (NULL == main_window_ccc) - { - fprintf(stderr, "Object error: window_main \n"); - } - - bottom_status_bar_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "bottom_status_bar")); - - gtk_builder_connect_signals(builder, NULL); - - gtk_window_set_title(GTK_WINDOW(main_window_ccc), window_title); - - topmenubar_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "topmenubar")); - filemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "filemi")); - quitmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "quitmi")); - openmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "openmi")); - newmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "newmi")); - sourcemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "sourcemi")); - destinationmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "destinationmi")); - drivesmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "drivesmi")); - blockmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "blockmi")); - drivemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "drivemi")); - imagemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "imagemi")); - devnullmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "devnullmi")); - modemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "modemi")); - copyimagemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "copyimagemi")); - genericmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "genericmi")); - pass_automi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "pass_automi")); - pass_scsimi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "pass_scsimi")); - pass_atrami_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "pass_atami")); - directmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "directmi")); - ahcimi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "ahcimi")); - usbmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "usbmi")); - usbatami_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "usbatami")); - settingsmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "settingsmi")); - advancedmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "advancedmi")); - clonemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "clonemi")); - savemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "savemi")); - saveasmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "saveasmi")); - resetstatusmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "resetstatusmi")); - toolsmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "toolsmi")); - resetlogmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "resetlogmi")); - repairlogmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "repairlogmi")); - fillzeromi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "fillzeromi")); - fillmarkmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "fillmarkmi")); - fillerasemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "fillerasemi")); - domainmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "domainmi")); - importddmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "importddmi")); - exportddmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "exportddmi")); - label_project_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_project")); - data_project_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_project")); - label_domain_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_domain")); - data_domain_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_domain")); - label_source_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_source")); - data_source_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_source")); - label_destination_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_destination")); - data_destination_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_destination")); - label_totallba_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_totallba")); - data_totallba_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_totallba")); - label_lbatoread_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_lbatoread")); - data_lbatoread_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_lbatoread")); - label_domainsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_domainsize")); - data_domainsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_domainsize")); - label_runtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_runtime")); - data_runtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_runtime")); - label_remainingtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_remainingtime")); - data_remainingtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_remainingtime")); - label_currentposition_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_currentposition")); - data_currentposition_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_currentposition")); - label_currentstatus_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_currentstatus")); - data_currentstatus_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_currentstatus")); - label_currentrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_currentrate")); - data_currentrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_currentrate")); - label_recentrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_recentrate")); - data_recentrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_recentrate")); - label_totalrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_totalrate")); - data_totalrate_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_totalrate")); - label_skipsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_skipsize")); - data_skipsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_skipsize")); - label_skips_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_skips")); - data_skips_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_skips")); - label_slowskips_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_slowskips")); - data_slowskips_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_slowskips")); - label_skipruns_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_skipruns")); - data_skipruns_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_skipruns")); - label_skipresets_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_skipresets")); - data_skipresets_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_skipresets")); - label_runsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_runsize")); - data_runsize_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_runsize")); - label_finished_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_finished")); - data_finished_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_finished")); - label_nontried_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_nontried")); - data_nontried_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_nontried")); - label_nontrimmed_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_nontrimmed")); - data_nontrimmed_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_nontrimmed")); - label_nondivided_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_nondivided")); - data_nondivided_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_nondivided")); - label_nonscraped_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_nonscraped")); - data_nonscraped_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_nonscraped")); - label_bad_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_bad")); - data_bad_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_bad")); - label_datapreview_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_datapreview")); - data_datapreview_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_datapreview")); - label_longestreadtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_longestreadtime")); - data_longestreadtime_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_longestreadtime")); - label_filled_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_filled")); - data_filled_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_filled")); - label_retried_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_retried")); - data_retried_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_retried")); - label_retrypasses_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_retrypasses")); - data_retrypasses_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_retrypasses")); - cleardomainmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "cleardomainmi")); - helpmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "helpmi")); - aboutmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "aboutmi")); - timermi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "timermi")); - label_drivermode_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_drivermode")); - data_drivermode_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_drivermode")); - installdrivermi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "installdrivermi")); - uninstalldrivermi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "uninstalldrivermi")); - fixdrivermemorymi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "fixdrivermemorymi")); - driveronlymi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driveronlymi")); - adddomainmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "adddomainmi")); - newdomainmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "newdomainmi")); - savedomainmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "savedomainmi")); - savedomainasmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "savedomainasmi")); - activatewithfilemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activatewithfilemi")); - removeactivationmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "removeactivationmi")); - disableportsmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disableportsmi")); - restoreportsmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "restoreportsmi")); - displayidentifymi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "displayidentifymi")); - displayanalyzemi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "displayanalyzemi")); - displaysmartmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "displaysmartmi")); - primaryrelaymi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primaryrelaymi")); - chooseprimaryrelaymi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "chooseprimaryrelaymi")); - disableusbmassmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disableusbmassmi")); - restoreusbmassmi_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "restoreusbmassmi")); - activate_primary_relay_button_main_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay_button_main")); - deactivate_primary_relay_button_main_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay_button_main")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - - gtk_menu_item_set_label(GTK_MENU_ITEM(filemi_ccc), curlang_ccc[LANGFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(openmi_ccc), curlang_ccc[LANGOPENPROJ]); - gtk_menu_item_set_label(GTK_MENU_ITEM(newmi_ccc), curlang_ccc[LANGNEWPROJ]); - gtk_menu_item_set_label(GTK_MENU_ITEM(quitmi_ccc), curlang_ccc[LANGQUIT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(sourcemi_ccc), curlang_ccc[LANGSOURCE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(destinationmi_ccc), curlang_ccc[LANGDESTINATION]); - gtk_menu_item_set_label(GTK_MENU_ITEM(blockmi_ccc), curlang_ccc[LANGBLOCKDEV]); - gtk_menu_item_set_label(GTK_MENU_ITEM(drivemi_ccc), curlang_ccc[LANGDRIVE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(drivesmi_ccc), curlang_ccc[LANGDRIVES]); - gtk_menu_item_set_label(GTK_MENU_ITEM(imagemi_ccc), curlang_ccc[LANGIMAGEFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(devnullmi_ccc), curlang_ccc[LANGNODESTINATION]); - gtk_menu_item_set_label(GTK_MENU_ITEM(modemi_ccc), curlang_ccc[LANGMODE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(copyimagemi_ccc), curlang_ccc[LANGCOPYIMAGE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(genericmi_ccc), curlang_ccc[LANGGENERIC]); - gtk_menu_item_set_label(GTK_MENU_ITEM(pass_automi_ccc), curlang_ccc[LANGMODEAUTO]); - gtk_menu_item_set_label(GTK_MENU_ITEM(pass_scsimi_ccc), curlang_ccc[LANGMODESCSI]); - gtk_menu_item_set_label(GTK_MENU_ITEM(pass_atrami_ccc), curlang_ccc[LANGMODEATA]); - gtk_menu_item_set_label(GTK_MENU_ITEM(directmi_ccc), curlang_ccc[LANGMODEIDE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(ahcimi_ccc), curlang_ccc[LANGMODEAHCI]); - gtk_menu_item_set_label(GTK_MENU_ITEM(usbmi_ccc), curlang_ccc[LANGMODEUSB]); - gtk_menu_item_set_label(GTK_MENU_ITEM(usbatami_ccc), curlang_ccc[LANGMODEUSBATA]); - gtk_menu_item_set_label(GTK_MENU_ITEM(settingsmi_ccc), curlang_ccc[LANGSETTINGS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(advancedmi_ccc), curlang_ccc[LANGADVANCED]); - gtk_menu_item_set_label(GTK_MENU_ITEM(clonemi_ccc), curlang_ccc[LANGCLONE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(savemi_ccc), curlang_ccc[LANGSAVE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(saveasmi_ccc), curlang_ccc[LANGSAVEAS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(resetstatusmi_ccc), curlang_ccc[LANGRESETSTATUS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(toolsmi_ccc), curlang_ccc[LANGTOOLS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(resetlogmi_ccc), curlang_ccc[LANGRESETLOG]); - gtk_menu_item_set_label(GTK_MENU_ITEM(repairlogmi_ccc), curlang_ccc[LANGREPAIRLOG]); - gtk_menu_item_set_label(GTK_MENU_ITEM(fillzeromi_ccc), curlang_ccc[LANGFILLZERO]); - gtk_menu_item_set_label(GTK_MENU_ITEM(fillmarkmi_ccc), curlang_ccc[LANGFILLMARK]); - gtk_menu_item_set_label(GTK_MENU_ITEM(fillerasemi_ccc), curlang_ccc[LANGFILLERASE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(domainmi_ccc), curlang_ccc[LANGDOMAIN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(importddmi_ccc), curlang_ccc[LANGIMPORTDD]); - gtk_menu_item_set_label(GTK_MENU_ITEM(exportddmi_ccc), curlang_ccc[LANGEXPORTDD]); - gtk_menu_item_set_label(GTK_MENU_ITEM(cleardomainmi_ccc), curlang_ccc[LANGCLEARDOMAIN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(helpmi_ccc), curlang_ccc[LANGHELP]); - gtk_menu_item_set_label(GTK_MENU_ITEM(aboutmi_ccc), curlang_ccc[LANGABOUT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(timermi_ccc), curlang_ccc[LANGTIMERS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(installdrivermi_ccc), curlang_ccc[LANGINSTALLDRIVER]); - gtk_menu_item_set_label(GTK_MENU_ITEM(uninstalldrivermi_ccc), curlang_ccc[LANGUNINSTALLDRIVER]); - gtk_menu_item_set_label(GTK_MENU_ITEM(fixdrivermemorymi_ccc), curlang_ccc[LANGFIXDRIVERMEMORYERROR]); - gtk_menu_item_set_label(GTK_MENU_ITEM(driveronlymi_ccc), curlang_ccc[LANGDRIVERONLYMI]); - gtk_menu_item_set_label(GTK_MENU_ITEM(adddomainmi_ccc), curlang_ccc[LANGADDDOMAINFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(newdomainmi_ccc), curlang_ccc[LANGNEWDOMAINFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(savedomainmi_ccc), curlang_ccc[LANGSAVEDOMAINFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(savedomainasmi_ccc), curlang_ccc[LANGSAVEDOMAINFILEAS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(disableportsmi_ccc), curlang_ccc[LANGDISABLEPORTS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(restoreportsmi_ccc), curlang_ccc[LANGRESTOREPORTS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(displayidentifymi_ccc), curlang_ccc[LANGDISPLAYIDENTIFYRESULTS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(displayanalyzemi_ccc), curlang_ccc[LANGDISPLAYANALYZERESULTS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(displaysmartmi_ccc), curlang_ccc[LANGDISPLAYSMARTRESULTS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(primaryrelaymi_ccc), curlang_ccc[LANGPRIMARYRELAY]); - gtk_menu_item_set_label(GTK_MENU_ITEM(chooseprimaryrelaymi_ccc), curlang_ccc[LANGCHOOSEPRIMARYUSB]); - gtk_menu_item_set_label(GTK_MENU_ITEM(disableusbmassmi_ccc), curlang_ccc[LANGDISABLEUSBMASS]); - gtk_menu_item_set_label(GTK_MENU_ITEM(restoreusbmassmi_ccc), curlang_ccc[LANGRESTOREUSBMASS]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay_button_main_ccc), curlang_ccc[LANGACTIVATEMAIN]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay_button_main_ccc), curlang_ccc[LANGDEACTIVATEMAIN]); - // gtk_menu_item_set_label(GTK_MENU_ITEM(), curlang_ccc[]); - // gtk_menu_item_set_label(GTK_MENU_ITEM(), curlang_ccc[]); - // gtk_menu_item_set_label(GTK_MENU_ITEM(), curlang_ccc[]); - // gtk_menu_item_set_label(GTK_MENU_ITEM(), curlang_ccc[]); - - main_label = GTK_WIDGET(gtk_builder_get_object(builder, "main_label")); - - connect_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "connect_button")); - disconnect_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disconnect_button")); - start_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "start_button")); - stop_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "stop_button")); - analyze_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "analyze_button")); - analyze_long_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "analyze_long_button")); - smart_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "smart_button")); - clone_mode_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "clone_mode_button")); - driver_mode1_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_mode1_button")); - agressive_driver_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "agressive_driver_checkbutton")); - driver_mode2_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_mode2_button")); - driver_mode3_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_mode3_button")); - driver_mode4_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_mode4_button")); - driver_mode5_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_mode5_button")); - soft_reset_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "soft_reset_button")); - hard_reset_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "hard_reset_button")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - - gtk_button_set_label(GTK_BUTTON(connect_button_ccc), curlang_ccc[LANGCONNECT]); - gtk_button_set_label(GTK_BUTTON(disconnect_button_ccc), curlang_ccc[LANGDISCONNECT]); - gtk_button_set_label(GTK_BUTTON(start_button_ccc), curlang_ccc[LANGSTART]); - gtk_button_set_label(GTK_BUTTON(stop_button_ccc), curlang_ccc[LANGSTOP]); - gtk_button_set_label(GTK_BUTTON(analyze_button_ccc), curlang_ccc[LANGANALYZE]); - gtk_button_set_label(GTK_BUTTON(analyze_long_button_ccc), curlang_ccc[LANGANALYZELONG]); - gtk_button_set_label(GTK_BUTTON(smart_button_ccc), curlang_ccc[LANGSMART]); - gtk_button_set_label(GTK_BUTTON(clone_mode_button_ccc), curlang_ccc[LANGCLONEMODEBUTTON]); - gtk_button_set_label(GTK_BUTTON(agressive_driver_checkbutton_ccc), curlang_ccc[LANGAGRESSIVEDRIVERBUTTON]); - gtk_button_set_label(GTK_BUTTON(driver_mode1_button_ccc), curlang_ccc[LANGDRIVERMODE1BUTTON]); - gtk_button_set_label(GTK_BUTTON(driver_mode2_button_ccc), curlang_ccc[LANGDRIVERMODE2BUTTON]); - gtk_button_set_label(GTK_BUTTON(driver_mode3_button_ccc), curlang_ccc[LANGDRIVERMODE3BUTTON]); - gtk_button_set_label(GTK_BUTTON(driver_mode4_button_ccc), curlang_ccc[LANGDRIVERMODE4BUTTON]); - gtk_button_set_label(GTK_BUTTON(driver_mode5_button_ccc), curlang_ccc[LANGDRIVERMODE5BUTTON]); - gtk_button_set_label(GTK_BUTTON(soft_reset_button_ccc), curlang_ccc[LANGHARDRESETBUTTON]); - gtk_button_set_label(GTK_BUTTON(hard_reset_button_ccc), curlang_ccc[LANGSOFTRESETBUTTON]); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - - gtk_label_set_text(GTK_LABEL(label_project_ccc), curlang_ccc[LANGPROJECTLABEL]); - gtk_label_set_text(GTK_LABEL(label_domain_ccc), curlang_ccc[LANGDOMAINLABEL]); - gtk_label_set_text(GTK_LABEL(label_source_ccc), curlang_ccc[LANGSOURCELABEL]); - gtk_label_set_text(GTK_LABEL(label_destination_ccc), curlang_ccc[LANGDESTINATIONLABEL]); - gtk_label_set_text(GTK_LABEL(label_totallba_ccc), curlang_ccc[LANGTOTALLBALABEL]); - gtk_label_set_text(GTK_LABEL(label_lbatoread_ccc), curlang_ccc[LANGLBATOREADLABEL]); - gtk_label_set_text(GTK_LABEL(label_domainsize_ccc), curlang_ccc[LANGDOMAINSIZELABEL]); - gtk_label_set_text(GTK_LABEL(label_runtime_ccc), curlang_ccc[LANGRUNTIMELABEL]); - gtk_label_set_text(GTK_LABEL(label_remainingtime_ccc), curlang_ccc[LANGREMAININGTIMELABEL]); - gtk_label_set_text(GTK_LABEL(label_currentposition_ccc), curlang_ccc[LANGCURRENTPOSISIONLABEL]); - gtk_label_set_text(GTK_LABEL(label_currentstatus_ccc), curlang_ccc[LANGCURRENTSTATUSLABEL]); - gtk_label_set_text(GTK_LABEL(label_currentrate_ccc), curlang_ccc[LANGCURRENTRATELABEL]); - gtk_label_set_text(GTK_LABEL(label_recentrate_ccc), curlang_ccc[LANGRECENTRATELABEL]); - gtk_label_set_text(GTK_LABEL(label_totalrate_ccc), curlang_ccc[LANGTOTALRATELABEL]); - gtk_label_set_text(GTK_LABEL(label_skipsize_ccc), curlang_ccc[LANGSKIPSIZELABEL]); - gtk_label_set_text(GTK_LABEL(label_skips_ccc), curlang_ccc[LANGSKIPSLABEL]); - gtk_label_set_text(GTK_LABEL(label_slowskips_ccc), curlang_ccc[LANGSLOWSKIPLABEL]); - gtk_label_set_text(GTK_LABEL(label_skipruns_ccc), curlang_ccc[LANGSKIPRUNSLABEL]); - gtk_label_set_text(GTK_LABEL(label_skipresets_ccc), curlang_ccc[LANGSKIPRESETSLABEL]); - gtk_label_set_text(GTK_LABEL(label_runsize_ccc), curlang_ccc[LANGRUNSIZELABEL]); - gtk_label_set_text(GTK_LABEL(label_finished_ccc), curlang_ccc[LANGFINISHEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_nontried_ccc), curlang_ccc[LANGNONTRIEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_nontrimmed_ccc), curlang_ccc[LANGNONTRIMMEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_nondivided_ccc), curlang_ccc[LANGNONDIVIDEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_nonscraped_ccc), curlang_ccc[LANGNONSCRAPEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_bad_ccc), curlang_ccc[LANGBADLABEL]); - gtk_label_set_text(GTK_LABEL(label_datapreview_ccc), curlang_ccc[LANGDATAPREVIEWLABEL]); - gtk_label_set_text(GTK_LABEL(label_longestreadtime_ccc), curlang_ccc[LANGLONGESTREADTIMELABEL]); - gtk_label_set_text(GTK_LABEL(label_filled_ccc), curlang_ccc[LANGFILLEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_retried_ccc), curlang_ccc[LANGRETRIEDLABEL]); - gtk_label_set_text(GTK_LABEL(label_retrypasses_ccc), curlang_ccc[LANGRETRYPASSESLABEL]); - gtk_label_set_text(GTK_LABEL(label_drivermode_ccc), curlang_ccc[LANGDRIVERMODE]); - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGCLONEMODE]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - // set status buttons - button_bbk_ccc = gtk_button_new_with_label("BBK"); - button_unc_ccc = gtk_button_new_with_label("UNC"); - button_mc_ccc = gtk_button_new_with_label("MC"); - button_idnf_ccc = gtk_button_new_with_label("IDNF"); - button_mcr_ccc = gtk_button_new_with_label("MCR"); - button_abrt_ccc = gtk_button_new_with_label("ABRT"); - button_tk0nf_ccc = gtk_button_new_with_label("TK0NF"); - button_amnf_ccc = gtk_button_new_with_label("AMNF"); - button_bsy_ccc = gtk_button_new_with_label("BSY"); - button_drdy_ccc = gtk_button_new_with_label("DRDY"); - button_df_ccc = gtk_button_new_with_label("DF"); - button_dsc_ccc = gtk_button_new_with_label("DSC"); - button_drq_ccc = gtk_button_new_with_label("DRQ"); - button_corr_ccc = gtk_button_new_with_label("CORR"); - button_idx_ccc = gtk_button_new_with_label("IDX"); - button_err_ccc = gtk_button_new_with_label("ERR"); - button_status_separator_ccc = gtk_button_new_with_label("|"); - - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_bsy_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_drdy_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_df_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_dsc_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_drq_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_corr_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_idx_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_err_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_status_separator_ccc, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_bbk_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_unc_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_mc_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_idnf_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_mcr_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_abrt_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_tk0nf_ccc, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(bottom_status_bar_ccc), button_amnf_ccc, TRUE, TRUE, 0); - - // set intial button states - set_disconnected_ccc(); - - set_mode_auto_passthrough_ccc(); - - if (scsi_passthrough_ccc || generic_mode_ccc) - { - deactivate_status_buttons_ccc(); - } - else - { - activate_status_buttons_ccc(); - } - - g_object_unref(builder); - - gtk_window_set_default_size(main_window_ccc, 1075, 775); - gtk_widget_show_all(main_window_ccc); - gtk_main(); - - return 0; -} - -int copy_enlanguage_ccc(void) -{ - int i; - for (i = 0; i < LANGCOUNT; i++) - { - strcpy(curlang_ccc[i], enlang_ccc[i]); - } - return 0; -} - -int copy_newlanguage_ccc(void) -{ - int i; - for (i = 0; i < LANGCOUNT; i++) - { - strcpy(curlang_ccc[i], newlang_ccc[i]); - // fprintf(stdout, "%d %s", i, newlang_ccc[i]); - } - return 0; -} - -int set_language_ccc(void) -{ - language_window_ccc = gtk_window_new(GTK_WINDOW_TOPLEVEL); - // gtk_window_set_keep_above(GTK_WINDOW(language_window_ccc), TRUE); - gtk_window_set_title(GTK_WINDOW(language_window_ccc), "Language Options"); - gtk_window_set_default_size(GTK_WINDOW(language_window_ccc), 300, 200); - gtk_window_set_position(GTK_WINDOW(language_window_ccc), GTK_WIN_POS_CENTER); - - gint handler_id1 = g_signal_connect(G_OBJECT(language_window_ccc), "destroy", G_CALLBACK(gtk_main_quit), NULL); - - GtkWidget *box = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(language_window_ccc), box); - - GtkWidget *enbutton = gtk_button_new_with_label("Continue"); - // GtkWidget *exbutton = gtk_button_new_with_label("Export language file"); - GtkWidget *imbutton = gtk_button_new_with_label("Change Language"); - GtkWidget *okim = gtk_image_new_from_stock(GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON); - // GtkWidget *saveim = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON); - GtkWidget *openim = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON); - gtk_button_set_image(GTK_BUTTON(enbutton), okim); - // gtk_button_set_image(GTK_BUTTON(exbutton), saveim); - gtk_button_set_image(GTK_BUTTON(imbutton), openim); - - gtk_box_pack_start(GTK_BOX(box), enbutton, TRUE, TRUE, 0); - // gtk_box_pack_start (GTK_BOX (box), exbutton, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(box), imbutton, TRUE, TRUE, 0); - - gint handler_id2 = g_signal_connect(enbutton, "clicked", G_CALLBACK(gtk_main_quit), NULL); - // gint handler_id3 = g_signal_connect (exbutton, "clicked", G_CALLBACK (export_language_file_ccc), NULL); - gint handler_id4 = g_signal_connect(imbutton, "clicked", G_CALLBACK(import_language_file_ccc), NULL); - - gtk_widget_show_all(language_window_ccc); - gtk_main(); - g_signal_handler_disconnect(language_window_ccc, handler_id1); - g_signal_handler_disconnect(enbutton, handler_id2); - // g_signal_handler_disconnect(exbutton, handler_id3); - g_signal_handler_disconnect(imbutton, handler_id4); - gtk_widget_hide_all(language_window_ccc); - gtk_widget_destroy(language_window_ccc); - - return 0; -} - -int set_data_dump_filename_ccc(void) -{ - language_window_ccc = gtk_window_new(GTK_WINDOW_TOPLEVEL); - // gtk_window_set_keep_above(GTK_WINDOW(language_window_ccc), TRUE); - gtk_window_set_title(GTK_WINDOW(language_window_ccc), "Select Data Dump File"); - gtk_window_set_default_size(GTK_WINDOW(language_window_ccc), 400, 300); - gtk_window_set_position(GTK_WINDOW(language_window_ccc), GTK_WIN_POS_CENTER); - - gint handler_id1 = g_signal_connect(G_OBJECT(language_window_ccc), "destroy", G_CALLBACK(gtk_main_quit), NULL); - - GtkWidget *box = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(language_window_ccc), box); - - GtkWidget *enbutton = gtk_button_new_with_label("Continue"); - GtkWidget *imbutton = gtk_button_new_with_label("Change Data Dump File"); - GtkWidget *okim = gtk_image_new_from_stock(GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON); - GtkWidget *openim = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON); - gtk_button_set_image(GTK_BUTTON(enbutton), okim); - gtk_button_set_image(GTK_BUTTON(imbutton), openim); - - gtk_box_pack_start(GTK_BOX(box), enbutton, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(box), imbutton, TRUE, TRUE, 0); - - gint handler_id2 = g_signal_connect(enbutton, "clicked", G_CALLBACK(gtk_main_quit), NULL); - gint handler_id4 = g_signal_connect(imbutton, "clicked", G_CALLBACK(get_data_dump_filename_ccc), NULL); - - gtk_widget_show_all(language_window_ccc); - gtk_main(); - g_signal_handler_disconnect(language_window_ccc, handler_id1); - g_signal_handler_disconnect(enbutton, handler_id2); - g_signal_handler_disconnect(imbutton, handler_id4); - gtk_widget_hide_all(language_window_ccc); - gtk_widget_destroy(language_window_ccc); - - return 0; -} - -void get_data_dump_filename_ccc(void) -{ - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new("Select Data Dump File", - GTK_WINDOW(language_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "debug_data_dump.log"); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - strcpy(data_dump_filename_ccc, filename); - g_free(filename); - } - gtk_widget_destroy(dialog); -} - -#ifdef DEBUG -static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) -{ - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)userp; - - mem->memory = realloc(mem->memory, mem->size + realsize + 1); - if (mem->memory == NULL) - { - /* out of memory! */ - printf("not enough memory (realloc returned NULL)\n"); - return 0; - } - - memcpy(&(mem->memory[mem->size]), contents, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; - - return realsize; -} -#endif - -int translate_all_ccc(void) -{ - unsigned int total_language_items = n_languages_ccc; - int translate_failed = 0; - if (translate_ccc >= 80000 && translate_ccc < 80010) - { - char(*reverselang)[LANGCOUNT][MAXLANGLENGTH]; - reverselang = malloc((total_language_items / 3) * sizeof *reverselang); - char(*alllang)[LANGCOUNT][MAXLANGLENGTH]; - alllang = malloc((total_language_items / 3) * sizeof *alllang); - char *reverse_file = "REVERSE_LANGUAGES.CSV"; - char *all_file = "ALL_LANGUAGES.CSV"; - char *export_file = "English"; - FILE *writefile; - writefile = fopen(export_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], export_file, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - fprintf(writefile, "%s", program_title); - unsigned int i; - unsigned int n; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|__|%04u|__|\n", i); - fprintf(writefile, "%s", enlang_ccc[i]); - } - fclose(writefile); - chmod(export_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - if (total_language_items % 3) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "language count not dividable by 3\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - return -1; - } - for (i = 0; i < total_language_items; i += 3) - { - fprintf(stdout, "translating %u of %u\n", i / 3, total_language_items / 3); - char *translang = languages_ccc[i + 1]; - char *language = languages_ccc[i]; - char *native = languages_ccc[i + 2]; - copy_enlanguage_ccc(); - if (translate_language_ccc("en", translang, language, native)) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to translate to %s\n", language); - fprintf(stdout, "\n*****************************************************\n"); - translate_failed = 1; - } - if (translate_ccc == 80009) - { - for (n = 0; n < LANGCOUNT; n++) - { - strcpy(alllang[i / 3][n], newlang_ccc[n]); - } - copy_newlanguage_ccc(); - if (translate_language_ccc(translang, "en", language, "english")) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to reverse translate %s\n", language); - fprintf(stdout, "\n*****************************************************\n"); - translate_failed = 1; - } - for (n = 0; n < LANGCOUNT; n++) - { - strcpy(reverselang[i / 3][n], newlang_ccc[n]); - } - } - } - - if (translate_ccc == 80009) - { - writefile = fopen(reverse_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], reverse_file, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - fprintf(writefile, "\"%s\", ", "English"); - for (i = 0; i < total_language_items; i += 3) - { - fprintf(writefile, "\"%s\", ", languages_ccc[i]); - } - fprintf(writefile, "\n"); - for (n = 0; n < LANGCOUNT; n++) - { - fprintf(writefile, "\"%s\", ", enlang_ccc[n]); - for (i = 0; i < (total_language_items / 3); i++) - { - fprintf(writefile, "\"%s\", ", reverselang[i][n]); - } - fprintf(writefile, "\n"); - } - fclose(writefile); - chmod(reverse_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - writefile = fopen(all_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], all_file, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - fprintf(writefile, "\"%s\", ", "English"); - for (i = 0; i < total_language_items; i += 3) - { - fprintf(writefile, "\"%s\", ", languages_ccc[i]); - } - fprintf(writefile, "\n"); - for (n = 0; n < LANGCOUNT; n++) - { - fprintf(writefile, "\"%s\", ", enlang_ccc[n]); - for (i = 0; i < (total_language_items / 3); i++) - { - fprintf(writefile, "\"%s\", ", alllang[i][n]); - } - fprintf(writefile, "\n"); - } - fclose(writefile); - chmod(all_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - } - } - if (translate_failed) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to translate\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - return -1; - } - return 0; -} - -int translate_language_ccc(char *fromlang, char *translang, char *language, char *native) -{ - int failure = 0; - char return_data[1000000]; - char new_lang_data[500000]; - char url_data[250000]; - char lang_data[250000]; - char new_data[250000]; - char temp_data[100000]; - strcpy(lang_data, ""); - strcpy(new_data, ""); - strcpy(return_data, ""); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - strcpy(newlang_ccc[i], ""); - } - for (i = 0; i < LANGCOUNT; i++) - { - sprintf(temp_data, "\n|__|%04d|__|\n", i); - strcat(lang_data, temp_data); - sprintf(temp_data, "%s", curlang_ccc[i]); - strcat(lang_data, temp_data); - if (strlen(lang_data) > 3000 || i == LANGCOUNT - 1) - { - int n; - int len = strlen(lang_data); - for (n = 0; n < len; n++) - { - char c = lang_data[n]; - if (c == ' ') - { - strcat(new_data, "%20"); - } - else if (c == '\n') - { - strcat(new_data, "%0a"); - } - else - { - strncat(new_data, &c, 1); - } - } - // fprintf (stdout, "%s\n", new_data); - - strcpy(url_data, "https://translate.googleapis.com/translate_a/single?client=gtx&sl="); - strcat(url_data, fromlang); - strcat(url_data, "&tl="); - strcat(url_data, translang); - strcat(url_data, "&dt=t&q="); - strcat(url_data, new_data); - - fprintf(stdout, "%d %s to %s ", i, fromlang, translang); - do_nanosleep_ccc(TRANSLATETIMERFAST); // this is a timer to deal with google translator - char *data = get_translated_data_ccc(url_data); - // fprintf (stdout, "%s\n", data); - strcat(return_data, data); - strcpy(lang_data, ""); - strcpy(new_data, ""); - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", return_data); - - strcpy(new_lang_data, ""); - int return_length = strlen(return_data); - int bracket_depth = 0; - for (i = 0; i < return_length; i++) - { - if (return_data[i] == '[') - { - bracket_depth++; - if (return_data[i + 1] == '"' && bracket_depth < 5) - { - int n = i + 2; - while (n < return_length) - { - if (return_data[n] == '"') - { - strcat(new_lang_data, "\n"); - break; - } - else if (return_data[n] == '\\' && return_data[n + 1] == 'n') - { - strcat(new_lang_data, "\n"); - if (return_data[n + 2] == '\\' && return_data[n + 3] == 'n') - { - strcat(new_lang_data, "\n"); - } - if (return_data[n + 4] == '\\' && return_data[n + 5] == 'n') - { - strcat(new_lang_data, "\n"); - } - break; - } - char c = return_data[n]; - strncat(new_lang_data, &c, 1); - n++; - i = n; - } - } - } - else if (return_data[i] == ']') - { - bracket_depth--; - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", new_lang_data); - - // read language data out of the variable - char *line = new_lang_data; - int count = 0; - int found_count = -1; - while (line) - { - char *nextLine = strchr(line, '\n'); - if (nextLine) - *nextLine = '\0'; // temporarily terminate the current line - // printf("%s\n", line); - - int scanline; - int new_count = -1; - scanline = sscanf(line, "| _ _ | %d | _ _ |", &new_count); - if (scanline == 1) - { - if (new_count >= 0 && new_count < LANGCOUNT) - { - // fprintf (stdout, "num=%d, line=%s\n", new_count, line); - // remove the last new line from the end - if (found_count >= 0) - { - int l = strlen(newlang_ccc[found_count]); - if (l > 0 && newlang_ccc[found_count][l - 1] == '\n') - { - newlang_ccc[found_count][l - 1] = '\0'; - } - } - found_count = new_count; - strcpy(newlang_ccc[found_count], ""); - if (count != found_count) - { - // fprintf (stdout, "FAILED count=%d found_count=%d\n", count, found_count); - } - count++; - } - else - { - fprintf(stdout, "Warning: language count %d not valid.\n", new_count); - failure = 1; - } - } - else if (found_count >= 0 && found_count < LANGCOUNT) - { - unsigned int l = strlen(newlang_ccc[found_count]); - strncat(newlang_ccc[found_count], line, MAXLANGLENGTH - l - 1); - strcat(newlang_ccc[found_count], "\n"); - // fprintf (stdout, "%s\n", newlang_ccc[found_count]); - if (MAXLANGLENGTH - l < strlen(line)) - { - fprintf(stdout, "Warning: language count %d exceeded max length and was truncated.\n", found_count); - failure = 1; - } - } - - if (nextLine) - *nextLine = '\n'; // then restore newline-char, just to be tidy - line = nextLine ? (nextLine + 1) : NULL; - } - count--; - if (count == found_count && count == LANGCOUNT - 1) - { - // do noting - } - else - { - fprintf(stdout, "FAILED count=%d found_count=%d LANGCOUNT=%d\n", count, found_count, LANGCOUNT - 1); - failure = 1; - } - - if (failure && 0) - { - int retry = translate_language_slow_ccc(fromlang, translang, language, native); - return retry; - } - - char langfile[256]; - strcpy(langfile, language); - strcat(langfile, "("); - strcat(langfile, native); - strcat(langfile, ")"); - if (failure) - { - strcat(langfile, "_FAILED_TRANSLATION"); - } - FILE *writefile; - writefile = fopen(langfile, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], langfile, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - fprintf(writefile, "%s", program_title); - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|__|%04d|__|\n", i); - fprintf(writefile, "%s", newlang_ccc[i]); - } - - fclose(writefile); - chmod(langfile, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - return failure; -} - -char *get_translated_data_ccc(char *url_data) -{ -#ifdef DEBUG - do_nanosleep_ccc(TRANSLATETIMERALL); // this is a timer to deal with google translator - CURL *curl_handle; - CURLcode res; - - struct MemoryStruct chunk; - - chunk.memory = malloc(1); /* will be grown as needed by the realloc above */ - chunk.size = 0; /* no data at this point */ - - curl_global_init(CURL_GLOBAL_ALL); - - /* init the curl session */ - curl_handle = curl_easy_init(); - - /* specify URL to get */ - curl_easy_setopt(curl_handle, CURLOPT_URL, url_data); - - /* send all data to this function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); - - /* we pass our 'chunk' struct to the callback function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); - - /* some servers don't like requests that are made without a user-agent - field, so we provide one */ - curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0"); - - /* get it! */ - res = curl_easy_perform(curl_handle); - - /* check for errors */ - if (res != CURLE_OK) - { - fprintf(stdout, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); - } - else - { - fprintf(stdout, "%ld bytes retrieved\n", (long)chunk.size); - // printf("%s\n", chunk.memory); - } - - /* cleanup curl stuff */ - curl_easy_cleanup(curl_handle); - - // free(chunk.memory); - - /* we're done with libcurl, so clean it up */ - curl_global_cleanup(); - - return chunk.memory; -#else - return url_data; -#endif -} - -int translate_language_slow_ccc(char *fromlang, char *translang, char *language, char *native) -{ - int failure = 0; - char return_data[65536]; - char new_lang_data[32768]; - char url_data[6000]; - char lang_data[8000]; - char new_data[16000]; - char temp_data[4096]; - strcpy(lang_data, ""); - strcpy(new_data, ""); - strcpy(return_data, ""); - int count; - for (count = 0; count < LANGCOUNT; count++) - { - strcpy(lang_data, ""); - strcpy(new_data, ""); - sprintf(temp_data, "%s", curlang_ccc[count]); - strcat(lang_data, temp_data); - int n; - int len = strlen(lang_data); - for (n = 0; n < len; n++) - { - char c = lang_data[n]; - if (c == ' ') - { - strcat(new_data, "%20"); - } - else if (c == '\n') - { - strcat(new_data, "%0a"); - } - else - { - strncat(new_data, &c, 1); - } - } - // fprintf (stdout, "%s\n", new_data); - - strcpy(url_data, "https://translate.googleapis.com/translate_a/single?client=gtx&sl="); - strcat(url_data, fromlang); - strcat(url_data, "&tl="); - strcat(url_data, translang); - strcat(url_data, "&dt=t&q="); - strcat(url_data, new_data); - - fprintf(stdout, "%d %s to %s ", count, fromlang, translang); - do_nanosleep_ccc(TRANSLATETIMERSLOW); // this is a timer to deal with google translator - char *data = get_translated_data_ccc(url_data); - // fprintf (stdout, "%s\n", data); - strcpy(return_data, data); - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", return_data); - - strcpy(new_lang_data, ""); - int return_length = strlen(return_data); - int i; - for (i = 0; i < return_length; i++) - { - if (return_data[i] == '[') - { - if (return_data[i + 1] == '"') - { - int n = i + 2; - while (n < return_length) - { - if (return_data[n] == '"') - { - break; - } - else if (return_data[n] == '\\' && return_data[n + 1] == 'n') - { - strcat(new_lang_data, "\n"); - if (return_data[n + 2] == '\\' && return_data[n + 3] == 'n') - { - strcat(new_lang_data, "\n"); - } - if (return_data[n + 4] == '\\' && return_data[n + 5] == 'n') - { - strcat(new_lang_data, "\n"); - } - break; - } - char c = return_data[n]; - strncat(new_lang_data, &c, 1); - n++; - i = n; - } - } - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", new_lang_data); - if (strlen(new_lang_data) >= MAXLANGLENGTH) - { - fprintf(stdout, "Warning: language count %d exceeded max length and was truncated.\n", count); - failure = 1; - } - strcpy(newlang_ccc[count], new_lang_data); - } - - char langfile[256]; - strcpy(langfile, language); - strcat(langfile, "("); - strcat(langfile, native); - strcat(langfile, ")"); - if (failure) - { - strcat(langfile, "_FAILED_TRANSLATION"); - } - FILE *writefile; - writefile = fopen(langfile, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], langfile, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - fprintf(writefile, "%s", program_title); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|__|%04d|__|\n", i); - fprintf(writefile, "%s", newlang_ccc[i]); - } - - fclose(writefile); - chmod(langfile, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - return failure; -} - -int print_gui_error_message_ccc(char *message, char *title, int type) -{ - if (!superclone_ccc) - { - message_now_ccc(message); - } - else if (check_message_ccc && (do_call_command_ccc || activate_primary_relay_on_error_ccc)) - { - g_print("%s\n", message); - } - else - { - GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - GtkWidget *dialog; - GtkDialogFlags message_type; - if (type) - { - message_type = (GtkDialogFlags)GTK_MESSAGE_WARNING; - // dialog = gtk_message_dialog_new(GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "%s", message); - } - else - { - message_type = (GtkDialogFlags)GTK_MESSAGE_INFO; - // dialog = gtk_message_dialog_new(GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", message); - } - dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, (GtkMessageType)message_type, GTK_BUTTONS_OK, "%s", message); - gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); - gtk_window_set_title(GTK_WINDOW(dialog), title); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - gtk_widget_destroy(window); - } - - check_message_ccc = false; - return 0; -} - -void export_language_file_ccc(void) -{ - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGEXPORTLANG], - GTK_WINDOW(language_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - file_export_sel_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); -} - -// get the export filename and load it -static void file_export_sel_ccc(char *export_file) -{ - FILE *writefile; - writefile = fopen(export_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGEXPORTERR], export_file, strerror(errno)); - message_error_ccc(tempmessage_ccc); - // print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - fprintf(writefile, "%s", program_title); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|__|%04d|__|\n", i); - fprintf(writefile, "%s", enlang_ccc[i]); - } - - fclose(writefile); - chmod(export_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); -} - -void import_language_file_ccc(void) -{ - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGIMPORTLANG], - GTK_WINDOW(language_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (access(OSC_LANG_PATH, F_OK) == 0) - { - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), OSC_LANG_PATH); - g_print("found installed languages\n"); - } - else if (access("Language/English", F_OK) == 0) - { - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), "Language"); - g_print("found languages locally\n"); - } - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - file_import_sel_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); -} - -// get the import filename and load it -static void file_import_sel_ccc(char *import_file) -{ - FILE *readfile; - readfile = fopen(import_file, "r"); - if (readfile == NULL) - { - sprintf(tempmessage_ccc, "%s: %s (%s)", curlang_ccc[LANGLANGIMPORTERR], import_file, strerror(errno)); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - - char line[MAXLANGLENGTH]; - int count = 0; - int found_count = -1; - char found_title[MAXLANGLENGTH] = ""; - int firstline = 1; - - while (fgets(line, sizeof line, readfile)) - { - if (firstline) - { - strncpy(found_title, line, MAXLANGLENGTH - 1); - firstline = 0; - } - else - { - int scanline; - int new_count = -1; - scanline = sscanf(line, "| _ _ | %d | _ _ |", &new_count); - if (scanline == 1) - { - // fprintf (stdout, "num=%d, line=%s", new_count, line); - // remove the last new line from the end - if (found_count >= 0) - { - int l = strlen(newlang_ccc[found_count]); - if (l > 0 && newlang_ccc[found_count][l - 1] == '\n') - { - newlang_ccc[found_count][l - 1] = '\0'; - } - } - found_count = new_count; - strcpy(newlang_ccc[found_count], ""); - count++; - } - else if (found_count >= 0 && found_count < LANGCOUNT) - { - unsigned int l = strlen(newlang_ccc[found_count]); - strncat(newlang_ccc[found_count], line, MAXLANGLENGTH - l - 1); - // fprintf (stdout, "%s", newlang_ccc[found_count]); - if (MAXLANGLENGTH - l < strlen(line)) - { - g_print("Warning: language count %d exceeded max length and was truncated.\n", found_count); - } - } - } - } - - count--; - if (count == found_count && count == LANGCOUNT - 1) - { - copy_newlanguage_ccc(); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGLANGCHANGESUCCESS]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGSUCCESS], 0); - clear_error_message_ccc(); - } - else - { - fprintf(stdout, "count=%d found_count=%d LANGCOUNT=%d\n", count, found_count, LANGCOUNT - 1); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGLANGIMPORTERR2]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - fclose(readfile); - } -} - -void select_file_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGLOADPROJFILE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - clear_source_ccc(); - clear_destination_ccc(); - project_chosen_ccc = 0; - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - load_log_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void new_file_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGNEWPROJFILE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - clear_source_ccc(); - clear_destination_ccc(); - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - new_log_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void new_domain_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGNEWDOMAINFILE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - new_domain_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void select_ddrescue_file_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (!new_project_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGCHOOSENEWPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGIMPORTDD], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - load_ddrescue_log_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void save_file_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - return_value_ccc = write_logfile_ccc(log_file_ccc, 0); - if (return_value_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGWRITEERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - } -} - -void save_file_as_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGSAVEPROJFILE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - return_value_ccc = write_logfile_ccc(filename, 0); - if (return_value_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGWRITEERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void save_domain_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - return_value_ccc = write_domainfile_ccc(domain_file_ccc, 0); - if (return_value_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGWRITEERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - } -} - -void save_domain_as_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGSAVEDOMAINFILEAS], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - return_value_ccc = write_domainfile_ccc(filename, 0); - if (return_value_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGWRITEERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void export_ddrescue_file_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGEXPORTDD], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - return_value_ccc = write_ddrescue_logfile_ccc(filename); - if (return_value_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGEXPORTERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void select_domain_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGDOMAIN], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - load_domain_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -void add_domain_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (1 && !do_domain_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNODOMAIN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGADDDOMAINFILE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - // load_domain_file_ccc(filename); - add_domain_file_ccc(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); - } -} - -// Get the selected filename and load it -static void load_log_file_ccc(char *log_file) -{ - gtk_label_set_text(GTK_LABEL(main_label), ""); - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - log_file_ccc = malloc(1024); - memset(log_file_ccc, 0, 1024); - strncpy(log_file_ccc, log_file, 1024); - printf("%s\n", log_file_ccc); - - // initialize memory - return_value_ccc = initialize_logfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - } - - else - { - int ret = read_log_file_ccc(log_file_ccc); - int ret2 = 0; - if (ret != 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - check_log_size_ccc = 0; - ret = check_log_ccc(); - // if only same status then repair log automatically - if (ret == 0x10) - { - ret2 = check_and_repair_log_ccc(); - clear_error_message_ccc(); - ret = check_log_ccc(); - } - check_log_size_ccc = 1; - if (ret != 0 || ret2 != 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGCHECKERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGWARN], 1); - clear_error_message_ccc(); - } - - project_chosen_ccc = 1; - new_project_ccc = 0; - data_read_from_log_ccc = 1; - clear_destination_ccc(); - clear_source_ccc(); - set_initial_data_from_log_ccc(new_project_ccc); - logfile_changed_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - } -} - -// Get the selected ddrescue filename and load it -static void load_ddrescue_log_file_ccc(char *log_file) -{ - gtk_label_set_text(GTK_LABEL(main_label), ""); - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - ddilog_file_ccc = malloc(1024); - memset(ddilog_file_ccc, 0, 1024); - strncpy(ddilog_file_ccc, log_file, 1024); - printf("%s\n", ddilog_file_ccc); - - // initialize memory - return_value_ccc = initialize_logfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - } - - else - { - int ret = read_ddrescue_log_ccc(ddilog_file_ccc); - int ret2 = 0; - if (ret != 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - importdd_ccc = true; - ret = check_log_ccc(); - if (ret) - { - sprintf(tempmessage_ccc, "There were errors found in the progress log file\n"); - message_now_ccc(tempmessage_ccc); - ret2 = check_and_repair_log_ccc(); - sprintf(tempmessage_ccc, "Checking the progress log file again to make sure it was fixed correctly.\n"); - message_now_ccc(tempmessage_ccc); - ret = check_log_ccc(); - if (ret != 0 || ret2 != 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGCHECKERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGWARN], 1); - clear_error_message_ccc(); - } - } - importdd_ccc = false; - - project_chosen_ccc = 1; - new_project_ccc = 0; - clear_destination_ccc(); - clear_source_ccc(); - set_initial_data_from_log_ccc(new_project_ccc); - logfile_changed_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - } -} - -// Get the selected domain and load it -static void load_domain_file_ccc(char *log_file) -{ - gtk_label_set_text(GTK_LABEL(main_label), ""); - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file, 1024); - printf("%s\n", domain_file_ccc); - - // initialize memory - return_value_ccc = initialize_domainfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - } - - else - { - int ret = read_domain_file_ccc(domain_file_ccc); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - do_domain_ccc = false; - } - else - { - do_domain_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - } -} - -// Get the selected domain and load it -static void add_domain_file_ccc(char *log_file) -{ - gtk_label_set_text(GTK_LABEL(main_label), ""); - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - printf("%s\n", log_file); - - int ret = read_domain_add_file_ccc(log_file); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - update_display_ccc(0); -} - -void clear_domain_ccc(void) -{ - if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - initialize_domainfile_memory_ccc(); - if (domain_file_ccc != NULL) - { - free(domain_file_ccc); - } - domain_file_ccc = malloc(1024); - memset(domain_file_ccc, 0, 1024); - do_domain_ccc = false; - } - update_display_ccc(0); -} - -// Get the selected filename and set it -static void new_log_file_ccc(char *log_file) -{ - log_file_ccc = malloc(1024); - memset(log_file_ccc, 0, 1024); - strncpy(log_file_ccc, log_file, 1024); - printf("%s\n", log_file_ccc); - - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file_ccc, 1016); - strcat(domain_file_ccc, ".domain"); - remove(domain_file_ccc); - clear_domain_ccc(); - - // initialize memory - return_value_ccc = initialize_logfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - } - project_chosen_ccc = 1; - new_project_ccc = 1; - data_read_from_log_ccc = 0; - enable_extended_analyze_ccc = false; - clear_destination_ccc(); - clear_source_ccc(); - clear_variables_for_new_project_ccc(); - initialize_new_log_ccc(); - logfile_changed_ccc = true; - set_initial_data_from_log_ccc(new_project_ccc); - logfile_changed_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); -} - -static void new_domain_file_ccc(char *log_file) -{ - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file, 1024); - printf("%s\n", domain_file_ccc); - - // initialize memory - return_value_ccc = initialize_domainfile_memory_ccc(); - if (return_value_ccc != 0) - { - exitcode_ccc = GENERAL_ERROR_EXIT_CODE; - } - initialize_domain_log_ccc(); - do_domain_ccc = true; - domainfile_changed_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); -} - -// open choose source dialog window -void choose_source_ccc(void) -{ - usb_lun_set_ccc = 0; - bool use_rebuild_assist_bak = use_rebuild_assist_ccc; - use_rebuild_assist_ccc = false; - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (memory_failed_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGBUFFERADDRESSRANGE]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (copy_image_mode_ccc) - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGCHOOSEIMAGE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - free(disk_1_ccc); - disk_1_ccc = malloc(strlen(filename) + 2); - strcpy(disk_1_ccc, filename); - g_free(filename); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - update_display_ccc(0); - - if (!connect_source_disk_ccc() && !process_source_ccc() && !check_and_adjust_variables_after_choosing_source_ccc(new_project_ccc)) - { - source_chosen_ccc = 1; - if (new_project_ccc) - { - initialize_new_log_ccc(); - logfile_changed_ccc = true; - set_initial_data_from_log_ccc(new_project_ccc); - logfile_changed_ccc = true; - } - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file_ccc, 1016); - strcat(domain_file_ccc, ".domain"); - printf("%s\n", domain_file_ccc); - if (access(domain_file_ccc, F_OK) != -1) - { - int ret = read_domain_file_ccc(domain_file_ccc); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - clear_domain_ccc(); - // initialize_domainfile_memory_ccc(); - // initialize_domain_log_ccc(); - } - } - else - { - initialize_domain_log_ccc(); - // domainfile_changed_ccc = true; - } - } - else - { - fprintf(stdout, "error selecting source\n"); - clear_source_ccc(); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGSOURCEERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - release_devices_ccc(); - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - gtk_widget_destroy(dialog); - } - else - { - if (memory_used_ccc) - { - initialize_memory_ccc(); - } - find_all_devices_ccc(); - - choose_source_dialog_window_ccc = gtk_dialog_new_with_buttons(curlang_ccc[LANGSOURCE], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - // gtk_window_set_title (GTK_WINDOW (choose_source_dialog_window_ccc), "GtkScrolledWindow example"); - gtk_container_set_border_width(GTK_CONTAINER(choose_source_dialog_window_ccc), 0); - gtk_widget_set_size_request(choose_source_dialog_window_ccc, 600, 400); - - choose_source_scrolled_window_ccc = gtk_scrolled_window_new(NULL, NULL); - gtk_container_set_border_width(GTK_CONTAINER(choose_source_scrolled_window_ccc), 10); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(choose_source_scrolled_window_ccc), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(choose_source_dialog_window_ccc)->vbox), choose_source_scrolled_window_ccc, TRUE, TRUE, 0); - - choose_source_vbox_ccc = gtk_vbox_new(FALSE, 0); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(choose_source_scrolled_window_ccc), choose_source_vbox_ccc); - - GtkWidget *button[MAX_DEVICES]; - - if (ahci_mode_ccc) - { - int i; - for (i = 0; i < device_count_ccc; i++) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - if (verbose_ccc & DEBUG6) - { - sprintf(button_label, "%s %s %s %s %llx %d %llx (%lld) %s %s", device_driver_ccc[i], device_bus_ccc[i], device_reference_ccc[i], device_name_ccc[i], hba_address_ccc[i], port_number_ccc[i], port_address_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - else if (verbose_ccc & DEBUG5) - { - sprintf(button_label, "%s %s %llx %d %llx (%lld) %s %s", device_reference_ccc[i], device_name_ccc[i], hba_address_ccc[i], port_number_ccc[i], port_address_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - else - { - sprintf(button_label, "%s %s (%lld) %s %s", device_reference_ccc[i], device_name_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_source_from_button_ccc), GINT_TO_POINTER(i)); - } - } - else if (direct_mode_ccc) - { - int i; - for (i = 0; i < device_count_ccc; i++) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - if (verbose_ccc & DEBUG6) - { - sprintf(button_label, "%s %s %s %s %llx %llx %llx %d (%lld) %s %s", device_driver_ccc[i], device_bus_ccc[i], device_reference_ccc[i], device_name_ccc[i], reg_address_ccc[i], control_address_ccc[i], bus_address_ccc[i], device_select_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - else if (verbose_ccc & DEBUG5) - { - sprintf(button_label, "%s %s %llx %llx %llx %d (%lld) %s %s", device_reference_ccc[i], device_name_ccc[i], reg_address_ccc[i], control_address_ccc[i], bus_address_ccc[i], device_select_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - else - { - sprintf(button_label, "%s %s (%lld) %s %s", device_reference_ccc[i], device_name_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - } - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_source_from_button_ccc), GINT_TO_POINTER(i)); - } - } - else if (usb_mode_ccc) - { - int i; - for (i = 0; i < usb_device_count_ccc; i++) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - if (verbose_ccc & DEBUG6) - { - sprintf(button_label, "%d:%d %04x:%04x %02x %02x %d %s %s %s\n", usb_bus_real_number_ccc[i], usb_device_number_ccc[i], usb_vendor_id_ccc[i], usb_product_id_ccc[i], usb_bulk_in_endpoint_ccc[i], usb_bulk_out_endpoint_ccc[i], usb_mass_storage_ccc[i], usb_vendor_string_ccc[i], usb_product_string_ccc[i], usb_extra_id_string_ccc[i]); - } - else if (verbose_ccc & DEBUG5) - { - sprintf(button_label, "%d:%d %04x:%04x %s %s %s\n", usb_bus_real_number_ccc[i], usb_device_number_ccc[i], usb_vendor_id_ccc[i], usb_product_id_ccc[i], usb_vendor_string_ccc[i], usb_product_string_ccc[i], usb_extra_id_string_ccc[i]); - } - else - { - sprintf(button_label, "%d:%d %04x:%04x %s %s\n", usb_bus_real_number_ccc[i], usb_device_number_ccc[i], usb_vendor_id_ccc[i], usb_product_id_ccc[i], usb_vendor_string_ccc[i], usb_product_string_ccc[i]); - } - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_usb_from_button_ccc), GINT_TO_POINTER(i)); - } - } - else - { - int i; - for (i = 0; i < device_count_ccc; i++) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - sprintf(button_label, "%s (%lld) %s %s", drive_list_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_source_from_button_ccc), GINT_TO_POINTER(i)); - } - } - - int i; - if (usb_mode_ccc) - { - for (i = 0; i < usb_device_count_ccc; i++) - { - if ((verbose_ccc & DEBUG6) || (verbose_ccc & DEBUG5) || usb_mass_storage_ccc[i]) - { - gtk_box_pack_start(GTK_BOX(choose_source_vbox_ccc), button[i], FALSE, FALSE, 0); - } - } - } - else - { - for (i = 0; i < device_count_ccc; i++) - { - gtk_box_pack_start(GTK_BOX(choose_source_vbox_ccc), button[i], FALSE, FALSE, 0); - } - } - - gtk_widget_show_all(choose_source_dialog_window_ccc); - gint result = gtk_dialog_run(GTK_DIALOG(choose_source_dialog_window_ccc)); - gtk_widget_destroy(choose_source_dialog_window_ccc); - - if (result == GTK_RESPONSE_ACCEPT) - { - // fprintf (stdout, "OK\n"); - // TODO it crashes here on scsi devices - fixed - - // disable the window while it is processing the source - gtk_widget_set_sensitive(GTK_WIDGET(main_window_ccc), FALSE); - - clear_source_ccc(); - int ret = choose_device_ccc(); - if (ahci_mode_ccc) - { - hba_reset_address_ccc = hba_base_address_ccc; - port_reset_address_ccc = port_base_address_ccc; - } - if (ret) - { - if (ret == -100) - { - clear_source_ccc(); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGSOURCEERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (ret == -200) - { - fprintf(stdout, "error selecting source, ret=%d\n", ret); - clear_source_ccc(); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGSOURCEERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - fprintf(stdout, "error selecting source, ret=%d\n", ret); - clear_source_ccc(); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGSOURCEERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - } - else if (!connect_source_disk_ccc() && !process_source_ccc() && !check_and_adjust_variables_after_choosing_source_ccc(new_project_ccc)) - { - source_chosen_ccc = 1; - if (new_project_ccc) - { - initialize_new_log_ccc(); - logfile_changed_ccc = true; - set_initial_data_from_log_ccc(new_project_ccc); - logfile_changed_ccc = true; - } - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file_ccc, 1016); - strcat(domain_file_ccc, ".domain"); - printf("%s\n", domain_file_ccc); - if (access(domain_file_ccc, F_OK) != -1) - { - int ret = read_domain_file_ccc(domain_file_ccc); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - clear_domain_ccc(); - // initialize_domainfile_memory_ccc(); - // initialize_domain_log_ccc(); - } - } - else - { - initialize_domain_log_ccc(); - // domainfile_changed_ccc = true; - } - } - else - { - fprintf(stdout, "error selecting source\n"); - clear_source_ccc(); - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGSOURCEERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - release_devices_ccc(); - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - - // re-enable the window - gtk_widget_set_sensitive(GTK_WIDGET(main_window_ccc), TRUE); - } - } - use_rebuild_assist_ccc = use_rebuild_assist_bak; -} - -void get_source_from_button_ccc(GtkWidget *w, gpointer data) -{ - new_source_ccc = GPOINTER_TO_INT(data); - g_print("selection=%d \n", new_source_ccc); -} - -void choose_destination_drive_ccc(void) -{ - destination_is_generic_ccc = false; - choose_destination_ccc(); -} - -void choose_destination_block_ccc(void) -{ - destination_is_generic_ccc = true; - choose_destination_ccc(); -} - -// open choose destination dialog window -void choose_destination_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - bool direct_mode_bak = direct_mode_ccc; - bool ahci_mode_bak = ahci_mode_ccc; - bool ata_passthrough_bak = ata_passthrough_ccc; - bool scsi_passthrough_bak = scsi_passthrough_ccc; - bool generic_mode_ccc_bak = generic_mode_ccc; - bool usb_mode_bak = usb_mode_ccc; - - direct_mode_ccc = false; - ahci_mode_ccc = false; - ata_passthrough_ccc = false; - scsi_passthrough_ccc = !destination_is_generic_ccc; - generic_mode_ccc = destination_is_generic_ccc; - usb_mode_ccc = false; - if (memory_used_ccc) - { - initialize_memory_ccc(); - } - find_all_devices_ccc(); - direct_mode_ccc = direct_mode_bak; - ahci_mode_ccc = ahci_mode_bak; - ata_passthrough_ccc = ata_passthrough_bak; - scsi_passthrough_ccc = scsi_passthrough_bak; - generic_mode_ccc = generic_mode_ccc_bak; - usb_mode_ccc = usb_mode_bak; - - choose_destination_dialog_window_ccc = gtk_dialog_new_with_buttons(curlang_ccc[LANGDESTINATION], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - // gtk_window_set_title (GTK_WINDOW (choose_source_dialog_window_ccc), "GtkScrolledWindow example"); - gtk_container_set_border_width(GTK_CONTAINER(choose_destination_dialog_window_ccc), 0); - gtk_widget_set_size_request(choose_destination_dialog_window_ccc, 600, 400); - - choose_destination_scrolled_window_ccc = gtk_scrolled_window_new(NULL, NULL); - gtk_container_set_border_width(GTK_CONTAINER(choose_destination_scrolled_window_ccc), 10); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(choose_destination_scrolled_window_ccc), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(choose_destination_dialog_window_ccc)->vbox), choose_destination_scrolled_window_ccc, TRUE, TRUE, 0); - - choose_destination_vbox_ccc = gtk_vbox_new(FALSE, 0); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(choose_destination_scrolled_window_ccc), choose_destination_vbox_ccc); - - GtkWidget *button[MAX_DEVICES]; - - int i; - for (i = 0; i < device_count_ccc; i++) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - sprintf(button_label, "%s (%lld) %s %s", drive_list_ccc[i], drive_size_ccc[i], model_ccc[i], serial_ccc[i]); - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_destination_from_button_ccc), GINT_TO_POINTER(i)); - } - - for (i = 0; i < device_count_ccc; i++) - { - gtk_box_pack_start(GTK_BOX(choose_destination_vbox_ccc), button[i], FALSE, FALSE, 0); - } - - gtk_widget_show_all(choose_destination_dialog_window_ccc); - gint result = gtk_dialog_run(GTK_DIALOG(choose_destination_dialog_window_ccc)); - gtk_widget_destroy(choose_destination_dialog_window_ccc); - - if (result == GTK_RESPONSE_ACCEPT) - { - // fprintf (stdout, "OK\n"); - generic_mode_ccc = destination_is_generic_ccc; - int ret = choose_target_ccc(); - generic_mode_ccc = generic_mode_ccc_bak; - if (ret) - { - fprintf(stdout, "error selecting destination, ret=%d\n", ret); - clear_destination_ccc(); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGDESTINATIONERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - destination_chosen_ccc = 1; - destination_size_valid_ccc = 1; - logfile_changed_ccc = true; - - if (driver_only_ccc) - { - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file_ccc, 1016); - strcat(domain_file_ccc, ".domain"); - printf("%s\n", domain_file_ccc); - if (access(domain_file_ccc, F_OK) != -1) - { - int ret = read_domain_file_ccc(domain_file_ccc); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - clear_domain_ccc(); - // initialize_domainfile_memory_ccc(); - // initialize_domain_log_ccc(); - } - } - else - { - initialize_domain_log_ccc(); - domainfile_changed_ccc = true; - } - } - } - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - } -} - -void get_destination_from_button_ccc(GtkWidget *w, gpointer data) -{ - new_destination_ccc = GPOINTER_TO_INT(data); - g_print("selection=%d \n", new_destination_ccc); -} - -void choose_image_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang_ccc[LANGCHOOSEIMAGE], - GTK_WINDOW(main_window_ccc), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - // gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - int confirmed = 1; - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - if (access(filename, F_OK) == 0) - { - sprintf(tempmessage_ccc, " %s \n%s", filename, curlang_ccc[LANGCONFIRMIMAGEFILE]); - if (!open_confirmation_dialog_ccc(tempmessage_ccc)) - { - confirmed = 0; - } - } - if (confirmed) - { - fprintf(stdout, "%s\n", filename); - free(disk_2_ccc); - disk_2_ccc = malloc(strlen(filename) + 2); - strcpy(disk_2_ccc, filename); - destination_chosen_ccc = 1; - destination_size_valid_ccc = 0; - strcpy(current_destination_model_ccc, ""); - strcpy(current_destination_serial_ccc, ""); - logfile_changed_ccc = true; - - if (driver_only_ccc) - { - clear_domain_ccc(); - strncpy(domain_file_ccc, log_file_ccc, 1016); - strcat(domain_file_ccc, ".domain"); - printf("%s\n", domain_file_ccc); - if (access(domain_file_ccc, F_OK) != -1) - { - int ret = read_domain_file_ccc(domain_file_ccc); - if (ret < 0) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGLOADERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - clear_domain_ccc(); - // initialize_domainfile_memory_ccc(); - // initialize_domain_log_ccc(); - } - } - else - { - initialize_domain_log_ccc(); - domainfile_changed_ccc = true; - } - } - - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - } - g_free(filename); - gtk_widget_destroy(dialog); - } - } -} - -void choose_null_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (connected_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSTILLCONNECTED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - fprintf(stdout, "/dev/null\n"); - free(disk_2_ccc); - disk_2_ccc = malloc(16); - strcpy(disk_2_ccc, "/dev/null"); - strcpy(current_destination_model_ccc, curlang_ccc[LANGNODESTINATION]); - strcpy(current_destination_serial_ccc, ""); - logfile_changed_ccc = true; - update_display_ccc(0); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - destination_chosen_ccc = 1; - destination_size_valid_ccc = 0; - } -} - -void connect_devices_ccc(void) -{ - int relaycheck = 1; - if ((activate_primary_relay_on_error_ccc || power_cycle_primary_relay_ccc) && !(fill_mode_ccc || driver_only_ccc) && !usbr1_chosen_ccc) - { - relaycheck = 0; - } - if (memory_failed_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGBUFFERADDRESSRANGE]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else if (relaycheck && project_chosen_ccc && destination_chosen_ccc && (fill_mode_ccc || driver_only_ccc)) - { - check_log_size_ccc = 0; - // check log and if only same status then repair automatically - int ret = check_log_ccc(); - int ret2 = 0; - if (ret == 0x10) - { - clear_error_message_ccc(); - ret2 = check_and_repair_log_ccc(); - ret = check_log_ccc(); - } - if (new_project_ccc && !fill_mode_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGMISSINGSOURCE]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else if (ret || ret2) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGCHECKERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else if (driver_only_ccc && !driver_installed_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGMISSINGDRIVER]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else - { - if (open_target_destination_ccc()) - { - release_devices_ccc(); - strcpy(tempmessage_ccc, curlang_ccc[LANGCONNECTIONERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else - { - // strcpy (tempmessage_ccc, curlang_ccc[LANGCONNECTED]); - // message_error_ccc(tempmessage_ccc); - // print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGSUCCESS], 0); - // clear_error_message_ccc(); - check_and_adjust_variables_after_connection_ccc(); - set_connected_ccc(); - } - } - } - else if (relaycheck && project_chosen_ccc && source_chosen_ccc && destination_chosen_ccc) - { - check_log_size_ccc = 1; - // check log and if only same status then repair automatically - int ret = check_log_ccc(); - int ret2 = 0; - if (ret == 0x10) - { - clear_error_message_ccc(); - ret2 = check_and_repair_log_ccc(); - ret = check_log_ccc(); - } - if (check_same_device_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGSAMEDEVICE]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else if (ret || ret2) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGCHECKERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else - { - if (connect_source_disk_ccc() || open_target_destination_ccc()) - { - release_devices_ccc(); - strcpy(tempmessage_ccc, curlang_ccc[LANGCONNECTIONERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - set_disconnected_ccc(); - } - else - { - // strcpy (tempmessage_ccc, curlang_ccc[LANGCONNECTED]); - // message_error_ccc(tempmessage_ccc); - // print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGSUCCESS], 0); - // clear_error_message_ccc(); - if (!enable_scsi_write_ccc && destination_size_valid_ccc && source_total_size_ccc > target_total_size_ccc) - { - fprintf(stdout, "Warning! Destination is smaller than souce.\n"); - fprintf(stdout, "Source size= %lld\n", source_total_size_ccc); - fprintf(stdout, "Target size= %lld\n", target_total_size_ccc); - strcpy(tempmessage_ccc, curlang_ccc[LANGDESTINATIONTOOSMALL]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGWARN], 1); - clear_error_message_ccc(); - } - check_and_adjust_variables_after_connection_ccc(); - set_connected_ccc(); - new_project_ccc = 0; - } - } - } - else - { - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGMISSINGPROJECT]); - message_error_ccc(tempmessage_ccc); - } - if (!source_chosen_ccc && !(fill_mode_ccc || driver_only_ccc)) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGMISSINGSOURCE]); - message_error_ccc(tempmessage_ccc); - } - if (!destination_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGMISSINGDESTINATION]); - message_error_ccc(tempmessage_ccc); - } - strcpy(tempmessage_ccc, curlang_ccc[LANGDONTCONNECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - if (!relaycheck) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - } - ata_status_ccc = 0; - ata_error_ccc = 0; - update_display_ccc(0); -} - -void start_display_status_update_timer_ccc(void) -{ - // g_print ("start=%d timer=%d\n", display_status_timer_ccc, display_status_timer_running_ccc); //debug - if (direct_mode_ccc && !display_status_timer_running_ccc) - { - display_status_timer_ccc = gtk_timeout_add(500, display_status_update_action_ccc, NULL); - display_status_timer_running_ccc = 1; - } -} - -void stop_display_status_update_timer_ccc(void) -{ - if (display_status_timer_running_ccc) - { - gtk_timeout_remove(display_status_timer_ccc); - display_status_timer_running_ccc = 0; - } -} - -gint display_status_update_action_ccc(gpointer data) -{ - if (fill_mode_ccc || !connected_ccc || running_clone_ccc) - { - display_status_timer_running_ccc = 0; - return 0; - } - // g_print ("timer\n"); //debug - refresh_status_ccc(current_disk_ccc); - update_gui_status_buttons_ccc(); - data = data; - return 1; -} - -void disconnect_devices_ccc(void) -{ - release_devices_ccc(); - connected_ccc = 0; - // strcpy (tempmessage_ccc, curlang_ccc[LANGDISCONNECTED]); - // message_error_ccc(tempmessage_ccc); - // print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGSUCCESS], 0); - // clear_error_message_ccc(); - set_disconnected_ccc(); - ata_status_ccc = 0; - ata_error_ccc = 0; - update_display_ccc(0); -} - -void set_connected_ccc(void) -{ - if (driver_mode_ccc && (strcmp(disk_2_ccc, "/dev/null") == 0)) - { - clear_error_message_ccc(); - strcpy(tempmessage_ccc, curlang_ccc[LANGWARNINGNULLDRIVER]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGWARN], 0); - clear_error_message_ccc(); - } - connected_ccc = 1; - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(modemi_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(drivesmi_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(primaryrelaymi_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(chooseprimaryrelaymi_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), driver_only_ccc ? FALSE : TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(activate_primary_relay_button_main_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(deactivate_primary_relay_button_main_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), TRUE); - if (driver_installed_ccc) - { - set_driver_mode_button_status_ccc(TRUE); - } - start_display_status_update_timer_ccc(); - stop_signal_ccc = false; - process_dma_mode_ccc(); -} - -void set_disconnected_ccc(void) -{ - connected_ccc = 0; - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(modemi_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(drivesmi_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(primaryrelaymi_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(chooseprimaryrelaymi_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(activate_primary_relay_button_main_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(deactivate_primary_relay_button_main_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), FALSE); - set_driver_mode_button_status_ccc(FALSE); - stop_display_status_update_timer_ccc(); -} - -void clear_source_ccc(void) -{ - source_chosen_ccc = 0; - disk_1_ccc = NULL; - strcpy(current_source_model_ccc, ""); - strcpy(current_source_serial_ccc, ""); - source_total_size_ccc = 0; -} - -void clear_destination_ccc(void) -{ - destination_chosen_ccc = 0; - disk_2_ccc = NULL; - strcpy(current_destination_model_ccc, ""); - strcpy(current_destination_serial_ccc, ""); -} - -void update_gui_display_ccc(void) -{ - gtk_label_set_text(GTK_LABEL(main_label), ""); - // gtk_label_set_text(GTK_LABEL(main_label), display_message_ccc); - - gtk_label_set_text(GTK_LABEL(data_project_ccc), display_output_ccc.logfile); - gtk_label_set_text(GTK_LABEL(data_domain_ccc), display_output_ccc.domainfile); - gtk_label_set_text(GTK_LABEL(data_source_ccc), display_output_ccc.source); - gtk_label_set_text(GTK_LABEL(data_destination_ccc), display_output_ccc.destination); - gtk_label_set_text(GTK_LABEL(data_totallba_ccc), display_output_ccc.totallba); - gtk_label_set_text(GTK_LABEL(data_lbatoread_ccc), display_output_ccc.lbatoread); - gtk_label_set_text(GTK_LABEL(data_domainsize_ccc), display_output_ccc.domainsize); - gtk_label_set_text(GTK_LABEL(data_runtime_ccc), display_output_ccc.runtime); - gtk_label_set_text(GTK_LABEL(data_remainingtime_ccc), display_output_ccc.remainingtime); - gtk_label_set_text(GTK_LABEL(data_currentposition_ccc), display_output_ccc.currentposition); - gtk_label_set_text(GTK_LABEL(data_currentstatus_ccc), display_output_ccc.currentstatus); - gtk_label_set_text(GTK_LABEL(data_currentrate_ccc), display_output_ccc.currentrate); - gtk_label_set_text(GTK_LABEL(data_recentrate_ccc), display_output_ccc.recentrate); - gtk_label_set_text(GTK_LABEL(data_totalrate_ccc), display_output_ccc.totalrate); - gtk_label_set_text(GTK_LABEL(data_skipsize_ccc), display_output_ccc.skipsize); - gtk_label_set_text(GTK_LABEL(data_slowskips_ccc), display_output_ccc.slowskips); - gtk_label_set_text(GTK_LABEL(data_skips_ccc), display_output_ccc.skips); - gtk_label_set_text(GTK_LABEL(data_skipruns_ccc), display_output_ccc.skipruns); - gtk_label_set_text(GTK_LABEL(data_skipresets_ccc), display_output_ccc.skipresets); - gtk_label_set_text(GTK_LABEL(data_runsize_ccc), display_output_ccc.runsize); - gtk_label_set_text(GTK_LABEL(data_finished_ccc), display_output_ccc.finished); - gtk_label_set_text(GTK_LABEL(data_nontried_ccc), display_output_ccc.nontried); - gtk_label_set_text(GTK_LABEL(data_nontrimmed_ccc), display_output_ccc.nontrimmed); - gtk_label_set_text(GTK_LABEL(data_nondivided_ccc), display_output_ccc.nondivided); - gtk_label_set_text(GTK_LABEL(data_nonscraped_ccc), display_output_ccc.nonscraped); - gtk_label_set_text(GTK_LABEL(data_bad_ccc), display_output_ccc.bad); - gtk_label_set_text(GTK_LABEL(data_datapreview_ccc), display_output_ccc.datapreview); - gtk_label_set_text(GTK_LABEL(data_longestreadtime_ccc), display_output_ccc.longestreadtime); - gtk_label_set_text(GTK_LABEL(data_filled_ccc), display_output_ccc.totalfilled); - gtk_label_set_text(GTK_LABEL(data_retried_ccc), display_output_ccc.retried); - gtk_label_set_text(GTK_LABEL(data_retrypasses_ccc), display_output_ccc.retrypasses); - // gtk_label_set_text(GTK_LABEL(), display_output_ccc.); - // gtk_label_set_text(GTK_LABEL(), display_output_ccc.); - // gtk_label_set_text(GTK_LABEL(), display_output_ccc.); - // gtk_label_set_text(GTK_LABEL(), display_output_ccc.); - - update_status_buttons_ccc(); - run_gtk_gui_update_ccc(); -} - -void update_gui_status_buttons_ccc(void) -{ - update_status_buttons_ccc(); - run_gtk_gui_update_ccc(); -} - -void run_gtk_gui_update_ccc(void) -{ - while (gtk_events_pending()) - { - gtk_main_iteration(); - } -} - -void set_stop_signal_ccc(void) -{ - stop_signal_ccc = true; -} - -void set_clone_mode_ccc(void) -{ - if (driver_mode_ccc) - { - do_domain_ccc = true; - } - driver_mode_ccc = 0; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGCLONEMODE]); - update_display_ccc(0); -} - -void set_driver_mode1_ccc(void) -{ - do_domain_ccc = false; - check_driver_null_condition_ccc(); - driver_mode_ccc = 1; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGDRIVERMODE1]); - update_display_ccc(0); -} - -void set_driver_mode2_ccc(void) -{ - do_domain_ccc = false; - check_driver_null_condition_ccc(); - driver_mode_ccc = 2; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGDRIVERMODE2]); - update_display_ccc(0); -} - -void set_driver_mode3_ccc(void) -{ - do_domain_ccc = false; - check_driver_null_condition_ccc(); - driver_mode_ccc = 3; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGDRIVERMODE3]); - update_display_ccc(0); -} - -void set_driver_mode4_ccc(void) -{ - do_domain_ccc = false; - check_driver_null_condition_ccc(); - driver_mode_ccc = 4; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGDRIVERMODE4]); - update_display_ccc(0); -} - -void set_driver_mode5_ccc(void) -{ - do_domain_ccc = false; - check_driver_null_condition_ccc(); - driver_mode_ccc = 5; - gtk_label_set_text(GTK_LABEL(data_drivermode_ccc), curlang_ccc[LANGDRIVERMODE5]); - update_display_ccc(0); -} - -void check_driver_null_condition_ccc(void) -{ - // only check if coming from clone mode and destination string is not NULL - if (disk_2_ccc != NULL && driver_mode_ccc == 0 && (strcmp(disk_2_ccc, "/dev/null") == 0)) - { - clear_error_message_ccc(); - strcpy(tempmessage_ccc, curlang_ccc[LANGWARNINGNULLDRIVER]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGWARN], 0); - clear_error_message_ccc(); - } -} - -void set_driver_mode_button_status_ccc(bool active) -{ - if (driver_installed_ccc) - { - if (driver_only_ccc) - { - set_driver_mode4_ccc(); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode4_button_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(agressive_driver_checkbutton_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode1_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode2_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode3_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode5_button_ccc), FALSE); - } - else - { - gtk_widget_set_sensitive(GTK_WIDGET(agressive_driver_checkbutton_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode1_button_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode2_button_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode3_button_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode4_button_ccc), active); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode5_button_ccc), active); - } - } - else - { - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode4_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(agressive_driver_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode1_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode2_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode3_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(driver_mode5_button_ccc), FALSE); - } -} - -void start_cloning_ccc(void) -{ - int ret = 0; - stop_display_status_update_timer_ccc(); - stop_signal_ccc = false; - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(topmenubar_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), FALSE); - if (driver_mode_ccc) - { - set_driver_mode_button_status_ccc(TRUE); - } - else - { - set_driver_mode_button_status_ccc(FALSE); - } - - running_clone_ccc = 1; - memory_used_ccc = 1; - if (driver_mode_ccc == 0) - { - ret = begin_cloning_ccc(); - } - else - { - gtk_label_set_text(GTK_LABEL(label_filled_ccc), curlang_ccc[LANGLASTREADSIZELABEL]); - ret = begin_driver_ccc(); - gtk_label_set_text(GTK_LABEL(label_filled_ccc), curlang_ccc[LANGFILLEDLABEL]); - } - running_clone_ccc = 0; - update_logfile_ccc(0); - update_domainfile_ccc(0); - - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(topmenubar_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), driver_only_ccc ? FALSE : TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), TRUE); - set_driver_mode_button_status_ccc(TRUE); - - if (ret && ret != STOP_SIGNAL_RETURN_CODE) - { - disconnect_devices_ccc(); - } - start_display_status_update_timer_ccc(); -} - -void analyze_quick_ccc(void) -{ - enable_extended_analyze_ccc = false; - start_analyzing_ccc(); -} - -void analyze_long_ccc(void) -{ - enable_extended_analyze_ccc = true; - start_analyzing_ccc(); -} - -void start_analyzing_ccc(void) -{ - int ret = 0; - stop_display_status_update_timer_ccc(); - stop_signal_ccc = false; - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(topmenubar_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), FALSE); - - set_driver_mode_button_status_ccc(FALSE); - - memory_used_ccc = 1; - - int extended = 0; - int sections = MAXANALYZESECTIONS / 4; - if (enable_extended_analyze_ccc) - { - extended = 1; - sections = MAXANALYZESECTIONS; - } - - memset(analyze_read_attempts_ccc, 0, sizeof(analyze_read_attempts_ccc)); - memset(analyze_good_reads_ccc, 0, sizeof(analyze_good_reads_ccc)); - memset(analyze_bad_reads_ccc, 0, sizeof(analyze_bad_reads_ccc)); - memset(analyze_slow_reads_ccc, 0, sizeof(analyze_slow_reads_ccc)); - memset(analyze_timeouts_ccc, 0, sizeof(analyze_timeouts_ccc)); - memset(analyze_read_time_ccc, 0, sizeof(analyze_read_time_ccc)); - // memset (analyze_low_time_ccc, 0x7f, sizeof(analyze_low_time_ccc)); - memset(analyze_high_time_ccc, 0, sizeof(analyze_high_time_ccc)); - memset(analyze_text_ccc, 0, sizeof(analyze_text_ccc)); - memset(analyze_slow_position_ccc, 0, sizeof(analyze_slow_position_ccc)); - memset(analyze_slow_size_ccc, 0, sizeof(analyze_slow_size_ccc)); - // memset (analyze_slow_low_ccc, 0x7f, sizeof(analyze_slow_low_ccc)); - memset(analyze_slow_high_ccc, 0, sizeof(analyze_slow_high_ccc)); - analyze_slow_total_reads_ccc = 0; - int i; - for (i = 0; i < MAXANALYZESECTIONS; i++) - { - analyze_low_time_ccc[i] = 999999999999; - analyze_slow_low_ccc[i] = 999999999999; - } - running_analyze_ccc = 1; - gtk_label_set_text(GTK_LABEL(label_filled_ccc), curlang_ccc[LANGTOTALGOODBADLABEL]); - ret = analyze_drive_ccc(sections, extended); - gtk_label_set_text(GTK_LABEL(label_filled_ccc), curlang_ccc[LANGFILLEDLABEL]); - running_analyze_ccc = 0; - - long long average_read_time[MAXANALYZESECTIONS]; - memset(average_read_time, 0, sizeof(average_read_time)); - for (i = 0; i < sections; i++) - { - // prevent divid by 0 error - if (analyze_read_attempts_ccc[i] != 0) - { - average_read_time[i] = analyze_read_time_ccc[i] / analyze_read_attempts_ccc[i]; - } - } - - long long total_average_read_time = 0; - for (i = 0; i < sections; i++) - { - total_average_read_time = total_average_read_time + average_read_time[i]; - } - total_average_read_time = total_average_read_time / sections; - - long long total_low_time = analyze_low_time_ccc[0]; - for (i = 0; i < sections; i++) - { - if (analyze_low_time_ccc[i] < total_low_time) - { - total_low_time = analyze_low_time_ccc[i]; - } - } - - long long total_high_time = analyze_high_time_ccc[0]; - for (i = 0; i < sections; i++) - { - if (analyze_high_time_ccc[i] > total_high_time) - { - total_high_time = analyze_high_time_ccc[i]; - } - } - - int total_read_attempts = 0; - for (i = 0; i < sections; i++) - { - total_read_attempts = total_read_attempts + analyze_read_attempts_ccc[i]; - } - - int total_good_reads = 0; - for (i = 0; i < sections; i++) - { - total_good_reads = total_good_reads + analyze_good_reads_ccc[i]; - } - - int total_bad_reads = 0; - for (i = 0; i < sections; i++) - { - total_bad_reads = total_bad_reads + analyze_bad_reads_ccc[i]; - } - - int total_slow_reads = 0; - for (i = 0; i < sections; i++) - { - total_slow_reads = total_slow_reads + analyze_slow_reads_ccc[i]; - } - - int total_timeouts = 0; - for (i = 0; i < sections; i++) - { - total_timeouts = total_timeouts + analyze_timeouts_ccc[i]; - } - - float good_percent; - float bad_percent; - float slow_percent; - good_percent = 100.0f * total_good_reads / total_read_attempts; - bad_percent = 100.0f * total_bad_reads / total_read_attempts; - slow_percent = 100.0f * total_slow_reads / total_read_attempts; - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGGOOD], good_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGBAD], bad_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGSLOW], slow_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - - sprintf(tempmessage_ccc, "#\n"); - strcat(analyze_text_ccc, tempmessage_ccc); - - float slow_issue_percent; - if (slow_percent > 50.0f) - { - slow_issue_percent = slow_percent; - } - else - { - slow_issue_percent = slow_percent / 2.0f; - } - float slow_variance_percent = 0.0f; - if (1) - { - int slowsections = MAXANALYZESLOW / 4; - if (extended) - { - slowsections = MAXANALYZESLOW; - } - int slow_variance_count = 0; - for (i = 0; i < slowsections; i++) - { - if (analyze_slow_high_ccc[i] - analyze_slow_low_ccc[i] > skip_timeout_copy_ccc) - { - slow_variance_count++; - } - } - slow_variance_percent = 100.0f * slow_variance_count / slowsections; - } - slow_issue_percent = slow_issue_percent + slow_variance_percent; - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGSLOWRESPONDINGISSUE], slow_issue_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - - int consecutive_no_read_sections = 0; - int highest_no_read_sections = 0; - long long highest_read_time_sections = 0; - for (i = 0; i < sections; i++) - { - if (analyze_read_attempts_ccc[i] > 0 && analyze_good_reads_ccc[i] == 0) - { - consecutive_no_read_sections++; - if (highest_no_read_sections < consecutive_no_read_sections) - { - highest_no_read_sections = consecutive_no_read_sections; - } - if (highest_read_time_sections < analyze_high_time_ccc[i]) - { - highest_read_time_sections = analyze_high_time_ccc[i]; - } - } - else - { - consecutive_no_read_sections = 0; - } - } - float partial_access_percent = 100.0f * consecutive_no_read_sections / sections; - if (consecutive_no_read_sections > 0 && highest_read_time_sections < skip_timeout_copy_ccc) - { - partial_access_percent = partial_access_percent * 2.0f; - } - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGPARTIALACCESSISSUE], partial_access_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - - int bad_sections = 0; - for (i = 0; i < sections; i++) - { - if (analyze_bad_reads_ccc[i] > 0) - { - bad_sections++; - } - else if (analyze_slow_reads_ccc[i] > 0 && slow_issue_percent < 50.0f) - { - bad_sections++; - } - } - float bad_head_percent = 100.0f * bad_sections / sections; - sprintf(tempmessage_ccc, "# %s = %f%%\n", curlang_ccc[LANGBADORWEAKHEAD], bad_head_percent); - strcat(analyze_text_ccc, tempmessage_ccc); - - sprintf(tempmessage_ccc, "#\n"); - strcat(analyze_text_ccc, tempmessage_ccc); - - if (1) - { - sprintf(tempmessage_ccc, "# (%d) %s", analyze_slow_total_reads_ccc, curlang_ccc[LANGVARIANCEREADTIMES]); - strcat(analyze_text_ccc, tempmessage_ccc); - int slowsections = MAXANALYZESLOW / 4; - if (extended) - { - slowsections = MAXANALYZESLOW; - } - for (i = 0; i < slowsections; i++) - { - if ((i % 8) == 0) - { - sprintf(tempmessage_ccc, "\n# "); - strcat(analyze_text_ccc, tempmessage_ccc); - } - sprintf(tempmessage_ccc, "%lld/%lld ", analyze_slow_low_ccc[i] / 1000, analyze_slow_high_ccc[i] / 1000); - strcat(analyze_text_ccc, tempmessage_ccc); - } - strcat(analyze_text_ccc, "\n"); - } - - sprintf(tempmessage_ccc, "#\n"); - strcat(analyze_text_ccc, tempmessage_ccc); - - sprintf(tempmessage_ccc, "# %s %s %d %s %d %s %d (%d) %s %d %s %lld %s %lld %s %lld", curlang_ccc[LANGZONES], curlang_ccc[LANGTOTAL], total_read_attempts, curlang_ccc[LANGGOOD], total_good_reads, curlang_ccc[LANGBAD], total_bad_reads, total_timeouts, curlang_ccc[LANGSLOW], total_slow_reads, curlang_ccc[LANGLOW], total_low_time / 1000, curlang_ccc[LANGHIGH], total_high_time / 1000, curlang_ccc[LANGAVERAGE], total_average_read_time / 1000); - strcat(analyze_text_ccc, tempmessage_ccc); - - for (i = 0; i < sections; i++) - { - sprintf(tempmessage_ccc, "\n# %s %d %s %d %s %d %s %d (%d) %s %d %s %lld %s %lld %s %lld", curlang_ccc[LANGZONE], i, curlang_ccc[LANGTOTAL], analyze_read_attempts_ccc[i], curlang_ccc[LANGGOOD], analyze_good_reads_ccc[i], curlang_ccc[LANGBAD], analyze_bad_reads_ccc[i], analyze_timeouts_ccc[i], curlang_ccc[LANGSLOW], analyze_slow_reads_ccc[i], curlang_ccc[LANGLOW], analyze_low_time_ccc[i] / 1000, curlang_ccc[LANGHIGH], analyze_high_time_ccc[i] / 1000, curlang_ccc[LANGAVERAGE], average_read_time[i] / 1000); - strcat(analyze_text_ccc, tempmessage_ccc); - } - fprintf(stdout, "%s", analyze_text_ccc); - - display_analyze_results_ccc(); - - update_logfile_ccc(0); - - gtk_widget_set_sensitive(GTK_WIDGET(connect_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(disconnect_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(start_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(topmenubar_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(clone_mode_button_ccc), driver_only_ccc ? FALSE : TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(smart_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_button_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(analyze_long_button_ccc), TRUE); - if (driver_installed_ccc) - { - set_driver_mode_button_status_ccc(TRUE); - } - - if (ret && ret != STOP_SIGNAL_RETURN_CODE) - { - disconnect_devices_ccc(); - } - start_display_status_update_timer_ccc(); - logfile_changed_ccc = true; -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "analyze_results_dialog")); - GtkWidget *analyze_results_data_label = GTK_WIDGET(gtk_builder_get_object(builder, "analyze_results_data_label")); - // GtkWidget *analyze_results_box_label = GTK_WIDGET (gtk_builder_get_object (builder, "analyze_results_box_label")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(analyze_results_data_label), analyze_text_ccc); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGRESULTS]); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -void get_smart_data_ccc(void) -{ - stop_signal_ccc = false; - memset(smart_data_text_ccc, 0, sizeof(smart_data_text_ccc)); - int ret = extract_smart_data_ccc(); - if (ret == 0) - { - fprintf(stdout, "%s", smart_data_text_ccc); - display_smart_data_ccc(); - } - logfile_changed_ccc = true; -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "smart_results_dialog")); - GtkWidget *smart_results_data_label = GTK_WIDGET(gtk_builder_get_object(builder, "smart_results_data_label")); - // GtkWidget *smart_results_box_label = GTK_WIDGET (gtk_builder_get_object (builder, "smart_results_box_label")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(smart_results_data_label), smart_data_text_ccc); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGRESULTS]); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "identify_results_dialog")); - GtkWidget *smart_results_data_label = GTK_WIDGET(gtk_builder_get_object(builder, "identify_results_data_label")); - // GtkWidget *smart_results_box_label = GTK_WIDGET (gtk_builder_get_object (builder, "smart_results_box_label")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(smart_results_data_label), identify_device_raw_text_ccc); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGRESULTS]); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -void quit_and_close_ccc(void) -{ - gtk_main_quit(); - quit_and_exit_ccc(); -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "clone_settings_dialog")); - phase_control_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase_control_label")); - phase1_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase1_checkbutton")); - phase2_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase2_checkbutton")); - phase3_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase3_checkbutton")); - phase4_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase4_checkbutton")); - divide_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "divide_checkbutton")); - divide2_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "divide2_checkbutton")); - trim_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "trim_checkbutton")); - scrape_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "scrape_checkbutton")); - markbad_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "markbad_checkbutton")); - readbad_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "readbad_checkbutton")); - rebuild_assist_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "rebuild_assist_checkbutton")); - reverse_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "reverse_checkbutton")); - skipfast_check_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "skipfast_checkbutton")); - retries_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "retries_button_label")); - retries_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "retries_spinbutton")); - clustersize_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "clustersize_button_label")); - clustersize_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "clustersize_spinbutton")); - inputoffset_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "inputoffset_button_label")); - inputoffset_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "inputoffset_spinbutton")); - size_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "size_button_label")); - size_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "size_spinbutton")); - blocksize_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "blocksize_button_label")); - blocksize_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "blocksize_spinbutton")); - skipsize_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "skipsize_button_label")); - skipsize_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "skipsize_spinbutton")); - maxskipsize_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "maxskipsize_button_label")); - maxskipsize_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "maxskipsize_spinbutton")); - skipthreshold_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "skipthreshold_button_label")); - skipthreshold_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "skipthreshold_spinbutton")); - rateskip_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "rateskip_button_label")); - rateskip_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "rateskip_spinbutton")); - exitonslow_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "exitonslow_button_label")); - exitonslow_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "exitonslow_spinbutton")); - exitonslowtime_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "exitonslowtime_button_label")); - exitonslowtime_spin_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "exitonslowtime_spinbutton")); - sectorsize_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "sectorsize_button_label")); - sectorsize_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "sectorsize_spinbutton")); - alignment_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "alignment_button_label")); - alignment_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "alignment_spinbutton")); - maxreadrate_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "maxreadrate_button_label")); - maxreadrate_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "maxreadrate_spinbutton")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(phase_control_label_ccc), curlang_ccc[LANGPHASECONTROLLABEL]); - gtk_button_set_label(GTK_BUTTON(phase1_check_button_ccc), curlang_ccc[LANGPHASE1BUTTON]); - gtk_button_set_label(GTK_BUTTON(phase2_check_button_ccc), curlang_ccc[LANGPHASE2BUTTON]); - gtk_button_set_label(GTK_BUTTON(phase3_check_button_ccc), curlang_ccc[LANGPHASE3BUTTON]); - gtk_button_set_label(GTK_BUTTON(phase4_check_button_ccc), curlang_ccc[LANGPHASE4BUTTON]); - gtk_button_set_label(GTK_BUTTON(divide_check_button_ccc), curlang_ccc[LANGDIVIDEBUTTON]); - gtk_button_set_label(GTK_BUTTON(divide2_check_button_ccc), curlang_ccc[LANGDIVIDE2BUTTON]); - gtk_button_set_label(GTK_BUTTON(trim_check_button_ccc), curlang_ccc[LANGTRIMBUTTON]); - gtk_button_set_label(GTK_BUTTON(scrape_check_button_ccc), curlang_ccc[LANGSCRAPTBUTTON]); - gtk_button_set_label(GTK_BUTTON(markbad_check_button_ccc), curlang_ccc[LANGMARKBADBUTTON]); - gtk_button_set_label(GTK_BUTTON(readbad_check_button_ccc), curlang_ccc[LANGREADBADBUTTON]); - gtk_button_set_label(GTK_BUTTON(rebuild_assist_check_button_ccc), curlang_ccc[LANGREBUILDASSIST]); - gtk_button_set_label(GTK_BUTTON(reverse_check_button_ccc), curlang_ccc[LANGREVERSEBUTTON]); - gtk_button_set_label(GTK_BUTTON(skipfast_check_button_ccc), curlang_ccc[LANGSKIPFASTBUTTON]); - gtk_label_set_text(GTK_LABEL(retries_button_label_ccc), curlang_ccc[LANGRETRIESBUTTON]); - gtk_label_set_text(GTK_LABEL(clustersize_button_label_ccc), curlang_ccc[LANGCLUSTERSIZEBUTTON]); - gtk_label_set_text(GTK_LABEL(inputoffset_button_label_ccc), curlang_ccc[LANGINPUTOFFSETBUTTON]); - gtk_label_set_text(GTK_LABEL(size_button_label_ccc), curlang_ccc[LANGSIZEBUTTON]); - gtk_label_set_text(GTK_LABEL(blocksize_button_label_ccc), curlang_ccc[LANGBLOCKSIZEBUTTON]); - gtk_label_set_text(GTK_LABEL(skipsize_button_label_ccc), curlang_ccc[LANGSKIPSIZEBUTTON]); - gtk_label_set_text(GTK_LABEL(maxskipsize_button_label_ccc), curlang_ccc[LANGMAXSKIPSIZEBUTTON]); - gtk_label_set_text(GTK_LABEL(skipthreshold_button_label_ccc), curlang_ccc[LANGSKIPTHRESHOLDBUTTON]); - gtk_label_set_text(GTK_LABEL(rateskip_button_label_ccc), curlang_ccc[LANGRATESKIPBUTTON]); - gtk_label_set_text(GTK_LABEL(exitonslow_button_label_ccc), curlang_ccc[LANGEXITONSLOW]); - gtk_label_set_text(GTK_LABEL(exitonslowtime_button_label_ccc), curlang_ccc[LANGEXITONSLOWTIME]); - gtk_label_set_text(GTK_LABEL(sectorsize_button_label_ccc), curlang_ccc[LANGSECTORSIZE]); - gtk_label_set_text(GTK_LABEL(alignment_button_label_ccc), curlang_ccc[LANGBLOCKALIGNMENT]); - gtk_label_set_text(GTK_LABEL(maxreadrate_button_label_ccc), curlang_ccc[LANGMAXREADRATE]); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - g_signal_connect(G_OBJECT(phase1_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASE1)); - g_signal_connect(G_OBJECT(phase2_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASE2)); - g_signal_connect(G_OBJECT(phase3_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASE3)); - g_signal_connect(G_OBJECT(phase4_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASE4)); - g_signal_connect(G_OBJECT(divide_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_DIVIDE)); - g_signal_connect(G_OBJECT(divide2_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_DIVIDE2)); - g_signal_connect(G_OBJECT(trim_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_TRIM)); - g_signal_connect(G_OBJECT(scrape_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_SCRAPE)); - g_signal_connect(G_OBJECT(markbad_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_MARKBAD)); - g_signal_connect(G_OBJECT(readbad_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_READBAD)); - g_signal_connect(G_OBJECT(rebuild_assist_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_REBUILDASSIST)); - g_signal_connect(G_OBJECT(reverse_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_REVERSE)); - g_signal_connect(G_OBJECT(skipfast_check_button_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_SKIPFAST)); - - load_clone_settings_ccc(); - update_clone_button_settings_ccc(); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGCLONE]); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - clone_settings_ccc.retries = gtk_spin_button_get_value(GTK_SPIN_BUTTON(retries_spin_button_ccc)); - clone_settings_ccc.cluster_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(clustersize_spin_button_ccc)); - clone_settings_ccc.input_offset = gtk_spin_button_get_value(GTK_SPIN_BUTTON(inputoffset_spin_button_ccc)); - clone_settings_ccc.read_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(size_spin_button_ccc)); - clone_settings_ccc.block_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(blocksize_spin_button_ccc)); - clone_settings_ccc.min_skip_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(skipsize_spin_button_ccc)); - clone_settings_ccc.max_skip_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(maxskipsize_spin_button_ccc)); - clone_settings_ccc.skip_timeout = gtk_spin_button_get_value(GTK_SPIN_BUTTON(skipthreshold_spin_button_ccc)) * 1000; - clone_settings_ccc.rate_skip = gtk_spin_button_get_value(GTK_SPIN_BUTTON(rateskip_spin_button_ccc)) * 1000; - clone_settings_ccc.exit_on_slow = gtk_spin_button_get_value(GTK_SPIN_BUTTON(exitonslow_spin_button_ccc)) * 1000; - clone_settings_ccc.exit_slow_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(exitonslowtime_spin_button_ccc)) * 1000; - clone_settings_ccc.sector_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sectorsize_spinbutton_ccc)); - clone_settings_ccc.block_offset = gtk_spin_button_get_value(GTK_SPIN_BUTTON(alignment_spinbutton_ccc)); - clone_settings_ccc.max_read_rate = gtk_spin_button_get_value(GTK_SPIN_BUTTON(maxreadrate_spinbutton_ccc)) * 1000; - // clone_settings_ccc. = gtk_spin_button_get_value(GTK_SPIN_BUTTON()); - update_clone_settings_ccc(); - logfile_changed_ccc = true; - } - gtk_widget_destroy(dialog); - update_display_ccc(0); -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "advanced_settings_dialog")); - no_log_backup_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "no_log_backup_checkbutton")); - force_mounted_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "force_mounted_checkbutton")); - force_dangerous_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "force_dangerous_checkbutton")); - enable_output_offset_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_output_offset_checkbutton")); - output_offset_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "output_offset_spinbutton")); - output_offset_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "output_offset_button_label")); - enable_current_position_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_current_position_checkbutton")); - current_position_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "current_position_spinbutton")); - current_position_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "current_position_button_label")); - action_on_error_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "action_on_error_label")); - stop_on_error_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "stop_on_error_radio_button")); - call_command_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "call_command_radio_button")); - command_to_call_text_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "command_to_call_text")); - test_command_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "test_command_button")); - primary_relay_on_error_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_on_error_radio_button")); - write_buffer_disable_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "write_buffer_disable_radio_button")); - write_buffer_enable_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "write_buffer_enable_radio_button")); - write_buffer_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "write_buffer_label")); - disable_identify_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disable_identify_checkbutton")); - pio_mode_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "pio_mode_checkbutton")); - enable_rebuild_assist_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_rebuild_assist_checkbutton")); - enable_process_chunk_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_process_chunk_checkbutton")); - enable_read_twice_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_read_twice_checkbutton")); - enable_retry_connecting_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_retry_connecting_checkbutton")); - enable_scsi_write_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_scsi_write_checkbutton")); - enable_phase_log_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_phase_log_checkbutton")); - enable_output_sector_size_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_output_sector_size_checkbutton")); - output_sector_size_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "output_sector_size_button_label")); - driver_io_scsi_only_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_io_scsi_only_checkbutton")); - use_physical_sector_size_for_virtual_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "use_physical_sector_size_for_virtual_checkbutton")); - output_sector_size_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "output_sector_size_spinbutton")); - driver_error_options_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_error_options_label")); - driver_return_error_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_return_error_radio_button")); - driver_return_zeros_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_return_zeros_radio_button")); - driver_return_marked_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_return_marked_radio_button")); - virtual_disk_device_name_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "virtual_disk_device_name_label")); - virtual_disk_device_name_text_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "virtual_disk_device_name_text")); - driver_minimum_cluster_size_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_minimum_cluster_size_button_label")); - driver_minimum_cluster_size_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "driver_minimum_cluster_size_spinbutton")); - use_color_statusbar_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "use_color_statusbar_checkbutton")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_button_set_label(GTK_BUTTON(no_log_backup_checkbutton_ccc), curlang_ccc[LANGNOLOGBACKUP]); - gtk_button_set_label(GTK_BUTTON(force_mounted_checkbutton_ccc), curlang_ccc[LANGFORCEMOUNTED]); - gtk_button_set_label(GTK_BUTTON(force_dangerous_checkbutton_ccc), curlang_ccc[LANGFORCEDANGEROUS]); - gtk_button_set_label(GTK_BUTTON(enable_output_offset_checkbutton_ccc), curlang_ccc[LANGENABLEOUTPUTOFFSET]); - gtk_label_set_text(GTK_LABEL(output_offset_button_label_ccc), curlang_ccc[LANGOUTPUTOFFSET]); - gtk_button_set_label(GTK_BUTTON(enable_current_position_checkbutton_ccc), curlang_ccc[LANGENABLECURRENTPOSITION]); - gtk_label_set_text(GTK_LABEL(current_position_button_label_ccc), curlang_ccc[LANGCURRENTPOSISIONLABEL]); - gtk_label_set_text(GTK_LABEL(action_on_error_label_ccc), curlang_ccc[LANGACTIONONERROR]); - gtk_button_set_label(GTK_BUTTON(stop_on_error_radio_button_ccc), curlang_ccc[LANGSTOPONERROR]); - gtk_button_set_label(GTK_BUTTON(call_command_radio_button_ccc), curlang_ccc[LANGCALLCOMMAND]); - gtk_button_set_label(GTK_BUTTON(test_command_button_ccc), curlang_ccc[LANGTESTCOMMAND]); - gtk_button_set_label(GTK_BUTTON(primary_relay_on_error_radio_button_ccc), curlang_ccc[LANGPRIMARYRELAYONERROR]); - gtk_button_set_label(GTK_BUTTON(write_buffer_disable_radio_button_ccc), curlang_ccc[LANGWRITEBUFFERDISABLE]); - gtk_button_set_label(GTK_BUTTON(write_buffer_enable_radio_button_ccc), curlang_ccc[LANGWRITEBUFFERENABLE]); - gtk_label_set_text(GTK_LABEL(write_buffer_label_ccc), curlang_ccc[LANGWRITEBUFFERLABEL]); - gtk_button_set_label(GTK_BUTTON(disable_identify_checkbutton_ccc), curlang_ccc[LANGDONTIDENTIFY]); - gtk_button_set_label(GTK_BUTTON(pio_mode_checkbutton_ccc), curlang_ccc[LANGPIOMODE]); - gtk_button_set_label(GTK_BUTTON(enable_rebuild_assist_checkbutton_ccc), curlang_ccc[LANGENABLEREBUILDASSIST]); - gtk_button_set_label(GTK_BUTTON(enable_process_chunk_checkbutton_ccc), curlang_ccc[LANGENABLEPROCESSCHUNK]); - gtk_button_set_label(GTK_BUTTON(enable_read_twice_checkbutton_ccc), curlang_ccc[LANGENABLEREADTWICE]); - gtk_button_set_label(GTK_BUTTON(enable_retry_connecting_checkbutton_ccc), curlang_ccc[LANGENABLERETRYCONNECTING]); - gtk_button_set_label(GTK_BUTTON(enable_scsi_write_checkbutton_ccc), curlang_ccc[LANGENABLESCSIWRITE]); - gtk_button_set_label(GTK_BUTTON(enable_phase_log_checkbutton_ccc), curlang_ccc[LANGENABLEPHASELOG]); - gtk_button_set_label(GTK_BUTTON(enable_output_sector_size_checkbutton_ccc), curlang_ccc[LANGENABLEOUTPUTSECTORSIZE]); - gtk_label_set_text(GTK_LABEL(output_sector_size_button_label_ccc), curlang_ccc[LANGOUTPUTSECTORSIZE]); - gtk_button_set_label(GTK_BUTTON(driver_io_scsi_only_checkbutton_ccc), curlang_ccc[LANGIOSCSIONLY]); - gtk_button_set_label(GTK_BUTTON(use_physical_sector_size_for_virtual_checkbutton_ccc), curlang_ccc[LANGUSEPHYSICALSECTORSIZE]); - gtk_button_set_label(GTK_BUTTON(driver_return_error_radio_button_ccc), curlang_ccc[LANGDRIVERRETURNERROR]); - gtk_button_set_label(GTK_BUTTON(driver_return_zeros_radio_button_ccc), curlang_ccc[LANGDRIVERRETURNZEROS]); - gtk_button_set_label(GTK_BUTTON(driver_return_marked_radio_button_ccc), curlang_ccc[LANGDRIVERRETURNMARKED]); - gtk_label_set_text(GTK_LABEL(driver_error_options_label_ccc), curlang_ccc[LANGDRIVEROUTPUTOPTIONS]); - gtk_label_set_text(GTK_LABEL(driver_minimum_cluster_size_button_label_ccc), curlang_ccc[LANGVIRTUALMINCLUSTER]); - gtk_label_set_text(GTK_LABEL(virtual_disk_device_name_label_ccc), curlang_ccc[LANGVIRTUALNAME]); - gtk_button_set_label(GTK_BUTTON(use_color_statusbar_checkbutton_ccc), curlang_ccc[LANGUSECOLORSTATUSBAR]); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - if (!advanced_settings_ccc.enable_output_offset) - { - gtk_widget_set_sensitive(GTK_WIDGET(output_offset_spinbutton_ccc), FALSE); - } - if (!advanced_settings_ccc.enable_current_position) - { - gtk_widget_set_sensitive(GTK_WIDGET(current_position_spinbutton_ccc), FALSE); - } - if (!advanced_settings_ccc.enable_output_sector_size) - { - gtk_widget_set_sensitive(GTK_WIDGET(output_sector_size_spinbutton_ccc), FALSE); - } - - gtk_entry_set_max_length(GTK_ENTRY(command_to_call_text_ccc), MAX_CALL_LENGTH); - gtk_entry_set_max_length(GTK_ENTRY(virtual_disk_device_name_text_ccc), MAX_DEVICE_NAME_LENGTH); - - g_signal_connect(G_OBJECT(no_log_backup_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_NOLOGBACK)); - g_signal_connect(G_OBJECT(force_mounted_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_FORCE)); - g_signal_connect(G_OBJECT(force_dangerous_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_FORCEDANGEROUS)); - g_signal_connect(G_OBJECT(enable_output_offset_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_OFFSET)); - g_signal_connect(G_OBJECT(enable_current_position_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_POSITION)); - g_signal_connect(G_OBJECT(disable_identify_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_DONTIDENTIFY)); - g_signal_connect(G_OBJECT(pio_mode_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PIOMODE)); - g_signal_connect(G_OBJECT(enable_rebuild_assist_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLEREBUILDASSIST)); - g_signal_connect(G_OBJECT(enable_process_chunk_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLEPROCESSCHUNK)); - g_signal_connect(G_OBJECT(enable_read_twice_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLEREADTWICE)); - g_signal_connect(G_OBJECT(enable_retry_connecting_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLERETRYCONNECTING)); - g_signal_connect(G_OBJECT(enable_scsi_write_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLESCSIWRITE)); - g_signal_connect(G_OBJECT(enable_phase_log_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLEPHASELOGS)); - g_signal_connect(G_OBJECT(enable_output_sector_size_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_ENABLEOUTPUTSECTOR)); - g_signal_connect(G_OBJECT(driver_io_scsi_only_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_IOSCSIONLY)); - g_signal_connect(G_OBJECT(use_physical_sector_size_for_virtual_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_USEPHYSICALSECTORSIZE)); - g_signal_connect(G_OBJECT(use_color_statusbar_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_COLORSTATUSBAR)); - // g_signal_connect(G_OBJECT(), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER()); - // g_signal_connect(test_command_button_ccc, "clicked", G_CALLBACK(test_command_ccc), NULL); - - load_advanced_settings_ccc(); - gtk_entry_set_text(GTK_ENTRY(command_to_call_text_ccc), advanced_settings_ccc.command_to_call); - gtk_entry_set_text(GTK_ENTRY(virtual_disk_device_name_text_ccc), advanced_settings_ccc.virtual_disk_device_name); - update_advanced_button_settings_ccc(); - - if (direct_mode_ccc) - { - gtk_widget_set_sensitive(GTK_WIDGET(disable_identify_checkbutton_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(pio_mode_checkbutton_ccc), TRUE); - } - else - { - gtk_widget_set_sensitive(GTK_WIDGET(disable_identify_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(pio_mode_checkbutton_ccc), FALSE); - } - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGADVANCED]); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - advanced_settings_ccc.output_offset = gtk_spin_button_get_value(GTK_SPIN_BUTTON(output_offset_spinbutton_ccc)); - advanced_settings_ccc.current_position = gtk_spin_button_get_value(GTK_SPIN_BUTTON(current_position_spinbutton_ccc)); - advanced_settings_ccc.stop_on_error = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_on_error_radio_button_ccc)); - advanced_settings_ccc.call_command = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(call_command_radio_button_ccc)); - advanced_settings_ccc.activate_primary_relay = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(primary_relay_on_error_radio_button_ccc)); - advanced_settings_ccc.write_buffer_disable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(write_buffer_disable_radio_button_ccc)); - advanced_settings_ccc.write_buffer_enable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(write_buffer_enable_radio_button_ccc)); - advanced_settings_ccc.driver_return_error = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(driver_return_error_radio_button_ccc)); - advanced_settings_ccc.driver_return_zeros = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(driver_return_zeros_radio_button_ccc)); - advanced_settings_ccc.driver_return_marked = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(driver_return_marked_radio_button_ccc)); - advanced_settings_ccc.output_sector_adjustment = gtk_spin_button_get_value(GTK_SPIN_BUTTON(output_sector_size_spinbutton_ccc)); - advanced_settings_ccc.driver_minimum_cluster_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(driver_minimum_cluster_size_spinbutton_ccc)); - const gchar *entry_text; - entry_text = gtk_entry_get_text(GTK_ENTRY(command_to_call_text_ccc)); - strcpy(advanced_settings_ccc.command_to_call, entry_text); - const gchar *entry_text2; - entry_text2 = gtk_entry_get_text(GTK_ENTRY(virtual_disk_device_name_text_ccc)); - strcpy(advanced_settings_ccc.virtual_disk_device_name, entry_text2); - update_advanced_settings_ccc(); - logfile_changed_ccc = true; - } - gtk_widget_destroy(dialog); - update_display_ccc(0); -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "timer_settings_dialog")); - timer_settings_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "timer_settings_label")); - timer_settings_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "timer_settings_info_label")); - initial_busy_wait_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "initial_busy_wait_time_button_label")); - initial_busy_wait_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "initial_busy_wait_time_spinbutton")); - busy_wait_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "busy_wait_time_button_label")); - busy_wait_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "busy_wait_time_spinbutton")); - soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "soft_reset_time_button_label")); - soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "soft_reset_time_spinbutton")); - hard_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "hard_reset_time_button_label")); - hard_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "hard_reset_time_spinbutton")); - power_cycle_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "power_cycle_time_button_label")); - power_cycle_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "power_cycle_time_spinbutton")); - general_timout_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "general_timout_button_label")); - general_timeout_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "general_timeout_spinbutton")); - action_power_cycle_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "action_power_cycle_label")); - stop_on_power_cycle_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "stop_on_power_cycle_radio_button")); - call_power_command_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "call_power_command_radio_button")); - power_command_to_call_text_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "power_command_to_call_text")); - test_power_command_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "test_power_command_button")); - primary_relay_power_cycle_radio_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_power_cycle_radio_button")); - phase_timers_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase_timers_label")); - phase_timers_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "phase_timers_checkbutton")); - p12_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p12_soft_reset_time_button_label")); - p12_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p12_soft_reset_time_spinbutton")); - p3_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p3_soft_reset_time_button_label")); - p3_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p3_soft_reset_time_spinbutton")); - p4_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p4_soft_reset_time_button_label")); - p4_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "p4_soft_reset_time_spinbutton")); - td_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "td_soft_reset_time_button_label")); - td_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "td_soft_reset_time_spinbutton")); - d2_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "d2_soft_reset_time_button_label")); - d2_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "d2_soft_reset_time_spinbutton")); - sc_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "sc_soft_reset_time_button_label")); - sc_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "sc_soft_reset_time_spinbutton")); - rt_soft_reset_time_button_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "rt_soft_reset_time_button_label")); - rt_soft_reset_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "rt_soft_reset_time_spinbutton")); - always_wait_for_reset_timers_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "always_wait_for_reset_timers_checkbutton")); - usb_resets_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "usb_resets_label")); - enable_usb_bulk_reset_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_usb_bulk_reset_checkbutton")); - enable_usb_soft_reset_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_usb_soft_reset_checkbutton")); - enable_usb_hard_reset_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_usb_hard_reset_checkbutton")); - enable_usb_port_reset_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "enable_usb_port_reset_checkbutton")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(timer_settings_label_ccc), ""); - gtk_label_set_text(GTK_LABEL(timer_settings_info_label_ccc), curlang_ccc[LANGTIMERINFO]); - gtk_label_set_text(GTK_LABEL(initial_busy_wait_time_button_label_ccc), curlang_ccc[LANGINITIALBUSYWAIT]); - gtk_label_set_text(GTK_LABEL(busy_wait_time_button_label_ccc), curlang_ccc[LANGBUSYWAIT]); - gtk_label_set_text(GTK_LABEL(soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIME]); - gtk_label_set_text(GTK_LABEL(hard_reset_time_button_label_ccc), curlang_ccc[LANGHARDTIME]); - gtk_label_set_text(GTK_LABEL(power_cycle_time_button_label_ccc), curlang_ccc[LANGPOWERTIME]); - gtk_label_set_text(GTK_LABEL(general_timout_button_label_ccc), curlang_ccc[LANGGENERALTIME]); - gtk_label_set_text(GTK_LABEL(action_power_cycle_label_ccc), curlang_ccc[LANGPOWERACTION]); - gtk_button_set_label(GTK_BUTTON(stop_on_power_cycle_radio_button_ccc), curlang_ccc[LANGSTOPONPOWER]); - gtk_button_set_label(GTK_BUTTON(call_power_command_radio_button_ccc), curlang_ccc[LANGCALLCOMMAND]); - gtk_button_set_label(GTK_BUTTON(test_power_command_button_ccc), curlang_ccc[LANGTESTCOMMAND]); - gtk_button_set_label(GTK_BUTTON(primary_relay_power_cycle_radio_button_ccc), curlang_ccc[LANGCYCLEPRIMARYRELAY]); - gtk_label_set_text(GTK_LABEL(phase_timers_label_ccc), curlang_ccc[LANGPHASETIMERS]); - gtk_button_set_label(GTK_BUTTON(phase_timers_checkbutton_ccc), curlang_ccc[LANGPHASETIMERSENABLE]); - gtk_label_set_text(GTK_LABEL(p12_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMEP12]); - gtk_label_set_text(GTK_LABEL(p3_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMEP3]); - gtk_label_set_text(GTK_LABEL(p4_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMEP4]); - gtk_label_set_text(GTK_LABEL(td_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMETD]); - gtk_label_set_text(GTK_LABEL(d2_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMED2]); - gtk_label_set_text(GTK_LABEL(sc_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMESC]); - gtk_label_set_text(GTK_LABEL(rt_soft_reset_time_button_label_ccc), curlang_ccc[LANGSOFTTIMERT]); - gtk_button_set_label(GTK_BUTTON(always_wait_for_reset_timers_checkbutton_ccc), curlang_ccc[LANGALWAYSWAITRESETTIME]); - gtk_label_set_text(GTK_LABEL(usb_resets_label_ccc), curlang_ccc[LANGUSBRESETS]); - gtk_button_set_label(GTK_BUTTON(enable_usb_bulk_reset_checkbutton_ccc), curlang_ccc[LANGENABLEUSBBULKRESET]); - gtk_button_set_label(GTK_BUTTON(enable_usb_soft_reset_checkbutton_ccc), curlang_ccc[LANGENABLEUSBSOFTRESET]); - gtk_button_set_label(GTK_BUTTON(enable_usb_hard_reset_checkbutton_ccc), curlang_ccc[LANGENABLEUSBHARDRESET]); - gtk_button_set_label(GTK_BUTTON(enable_usb_port_reset_checkbutton_ccc), curlang_ccc[LANGENABLEUSBPORTRESET]); - - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_entry_set_max_length(GTK_ENTRY(power_command_to_call_text_ccc), MAX_CALL_LENGTH); - - g_signal_connect(G_OBJECT(phase_timers_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASETIMERS)); - - load_timer_settings_ccc(); - gtk_entry_set_text(GTK_ENTRY(power_command_to_call_text_ccc), timer_settings_ccc.power_command_to_call); - update_timer_button_settings_ccc(); - - if (!direct_mode_ccc && !usb_mode_ccc) - { - gtk_widget_set_sensitive(GTK_WIDGET(initial_busy_wait_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(busy_wait_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(power_cycle_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(stop_on_power_cycle_radio_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(call_power_command_radio_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(test_power_command_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(power_command_to_call_text_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(primary_relay_power_cycle_radio_button_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(phase_timers_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(p12_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(p3_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(p4_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(td_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(d2_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(sc_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(rt_soft_reset_time_spinbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(always_wait_for_reset_timers_checkbutton_ccc), FALSE); - } - if (!usb_mode_ccc) - { - gtk_widget_set_sensitive(GTK_WIDGET(enable_usb_bulk_reset_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(enable_usb_soft_reset_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(enable_usb_hard_reset_checkbutton_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(enable_usb_port_reset_checkbutton_ccc), FALSE); - } - if (!ahci_mode_ccc && !usb_mode_ccc) - { - gtk_widget_set_sensitive(GTK_WIDGET(hard_reset_time_spinbutton_ccc), FALSE); - } - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGTIMERS]); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - timer_settings_ccc.initial_busy_wait_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(initial_busy_wait_time_spinbutton_ccc)); - timer_settings_ccc.busy_wait_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(busy_wait_time_spinbutton_ccc)); - timer_settings_ccc.soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.hard_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(hard_reset_time_spinbutton_ccc)); - timer_settings_ccc.power_cycle_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(power_cycle_time_spinbutton_ccc)); - timer_settings_ccc.general_timeout = gtk_spin_button_get_value(GTK_SPIN_BUTTON(general_timeout_spinbutton_ccc)); - timer_settings_ccc.stop_on_power_cycle = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_on_power_cycle_radio_button_ccc)); - timer_settings_ccc.call_power_command = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(call_power_command_radio_button_ccc)); - timer_settings_ccc.power_cycle_primary_relay = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(primary_relay_power_cycle_radio_button_ccc)); - - timer_settings_ccc.p12_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(p12_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.p3_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(p3_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.p4_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(p4_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.td_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(td_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.d2_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(d2_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.sc_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_soft_reset_time_spinbutton_ccc)); - timer_settings_ccc.rt_soft_reset_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(rt_soft_reset_time_spinbutton_ccc)); - - timer_settings_ccc.always_wait_for_reset_timers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(always_wait_for_reset_timers_checkbutton_ccc)); - - timer_settings_ccc.usb_bulk_reset_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enable_usb_bulk_reset_checkbutton_ccc)); - timer_settings_ccc.usb_soft_reset_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enable_usb_soft_reset_checkbutton_ccc)); - timer_settings_ccc.usb_hard_reset_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enable_usb_hard_reset_checkbutton_ccc)); - timer_settings_ccc.usb_port_reset_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enable_usb_port_reset_checkbutton_ccc)); - - const gchar *entry_text; - entry_text = gtk_entry_get_text(GTK_ENTRY(power_command_to_call_text_ccc)); - strcpy(timer_settings_ccc.power_command_to_call, entry_text); - update_timer_settings_ccc(); - logfile_changed_ccc = true; - } - gtk_widget_destroy(dialog); - update_display_ccc(0); -} - -int open_ports_dialog_ccc(char *current_ports) -{ - disabled_ports_changed_ccc = 0; - 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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "disable_ports_dialog")); - disable_ports_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disable_ports_label")); - disable_ports_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "disable_ports_info_label")); - current_ports_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "current_ports_label")); - current_ports_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "current_ports_info_label")); - set_disabled_ports_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "set_disabled_ports_label")); - set_disabled_ports_text_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "set_disabled_ports_text")); - updated_ports_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "updated_ports_label")); - updated_ports_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "updated_ports_info_label")); - update_ports_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "update_ports_button")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - strcpy(new_ports_ccc, ""); - char portsinfo[4096] = ""; - strcpy(portsinfo, curlang_ccc[LANGDISABLEPORTSINFO1]); - strcat(portsinfo, curlang_ccc[LANGDISABLEPORTSINFO2]); - gtk_label_set_text(GTK_LABEL(disable_ports_info_label_ccc), portsinfo); - gtk_label_set_text(GTK_LABEL(disable_ports_label_ccc), curlang_ccc[LANGDISABLEPORTS]); - gtk_label_set_text(GTK_LABEL(current_ports_label_ccc), curlang_ccc[LANGCURRENTDISPORTS]); - gtk_label_set_text(GTK_LABEL(current_ports_info_label_ccc), current_ports); - gtk_label_set_text(GTK_LABEL(set_disabled_ports_label_ccc), curlang_ccc[LANGSETDISPORTS]); - gtk_label_set_text(GTK_LABEL(updated_ports_label_ccc), curlang_ccc[LANGUPDATEDDISPORTS]); - gtk_label_set_text(GTK_LABEL(updated_ports_info_label_ccc), current_ports); - gtk_button_set_label(GTK_BUTTON(update_ports_button_ccc), curlang_ccc[LANGUPDATEPORTS]); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGDISABLEPORTS]); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - if (disabled_ports_changed_ccc) - { - confirm = 1; - } - } - gtk_widget_destroy(dialog); - return confirm; -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "select_lun_dialog")); - select_lun_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "select_lun_label")); - select_lun_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "select_lun_info_label")); - lun_values_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "lun_values_label")); - lun_values_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "lun_values_info_label")); - set_current_lun_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "set_current_lun_label")); - current_lun_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "current_lun_spinbutton")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - char luninfo[256] = ""; - sprintf(luninfo, "0 - %d", max_lun); - gtk_label_set_text(GTK_LABEL(select_lun_label_ccc), curlang_ccc[LANGSELECTLUN]); - gtk_label_set_text(GTK_LABEL(select_lun_info_label_ccc), curlang_ccc[LANGSELECTLUNINFO]); - gtk_label_set_text(GTK_LABEL(lun_values_label_ccc), curlang_ccc[LANGLUNVALUES]); - gtk_label_set_text(GTK_LABEL(lun_values_info_label_ccc), luninfo); - gtk_label_set_text(GTK_LABEL(set_current_lun_label_ccc), curlang_ccc[LANGSETLUN]); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, max_lun, 1, 1, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(current_lun_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(current_lun_spinbutton_ccc), usb_lun_ccc); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGSELECTLUN]); - - int ret = 1; - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - usb_lun_ccc = gtk_spin_button_get_value(GTK_SPIN_BUTTON(current_lun_spinbutton_ccc)); - usb_lun_set_ccc = 1; - ret = 0; - fprintf(stdout, "lun=%d\n", usb_lun_ccc); - } - gtk_widget_destroy(dialog); - return ret; -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_settings_dialog")); - primary_relay_settings_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_settings_label")); - primary_relay_settings_info_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_settings_info_label")); - label_current_primary_relay_board_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "label_current_primary_relay_board")); - data_current_relay_board_a_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "data_current_relay_board_a")); - primary_relay_board_settings_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_board_settings_label")); - primary_relay_activation_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_activation_label")); - activate_primary_relay1_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay1_checkbutton")); - activate_primary_relay2_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay2_checkbutton")); - activate_primary_relay3_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay3_checkbutton")); - activate_primary_relay4_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay4_checkbutton")); - activate_primary_relay5_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay5_checkbutton")); - activate_primary_relay6_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay6_checkbutton")); - activate_primary_relay7_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay7_checkbutton")); - activate_primary_relay8_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay8_checkbutton")); - primary_relay_deactivation_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_deactivation_label")); - deactivate_primary_relay1_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay1_checkbutton")); - deactivate_primary_relay2_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay2_checkbutton")); - deactivate_primary_relay3_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay3_checkbutton")); - deactivate_primary_relay4_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay4_checkbutton")); - deactivate_primary_relay5_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay5_checkbutton")); - deactivate_primary_relay6_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay6_checkbutton")); - deactivate_primary_relay7_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay7_checkbutton")); - deactivate_primary_relay8_checkbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay8_checkbutton")); - primary_relay_activate_time_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_activate_time_label")); - primary_relay_energize_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_energize_time_spinbutton")); - primary_relay_delay_time_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_delay_time_label")); - primary_relay_delay_time_spinbutton_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "primary_relay_delay_time_spinbutton")); - test_primary_relay_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "test_primary_relay_button")); - activate_primary_relay_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "activate_primary_relay_button")); - deactivate_primary_relay_button_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "deactivate_primary_relay_button")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(primary_relay_settings_label_ccc), ""); - gtk_label_set_text(GTK_LABEL(primary_relay_settings_info_label_ccc), curlang_ccc[LANGPRIMARYRELAYINFO]); - gtk_label_set_text(GTK_LABEL(label_current_primary_relay_board_ccc), curlang_ccc[LANGCURRENTRELAY]); - gtk_label_set_text(GTK_LABEL(primary_relay_board_settings_label_ccc), curlang_ccc[LANGRELAYBOARDSETTINGS]); - gtk_label_set_text(GTK_LABEL(primary_relay_activation_label_ccc), curlang_ccc[LANGRELAYACTIVATION]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay1_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY1]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay2_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY2]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay3_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY3]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay4_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY4]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay5_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY5]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay6_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY6]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay7_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY7]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay8_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY8]); - gtk_label_set_text(GTK_LABEL(primary_relay_deactivation_label_ccc), curlang_ccc[LANGRELAYDEACTIVATION]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay1_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY1]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay2_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY2]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay3_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY3]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay4_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY4]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay5_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY5]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay6_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY6]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay7_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY7]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay8_checkbutton_ccc), curlang_ccc[LANGACTIVATERELAY8]); - gtk_label_set_text(GTK_LABEL(primary_relay_activate_time_label_ccc), curlang_ccc[LANGRELAYACTIVATETIME]); - gtk_label_set_text(GTK_LABEL(primary_relay_delay_time_label_ccc), curlang_ccc[LANGRELAYDELAYTIME]); - gtk_button_set_label(GTK_BUTTON(test_primary_relay_button_ccc), curlang_ccc[LANGTESTRELAYBUTTON]); - gtk_button_set_label(GTK_BUTTON(activate_primary_relay_button_ccc), curlang_ccc[LANGACTIVATE]); - gtk_button_set_label(GTK_BUTTON(deactivate_primary_relay_button_ccc), curlang_ccc[LANGDEACTIVATE]); - - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - // gtk_entry_set_max_length (GTK_ENTRY (power_command_to_call_text_ccc), MAX_CALL_LENGTH); - - // g_signal_connect(G_OBJECT(phase_timers_checkbutton_ccc), "toggled", G_CALLBACK(set_state_from_button_ccc), GINT_TO_POINTER(BUTTONID_PHASETIMERS)); - - load_primary_relay_settings_ccc(); - gtk_label_set_text(GTK_LABEL(data_current_relay_board_a_ccc), primary_relay_settings_ccc.primary_relay_name); - update_primary_relay_button_settings_ccc(); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGPRIMARYRELAY]); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - update_primary_relay_settings_from_buttons_ccc(); - - update_primary_relay_settings_ccc(); - logfile_changed_ccc = true; - } - gtk_widget_destroy(dialog); - update_display_ccc(0); -} - -void update_primary_relay_settings_from_buttons_ccc(void) -{ - primary_relay_settings_ccc.activate_primary_relay1 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay1_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay2 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay2_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay3 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay3_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay4 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay4_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay5 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay5_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay6 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay6_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay7 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay7_checkbutton_ccc)); - primary_relay_settings_ccc.activate_primary_relay8 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(activate_primary_relay8_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay1 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay1_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay2 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay2_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay3 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay3_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay4 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay4_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay5 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay5_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay6 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay6_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay7 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay7_checkbutton_ccc)); - primary_relay_settings_ccc.deactivate_primary_relay8 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay8_checkbutton_ccc)); - primary_relay_settings_ccc.primary_relay_activation_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(primary_relay_energize_time_spinbutton_ccc)); - primary_relay_settings_ccc.primary_relay_delay_time = gtk_spin_button_get_value(GTK_SPIN_BUTTON(primary_relay_delay_time_spinbutton_ccc)); - - // = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON()); - // = gtk_spin_button_get_value(GTK_SPIN_BUTTON()); -} - -void do_test_primary_relay_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - int error = 0; - bool activate_primary_relay1_bak = primary_relay_settings_ccc.activate_primary_relay1; - bool activate_primary_relay2_bak = primary_relay_settings_ccc.activate_primary_relay2; - bool activate_primary_relay3_bak = primary_relay_settings_ccc.activate_primary_relay3; - bool activate_primary_relay4_bak = primary_relay_settings_ccc.activate_primary_relay4; - bool activate_primary_relay5_bak = primary_relay_settings_ccc.activate_primary_relay5; - bool activate_primary_relay6_bak = primary_relay_settings_ccc.activate_primary_relay6; - bool activate_primary_relay7_bak = primary_relay_settings_ccc.activate_primary_relay7; - bool activate_primary_relay8_bak = primary_relay_settings_ccc.activate_primary_relay8; - bool deactivate_primary_relay1_bak = primary_relay_settings_ccc.deactivate_primary_relay1; - bool deactivate_primary_relay2_bak = primary_relay_settings_ccc.deactivate_primary_relay2; - bool deactivate_primary_relay3_bak = primary_relay_settings_ccc.deactivate_primary_relay3; - bool deactivate_primary_relay4_bak = primary_relay_settings_ccc.deactivate_primary_relay4; - bool deactivate_primary_relay5_bak = primary_relay_settings_ccc.deactivate_primary_relay5; - bool deactivate_primary_relay6_bak = primary_relay_settings_ccc.deactivate_primary_relay6; - bool deactivate_primary_relay7_bak = primary_relay_settings_ccc.deactivate_primary_relay7; - bool deactivate_primary_relay8_bak = primary_relay_settings_ccc.deactivate_primary_relay8; - unsigned long long primary_relay_activation_time_bak = primary_relay_settings_ccc.primary_relay_activation_time; - unsigned long long primary_relay_delay_time_bak = primary_relay_settings_ccc.primary_relay_delay_time; - - update_primary_relay_settings_from_buttons_ccc(); - update_primary_relay_settings_ccc(); - - g_print("activate primary relay\n"); - if (activate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - error = 1; - } - - // wait to deactivate - if (!error) - { - unsigned int i; - for (i = primary_relay_settings_ccc.primary_relay_activation_time; i > 0; i--) - { - g_print("%d ", i); - do_nanosleep_ccc(1000000000); - update_display_ccc(0); - } - g_print("\n"); - g_print("deactivate primary relay\n"); - if (deactivate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - error = 1; - } - } - - // wait for delay time - if (!error) - { - g_print("wait for delay time\n"); - unsigned int i; - for (i = primary_relay_settings_ccc.primary_relay_delay_time; i > 0; i--) - { - g_print("%d ", i); - do_nanosleep_ccc(1000000000); - update_display_ccc(0); - } - g_print("\n"); - g_print("relay test complete\n"); - strcpy(tempmessage_ccc, curlang_ccc[LANGOPERATIONSUCCEEDED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } - - primary_relay_settings_ccc.activate_primary_relay1 = activate_primary_relay1_bak; - primary_relay_settings_ccc.activate_primary_relay2 = activate_primary_relay2_bak; - primary_relay_settings_ccc.activate_primary_relay3 = activate_primary_relay3_bak; - primary_relay_settings_ccc.activate_primary_relay4 = activate_primary_relay4_bak; - primary_relay_settings_ccc.activate_primary_relay5 = activate_primary_relay5_bak; - primary_relay_settings_ccc.activate_primary_relay6 = activate_primary_relay6_bak; - primary_relay_settings_ccc.activate_primary_relay7 = activate_primary_relay7_bak; - primary_relay_settings_ccc.activate_primary_relay8 = activate_primary_relay8_bak; - primary_relay_settings_ccc.deactivate_primary_relay1 = deactivate_primary_relay1_bak; - primary_relay_settings_ccc.deactivate_primary_relay2 = deactivate_primary_relay2_bak; - primary_relay_settings_ccc.deactivate_primary_relay3 = deactivate_primary_relay3_bak; - primary_relay_settings_ccc.deactivate_primary_relay4 = deactivate_primary_relay4_bak; - primary_relay_settings_ccc.deactivate_primary_relay5 = deactivate_primary_relay5_bak; - primary_relay_settings_ccc.deactivate_primary_relay6 = deactivate_primary_relay6_bak; - primary_relay_settings_ccc.deactivate_primary_relay7 = deactivate_primary_relay7_bak; - primary_relay_settings_ccc.deactivate_primary_relay8 = deactivate_primary_relay8_bak; - primary_relay_settings_ccc.primary_relay_activation_time = primary_relay_activation_time_bak; - primary_relay_settings_ccc.primary_relay_delay_time = primary_relay_delay_time_bak; - update_primary_relay_settings_ccc(); -} - -int cycle_primary_relay_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return -1; - } - - g_print("activate primary relay "); - if (activate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return -1; - } - - // wait to deactivate - unsigned int i; - for (i = primary_relay_activation_time_ccc; i > 0; i--) - { - g_print("%d ", i); - do_nanosleep_ccc(1000000000); - } - g_print("\n"); - g_print("deactivate and wait "); - if (deactivate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return -1; - } - - // wait for delay time - for (i = primary_relay_delay_time_ccc; i > 0; i--) - { - g_print("%d ", i); - do_nanosleep_ccc(1000000000); - } - g_print("done\n"); - - return 0; -} - -void update_ports_ccc(void) -{ - const gchar *entry_text; - entry_text = gtk_entry_get_text(GTK_ENTRY(set_disabled_ports_text_ccc)); - // fprintf (stdout, "%s\n", entry_text); //debug - char line[256]; - char rawport[16][256]; - strncpy(line, entry_text, 255); - strcpy(new_ports_ccc, "libata.force="); - int first = 1; - int count = 0; - int scanline = sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", rawport[0], rawport[1], rawport[2], rawport[3], rawport[4], rawport[5], rawport[6], rawport[7], rawport[8], rawport[9], rawport[10], rawport[11], rawport[12], rawport[13], rawport[14], rawport[15]); - while (scanline > 0) - { - unsigned int port = strtoull(rawport[count], NULL, 0); - char temp[256]; - if (first) - { - sprintf(temp, "%u:disable", port); - } - else - { - sprintf(temp, ",%u:disable", port); - } - strcat(new_ports_ccc, temp); - first = 0; - count++; - scanline--; - } - gtk_label_set_text(GTK_LABEL(updated_ports_info_label_ccc), new_ports_ccc); - disabled_ports_changed_ccc = 1; -} - -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 *)opensuperclone2_glade, opensuperclone2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - gtk_builder_connect_signals(builder, NULL); - GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "confirmation_dialog")); - confirmation_box_label_ccc = GTK_WIDGET(gtk_builder_get_object(builder, "confirmation_box_label")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - // = GTK_WIDGET (gtk_builder_get_object (builder, "")); - g_object_unref(builder); - - gtk_label_set_text(GTK_LABEL(confirmation_box_label_ccc), message); - // gtk_button_set_label(GTK_BUTTON(), curlang_ccc[]); - // gtk_label_set_text(GTK_LABEL(), curlang_ccc[]); - - gtk_window_set_title(GTK_WINDOW(dialog), curlang_ccc[LANGCONFIRMOPERATION]); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == 5) - { - confirm = 1; - } - gtk_widget_destroy(dialog); - return confirm; -} - -void test_command_ccc(void) -{ - const gchar *entry_text; - entry_text = gtk_entry_get_text(GTK_ENTRY(command_to_call_text_ccc)); - int ret = system(entry_text); - if (ret) - { - int status = WEXITSTATUS(ret); - int signal = WTERMSIG(ret); - strcpy(tempmessage_ccc, curlang_ccc[LANGCOMMANDFAILED]); - message_error_ccc(tempmessage_ccc); - sprintf(tempmessage_ccc, " (%d / %d)", signal, status); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - strcpy(tempmessage_ccc, curlang_ccc[LANGCOMMANDCOMPLETED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } -} - -void test_power_command_ccc(void) -{ - const gchar *entry_text; - entry_text = gtk_entry_get_text(GTK_ENTRY(power_command_to_call_text_ccc)); - int ret = system(entry_text); - if (ret) - { - int status = WEXITSTATUS(ret); - int signal = WTERMSIG(ret); - strcpy(tempmessage_ccc, curlang_ccc[LANGCOMMANDFAILED]); - message_error_ccc(tempmessage_ccc); - sprintf(tempmessage_ccc, " (%d / %d)", signal, status); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - strcpy(tempmessage_ccc, curlang_ccc[LANGCOMMANDCOMPLETED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } -} - -void activate_status_buttons_ccc(void) -{ - gtk_widget_set_sensitive(GTK_WIDGET(button_bsy_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_drdy_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_df_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_dsc_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_drq_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_corr_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_idx_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_err_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_status_separator_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_bbk_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_unc_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_mc_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_idnf_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_mcr_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_abrt_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_tk0nf_ccc), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(button_amnf_ccc), TRUE); - - gdk_color_parse(GTKCOLOR_GRAY, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - - gdk_color_parse(GTKCOLOR_WHITE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); -} - -void deactivate_status_buttons_ccc(void) -{ - gtk_widget_set_sensitive(GTK_WIDGET(button_bsy_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_drdy_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_df_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_dsc_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_drq_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_corr_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_idx_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_err_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_status_separator_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_bbk_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_unc_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_mc_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_idnf_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_mcr_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_abrt_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_tk0nf_ccc), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button_amnf_ccc), FALSE); -} - -void update_status_buttons_ccc(void) -{ - if (!scsi_passthrough_ccc && !fill_mode_ccc && !generic_mode_ccc) - { - if (color_statusbar_ccc) - { - activate_status_buttons_ccc(); - if (connected_ccc) - { - gdk_color_parse(GTKCOLOR_LIME, &button_color_ccc); - if (ata_status_ccc & 0x80) - { - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bsy_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x40) - { - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drdy_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x20) - { - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_df_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x10) - { - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_dsc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x08) - { - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_drq_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x04) - { - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_corr_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x02) - { - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idx_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_status_ccc & 0x01) - { - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_err_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - - gdk_color_parse(GTKCOLOR_RED, &button_color_ccc); - if (ata_error_ccc & 0x80) - { - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_bbk_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x40) - { - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_unc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x20) - { - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mc_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x10) - { - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_idnf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x08) - { - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_mcr_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x04) - { - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_abrt_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x02) - { - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_tk0nf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (ata_error_ccc & 0x01) - { - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_amnf_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - if (color_switch_flag_ccc == 0) - { - color_switch_flag_ccc = 1; - gdk_color_parse("#000", &button_color_ccc); - } - else if (color_switch_flag_ccc == 1) - { - color_switch_flag_ccc = 2; - gdk_color_parse("#777", &button_color_ccc); - } - else - { - color_switch_flag_ccc = 0; - gdk_color_parse("#fff", &button_color_ccc); - } - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_NORMAL, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_PRELIGHT, &button_color_ccc); - gtk_widget_modify_bg(GTK_WIDGET(button_status_separator_ccc), GTK_STATE_ACTIVE, &button_color_ccc); - } - } - else - { - deactivate_status_buttons_ccc(); - if (connected_ccc) - { - if (ata_status_ccc & 0x80) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_bsy_ccc), TRUE); - } - if (ata_status_ccc & 0x40) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_drdy_ccc), TRUE); - } - if (ata_status_ccc & 0x20) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_df_ccc), TRUE); - } - if (ata_status_ccc & 0x10) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_dsc_ccc), TRUE); - } - if (ata_status_ccc & 0x08) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_drq_ccc), TRUE); - } - if (ata_status_ccc & 0x04) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_corr_ccc), TRUE); - } - if (ata_status_ccc & 0x02) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_idx_ccc), TRUE); - } - if (ata_status_ccc & 0x01) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_err_ccc), TRUE); - } - - if (ata_error_ccc & 0x80) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_bbk_ccc), TRUE); - } - if (ata_error_ccc & 0x40) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_unc_ccc), TRUE); - } - if (ata_error_ccc & 0x20) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_mc_ccc), TRUE); - } - if (ata_error_ccc & 0x10) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_idnf_ccc), TRUE); - } - if (ata_error_ccc & 0x08) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_mcr_ccc), TRUE); - } - if (ata_error_ccc & 0x04) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_abrt_ccc), TRUE); - } - if (ata_error_ccc & 0x02) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_tk0nf_ccc), TRUE); - } - if (ata_error_ccc & 0x01) - { - gtk_widget_set_sensitive(GTK_WIDGET(button_amnf_ccc), TRUE); - } - if (color_switch_flag_ccc == 0) - { - color_switch_flag_ccc = 1; - gtk_widget_set_sensitive(GTK_WIDGET(button_status_separator_ccc), TRUE); - gtk_button_set_label(GTK_BUTTON(button_status_separator_ccc), "\\"); - } - else if (color_switch_flag_ccc == 1) - { - color_switch_flag_ccc = 2; - gtk_widget_set_sensitive(GTK_WIDGET(button_status_separator_ccc), FALSE); - gtk_button_set_label(GTK_BUTTON(button_status_separator_ccc), "|"); - } - else - { - color_switch_flag_ccc = 0; - gtk_widget_set_sensitive(GTK_WIDGET(button_status_separator_ccc), TRUE); - gtk_button_set_label(GTK_BUTTON(button_status_separator_ccc), "/"); - } - } - } - } -} - -void update_mode_ccc(void) -{ - if (generic_mode_ccc || scsi_passthrough_ccc || nvme_passthrough_ccc || fill_mode_ccc) - { - deactivate_status_buttons_ccc(); - } - else - { - activate_status_buttons_ccc(); - } - if (fill_mode_ccc) - { - gtk_widget_set_sensitive(GTK_WIDGET(sourcemi_ccc), FALSE); - } - else - { - gtk_widget_set_sensitive(GTK_WIDGET(sourcemi_ccc), TRUE); - } - update_display_ccc(0); -} - -void update_clone_button_settings_ccc(void) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phase1_check_button_ccc), !clone_settings_ccc.no_phase1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phase2_check_button_ccc), !clone_settings_ccc.no_phase2); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phase3_check_button_ccc), !clone_settings_ccc.no_phase3); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phase4_check_button_ccc), !clone_settings_ccc.no_phase4); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(divide_check_button_ccc), !clone_settings_ccc.no_divide1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(divide2_check_button_ccc), clone_settings_ccc.do_divide2); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(trim_check_button_ccc), !clone_settings_ccc.no_trim); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(scrape_check_button_ccc), !clone_settings_ccc.no_scrape); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(markbad_check_button_ccc), clone_settings_ccc.mark_bad_head); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(readbad_check_button_ccc), clone_settings_ccc.read_bad_head); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rebuild_assist_check_button_ccc), clone_settings_ccc.rebuild_assist); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reverse_check_button_ccc), clone_settings_ccc.reverse); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(skipfast_check_button_ccc), clone_settings_ccc.skip_fast); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, MAX_RETRIES, 1, 1, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(retries_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(retries_spin_button_ccc), clone_settings_ccc.retries); - - int cluster_limit = MAX_CLUSTERSIZE; - if (source_chosen_ccc) - { - cluster_limit = check_buffer_limit_ccc(); - if (cluster_limit < 0) - { - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - } - if (clone_settings_ccc.cluster_size > cluster_limit) - { - clone_settings_ccc.cluster_size = cluster_limit; - } - } - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 1, cluster_limit, 8, 64, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(clustersize_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(clustersize_spin_button_ccc), clone_settings_ccc.cluster_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(inputoffset_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(inputoffset_spin_button_ccc), clone_settings_ccc.input_offset); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(size_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(size_spin_button_ccc), clone_settings_ccc.read_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 1, MAX_BLOCKSIZE, 1, 8, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(blocksize_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(blocksize_spin_button_ccc), clone_settings_ccc.block_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(skipsize_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(skipsize_spin_button_ccc), clone_settings_ccc.min_skip_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(maxskipsize_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxskipsize_spin_button_ccc), clone_settings_ccc.max_skip_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 300000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(skipthreshold_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(skipthreshold_spin_button_ccc), clone_settings_ccc.skip_timeout / 1000); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 1000000, 10, 1000, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(rateskip_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(rateskip_spin_button_ccc), clone_settings_ccc.rate_skip / 1000); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 1000000, 10, 1000, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(exitonslow_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(exitonslow_spin_button_ccc), clone_settings_ccc.exit_on_slow / 1000); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 300, 1, 10, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(exitonslowtime_spin_button_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(exitonslowtime_spin_button_ccc), clone_settings_ccc.exit_slow_time / 1000); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, MIN_SECTORSIZE, MAX_SECTORSIZE, 8, 64, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(sectorsize_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(sectorsize_spinbutton_ccc), clone_settings_ccc.sector_size); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, MAX_BLOCKSIZE, 1, 8, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(alignment_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(alignment_spinbutton_ccc), clone_settings_ccc.block_offset); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 10000000, 100, 1000, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(maxreadrate_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(maxreadrate_spinbutton_ccc), clone_settings_ccc.max_read_rate / 1000); - - // gtk_adjustment_ccc = (GtkAdjustment *) gtk_adjustment_new (0, 1, 1, 1, 1, 0); - // gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(), gtk_adjustment_ccc); - // gtk_spin_button_set_value(GTK_SPIN_BUTTON(), clone_settings_ccc.); -} - -void update_advanced_button_settings_ccc(void) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(force_mounted_checkbutton_ccc), advanced_settings_ccc.force_mounted); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(force_dangerous_checkbutton_ccc), advanced_settings_ccc.force_dangerous); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(no_log_backup_checkbutton_ccc), advanced_settings_ccc.no_log_backup); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_output_offset_checkbutton_ccc), advanced_settings_ccc.enable_output_offset); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_current_position_checkbutton_ccc), advanced_settings_ccc.enable_current_position); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stop_on_error_radio_button_ccc), advanced_settings_ccc.stop_on_error); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(call_command_radio_button_ccc), advanced_settings_ccc.call_command); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(primary_relay_on_error_radio_button_ccc), advanced_settings_ccc.activate_primary_relay); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(write_buffer_disable_radio_button_ccc), advanced_settings_ccc.write_buffer_disable); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(write_buffer_enable_radio_button_ccc), advanced_settings_ccc.write_buffer_enable); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver_return_error_radio_button_ccc), advanced_settings_ccc.driver_return_error); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver_return_zeros_radio_button_ccc), advanced_settings_ccc.driver_return_zeros); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver_return_marked_radio_button_ccc), advanced_settings_ccc.driver_return_marked); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(disable_identify_checkbutton_ccc), advanced_settings_ccc.disable_identify); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pio_mode_checkbutton_ccc), advanced_settings_ccc.pio_mode); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_rebuild_assist_checkbutton_ccc), advanced_settings_ccc.enable_rebuild_assist); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_process_chunk_checkbutton_ccc), advanced_settings_ccc.enable_process_chunk); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_read_twice_checkbutton_ccc), advanced_settings_ccc.enable_read_twice); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_retry_connecting_checkbutton_ccc), advanced_settings_ccc.enable_retry_connecting); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_scsi_write_checkbutton_ccc), advanced_settings_ccc.enable_scsi_write); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_phase_log_checkbutton_ccc), advanced_settings_ccc.enable_phase_log); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_output_sector_size_checkbutton_ccc), advanced_settings_ccc.enable_output_sector_size); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(driver_io_scsi_only_checkbutton_ccc), advanced_settings_ccc.driver_io_scsi_only); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_physical_sector_size_for_virtual_checkbutton_ccc), advanced_settings_ccc.use_physical_sector_size_for_virtual); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_color_statusbar_checkbutton_ccc), advanced_settings_ccc.color_statusbar); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(output_offset_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(output_offset_spinbutton_ccc), advanced_settings_ccc.output_offset); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -1, 0x7fffffffffffffff, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(current_position_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(current_position_spinbutton_ccc), advanced_settings_ccc.current_position); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, -128, 128, 8, 64, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(output_sector_size_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(output_sector_size_spinbutton_ccc), advanced_settings_ccc.output_sector_adjustment); - - int cluster_limit = MAX_CLUSTERSIZE; - if (source_chosen_ccc) - { - cluster_limit = check_buffer_limit_ccc(); - if (cluster_limit < 0) - { - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - } - } - if (clone_settings_ccc.cluster_size > 0 && cluster_limit > clone_settings_ccc.cluster_size) - { - cluster_limit = clone_settings_ccc.cluster_size; - } - if (advanced_settings_ccc.driver_minimum_cluster_size > cluster_limit) - { - advanced_settings_ccc.driver_minimum_cluster_size = cluster_limit; - } - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 1, cluster_limit, 8, 64, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(driver_minimum_cluster_size_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(driver_minimum_cluster_size_spinbutton_ccc), advanced_settings_ccc.driver_minimum_cluster_size); - - // gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (), advanced_settings_ccc. ); - - // gtk_adjustment_ccc = (GtkAdjustment *) gtk_adjustment_new (0, 1, 1, 1, 1, 0); - // gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(), gtk_adjustment_ccc); - // gtk_spin_button_set_value(GTK_SPIN_BUTTON(), advanced_settings_ccc.); -} - -void update_timer_button_settings_ccc(void) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stop_on_power_cycle_radio_button_ccc), timer_settings_ccc.stop_on_power_cycle); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(call_power_command_radio_button_ccc), timer_settings_ccc.call_power_command); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(primary_relay_power_cycle_radio_button_ccc), timer_settings_ccc.power_cycle_primary_relay); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 500, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(initial_busy_wait_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(initial_busy_wait_time_spinbutton_ccc), (timer_settings_ccc.initial_busy_wait_time)); - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 5000, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(busy_wait_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(busy_wait_time_spinbutton_ccc), timer_settings_ccc.busy_wait_time); - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 500, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(soft_reset_time_spinbutton_ccc), timer_settings_ccc.soft_reset_time); - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(hard_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(hard_reset_time_spinbutton_ccc), timer_settings_ccc.hard_reset_time); - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 0, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(power_cycle_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(power_cycle_time_spinbutton_ccc), timer_settings_ccc.power_cycle_time); - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 10000, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(general_timeout_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(general_timeout_spinbutton_ccc), timer_settings_ccc.general_timeout); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(phase_timers_checkbutton_ccc), timer_settings_ccc.phase_timers); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(p12_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(p12_soft_reset_time_spinbutton_ccc), timer_settings_ccc.p12_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(p3_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(p3_soft_reset_time_spinbutton_ccc), timer_settings_ccc.p3_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(p4_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(p4_soft_reset_time_spinbutton_ccc), timer_settings_ccc.p4_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(td_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(td_soft_reset_time_spinbutton_ccc), timer_settings_ccc.td_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(d2_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(d2_soft_reset_time_spinbutton_ccc), timer_settings_ccc.d2_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(sc_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(sc_soft_reset_time_spinbutton_ccc), timer_settings_ccc.sc_soft_reset_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 50, 900000, 1, 100, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(rt_soft_reset_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(rt_soft_reset_time_spinbutton_ccc), timer_settings_ccc.rt_soft_reset_time); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(always_wait_for_reset_timers_checkbutton_ccc), timer_settings_ccc.always_wait_for_reset_timers); - - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_usb_bulk_reset_checkbutton_ccc), timer_settings_ccc.usb_bulk_reset_enabled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_usb_soft_reset_checkbutton_ccc), timer_settings_ccc.usb_soft_reset_enabled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_usb_hard_reset_checkbutton_ccc), timer_settings_ccc.usb_hard_reset_enabled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enable_usb_port_reset_checkbutton_ccc), timer_settings_ccc.usb_port_reset_enabled); - - // gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (), timer_settings_ccc. ); - - // gtk_adjustment_ccc = (GtkAdjustment *) gtk_adjustment_new (0, 1, 1, 1, 1, 0); - // gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(), gtk_adjustment_ccc); - // gtk_spin_button_set_value(GTK_SPIN_BUTTON(), timer_settings_ccc.); -} - -void update_primary_relay_button_settings_ccc(void) -{ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay1_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay2_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay2); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay3_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay3); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay4_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay4); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay5_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay5); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay6_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay6); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay7_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay7); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(activate_primary_relay8_checkbutton_ccc), primary_relay_settings_ccc.activate_primary_relay8); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay1_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay2_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay2); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay3_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay3); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay4_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay4); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay5_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay5); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay6_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay6); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay7_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay7); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deactivate_primary_relay8_checkbutton_ccc), primary_relay_settings_ccc.deactivate_primary_relay8); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 1, 900, 1, 1, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(primary_relay_energize_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(primary_relay_energize_time_spinbutton_ccc), primary_relay_settings_ccc.primary_relay_activation_time); - - gtk_adjustment_ccc = (GtkAdjustment *)gtk_adjustment_new(0, 1, 900, 1, 1, 0); - gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(primary_relay_delay_time_spinbutton_ccc), gtk_adjustment_ccc); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(primary_relay_delay_time_spinbutton_ccc), primary_relay_settings_ccc.primary_relay_delay_time); - - // gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON (), primary_relay_settings_ccc. ); - - // gtk_adjustment_ccc = (GtkAdjustment *) gtk_adjustment_new (0, 1, 1, 1, 1, 0); - // gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(), gtk_adjustment_ccc); - // gtk_spin_button_set_value(GTK_SPIN_BUTTON(), primary_relay_settings_ccc.); -} - -void set_agressive_driver_status_from_button_ccc(void) -{ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(agressive_driver_checkbutton_ccc))) - { - aggressive_driver_ccc = TRUE; - // fprintf (stdout, "agressive mode on\n"); //debug - } - else - { - aggressive_driver_ccc = FALSE; - // fprintf (stdout, "agressive mode off\n"); //debug - } -} - -void set_state_from_button_ccc(GtkWidget *widget, gpointer data) -{ - int data_pointer = GPOINTER_TO_INT(data); - bool button_status; - bool previous_status; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) - { - button_status = TRUE; - } - else - { - button_status = FALSE; - } - // g_print ("status=%d, pointer=%d\n", button_status, data_pointer ); - - switch (data_pointer) - { - case BUTTONID_PHASE1: - // g_print ("phase1=%d\n", button_status); - clone_settings_ccc.no_phase1 = !button_status; - break; - - case BUTTONID_PHASE2: - // g_print ("phase2=%d\n", button_status); - clone_settings_ccc.no_phase2 = !button_status; - break; - - case BUTTONID_PHASE3: - // g_print ("phase3=%d\n", button_status); - clone_settings_ccc.no_phase3 = !button_status; - break; - - case BUTTONID_PHASE4: - // g_print ("phase4=%d\n", button_status); - clone_settings_ccc.no_phase4 = !button_status; - break; - - case BUTTONID_DIVIDE: - // g_print ("divide=%d\n", button_status); - clone_settings_ccc.no_divide1 = !button_status; - break; - - case BUTTONID_DIVIDE2: - // g_print ("divide2=%d\n", button_status); - clone_settings_ccc.do_divide2 = button_status; - break; - - case BUTTONID_TRIM: - // g_print ("trim=%d\n", button_status); - clone_settings_ccc.no_trim = !button_status; - break; - - case BUTTONID_SCRAPE: - // g_print ("scrape=%d\n", button_status); - clone_settings_ccc.no_scrape = !button_status; - break; - - case BUTTONID_MARKBAD: - // g_print ("badhead=%d\n", button_status); - clone_settings_ccc.mark_bad_head = button_status; - break; - - case BUTTONID_READBAD: - // g_print ("goodhead=%d\n", button_status); - clone_settings_ccc.read_bad_head = button_status; - break; - - case BUTTONID_REBUILDASSIST: - clone_settings_ccc.rebuild_assist = button_status; - break; - - case BUTTONID_REVERSE: - // g_print ("reverse=%d\n", button_status); - clone_settings_ccc.reverse = button_status; - break; - - case BUTTONID_SKIPFAST: - // g_print ("skipfast=%d\n", button_status); - clone_settings_ccc.skip_fast = button_status; - break; - - case BUTTONID_NOLOGBACK: - // g_print ("nologback=%d\n", button_status); - advanced_settings_ccc.no_log_backup = button_status; - break; - - case BUTTONID_FORCE: - // g_print ("force=%d\n", button_status); - advanced_settings_ccc.force_mounted = button_status; - break; - - case BUTTONID_FORCEDANGEROUS: - advanced_settings_ccc.force_dangerous = button_status; - break; - - case BUTTONID_DONTIDENTIFY: - advanced_settings_ccc.disable_identify = button_status; - break; - - case BUTTONID_PIOMODE: - advanced_settings_ccc.pio_mode = button_status; - break; - - case BUTTONID_ENABLEREBUILDASSIST: - advanced_settings_ccc.enable_rebuild_assist = button_status; - break; - - case BUTTONID_ENABLEPROCESSCHUNK: - advanced_settings_ccc.enable_process_chunk = button_status; - break; - - case BUTTONID_ENABLEREADTWICE: - advanced_settings_ccc.enable_read_twice = button_status; - break; - - case BUTTONID_ENABLERETRYCONNECTING: - advanced_settings_ccc.enable_retry_connecting = button_status; - break; - - case BUTTONID_ENABLESCSIWRITE: - advanced_settings_ccc.enable_scsi_write = button_status; - break; - - case BUTTONID_ENABLEPHASELOGS: - advanced_settings_ccc.enable_phase_log = button_status; - break; - - case BUTTONID_PHASETIMERS: - // g_print ("phasetimers=%d\n", button_status); - timer_settings_ccc.phase_timers = button_status; - break; - - case BUTTONID_OFFSET: - // g_print ("offset=%d\n", button_status); - previous_status = advanced_settings_ccc.enable_output_offset; - advanced_settings_ccc.enable_output_offset = button_status; - if (previous_status != advanced_settings_ccc.enable_output_offset) - { - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGREOPENADVANCED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } - break; - - case BUTTONID_POSITION: - // g_print ("offset=%d\n", button_status); - previous_status = advanced_settings_ccc.enable_current_position; - advanced_settings_ccc.enable_current_position = button_status; - if (previous_status != advanced_settings_ccc.enable_current_position) - { - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGREOPENADVANCED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } - break; - - case BUTTONID_ENABLEOUTPUTSECTOR: - // g_print ("offset=%d\n", button_status); - previous_status = advanced_settings_ccc.enable_output_sector_size; - advanced_settings_ccc.enable_output_sector_size = button_status; - if (previous_status != advanced_settings_ccc.enable_output_sector_size) - { - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGREOPENADVANCED]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGINFO], 0); - clear_error_message_ccc(); - } - break; - - case BUTTONID_IOSCSIONLY: - advanced_settings_ccc.driver_io_scsi_only = button_status; - break; - - case BUTTONID_USEPHYSICALSECTORSIZE: - advanced_settings_ccc.use_physical_sector_size_for_virtual = button_status; - break; - - case BUTTONID_COLORSTATUSBAR: - advanced_settings_ccc.color_statusbar = button_status; - break; - - default: - g_print("Unknown button %d", data_pointer); - break; - } -} - -void do_reset_status_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - GtkWidget *new_dialog_window; - new_dialog_window = gtk_dialog_new_with_buttons(curlang_ccc[LANGRESETSTATUS], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - // gtk_widget_set_size_request (new_dialog_window, 400, 200); - - GtkWidget *new_label = gtk_label_new(curlang_ccc[LANGRESETSTATUSMESSAGE]); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(new_dialog_window)->vbox), new_label, TRUE, TRUE, 0); - - gtk_widget_show_all(new_dialog_window); - gint result = gtk_dialog_run(GTK_DIALOG(new_dialog_window)); - gtk_widget_destroy(new_dialog_window); - - if (result == GTK_RESPONSE_ACCEPT) - { - g_print("resetting status\n"); - reset_current_status_ccc(); - logfile_changed_ccc = true; - update_display_ccc(0); - } -} - -void do_reset_log_status_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - GtkWidget *new_dialog_window; - new_dialog_window = gtk_dialog_new_with_buttons(curlang_ccc[LANGRESETLOG], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - // gtk_widget_set_size_request (new_dialog_window, 400, 200); - - GtkWidget *new_label = gtk_label_new(curlang_ccc[LANGRESETLOGMESSAGE]); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(new_dialog_window)->vbox), new_label, TRUE, TRUE, 0); - - gtk_widget_show_all(new_dialog_window); - gint result = gtk_dialog_run(GTK_DIALOG(new_dialog_window)); - gtk_widget_destroy(new_dialog_window); - - if (result == GTK_RESPONSE_ACCEPT) - { - g_print("resetting log\n"); - reset_log_status_ccc(); - update_display_ccc(0); - // check log and if same status found then repair it - if (source_chosen_ccc) - { - check_log_size_ccc = 1; - } - else - { - check_log_size_ccc = 0; - } - repair_log_ccc = true; - int ret = check_log_ccc(); - clear_error_message_ccc(); - if (ret == 0x10) - { - check_and_repair_log_ccc(); - } - repair_log_ccc = false; - logfile_changed_ccc = true; - update_display_ccc(0); - } -} - -void do_repair_log_ccc(void) -{ - if (!project_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNOPROJECT]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - GtkWidget *new_dialog_window; - new_dialog_window = gtk_dialog_new_with_buttons(curlang_ccc[LANGREPAIRLOG], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - // gtk_widget_set_size_request (new_dialog_window, 400, 200); - - GtkWidget *new_label = gtk_label_new(curlang_ccc[LANGREPAIRLOGMESSAGE]); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(new_dialog_window)->vbox), new_label, TRUE, TRUE, 0); - - gtk_widget_show_all(new_dialog_window); - gint result = gtk_dialog_run(GTK_DIALOG(new_dialog_window)); - gtk_widget_destroy(new_dialog_window); - - if (result == GTK_RESPONSE_ACCEPT) - { - g_print("repairing log\n"); - if (source_chosen_ccc) - { - check_log_size_ccc = 1; - } - else - { - check_log_size_ccc = 0; - } - repair_log_ccc = true; - int ret = check_and_repair_log_ccc(); - if (check_log_ccc() || ret) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGLOGCHECKERR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - repair_log_ccc = false; - check_log_size_ccc = 1; - logfile_changed_ccc = true; - update_display_ccc(0); - } -} - -void about_ccc(void) -{ - GtkWidget *dialog = gtk_about_dialog_new(); - char temp[1024]; - - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), title_ccc); - - sprintf(temp, "%s %s", version_number_ccc, GIT_REVISION); - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), temp); - - sprintf(temp, "Copyright (C) %s Scott Dwyer and OpenSuperClone contributors", copyright_year_ccc); - gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), temp); - - strcpy(temp, "License type: GPL2\n"); - strcat(temp, "There is NO WARRANTY, to the extent permitted by law."); - gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog), temp); - - gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(dialog), OSC_HOMEPAGE); - gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog), OSC_HOMEPAGE); - - gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(dialog), (char *)opensuperclone_EULA_txt); - - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -// open choose usb dialog window -void choose_primary_usb_ccc(void) -{ - find_all_usb_devices_ccc(); - - choose_usb_dialog_window_ccc = gtk_dialog_new_with_buttons(curlang_ccc[LANGCHOOSEUSB], GTK_WINDOW(main_window_ccc), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - gtk_container_set_border_width(GTK_CONTAINER(choose_usb_dialog_window_ccc), 0); - gtk_widget_set_size_request(choose_usb_dialog_window_ccc, 600, 400); - - choose_usb_scrolled_window_ccc = gtk_scrolled_window_new(NULL, NULL); - gtk_container_set_border_width(GTK_CONTAINER(choose_usb_scrolled_window_ccc), 10); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(choose_usb_scrolled_window_ccc), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(choose_usb_dialog_window_ccc)->vbox), choose_usb_scrolled_window_ccc, TRUE, TRUE, 0); - - choose_usb_vbox_ccc = gtk_vbox_new(FALSE, 0); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(choose_usb_scrolled_window_ccc), choose_usb_vbox_ccc); - - GtkWidget *button[MAX_USB_DEVICES]; - - int i; - for (i = 0; i < usb_device_count_ccc; i++) - { - if (usb_known_relay_ccc[i]) - { - char button_label[MAX_BUTTON_LABEL_SIZE] = ""; - sprintf(button_label, "%04x:%04x %s %s %s\n", usb_vendor_id_ccc[i], usb_product_id_ccc[i], usb_vendor_string_ccc[i], usb_product_string_ccc[i], usb_extra_id_string_ccc[i]); - button[i] = gtk_button_new_with_label(button_label); - gtk_button_set_alignment(GTK_BUTTON(button[i]), 0, .5); - g_signal_connect(button[i], "clicked", G_CALLBACK(get_usb_from_button_ccc), GINT_TO_POINTER(i)); - gtk_box_pack_start(GTK_BOX(choose_usb_vbox_ccc), button[i], FALSE, FALSE, 0); - } - } - - gtk_widget_show_all(choose_usb_dialog_window_ccc); - gint result = gtk_dialog_run(GTK_DIALOG(choose_usb_dialog_window_ccc)); - gtk_widget_destroy(choose_usb_dialog_window_ccc); - - if (result == GTK_RESPONSE_ACCEPT) - { - // fprintf (stdout, "OK\n"); - int ret = choose_usb_relay_ccc(); - if (ret) - { - fprintf(stdout, "error selecting usb, ret=%d\n", ret); - clear_usbr1_ccc(); - sprintf(tempmessage_ccc, "%s", curlang_ccc[LANGUSBERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - usbr1_chosen_ccc = 1; - logfile_changed_ccc = true; - char name[MAX_RELAY_NAME_LENGTH]; - sprintf(name, "%04x:%04x %s %s %s\n", usbr1_vendor_id_ccc, usbr1_product_id_ccc, usbr1_vendor_string_ccc, usbr1_product_string_ccc, usbr1_extra_id_string_ccc); - strcpy(primary_relay_settings_ccc.primary_relay_name, name); - strcpy(primary_relay_name_ccc, name); - } - update_display_ccc(0); - } -} - -void get_usb_from_button_ccc(GtkWidget *w, gpointer data) -{ - new_usb_ccc = GPOINTER_TO_INT(data); - g_print("selection=%d \n", new_usb_ccc); -} - -void clear_usbr1_ccc(void) -{ - usbr1_chosen_ccc = 0; - strcpy(primary_relay_settings_ccc.primary_relay_name, ""); - strcpy(primary_relay_name_ccc, ""); - gtk_label_set_text(GTK_LABEL(data_current_relay_board_a_ccc), ""); -} - -void do_activate_primary_relay_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - bool activate_primary_relay1_bak = primary_relay_settings_ccc.activate_primary_relay1; - bool activate_primary_relay2_bak = primary_relay_settings_ccc.activate_primary_relay2; - bool activate_primary_relay3_bak = primary_relay_settings_ccc.activate_primary_relay3; - bool activate_primary_relay4_bak = primary_relay_settings_ccc.activate_primary_relay4; - bool activate_primary_relay5_bak = primary_relay_settings_ccc.activate_primary_relay5; - bool activate_primary_relay6_bak = primary_relay_settings_ccc.activate_primary_relay6; - bool activate_primary_relay7_bak = primary_relay_settings_ccc.activate_primary_relay7; - bool activate_primary_relay8_bak = primary_relay_settings_ccc.activate_primary_relay8; - bool deactivate_primary_relay1_bak = primary_relay_settings_ccc.deactivate_primary_relay1; - bool deactivate_primary_relay2_bak = primary_relay_settings_ccc.deactivate_primary_relay2; - bool deactivate_primary_relay3_bak = primary_relay_settings_ccc.deactivate_primary_relay3; - bool deactivate_primary_relay4_bak = primary_relay_settings_ccc.deactivate_primary_relay4; - bool deactivate_primary_relay5_bak = primary_relay_settings_ccc.deactivate_primary_relay5; - bool deactivate_primary_relay6_bak = primary_relay_settings_ccc.deactivate_primary_relay6; - bool deactivate_primary_relay7_bak = primary_relay_settings_ccc.deactivate_primary_relay7; - bool deactivate_primary_relay8_bak = primary_relay_settings_ccc.deactivate_primary_relay8; - unsigned long long primary_relay_activation_time_bak = primary_relay_settings_ccc.primary_relay_activation_time; - unsigned long long primary_relay_delay_time_bak = primary_relay_settings_ccc.primary_relay_delay_time; - - update_primary_relay_settings_from_buttons_ccc(); - update_primary_relay_settings_ccc(); - - g_print("activate primary relay\n"); - if (activate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - primary_relay_settings_ccc.activate_primary_relay1 = activate_primary_relay1_bak; - primary_relay_settings_ccc.activate_primary_relay2 = activate_primary_relay2_bak; - primary_relay_settings_ccc.activate_primary_relay3 = activate_primary_relay3_bak; - primary_relay_settings_ccc.activate_primary_relay4 = activate_primary_relay4_bak; - primary_relay_settings_ccc.activate_primary_relay5 = activate_primary_relay5_bak; - primary_relay_settings_ccc.activate_primary_relay6 = activate_primary_relay6_bak; - primary_relay_settings_ccc.activate_primary_relay7 = activate_primary_relay7_bak; - primary_relay_settings_ccc.activate_primary_relay8 = activate_primary_relay8_bak; - primary_relay_settings_ccc.deactivate_primary_relay1 = deactivate_primary_relay1_bak; - primary_relay_settings_ccc.deactivate_primary_relay2 = deactivate_primary_relay2_bak; - primary_relay_settings_ccc.deactivate_primary_relay3 = deactivate_primary_relay3_bak; - primary_relay_settings_ccc.deactivate_primary_relay4 = deactivate_primary_relay4_bak; - primary_relay_settings_ccc.deactivate_primary_relay5 = deactivate_primary_relay5_bak; - primary_relay_settings_ccc.deactivate_primary_relay6 = deactivate_primary_relay6_bak; - primary_relay_settings_ccc.deactivate_primary_relay7 = deactivate_primary_relay7_bak; - primary_relay_settings_ccc.deactivate_primary_relay8 = deactivate_primary_relay8_bak; - primary_relay_settings_ccc.primary_relay_activation_time = primary_relay_activation_time_bak; - primary_relay_settings_ccc.primary_relay_delay_time = primary_relay_delay_time_bak; - update_primary_relay_settings_ccc(); -} - -void do_deactivate_primary_relay_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - bool activate_primary_relay1_bak = primary_relay_settings_ccc.activate_primary_relay1; - bool activate_primary_relay2_bak = primary_relay_settings_ccc.activate_primary_relay2; - bool activate_primary_relay3_bak = primary_relay_settings_ccc.activate_primary_relay3; - bool activate_primary_relay4_bak = primary_relay_settings_ccc.activate_primary_relay4; - bool activate_primary_relay5_bak = primary_relay_settings_ccc.activate_primary_relay5; - bool activate_primary_relay6_bak = primary_relay_settings_ccc.activate_primary_relay6; - bool activate_primary_relay7_bak = primary_relay_settings_ccc.activate_primary_relay7; - bool activate_primary_relay8_bak = primary_relay_settings_ccc.activate_primary_relay8; - bool deactivate_primary_relay1_bak = primary_relay_settings_ccc.deactivate_primary_relay1; - bool deactivate_primary_relay2_bak = primary_relay_settings_ccc.deactivate_primary_relay2; - bool deactivate_primary_relay3_bak = primary_relay_settings_ccc.deactivate_primary_relay3; - bool deactivate_primary_relay4_bak = primary_relay_settings_ccc.deactivate_primary_relay4; - bool deactivate_primary_relay5_bak = primary_relay_settings_ccc.deactivate_primary_relay5; - bool deactivate_primary_relay6_bak = primary_relay_settings_ccc.deactivate_primary_relay6; - bool deactivate_primary_relay7_bak = primary_relay_settings_ccc.deactivate_primary_relay7; - bool deactivate_primary_relay8_bak = primary_relay_settings_ccc.deactivate_primary_relay8; - unsigned long long primary_relay_activation_time_bak = primary_relay_settings_ccc.primary_relay_activation_time; - unsigned long long primary_relay_delay_time_bak = primary_relay_settings_ccc.primary_relay_delay_time; - - update_primary_relay_settings_from_buttons_ccc(); - update_primary_relay_settings_ccc(); - - g_print("deactivate primary relay\n"); - if (deactivate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - - primary_relay_settings_ccc.activate_primary_relay1 = activate_primary_relay1_bak; - primary_relay_settings_ccc.activate_primary_relay2 = activate_primary_relay2_bak; - primary_relay_settings_ccc.activate_primary_relay3 = activate_primary_relay3_bak; - primary_relay_settings_ccc.activate_primary_relay4 = activate_primary_relay4_bak; - primary_relay_settings_ccc.activate_primary_relay5 = activate_primary_relay5_bak; - primary_relay_settings_ccc.activate_primary_relay6 = activate_primary_relay6_bak; - primary_relay_settings_ccc.activate_primary_relay7 = activate_primary_relay7_bak; - primary_relay_settings_ccc.activate_primary_relay8 = activate_primary_relay8_bak; - primary_relay_settings_ccc.deactivate_primary_relay1 = deactivate_primary_relay1_bak; - primary_relay_settings_ccc.deactivate_primary_relay2 = deactivate_primary_relay2_bak; - primary_relay_settings_ccc.deactivate_primary_relay3 = deactivate_primary_relay3_bak; - primary_relay_settings_ccc.deactivate_primary_relay4 = deactivate_primary_relay4_bak; - primary_relay_settings_ccc.deactivate_primary_relay5 = deactivate_primary_relay5_bak; - primary_relay_settings_ccc.deactivate_primary_relay6 = deactivate_primary_relay6_bak; - primary_relay_settings_ccc.deactivate_primary_relay7 = deactivate_primary_relay7_bak; - primary_relay_settings_ccc.deactivate_primary_relay8 = deactivate_primary_relay8_bak; - primary_relay_settings_ccc.primary_relay_activation_time = primary_relay_activation_time_bak; - primary_relay_settings_ccc.primary_relay_delay_time = primary_relay_delay_time_bak; - update_primary_relay_settings_ccc(); -} - -void do_activate_primary_relay_main_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - g_print("activate primary relay\n"); - if (activate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } -} - -void do_deactivate_primary_relay_main_ccc(void) -{ - if (!usbr1_chosen_ccc) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGNORELAYCHOSEN]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - return; - } - g_print("deactivate primary relay\n"); - if (deactivate_primary_relay_ccc()) - { - strcpy(tempmessage_ccc, curlang_ccc[LANGUSBRELAYERROR]); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } -} - -void map_heads_ccc(void) -{ - if (!connected_ccc) - { - strcpy(tempmessage_ccc, "you must be connected to map heads"); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - else - { - if (rebuild_assist_map_heads_ccc()) - { - strcpy(tempmessage_ccc, "error mapping heads"); - message_error_ccc(tempmessage_ccc); - print_gui_error_message_ccc(error_message_ccc, curlang_ccc[LANGERROR], 1); - clear_error_message_ccc(); - } - } -} diff --git a/src/opensuperclone/clone_gui2.h b/src/opensuperclone/clone_gui2.h deleted file mode 100644 index a20bb78..0000000 --- a/src/opensuperclone/clone_gui2.h +++ /dev/null @@ -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 -#ifdef DEBUG -#include -#endif -#include -#include -#include -#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 *)) diff --git a/src/opensuperclone/opensuperclone3.glade b/src/opensuperclone/opensuperclone.glade similarity index 100% rename from src/opensuperclone/opensuperclone3.glade rename to src/opensuperclone/opensuperclone.glade diff --git a/src/opensuperclone/opensuperclone2.glade b/src/opensuperclone/opensuperclone2.glade deleted file mode 100644 index 0a4948e..0000000 --- a/src/opensuperclone/opensuperclone2.glade +++ /dev/null @@ -1,7917 +0,0 @@ - - - - - - False - 5 - advanced settings - True - 600 - 600 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 1400 - True - False - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - no log backup - True - True - False - True - - - - - - - True - False - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable logging phases - True - True - False - True - - - - - - - True - False - True - - - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - force mounted - True - True - False - True - - - - - - - True - False - True - - - - - True - True - 0 - - - - - False - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - force dangerous - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 2 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable output offset - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 3 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - output offset - True - - - - - False - True - 4 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable current position - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 5 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - current position - True - - - - - False - True - 6 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - stop - True - True - False - True - True - - - - - - - True - False - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - activate primary relay - True - True - False - True - stop_on_error_radio_button - - - - - - - True - False - True - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - call command - True - True - False - True - stop_on_error_radio_button - - - True - True - 0 - - - - - True - True - - True - False - False - True - True - - - True - True - 1 - - - - - test command - True - True - True - - - - True - True - 2 - - - - - - - - - True - False - True - - - - - True - True - 2 - - - - - - - - - True - False - action for major error - True - - - - - False - True - 7 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - enabled - True - True - False - True - True - - - True - True - 0 - - - - - disabled - True - True - False - True - write_buffer_enable_radio_button - - - True - True - 1 - - - - - - - - - True - False - write buffer - True - - - - - False - True - 8 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - return IO error - True - True - False - True - True - - - True - True - 0 - - - - - return zeros - True - True - False - True - driver_return_error_radio_button - - - True - True - 1 - - - - - return marked - True - True - False - True - driver_return_error_radio_button - - - True - True - 2 - - - - - - - - - True - False - driver read error options - True - - - - - False - True - 9 - - - - - True - False - 0 - in - - - True - False - 12 - - - virtual disk io scsi only - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 10 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - True - False - False - True - True - - - - - - - True - False - virtual disk device name - True - - - - - False - True - 11 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - virtual disk minimum cluster size - True - - - - - False - True - 12 - - - - - True - False - 0 - in - - - True - False - 12 - - - use physical sector size for virtual - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 13 - - - - - True - False - 0 - in - - - True - False - 12 - - - disable identify - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 14 - - - - - True - False - 0 - in - - - True - False - 12 - - - pio mode - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 15 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable rebuild assist - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 16 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable process chunk - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 17 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable read twice on timeout - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 18 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable retry connecting - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 19 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable scsi write - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 20 - - - - - True - False - 0 - in - - - True - False - 12 - - - enable output sector size adjustment - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 21 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - output sector size adjustment - True - - - - - False - True - 22 - - - - - True - False - 0 - in - - - True - False - 12 - - - use colors in statusbar - True - True - False - True - - - - - - - True - False - True - - - - - False - True - 23 - - - - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button - settings_cancel_button - - - - False - 5 - analyze results - True - 600 - 600 - dialog - - - True - False - 2 - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 800 - 1000 - True - False - - - True - False - - - False - True - 0 - - - - - True - False - 0 - 0 - analyze results - - - True - True - 1 - - - - - - - - - - - True - True - 0 - - - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - False - False - end - 1 - - - - - - results_ok_button - - - - False - 5 - clone settings - True - 600 - 600 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 650 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - True - - - True - False - - - phase1 - True - True - False - True - - - True - True - 0 - - - - - phase2 - True - True - False - True - - - True - True - 1 - - - - - phase3 - True - True - False - True - - - True - True - 2 - - - - - phase4 - True - True - False - True - - - True - True - 3 - - - - - trim - True - True - False - True - - - True - True - 4 - - - - - divide - True - True - False - True - - - True - True - 5 - - - - - divide2 - True - True - False - True - - - True - True - 6 - - - - - scrape - True - True - False - True - - - True - True - 7 - - - - - True - True - 0 - - - - - True - False - - - reverse - True - True - False - True - - - True - True - 0 - - - - - skipfast - True - True - False - True - - - True - True - 1 - - - - - mark-bad-head - True - True - False - True - - - True - True - 2 - - - - - read-bad-head - True - True - False - True - - - True - True - 3 - - - - - rebuild assist - True - True - False - True - - - True - True - 4 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - retries - True - - - - - False - True - 5 - - - - - - - - True - True - 1 - - - - - - - - - True - False - phases - - - - - False - True - 0 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - clustersize - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - sectorsize - True - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - input offset - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - size - True - - - - - True - True - 1 - - - - - False - True - 2 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - skip size - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - max skip size - True - - - - - True - True - 1 - - - - - False - True - 3 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - skip threshold - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - rate skip - True - - - - - True - True - 1 - - - - - False - True - 4 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - exit on slow - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - exit on slow time - True - - - - - True - True - 1 - - - - - False - True - 5 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - blocksize - True - - - - - True - True - 0 - - - - - True - False - 0 - none - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - alignement - True - - - - - True - True - 1 - - - - - False - True - 6 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - max read rate - True - - - - - True - True - 0 - - - - - True - False - 0 - none - - - True - False - 12 - - - - - - - - - - - True - True - 1 - - - - - False - True - 7 - - - - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button1 - settings_cancel_button1 - - - - False - 5 - conformation dialog - True - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - True - False - label - - - True - True - 1 - - - - - - confirmation_ok_button - confirmation_cancel_button - - - - False - 5 - disable ports - True - 600 - 660 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 460 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - disable ports info - - - - - - - True - False - disable ports - True - - - - - False - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - current ports info - - - True - True - 0 - - - - - - - - - True - False - current ports - True - - - - - False - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - True - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - True - - - - - True - True - 0 - - - - - update ports - True - True - True - - - - True - True - 1 - - - - - - - - - True - False - set disabled ports - True - - - - - False - True - 2 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - updated ports info - - - True - True - 0 - - - - - - - - - True - False - updated ports - True - - - - - False - True - 3 - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button3 - settings_cancel_button3 - - - - False - 5 - identify results - True - 600 - 600 - dialog - - - True - False - 2 - - - True - False - - - False - True - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - identify results - - - - - - - True - True - 1 - - - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - False - False - end - 2 - - - - - - results_ok_button2 - - - - False - 5 - primary relay settings - True - 600 - 660 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 640 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - primary relay settings info - - - - - - - True - False - primary relay settings - True - - - - - False - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - - - - - True - False - True - - - - - True - True - 0 - - - - - - - - - True - False - current primary relay board - True - True - - - - - False - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - True - - - True - False - - - energize relay 1 - True - True - False - True - - - True - True - 0 - - - - - energize relay 2 - True - True - False - True - - - True - True - 1 - - - - - energize relay 3 - True - True - False - True - - - True - True - 2 - - - - - energize relay 4 - True - True - False - True - - - True - True - 3 - - - - - True - True - 0 - - - - - True - False - - - energize relay 5 - True - True - False - True - - - True - True - 0 - - - - - energize relay 6 - True - True - False - True - - - True - True - 1 - - - - - energize relay 7 - True - True - False - True - - - True - True - 2 - - - - - energize relay 8 - True - True - False - True - - - True - True - 3 - - - - - True - True - 1 - - - - - - - - - True - False - activation condition - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - True - - - True - False - - - energize relay 1 - True - True - False - True - - - True - True - 0 - - - - - energize relay 2 - True - True - False - True - - - True - True - 1 - - - - - energize relay 3 - True - True - False - True - - - True - True - 2 - - - - - energize relay 4 - True - True - False - True - - - True - True - 3 - - - - - True - True - 0 - - - - - True - False - - - energize relay 5 - True - True - False - True - - - True - True - 0 - - - - - energize relay 6 - True - True - False - True - - - True - True - 1 - - - - - energize relay 7 - True - True - False - True - - - True - True - 2 - - - - - energize relay 8 - True - True - False - True - - - True - True - 3 - - - - - True - True - 1 - - - - - - - - - True - False - deactivation condition - True - - - - - True - True - 1 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - activation time - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - post delay time - True - - - - - True - True - 1 - - - - - True - True - 2 - - - - - True - False - 0 - in - - - True - False - 12 - - - test relay operation - True - True - True - - - - - - - - True - False - True - - - - - True - True - 3 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - activate - True - True - True - - - - - - - - True - False - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - deactivate - True - True - True - - - - - - - - True - False - True - - - - - True - True - 1 - - - - - True - True - 4 - - - - - - - - - True - False - relay board settings - True - - - - - False - True - 2 - - - - - - - - - - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button4 - settings_cancel_button4 - - - - False - 5 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - True - True - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 640 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - rebuild assist info - - - - - - - True - False - rebuild assist - True - - - - - False - True - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button5 - settings_cancel_button5 - - - - False - 5 - select lun - True - 600 - 300 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 230 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - select lun info - - - - - - - True - False - select lun - True - - - - - False - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - lun values info - - - True - True - 0 - - - - - - - - - True - False - lun values - True - - - - - False - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - True - - - - - True - True - 0 - - - - - - - - - True - False - set current lun - True - - - - - False - True - 2 - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button6 - settings_cancel_button6 - - - - False - 5 - smart results - True - 300 - 300 - dialog - - - True - False - 2 - - - True - False - - - False - True - 0 - - - - - True - False - smart results - - - True - True - 1 - - - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - False - False - end - 2 - - - - - - results_ok_button1 - - - - False - 5 - advanced settings - True - 600 - 660 - dialog - - - True - False - 2 - - - True - False - end - - - gtk-ok - True - True - True - True - - - False - False - 0 - - - - - gtk-cancel - True - True - True - True - - - False - False - 1 - - - - - False - False - end - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - 560 - 1000 - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - timer settings info - - - - - - - True - False - timer settings - True - - - - - False - True - 0 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - initial busy wait time - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - busy wait time - True - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - soft reset time - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - hard reset time - True - - - - - True - True - 1 - - - - - True - True - 0 - - - - - False - True - 2 - - - - - True - False - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - True - - False - False - True - True - - - True - True - 0 - - - - - - - - - True - False - power cycle / command time - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - general timeout - True - - - - - True - True - 1 - - - - - True - True - 0 - - - - - False - True - 3 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - stop - True - True - False - True - True - - - - - - - True - False - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - activate primary relay - True - True - False - True - stop_on_power_cycle_radio_button - - - - - - - True - False - True - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - call command - True - True - False - True - stop_on_power_cycle_radio_button - - - True - True - 0 - - - - - True - True - - True - False - False - True - True - - - True - True - 1 - - - - - test command - True - True - True - - - - True - True - 2 - - - - - - - - - True - False - True - - - - - True - True - 2 - - - - - - - - - True - False - action for power cycle - True - - - - - False - True - 4 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - enable phase timers - True - True - False - True - - - True - True - 0 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - p12 timer - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - p3 timer - True - - - - - True - True - 1 - - - - - True - True - 1 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - p4 timer - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - trim divide timer - True - - - - - True - True - 1 - - - - - True - True - 2 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - divide 2 timer - True - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - scrape timer - True - - - - - True - True - 1 - - - - - True - True - 3 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - True - - False - False - True - True - - - - - - - True - False - retry timer - True - - - - - True - True - 0 - - - - - True - False - 0 - none - - - True - False - 12 - - - - - - - - True - False - True - - - - - True - True - 1 - - - - - True - True - 4 - - - - - - - - - True - False - phase timers - True - - - - - False - True - 5 - - - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - always wait for reset timers - True - True - False - True - - - - - - - True - False - True - - - - - True - True - 0 - - - - - False - True - 6 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - enable usb bulk reset - True - True - False - True - - - True - True - 0 - - - - - enable usb soft reset - True - True - False - True - - - True - True - 1 - - - - - enable usb hard reset - True - True - False - True - - - True - True - 2 - - - - - enable usb port reset - True - True - False - True - - - True - True - 3 - - - - - - - - - True - False - usb resets - True - - - - - False - True - 7 - - - - - - - - - - - - - - True - True - 1 - - - - - - settings_ok_button2 - settings_cancel_button2 - - - - False - center - 800 - 720 - - - - True - False - - - True - False - - - True - False - file - - - True - False - - - True - False - open - True - - - - - - True - False - new - True - - - - - - True - False - importdd - True - - - - - - True - False - - - - - True - False - save - True - - - - - - True - False - save as - True - - - - - - True - False - exportdd - True - - - - - - True - False - - - - - True - False - add domain - True - - - - - - True - False - domain - True - - - - - - True - False - new domain - True - - - - - - True - False - clear domain - True - - - - - - True - False - save domain - True - - - - - - True - False - save domain as - True - - - - - - True - False - - - - - True - False - quit - True - - - - - - - - - - True - False - mode - True - - - True - False - - - True - False - copy image - True - True - pass_automi - - - - - - True - False - generic - True - True - pass_automi - - - - - - True - False - passthrough-auto - True - True - True - - - - - - True - False - passthrough-scsi - True - True - pass_automi - - - - - - True - False - passthrough-ata - True - True - pass_automi - - - - - - True - False - direct - True - True - pass_automi - - - - - - True - False - ahci - True - True - pass_automi - - - - - - True - False - usb direct - True - True - pass_automi - - - - - - True - False - usb direct ata - True - True - pass_automi - - - - - - True - False - fill zero - True - True - pass_automi - - - - - - True - False - fill mark - True - True - pass_automi - - - - - - True - False - fill erase - True - True - pass_automi - - - - - - True - False - driver only - True - True - pass_automi - - - - - - - - - - True - False - drives - True - - - True - False - - - True - False - source - True - - - - - - True - False - destination - True - - - True - False - - - True - False - block - True - - - - - - True - False - drive - True - - - - - - True - False - image - True - - - - - - True - False - devnull - True - - - - - - - - - - True - False - install driver - True - - - - - - True - False - uninstall driver - True - - - - - - True - False - fix driver memory - True - - - - - - True - False - disable ports - True - - - - - - True - False - restore original ports - True - - - - - - True - False - disable usb mass storage - True - - - - - - True - False - restore usb mass storage - True - - - - - - - - - - True - False - settings - True - - - True - False - - - True - False - clone - True - - - - - - True - False - advanced - True - - - - - - True - False - timers - True - - - - - - True - False - primary relay - True - - - - - - True - False - choose primary relay - True - - - - - - - - - - True - False - tools - True - - - True - False - - - True - False - reset status - True - - - - - - True - False - repair log - True - - - - - - True - False - reset log - True - - - - - - True - False - display identify results - True - - - - - - True - False - display analyze results - True - - - - - - True - False - display smart results - True - - - - - - False - True - map heads - True - - - - - - False - True - hba reset - True - - - - - - - - - - True - False - True - help - True - - - True - False - - - True - False - about - True - - - - - - - - - - False - True - 0 - - - - - True - True - automatic - automatic - - - True - False - - - True - False - - - True - False - - - connect - True - True - True - - - - False - True - 0 - - - - - disconnect - True - True - True - - - - False - True - 1 - - - - - start - True - True - True - - - - False - True - 2 - - - - - stop - True - True - True - - - - False - True - 3 - - - - - smart - True - True - True - - - - False - True - 4 - - - - - analyze - True - True - True - - - - False - True - 5 - - - - - extended -analyze - True - True - True - - - - False - True - 6 - - - - - - - - - - - power on - True - True - True - - - - False - True - end - 21 - - - - - power off - True - True - True - right - - - - False - True - end - 22 - - - - - hard -reset - True - True - True - - - - False - True - end - 23 - - - - - soft -reset - True - True - True - - - - False - True - end - 24 - - - - - driver -mode 5 - True - True - True - - - - False - True - end - 25 - - - - - driver -mode 4 - True - True - True - - - - False - True - end - 26 - - - - - driver -mode 3 - True - True - True - - - - False - True - end - 27 - - - - - driver -mode 2 - True - True - True - - - - False - True - end - 28 - - - - - driver -mode 1 - True - True - True - - - - False - True - end - 29 - - - - - agressive -driver - True - True - False - True - True - - - - False - True - end - 30 - - - - - clone -mode - True - True - True - - - - False - True - end - 31 - - - - - False - False - 0 - - - - - True - False - - - True - False - - - - - - False - True - 0 - - - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - project - True - word-char - - - - - - - True - False - project - True - - - - - - - - False - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - domain - True - word-char - - - - - - - True - False - domain - True - - - - - - - - False - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - destination - True - word-char - - - - - - - - - - - True - False - destination - - - - - - - - False - True - 2 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - source - - - - - - - - - - - True - False - source - - - - - - - - True - True - 0 - - - - - False - True - 3 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - total lba - - - - - - - True - False - total lba - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - lba to read - - - - - - - True - False - lba to read - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - domain size - - - - - - - True - False - domain size - True - - - - - - - - True - True - 2 - - - - - False - True - 4 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - current position - - - - - - - - - - - True - False - current position - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - current status - - - - - - - - - - - True - False - current status - - - - - - - - True - True - 1 - - - - - True - False - 0 - none - - - True - False - 12 - - - True - False - 0 - mode - - - - - - - - - - - True - False - mode - - - - - - - - True - True - 2 - - - - - False - True - 5 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - run time - - - - - - - - - - - True - False - run time - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - remaining time - - - - - - - - - - - True - False - remaining time - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - longest read time - - - - - - - - - - - True - False - longest read time - True - - - - - - - - True - True - 2 - - - - - False - True - 6 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - current rate - - - - - - - - - - - True - False - current rate - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - recent rate - - - - - - - - - - - True - False - recent rate - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - total rate - - - - - - - - - - - True - False - total rate - True - - - - - - - - True - True - 2 - - - - - False - True - 7 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - filled - - - - - - - - - - - True - False - filled - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - retried - - - - - - - - - - - True - False - retried - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - retry passes - - - - - - - - - - - True - False - remaining retry passes - True - - - - - - - - True - True - 2 - - - - - False - True - 8 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - finished - - - - - - - - - - - True - False - finished - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - non-tried - - - - - - - - - - - True - False - non-tried - True - - - - - - - - True - True - 1 - - - - - False - True - 9 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - non-trimmed - - - - - - - - - - - True - False - non-trimmed - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - non-divided - - - - - - - - - - - True - False - non-divided - True - - - - - - - - True - True - 1 - - - - - False - True - 10 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - non-scraped - - - - - - - - - - - True - False - non-scraped - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - bad - - - - - - - - - - - True - False - bad - True - - - - - - - - True - True - 1 - - - - - False - True - 11 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - skips - - - - - - - - - - - True - False - skips - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - runs - - - - - - - - - - - True - False - skip runs - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - skip resets - - - - - - - - - - - True - False - skip resets - True - - - - - - - - True - True - 2 - - - - - False - True - 12 - - - - - True - False - True - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - skip size - - - - - - - - - - - True - False - slip size - True - - - - - - - - True - True - 0 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - run size - - - - - - - - - - - True - False - run size - True - - - - - - - - True - True - 1 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - slow skips - - - - - - - - - - - True - False - slow skips - True - - - - - - - - True - True - 2 - - - - - False - True - 13 - - - - - True - False - 0 - in - - - True - False - 12 - - - True - False - 0 - no data -no data -no data - - - - - - - True - False - data preview - True - - - - - - - - False - True - 14 - - - - - - - - - - - - True - False - No data - True - - - - - True - True - 0 - - - - - True - True - 1 - - - - - True - False - - - - - - False - True - 2 - - - - - True - True - 1 - - - - - True - False - - - - - - False - True - 2 - - - - - - - - - True - True - 1 - - - - - - diff --git a/src/oscviewer/CMakeLists.txt b/src/oscviewer/CMakeLists.txt index 5074130..bd57a26 100644 --- a/src/oscviewer/CMakeLists.txt +++ b/src/oscviewer/CMakeLists.txt @@ -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}) diff --git a/src/oscviewer/oscviewer3.c b/src/oscviewer/oscviewer.c similarity index 99% rename from src/oscviewer/oscviewer3.c rename to src/oscviewer/oscviewer.c index 9220a97..60f2efb 100644 --- a/src/oscviewer/oscviewer3.c +++ b/src/oscviewer/oscviewer.c @@ -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); } diff --git a/src/oscviewer/oscviewer2.glade b/src/oscviewer/oscviewer.glade similarity index 100% rename from src/oscviewer/oscviewer2.glade rename to src/oscviewer/oscviewer.glade diff --git a/src/oscviewer/oscviewer3.h b/src/oscviewer/oscviewer.h similarity index 100% rename from src/oscviewer/oscviewer3.h rename to src/oscviewer/oscviewer.h diff --git a/src/oscviewer/oscviewer2.c b/src/oscviewer/oscviewer2.c deleted file mode 100644 index 9f2cbda..0000000 --- a/src/oscviewer/oscviewer2.c +++ /dev/null @@ -1,4097 +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 "config.h" -#include "oscviewer2.h" -#include "oscviewer2_glade.h" - -char *title = "OSCViewer"; -char *version_number = OSCVIEWER_VERSION; -int copyright_year = COPYRIGHT_YEAR; - -int main(int argc, char **argv) -{ - char window_title[256]; - strcpy(window_title, title); - strcat(window_title, " "); - strcat(window_title, version_number); - - strcpy(program_title, "_"); - strcat(program_title, title); - strcat(program_title, "_"); - strcat(program_title, version_number); - strcat(program_title, "_"); - - // setup initial language - setup_enlanguage(); - copy_enlanguage(); - - // begin processing command line arguments - int command_line_argument; - int arguments_required; // required number of non-option arguments - bool command_line_error = false; // initialize error to false - - while (1) - { - static struct option long_options[] = - { - {"debug", no_argument, 0, 'd'}, - {"help", no_argument, 0, 'h'}, - {"version", no_argument, 0, 'v'}, - {"translate", required_argument, 0, 't'}, - {0, 0, 0, 0}}; - // getopt_long stores the option index here. - int option_index = 0; - - command_line_argument = getopt_long(argc, argv, "dhvt:", long_options, &option_index); - - // Detect the end of the options. - if (command_line_argument == -1) - break; - - switch (command_line_argument) - { - case 'd': - debug++; - break; - - case 'h': - help(); - exit(0); - - case 'v': - version(); - exit(0); - - case 't': - translate = strtoull(optarg, NULL, 0); - break; - - case '?': - // getopt_long already printed an error message. - command_line_error = true; - break; - - default: - fprintf(stdout, "Unknown error processing command line options\n"); - command_line_error = true; - } - } - - arguments_required = 0; - if ((argc - optind) != arguments_required) - { - command_line_error = true; - if ((argc - optind) < arguments_required) - { - fprintf(stdout, "Error: too few arguments\n"); - } - if ((argc - optind) > arguments_required) - { - fprintf(stdout, "Error: too many arguments\n"); - } - } - - // exit on command line error - if (command_line_error) - { - fprintf(stdout, "%s: Command line error.\n", title); - fprintf(stdout, "Try '%s --help' for more information.\n", title); - exit(1); - } - - // end of command line processing - - // initialize the memory for the progress log file - if (initialize_memory()) - { - exit(1); - } - - gtk_init(&argc, &argv); - - if (translate) - { - translate_all(); - exit(0); - } - - // change language dialog at startup - set_language(); - - 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 *)oscviewer2_glade, oscviewer2_glade_len, &err)) - { - fprintf(stderr, "Error adding build from file. Error: %s\n", err->message); - } - - main_window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window")); - if (NULL == main_window) - { - fprintf(stderr, "Object error: main_window \n"); - } - gtk_builder_connect_signals(builder, NULL); - // main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(main_window), window_title); - g_signal_connect(main_window, "size-allocate", G_CALLBACK(getsize_main_window), NULL); - gtk_window_set_default_size(GTK_WINDOW(main_window), MAINWINDOWWIDTH, MAINWINDOWHEIGTH); - gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER); - - // set it to exit if closed - g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(gtk_main_quit), NULL); - - // gtk_container_set_border_width (GTK_CONTAINER (main_window), 2); - - // main_vbox = gtk_vbox_new (FALSE, 0); - // gtk_container_add (GTK_CONTAINER (main_window), main_vbox); - main_vbox = GTK_WIDGET(gtk_builder_get_object(builder, "main_vbox")); - - // start of menu - // menubar = gtk_menu_bar_new(); - // menuseparater = gtk_separator_menu_item_new(); - - // file menu - // filemenu = gtk_menu_new(); - // filemi = gtk_menu_item_new_with_label(curlang[LANGFILE]); - // quitmi = gtk_menu_item_new_with_label(curlang[LANGQUIT]); - // openmi = gtk_menu_item_new_with_label(curlang[LANGOPEN]); - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(filemi), filemenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), openmi); - // gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), menuseparater); - // gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quitmi); - // gtk_menu_shell_append(GTK_MENU_SHELL(menubar), filemi); - filemi = GTK_WIDGET(gtk_builder_get_object(builder, "filemi")); - quitmi = GTK_WIDGET(gtk_builder_get_object(builder, "quitmi")); - 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")); - gtk_menu_item_set_label(GTK_MENU_ITEM(filemi), curlang[LANGFILE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(quitmi), curlang[LANGQUIT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(openmi), curlang[LANGOPEN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(domainmi), curlang[LANGDOMAIN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(dmdedomainmi), curlang[LANGDMDEDOMAIN]); - - 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")); - - block_information_label = GTK_WIDGET(gtk_builder_get_object(builder, "block_information_label")); - - // options menu - // optionsmenu = gtk_menu_new(); - // optionsmi = gtk_menu_item_new_with_label(curlang[LANGOPTIONS]); - optionsmi = GTK_WIDGET(gtk_builder_get_object(builder, "optionsmi")); - gtk_menu_item_set_label(GTK_MENU_ITEM(optionsmi), curlang[LANGOPTIONS]); - - // left res menu - // leftresmenu = gtk_menu_new(); - // leftresolutionmi = gtk_menu_item_new_with_label(curlang[LANGLEFTRES]); - // leftresbutton1 = gtk_radio_menu_item_new_with_label (leftresgroup, curlang[LANG1PT]); - // leftresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (leftresbutton1)); - // leftresbutton2 = gtk_radio_menu_item_new_with_label (leftresgroup, curlang[LANG2PT]); - // leftresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (leftresbutton2)); - // leftresbutton3 = gtk_radio_menu_item_new_with_label (leftresgroup, curlang[LANG3PT]); - // leftresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (leftresbutton3)); - // leftresbutton4 = gtk_radio_menu_item_new_with_label (leftresgroup, curlang[LANG4PT]); - // leftresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (leftresbutton4)); - leftresolutionmi = GTK_WIDGET(gtk_builder_get_object(builder, "leftresolutionmi")); - leftresbutton1 = GTK_WIDGET(gtk_builder_get_object(builder, "leftresbutton1")); - leftresbutton2 = GTK_WIDGET(gtk_builder_get_object(builder, "leftresbutton2")); - leftresbutton3 = GTK_WIDGET(gtk_builder_get_object(builder, "leftresbutton3")); - leftresbutton4 = GTK_WIDGET(gtk_builder_get_object(builder, "leftresbutton4")); - gtk_menu_item_set_label(GTK_MENU_ITEM(leftresolutionmi), curlang[LANGLEFTRES]); - gtk_menu_item_set_label(GTK_MENU_ITEM(leftresbutton1), curlang[LANG1PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(leftresbutton2), curlang[LANG2PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(leftresbutton3), curlang[LANG3PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(leftresbutton4), curlang[LANG4PT]); - - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (leftresbutton2), TRUE); - - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(leftresolutionmi), leftresmenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(leftresmenu), leftresbutton1); - // gtk_menu_shell_append(GTK_MENU_SHELL(leftresmenu), leftresbutton2); - // gtk_menu_shell_append(GTK_MENU_SHELL(leftresmenu), leftresbutton3); - // gtk_menu_shell_append(GTK_MENU_SHELL(leftresmenu), leftresbutton4); - - // main res menu - // mainresmenu = gtk_menu_new(); - // mainresolutionmi = gtk_menu_item_new_with_label(curlang[LANGMAINRES]); - // mainresbutton4 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG4PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton4)); - // mainresbutton6 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG6PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton6)); - // mainresbutton8 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG8PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton8)); - // mainresbutton10 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG10PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton10)); - // mainresbutton12 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG12PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton12)); - // mainresbutton14 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG14PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton14)); - // mainresbutton16 = gtk_radio_menu_item_new_with_label (mainresgroup, curlang[LANG16PT]); - // mainresgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainresbutton16)); - mainresolutionmi = GTK_WIDGET(gtk_builder_get_object(builder, "mainresolutionmi")); - mainresbutton4 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton4")); - mainresbutton6 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton6")); - mainresbutton8 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton8")); - mainresbutton10 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton10")); - mainresbutton12 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton12")); - mainresbutton14 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton14")); - mainresbutton16 = GTK_WIDGET(gtk_builder_get_object(builder, "mainresbutton16")); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresolutionmi), curlang[LANGMAINRES]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton4), curlang[LANG4PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton6), curlang[LANG6PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton8), curlang[LANG8PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton10), curlang[LANG10PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton12), curlang[LANG12PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton14), curlang[LANG14PT]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainresbutton16), curlang[LANG16PT]); - - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mainresbutton8), TRUE); - - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(mainresolutionmi), mainresmenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton4); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton6); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton8); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton10); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton12); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton14); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainresmenu), mainresbutton16); - - // main size menu - // mainsizemenu = gtk_menu_new(); - // maingridsizemi = gtk_menu_item_new_with_label(curlang[LANGMAINSIZE]); - // mainsizebutton4k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG4K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton4k)); - // mainsizebutton8k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG8K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton8k)); - // mainsizebutton16k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG16K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton16k)); - // mainsizebutton32k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG32K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton32k)); - // mainsizebutton64k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG64K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton64k)); - // mainsizebutton128k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG128K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton128k)); - // mainsizebutton256k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG256K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton256k)); - // mainsizebutton512k = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG512K]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton512k)); - // mainsizebutton1m = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG1M]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton1m)); - // mainsizebutton2m = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG2M]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton2m)); - // mainsizebutton4m = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG4M]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton4m)); - // mainsizebutton8m = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG8M]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton8m)); - // mainsizebutton16m = gtk_radio_menu_item_new_with_label (mainsizegroup, curlang[LANG16M]); - // mainsizegroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (mainsizebutton16m)); - maingridsizemi = GTK_WIDGET(gtk_builder_get_object(builder, "maingridsizemi")); - mainsizebutton4k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton4k")); - mainsizebutton8k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton8k")); - mainsizebutton16k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton16k")); - mainsizebutton32k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton32k")); - mainsizebutton64k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton64k")); - mainsizebutton128k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton128k")); - mainsizebutton256k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton256k")); - mainsizebutton512k = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton512k")); - mainsizebutton1m = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton1m")); - mainsizebutton2m = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton2m")); - mainsizebutton4m = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton4m")); - mainsizebutton8m = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton8m")); - mainsizebutton16m = GTK_WIDGET(gtk_builder_get_object(builder, "mainsizebutton16m")); - gtk_menu_item_set_label(GTK_MENU_ITEM(maingridsizemi), curlang[LANGMAINSIZE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton4k), curlang[LANG4K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton8k), curlang[LANG8K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton16k), curlang[LANG16K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton32k), curlang[LANG32K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton64k), curlang[LANG64K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton128k), curlang[LANG128K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton256k), curlang[LANG256K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton512k), curlang[LANG512K]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton1m), curlang[LANG1M]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton2m), curlang[LANG2M]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton4m), curlang[LANG4M]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton8m), curlang[LANG8M]); - gtk_menu_item_set_label(GTK_MENU_ITEM(mainsizebutton16m), curlang[LANG16M]); - - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mainsizebutton64k), TRUE); - - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(maingridsizemi), mainsizemenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton4k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton8k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton16k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton32k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton64k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton128k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton256k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton512k); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton1m); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton2m); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton4m); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton8m); - // gtk_menu_shell_append(GTK_MENU_SHELL(mainsizemenu), mainsizebutton16m); - - // auto update menu - // autoupdatemenu = gtk_menu_new(); - // autoupdatemi = gtk_menu_item_new_with_label(curlang[LANGAUTOUPDATE]); - // autoupdatebuttonoff = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANGOFF]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebuttonoff)); - // autoupdatebutton5s = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG5SEC]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton5s)); - // autoupdatebutton10s = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG10SEC]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton10s)); - // autoupdatebutton30s = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG30SEC]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton30s)); - // autoupdatebutton1m = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG1MIN]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton1m)); - // autoupdatebutton2m = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG2MIN]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton2m)); - // autoupdatebutton5m = gtk_radio_menu_item_new_with_label (autoupgroup, curlang[LANG5MIN]); - // autoupgroup = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (autoupdatebutton5m)); - autoupdatemi = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatemi")); - autoupdatebuttonoff = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebuttonoff")); - autoupdatebutton5s = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton5s")); - autoupdatebutton10s = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton10s")); - autoupdatebutton30s = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton30s")); - autoupdatebutton1m = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton1m")); - autoupdatebutton2m = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton2m")); - autoupdatebutton5m = GTK_WIDGET(gtk_builder_get_object(builder, "autoupdatebutton5m")); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatemi), curlang[LANGAUTOUPDATE]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebuttonoff), curlang[LANGOFF]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton5s), curlang[LANG5SEC]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton10s), curlang[LANG10SEC]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton30s), curlang[LANG30SEC]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton1m), curlang[LANG1MIN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton2m), curlang[LANG2MIN]); - gtk_menu_item_set_label(GTK_MENU_ITEM(autoupdatebutton5m), curlang[LANG5MIN]); - - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (autoupdatebuttonoff), TRUE); - - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(autoupdatemi), autoupdatemenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebuttonoff); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton5s); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton10s); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton30s); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton1m); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton2m); - // gtk_menu_shell_append(GTK_MENU_SHELL(autoupdatemenu), autoupdatebutton5m); - - // show good data item - // showgoodcheck = gtk_check_menu_item_new_with_label(curlang[LANGSHOWGOODDATA]); - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (showgoodcheck), FALSE); - showgoodcheck = GTK_WIDGET(gtk_builder_get_object(builder, "showgoodcheck")); - gtk_menu_item_set_label(GTK_MENU_ITEM(showgoodcheck), curlang[LANGSHOWGOODDATA]); - - // show bad head item - // showbadcheck = gtk_check_menu_item_new_with_label(curlang[LANGSHOWBADHEAD]); - // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (showbadcheck), FALSE); - showbadcheck = GTK_WIDGET(gtk_builder_get_object(builder, "showbadcheck")); - gtk_menu_item_set_label(GTK_MENU_ITEM(showbadcheck), curlang[LANGSHOWBADHEAD]); - - showtimemi = GTK_WIDGET(gtk_builder_get_object(builder, "showtimemi")); - showtimingbuttonoff = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbuttonoff")); - showtimingbutton1 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton1")); - showtimingbutton2 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton2")); - showtimingbutton3 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton3")); - showtimingbutton4 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton4")); - showtimingbutton5 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton5")); - showtimingbutton7 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton7")); - showtimingbutton10 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton10")); - showtimingbutton15 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton15")); - showtimingbutton20 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton20")); - showtimingbutton25 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton25")); - showtimingbutton30 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton30")); - showtimingbutton40 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton40")); - showtimingbutton50 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton50")); - showtimingbutton60 = GTK_WIDGET(gtk_builder_get_object(builder, "showtimingbutton60")); - gtk_menu_item_set_label(GTK_MENU_ITEM(showtimemi), curlang[LANGSHOWTIMING]); - - showdomaincheck = GTK_WIDGET(gtk_builder_get_object(builder, "showdomaincheck")); - gtk_menu_item_set_label(GTK_MENU_ITEM(showdomaincheck), curlang[LANGSHOWDOMAIN]); - - // gtk_menu_item_set_submenu(GTK_MENU_ITEM(optionsmi), optionsmenu); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), leftresolutionmi); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), mainresolutionmi); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), maingridsizemi); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), autoupdatemi); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), showgoodcheck); - // gtk_menu_shell_append(GTK_MENU_SHELL(optionsmenu), showbadcheck); - - // gtk_menu_shell_append(GTK_MENU_SHELL(menubar), optionsmi); - - // pack the menu in the box - // gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, FALSE, 0); - - // set it to exit if the quit item is selected - g_signal_connect(G_OBJECT(quitmi), "activate", G_CALLBACK(gtk_main_quit), NULL); - - // set it to open a file if the open item is selected - g_signal_connect(G_OBJECT(openmi), "activate", G_CALLBACK(select_file), NULL); - - // set it to open a file if the domain item is selected - g_signal_connect(G_OBJECT(domainmi), "activate", G_CALLBACK(select_domain), NULL); - - // 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); - - 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)); - g_signal_connect(G_OBJECT(leftresbutton4), "activate", G_CALLBACK(change_left_resolution), GINT_TO_POINTER(4)); - - g_signal_connect(G_OBJECT(mainresbutton4), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(4)); - g_signal_connect(G_OBJECT(mainresbutton6), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(6)); - g_signal_connect(G_OBJECT(mainresbutton8), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(8)); - g_signal_connect(G_OBJECT(mainresbutton10), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(10)); - g_signal_connect(G_OBJECT(mainresbutton12), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(12)); - g_signal_connect(G_OBJECT(mainresbutton14), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(14)); - g_signal_connect(G_OBJECT(mainresbutton16), "activate", G_CALLBACK(change_main_resolution), GINT_TO_POINTER(16)); - - g_signal_connect(G_OBJECT(mainsizebutton4k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(4096)); - g_signal_connect(G_OBJECT(mainsizebutton8k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(8192)); - g_signal_connect(G_OBJECT(mainsizebutton16k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(16384)); - g_signal_connect(G_OBJECT(mainsizebutton32k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(32768)); - g_signal_connect(G_OBJECT(mainsizebutton64k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(65536)); - g_signal_connect(G_OBJECT(mainsizebutton128k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(131072)); - g_signal_connect(G_OBJECT(mainsizebutton256k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(262144)); - g_signal_connect(G_OBJECT(mainsizebutton512k), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(524288)); - g_signal_connect(G_OBJECT(mainsizebutton1m), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(1048576)); - g_signal_connect(G_OBJECT(mainsizebutton2m), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(2097152)); - g_signal_connect(G_OBJECT(mainsizebutton4m), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(4194304)); - g_signal_connect(G_OBJECT(mainsizebutton8m), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(8388608)); - g_signal_connect(G_OBJECT(mainsizebutton16m), "activate", G_CALLBACK(change_main_grid_size), GINT_TO_POINTER(16777216)); - - g_signal_connect(G_OBJECT(autoupdatebuttonoff), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(0)); - g_signal_connect(G_OBJECT(autoupdatebutton5s), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(5000)); - g_signal_connect(G_OBJECT(autoupdatebutton10s), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(10000)); - g_signal_connect(G_OBJECT(autoupdatebutton30s), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(30000)); - g_signal_connect(G_OBJECT(autoupdatebutton1m), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(60000)); - g_signal_connect(G_OBJECT(autoupdatebutton2m), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(120000)); - g_signal_connect(G_OBJECT(autoupdatebutton5m), "activate", G_CALLBACK(set_autoupdate_timer), GINT_TO_POINTER(300000)); - - g_signal_connect(G_OBJECT(showgoodcheck), "activate", G_CALLBACK(toggle_showgood), NULL); - - g_signal_connect(G_OBJECT(showbadcheck), "activate", G_CALLBACK(toggle_showbad), NULL); - - g_signal_connect(G_OBJECT(showdomaincheck), "activate", G_CALLBACK(toggle_showdomain), NULL); - - g_signal_connect(G_OBJECT(showtimingbuttonoff), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(0)); - g_signal_connect(G_OBJECT(showtimingbutton1), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(1)); - g_signal_connect(G_OBJECT(showtimingbutton2), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(2)); - g_signal_connect(G_OBJECT(showtimingbutton3), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(3)); - g_signal_connect(G_OBJECT(showtimingbutton4), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(4)); - g_signal_connect(G_OBJECT(showtimingbutton5), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(5)); - g_signal_connect(G_OBJECT(showtimingbutton7), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(7)); - g_signal_connect(G_OBJECT(showtimingbutton10), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(10)); - g_signal_connect(G_OBJECT(showtimingbutton15), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(15)); - g_signal_connect(G_OBJECT(showtimingbutton20), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(20)); - g_signal_connect(G_OBJECT(showtimingbutton25), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(25)); - g_signal_connect(G_OBJECT(showtimingbutton30), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(30)); - g_signal_connect(G_OBJECT(showtimingbutton40), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(40)); - g_signal_connect(G_OBJECT(showtimingbutton50), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(50)); - g_signal_connect(G_OBJECT(showtimingbutton60), "activate", G_CALLBACK(set_show_timing), GINT_TO_POINTER(60)); - - // main hbox - // main_hbox = gtk_hbox_new (FALSE, 0); - main_hbox = GTK_WIDGET(gtk_builder_get_object(builder, "main_hbox")); - g_signal_connect(main_hbox, "size-allocate", G_CALLBACK(getsize_main_hbox), NULL); - // gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, TRUE, TRUE, 0); - - // left vbox - // left_vbox = gtk_vbox_new (FALSE, 0); - left_vbox = GTK_WIDGET(gtk_builder_get_object(builder, "left_vbox")); - g_signal_connect(left_vbox, "size-allocate", G_CALLBACK(getsize_left_vbox), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (left_vbox), 100, -1); - // gtk_container_set_border_width (GTK_CONTAINER (left_vbox), 2); - // gtk_box_pack_start (GTK_BOX (main_hbox), left_vbox, FALSE, FALSE, 0); - - // left_drawing_area = gtk_drawing_area_new(); - left_drawing_area = GTK_WIDGET(gtk_builder_get_object(builder, "left_drawing_area")); - g_signal_connect(left_drawing_area, "size-allocate", G_CALLBACK(getsize_left_drawing_area), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (left_drawing_area), 100, -1); - // gtk_box_pack_start (GTK_BOX (left_vbox), left_drawing_area, TRUE, TRUE, 0); - - g_signal_connect(left_drawing_area, "expose-event", G_CALLBACK(left_vbox_expose_event), NULL); - - // right vbox - // right_vbox = gtk_vbox_new (FALSE, 0); - right_vbox = GTK_WIDGET(gtk_builder_get_object(builder, "right_vbox")); - g_signal_connect(right_vbox, "size-allocate", G_CALLBACK(getsize_right_vbox), NULL); - // gtk_container_set_border_width (GTK_CONTAINER (right_vbox), 2); - // gtk_box_pack_start (GTK_BOX (main_hbox), right_vbox, TRUE, TRUE, 0); - - // top hbox - // top_hbox = gtk_hbox_new (FALSE, 0); - top_hbox = GTK_WIDGET(gtk_builder_get_object(builder, "top_hbox")); - g_signal_connect(top_hbox, "size-allocate", G_CALLBACK(getsize_top_hbox), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (top_hbox), -1, 100); - // gtk_container_set_border_width (GTK_CONTAINER (top_hbox), 2); - // gtk_box_pack_start (GTK_BOX (right_vbox), top_hbox, FALSE, FALSE, 0); - - // top_info_box = gtk_vbox_new (FALSE, 0); - top_info_box = GTK_WIDGET(gtk_builder_get_object(builder, "top_info_box")); - g_signal_connect(top_info_box, "size-allocate", G_CALLBACK(getsize_top_info_box), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (top_info_box), -1, 100); - // gtk_container_set_border_width (GTK_CONTAINER (top_info_box), 2); - // gtk_box_pack_start (GTK_BOX (top_hbox), top_info_box, TRUE, TRUE, 0); - // frame = gtk_frame_new (NULL); - // gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); - // gtk_container_add (GTK_CONTAINER (top_info_box), frame); - - // top_drawing_area = gtk_drawing_area_new(); - top_drawing_area = GTK_WIDGET(gtk_builder_get_object(builder, "top_drawing_area")); - g_signal_connect(top_drawing_area, "size-allocate", G_CALLBACK(getsize_top_drawing_area), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (top_drawing_area), 400, -1); - // gtk_box_pack_start (GTK_BOX (top_hbox), top_drawing_area, FALSE, FALSE, 0); - - g_signal_connect(top_drawing_area, "expose-event", G_CALLBACK(top_drawing_expose_event), NULL); - - // main drawing vbox - // main_drawing_vbox = gtk_vbox_new (FALSE, 0); - main_drawing_vbox = GTK_WIDGET(gtk_builder_get_object(builder, "main_drawing_vbox")); - g_signal_connect(main_drawing_vbox, "size-allocate", G_CALLBACK(getsize_main_drawing_vbox), NULL); - // gtk_container_set_border_width (GTK_CONTAINER (main_drawing_vbox), 2); - // gtk_box_pack_start (GTK_BOX (right_vbox), main_drawing_vbox, TRUE, TRUE, 0); - - // main drawing scrolled window - // main_scrolled_window = gtk_scrolled_window_new (NULL, NULL); - main_scrolled_window = GTK_WIDGET(gtk_builder_get_object(builder, "main_scrolled_window")); - g_signal_connect(main_scrolled_window, "size-allocate", G_CALLBACK(getsize_main_scrolled_window), NULL); - // gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (main_scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); - // gtk_widget_set_size_request(main_scrolled_window, 400, 300); - // gtk_box_pack_start (GTK_BOX (main_drawing_vbox), main_scrolled_window, TRUE, TRUE, 0); - // gtk_container_add (GTK_CONTAINER (main_drawing_vbox), main_scrolled_window); - - // main_drawing_area = gtk_drawing_area_new(); - main_drawing_area = GTK_WIDGET(gtk_builder_get_object(builder, "main_drawing_area")); - // gtk_container_add(GTK_CONTAINER(main_scrolled_window), main_drawing_area); - g_signal_connect(main_drawing_area, "size-allocate", G_CALLBACK(getsize_main_drawing_area), NULL); - // gtk_widget_set_size_request (GTK_WIDGET (main_drawing_area), 200, 200); - gtk_widget_add_events(main_drawing_area, GDK_BUTTON_PRESS_MASK); - - g_signal_connect(main_drawing_area, "expose-event", G_CALLBACK(main_drawing_expose_event), NULL); - // g_signal_connect (main_drawing_area, "configure_event", G_CALLBACK (configure_event), NULL); - g_signal_connect(G_OBJECT(main_drawing_area), "button-press-event", G_CALLBACK(on_button_press), NULL); - - g_object_unref(builder); - - gtk_widget_show_all(main_window); - - gtk_main(); - - return 0; -} - -static gboolean on_button_press(GtkWidget *widget, GdkEventButton *event, GdkWindowEdge edge) -{ - if (event->type == GDK_BUTTON_PRESS) - { - if (event->button == 1) - { - mouse_x = event->x; - mouse_y = event->y; - sprintf(tempmessage, "x=%d y=%d\n", mouse_x, mouse_y); - message_debug(tempmessage, 0); - // redraw_main_drawing_area(); - gtk_widget_queue_draw(main_window); - } - } - return TRUE; -} - -static gboolean top_drawing_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) -{ - redraw_top_drawing_area(); - - return 0; -} - -static gboolean main_drawing_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) -{ - redraw_main_drawing_area(); - - return 0; -} - -static gboolean left_vbox_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) -{ - redraw_left_vbox(); - - return 0; -} - -void getsize_main_window(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main window width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_window_width = allocation->width; - main_window_height = allocation->height; -} - -void getsize_main_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main_vbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_vbox_width = allocation->width; - main_vbox_height = allocation->height; -} - -void getsize_main_hbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main_hbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_hbox_width = allocation->width; - main_hbox_height = allocation->height; -} - -void getsize_left_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "left_vbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - left_vbox_width = allocation->width; - left_vbox_height = allocation->height; -} - -void getsize_right_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "right_vbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - right_vbox_width = allocation->width; - right_vbox_height = allocation->height; -} - -void getsize_top_hbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "top_hbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - top_hbox_width = allocation->width; - top_hbox_height = allocation->height; -} - -void getsize_top_info_box(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "top_hbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - top_info_width = allocation->width; - top_info_height = allocation->height; -} - -void getsize_top_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "top_drawing_area width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - top_drawing_area_width = allocation->width; - top_drawing_area_height = allocation->height; -} - -void getsize_main_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main drawing area width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_drawing_area_width = allocation->width; - main_drawing_area_height = allocation->height; -} - -void getsize_main_drawing_vbox(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main drawing vbox width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_drawing_vbox_width = allocation->width; - main_drawing_vbox_height = allocation->height; -} - -void getsize_main_scrolled_window(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "main_scrolled_window width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - main_scrolled_window_width = allocation->width; - main_scrolled_window_height = allocation->height; -} - -void getsize_left_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data) -{ - sprintf(tempmessage, "left drawing area width = %d, height = %d\n", allocation->width, allocation->height); - message_debug(tempmessage, 0); - left_drawing_area_width = allocation->width; - left_drawing_area_height = allocation->height; -} - -void select_file(void) -{ - /* Create a new file selection widget */ - filew = gtk_file_selection_new("File selection"); - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(filew)); - - /* Connect the ok_button to file_ok_sel function */ - g_signal_connect(GTK_FILE_SELECTION(filew)->ok_button, "clicked", G_CALLBACK(file_ok_sel), (gpointer)filew); - - /* Connect the cancel_button to destroy the widget */ - g_signal_connect_swapped(GTK_FILE_SELECTION(filew)->cancel_button, "clicked", G_CALLBACK(gtk_widget_destroy), filew); - - /* Lets set the filename, as if this were a save dialog, and we are giving - * a default filename */ - gtk_file_selection_set_filename(GTK_FILE_SELECTION(filew), "progress.log"); - - gtk_widget_show(filew); -} - -/* Get the selected filename and load it */ -static void file_ok_sel(GtkWidget *w, GtkFileSelection *fs) -{ - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - sprintf(log_file, "%s", gtk_file_selection_get_filename(GTK_FILE_SELECTION(fs))); - printf("%s\n", log_file); - gtk_widget_destroy(filew); - total_size = 0; - int ret = read_log_file(log_file); - if (ret != 0) - { - sprintf(tempmessage, "error processing log file\n"); - message_now(tempmessage); - } - else - { - ret = check_log(); - if (ret != 0) - { - sprintf(tempmessage, "there were errors found in the log file\n"); - message_now(tempmessage); - } - } - char tempchar[1048]; - strcpy(tempchar, "Log= "); - strcat(tempchar, log_file); - gtk_label_set_text(GTK_LABEL(progress_log_label), tempchar); - // redraw_left_vbox(); - // redraw_main_drawing_area(); - // this seems to be needed sometimes after changing the settings and then reloading the log file - gtk_widget_queue_draw(main_window); -} - -void select_domain(void) -{ - /* Create a new file selection widget */ - domainw = gtk_file_selection_new("File selection"); - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(domainw)); - - /* Connect the ok_button to file_ok_sel function */ - g_signal_connect(GTK_FILE_SELECTION(domainw)->ok_button, "clicked", G_CALLBACK(domain_ok_sel), (gpointer)domainw); - - /* Connect the cancel_button to destroy the widget */ - g_signal_connect_swapped(GTK_FILE_SELECTION(domainw)->cancel_button, "clicked", G_CALLBACK(gtk_widget_destroy), domainw); - - /* Lets set the filename, as if this were a save dialog, and we are giving - * a default filename */ - gtk_file_selection_set_filename(GTK_FILE_SELECTION(domainw), "domain.log"); - - gtk_widget_show(domainw); -} - -/* Get the selected filename and load it */ -static void domain_ok_sel(GtkWidget *w, GtkFileSelection *fs) -{ - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - sprintf(domain_file, "%s", gtk_file_selection_get_filename(GTK_FILE_SELECTION(fs))); - printf("%s\n", domain_file); - gtk_widget_destroy(domainw); - regular_domain = 1; - int ret = read_domain_file(domain_file); - if (ret != 0) - { - sprintf(tempmessage, "error processing domain file\n"); - message_now(tempmessage); - } - char tempchar[1048]; - strcpy(tempchar, "Domain= "); - strcat(tempchar, domain_file); - gtk_label_set_text(GTK_LABEL(domain_log_label), tempchar); - // redraw_left_vbox(); - // redraw_main_drawing_area(); - // this seems to be needed sometimes after changing the settings and then reloading the log file - gtk_widget_queue_draw(main_window); -} - -void select_dmde_domain(void) -{ - /* Create a new file selection widget */ - domainw = gtk_file_selection_new("File selection"); - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(domainw)); - - /* Connect the ok_button to file_ok_sel function */ - g_signal_connect(GTK_FILE_SELECTION(domainw)->ok_button, "clicked", G_CALLBACK(dmde_domain_ok_sel), (gpointer)domainw); - - /* Connect the cancel_button to destroy the widget */ - g_signal_connect_swapped(GTK_FILE_SELECTION(domainw)->cancel_button, "clicked", G_CALLBACK(gtk_widget_destroy), domainw); - - /* Lets set the filename, as if this were a save dialog, and we are giving - * a default filename */ - gtk_file_selection_set_filename(GTK_FILE_SELECTION(domainw), "domain.log"); - - gtk_widget_show(domainw); -} - -/* Get the selected filename and load it */ -static void dmde_domain_ok_sel(GtkWidget *w, GtkFileSelection *fs) -{ - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - sprintf(domain_file, "%s", gtk_file_selection_get_filename(GTK_FILE_SELECTION(fs))); - printf("%s\n", domain_file); - gtk_widget_destroy(domainw); - regular_domain = 0; - int ret = read_domain_dmde_file(domain_file); - if (ret != 0) - { - sprintf(tempmessage, "error processing domain file\n"); - message_now(tempmessage); - } - char tempchar[1048]; - strcpy(tempchar, "Domain= "); - strcat(tempchar, domain_file); - gtk_label_set_text(GTK_LABEL(domain_log_label), tempchar); - // redraw_left_vbox(); - // redraw_main_drawing_area(); - // this seems to be needed sometimes after changing the settings and then reloading the log file - gtk_widget_queue_draw(main_window); -} - -gint reload_file(void) -{ - printf("%s\n", log_file); - total_size = 0; - int ret = read_log_file(log_file); - if (ret != 0) - { - sprintf(tempmessage, "error processing log file\n"); - message_now(tempmessage); - } - else - { - ret = check_log(); - if (ret != 0) - { - sprintf(tempmessage, "there were errors found in the log file\n"); - message_now(tempmessage); - } - } - if (regular_domain) - { - printf("%s\n", domain_file); - domain_lines = 0; - int ret = read_domain_file(domain_file); - if (ret != 0) - { - sprintf(tempmessage, "error processing domain file\n"); - message_now(tempmessage); - } - } - - // redraw_left_vbox(); - // redraw_main_drawing_area(); - // this seems to be needed sometimes after changing the settings and then reloading the log file - gtk_widget_queue_draw(main_window); - - return 1; -} - -void set_autoupdate_timer(GtkWidget *w, gpointer data) -{ - if (autotimer_on) - { - g_source_remove(timeout_tag); - autotimer_on = 0; - } - int time = GPOINTER_TO_INT(data); - if (time > 0) - { - timeout_tag = g_timeout_add(time, (GSourceFunc)reload_file, NULL); - autotimer_on = 1; - } -} - -void toggle_showbad(GtkWidget *w, gpointer data) -{ - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))) - { - show_bad_head = 1; - } - else - { - show_bad_head = 0; - } - // redraw_top_drawing_area(); - // redraw_main_drawing_area(); - gtk_widget_queue_draw(main_window); -} - -void toggle_showgood(GtkWidget *w, gpointer data) -{ - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))) - { - show_good_data = 1; - } - else - { - show_good_data = 0; - } - // redraw_top_drawing_area(); - // redraw_main_drawing_area(); - gtk_widget_queue_draw(main_window); -} - -void set_show_timing(GtkWidget *w, gpointer data) -{ - show_timing = GPOINTER_TO_INT(data); - gtk_widget_queue_draw(main_window); -} - -void toggle_showdomain(GtkWidget *w, gpointer data) -{ - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))) - { - show_domain = 1; - } - else - { - show_domain = 0; - } - // redraw_top_drawing_area(); - // redraw_main_drawing_area(); - gtk_widget_queue_draw(main_window); - data = data; -} - -void redraw_top_drawing_area(void) -{ - cairo_t *cr; - double x, y, w, l, r, g, b; - cr = gdk_cairo_create(top_drawing_area->window); - - get_rgb_color(WHITE); - r = rcolor; - g = gcolor; - b = bcolor; - x = 0; - y = 0; - w = top_drawing_area_width; - l = top_drawing_area_height; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - - cairo_select_font_face(cr, "Monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_set_font_size(cr, 10); - - get_rgb_color(nontrimmed_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 5; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGNONTRIMMED]); - - get_rgb_color(nondivided_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 20; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGNONDIVIDED]); - - get_rgb_color(nonscraped_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 35; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGNONSCRAPED]); - - get_rgb_color(bad_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 50; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGBAD]); - - get_rgb_color(nontried_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 65; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGNONTRIED]); - - get_rgb_color(good_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 5; - y = 80; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGFINISHED]); - - get_rgb_color(current_color_outer); - r = rcolor; - g = gcolor; - b = bcolor; - x = 200; - y = 5; - w = 10; - l = 10; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 15, y + 9); - cairo_show_text(cr, curlang[LANGCURRENT]); - - if (show_good_data) - { - get_rgb_color(good_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 203; - y = 23; - w = 4; - l = 4; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 12, y + 6); - cairo_show_text(cr, curlang[LANGGOODDATA]); - } - - if (show_bad_head) - { - get_rgb_color(bad_head_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 203; - y = 38; - w = 4; - l = 4; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 12, y + 6); - cairo_show_text(cr, curlang[LANGBADHEAD]); - } - - if (show_timing) - { - get_rgb_color(time_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 203; - y = 53; - w = 4; - l = 4; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 12, y + 6); - cairo_show_text(cr, curlang[LANGTIMING]); - } - - if (show_domain) - { - get_rgb_color(domain_color); - r = rcolor; - g = gcolor; - b = bcolor; - x = 203; - y = 68; - w = 4; - l = 4; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - cairo_set_source_rgb(cr, 0, 0, 0); - cairo_move_to(cr, x + 12, y + 6); - cairo_show_text(cr, curlang[LANGDOMAIN]); - } - - cairo_destroy(cr); -} - -void change_left_resolution(GtkWidget *w, gpointer data) -{ - g_print("%d\n", GPOINTER_TO_INT(data)); - left_square_size = GPOINTER_TO_INT(data); - redraw_left_vbox(); -} - -void redraw_left_vbox(void) -{ - cairo_t *cr; - double x, y, w, l, r, g, b; - cr = gdk_cairo_create(left_drawing_area->window); - - get_rgb_color(WHITE); - r = rcolor; - g = gcolor; - b = bcolor; - x = 0; - y = 0; - w = left_drawing_area_width; - l = left_drawing_area_height; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - - if (total_size > 0) - { - sprintf(tempmessage, "redrawing left width = %d, height = %d\n", left_drawing_area_width, left_drawing_area_height); - message_debug(tempmessage, 0); - int columns = left_drawing_area_width / left_square_size; - int rows = left_drawing_area_height / left_square_size; - int squares = columns * rows; - long long blocks_per_square = total_size / (squares - 1); - - int count = 0; - int i = 0; - int n = 0; - - while (count < squares) - { - int color = 0; - long long position = count * blocks_per_square; - int status_bits = get_block_status(position, blocks_per_square); - if (status_bits & NONTRIMMED_BIT) - { - color = nontrimmed_color; - } - else if (status_bits & NONDIVIDED_BIT) - { - color = nondivided_color; - } - else if (status_bits & NONSCRAPED_BIT) - { - color = nonscraped_color; - } - else if (status_bits & BAD_BIT) - { - color = bad_color; - } - else if (status_bits & NONTRIED_BIT) - { - color = nontried_color; - } - else if (status_bits & FINISHED_BIT) - { - color = good_color; - } - else if (status_bits & UNKNOWN_BIT) - { - color = unknown_color; - } - get_rgb_color(color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, n * left_square_size, i * left_square_size, left_square_size, left_square_size); - cairo_fill(cr); - count++; - if (count > squares) - { - sprintf(tempmessage, "left count out of range\n"); - message_debug(tempmessage, 0); - break; - } - n++; - if (n >= columns) - { - n = 0; - i++; - if (i >= rows) - { - sprintf(tempmessage, "left rows out of range\n"); - message_debug(tempmessage, 0); - break; - } - } - position = (count + 1) * blocks_per_square; - } - - long long position = current_position / blocks_per_square; - count = 0; - for (i = 0; i < rows; i++) - { - for (n = 0; n < columns; n++) - { - if (position == count) - { - get_rgb_color(current_color_outer); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, n * left_square_size, i * left_square_size, left_square_size, left_square_size); - cairo_fill(cr); - } - count++; - } - } - } - cairo_destroy(cr); -} - -void change_main_resolution(GtkWidget *w, gpointer data) -{ - sprintf(tempmessage, "%d\n", GPOINTER_TO_INT(data)); - message_debug(tempmessage, 0); - main_square_size = GPOINTER_TO_INT(data); - redraw_main_drawing_area(); -} - -void change_main_grid_size(GtkWidget *w, gpointer data) -{ - sprintf(tempmessage, "%d\n", GPOINTER_TO_INT(data)); - message_debug(tempmessage, 0); - main_grid_size = GPOINTER_TO_INT(data); - redraw_main_drawing_area(); -} - -void redraw_main_drawing_area(void) -{ - double total_squares = main_grid_size; - double pixels = total_squares * main_square_size * main_square_size; - - double x, y, w, l, r, g, b; - int max_width = main_scrolled_window_width - 25; - int adjusted_height = (pixels / max_width) + 1; - gtk_widget_set_size_request(GTK_WIDGET(main_drawing_area), max_width, adjusted_height + 1); - - // printf("redrawing main width = %d, height = %d\n", main_drawing_area_width, main_drawing_area_height); - cairo_t *cr; - cr = gdk_cairo_create(main_drawing_area->window); - - get_rgb_color(WHITE); - r = rcolor; - g = gcolor; - b = bcolor; - x = 0; - y = 0; - w = main_drawing_area_width; - l = main_drawing_area_height; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, x, y, w, l); - cairo_fill(cr); - - if (total_size > 0) - { - sprintf(tempmessage, "redrawing main width = %d, height = %d\n", main_drawing_area_width, main_drawing_area_height); - message_debug(tempmessage, 0); - gdouble scroll_position = gtk_adjustment_get_value(GTK_ADJUSTMENT(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(main_scrolled_window)))); - sprintf(tempmessage, "scroll = %f\n", scroll_position); - message_debug(tempmessage, 0); - int scroll_row_start = scroll_position / main_square_size; - int scroll_row_end = scroll_row_start + (main_drawing_vbox_height / main_square_size); - int columns = main_drawing_area_width / main_square_size; - int rows = main_drawing_area_height / main_square_size; - int squares = columns * rows; - long long blocks_per_square = total_size / (squares - 1); - square_adjust = main_square_size / 32; - int adjustment = 1; - while (total_size > squares * blocks_per_square) - { - adjustment++; - blocks_per_square = total_size / (squares - adjustment); - } - sprintf(tempmessage, "total_size=%lld, squares*blocks_per_square=%lld\n", total_size, squares * blocks_per_square); - message_debug(tempmessage, 0); - - int count = 0; - int i = 0; - int n = 0; - - while (count < squares) - { - if (i >= scroll_row_start && i <= scroll_row_end) - { - int color = 0; - int bad_head = 0; - int good_data = 0; - long long position = count * blocks_per_square; - int status_bits = get_block_status(position, blocks_per_square); - int time_bits = get_block_timing(position, blocks_per_square); - int in_domain = process_domain(position, blocks_per_square, FINISHED, FINISHED); - if (status_bits & NONTRIMMED_BIT) - { - color = nontrimmed_color; - } - else if (status_bits & NONDIVIDED_BIT) - { - color = nondivided_color; - } - else if (status_bits & NONSCRAPED_BIT) - { - color = nonscraped_color; - } - else if (status_bits & BAD_BIT) - { - color = bad_color; - } - else if (status_bits & NONTRIED_BIT) - { - color = nontried_color; - } - else if (status_bits & FINISHED_BIT) - { - color = good_color; - } - else if (status_bits & UNKNOWN_BIT) - { - color = unknown_color; - } - if (status_bits & BAD_HEAD_BIT) - { - bad_head = 1; - } - if (status_bits & FINISHED_BIT) - { - good_data = 1; - } - get_rgb_color(color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + 1 + square_adjust, (i * main_square_size) + 1 + square_adjust, main_square_size - 1 - (square_adjust * 2), main_square_size - 1 - (square_adjust * 2)); - cairo_fill(cr); - - if (bad_head && show_bad_head) - { - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(bad_head_color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - } - - if (good_data && show_good_data) - { - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(good_color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - } - - if ((time_bits >= show_timing) && show_timing) - { - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(time_color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - } - - if ((in_domain) && show_domain) - { - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(domain_color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - } - } - count++; - if (count > squares) - { - sprintf(tempmessage, "main count out of range\n"); - message_debug(tempmessage, 0); - break; - } - n++; - if (n >= columns) - { - n = 0; - i++; - if (i >= rows) - { - sprintf(tempmessage, "main rows out of range\n"); - message_debug(tempmessage, 0); - break; - } - } - } - - long long position = current_position / blocks_per_square; - count = 0; - for (i = 0; i < rows; i++) - { - for (n = 0; n < columns; n++) - { - if (position == count) - { - get_rgb_color(current_color_outer); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, n * main_square_size + 2 + (square_adjust * 2), i * main_square_size + 2 + (square_adjust * 2), main_square_size - 3 - (square_adjust * 4), main_square_size - 3 - (square_adjust * 4)); - cairo_fill(cr); - - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(current_color_inner); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - } - - // int xl = (n * main_square_size) + 1 + square_adjust; - // int yl = (i * main_square_size) + 1 + square_adjust; - // int xh = xl + main_square_size - 1 - (square_adjust * 2); - // int yh = yl + main_square_size - 1 - (square_adjust * 2); - int xl = (n * main_square_size) + square_adjust; - int yl = (i * main_square_size) + square_adjust; - int xh = xl + main_square_size - (square_adjust * 2); - int yh = yl + main_square_size - (square_adjust * 2); - if (mouse_x != mouse_x_old && mouse_y != mouse_y_old && mouse_x >= xl && mouse_x <= xh && mouse_y >= yl && mouse_y <= yh) - { - int spot_size = (main_square_size / 4) + 1; - int spot_adjust = (main_square_size / 2) - (spot_size / 2); - get_rgb_color(selected_color); - r = rcolor; - g = gcolor; - b = bcolor; - cairo_set_source_rgb(cr, r, g, b); - cairo_rectangle(cr, (n * main_square_size) + spot_adjust, (i * main_square_size) + spot_adjust, spot_size, spot_size); - cairo_fill(cr); - get_block_information(blocks_per_square * count, blocks_per_square); - mouse_x_old = mouse_x; - mouse_y_old = mouse_y; - } - - count++; - } - } - } - cairo_destroy(cr); -} - -void get_rgb_color(int color) -{ - bcolor = (double)(color & 0xff) / 255; - gcolor = (double)((color >> 8) & 0xff) / 255; - rcolor = (double)((color >> 16) & 0xff) / 255; -} - -int get_color_from_status(int status_bits) -{ - int count = 0; - int color = 0; - int red = 0; - int green = 0; - int blue = 0; - if (status_bits & NONTRIED_BIT) - { - int new_color = nontried_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (status_bits & NONTRIMMED_BIT) - { - int new_color = nontrimmed_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (status_bits & NONDIVIDED_BIT) - { - int new_color = nondivided_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (status_bits & NONSCRAPED_BIT) - { - int new_color = nonscraped_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (status_bits & BAD_BIT) - { - int new_color = bad_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (status_bits & FINISHED_BIT) - { - int new_color = good_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - // printf ("good color= 0x%x blue= %d green = %d red= %d\n", new_color, blue, green, red); - count++; - } - if (status_bits & UNKNOWN_BIT) - { - int new_color = unknown_color; - blue += new_color & 0xff; - green += (new_color >> 8) & 0xff; - red += (new_color >> 16) & 0xff; - count++; - } - if (count) - { - red = red / count; - green = green / count; - blue = blue / count; - } - if (status_bits & BAD_HEAD_BIT) - { - red = red / 2; - green = green / 2; - blue = blue / 2; - } - color = blue + (green << 8) + (red << 16); - // printf ("status= 0x%x color= 0x%x\n", status_bits, color); - return color; -} - -// function to initialize needed memory -int initialize_memory(void) -{ - // assign memory for log - lposition = malloc(sizeof(*lposition) * log_rows); - if (lposition == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - lsize = malloc(sizeof(*lsize) * log_rows); - if (lsize == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - lstatus = malloc(sizeof(*lstatus) * log_rows); - if (lstatus == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - - // assign memory for domain - dposition = malloc(sizeof(*dposition) * domain_rows); - if (dposition == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - dsize = malloc(sizeof(*dsize) * domain_rows); - if (dsize == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - dstatus = malloc(sizeof(*dstatus) * domain_rows); - if (dstatus == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - return (-1); - } - - return 0; -} - -int increase_log_memory(int new_lines) -{ - int found_error = 0; - log_rows += new_lines; - temp_lposition = realloc(lposition, log_rows * sizeof(*lposition)); - if (temp_lposition == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - lposition = temp_lposition; - - temp_lsize = realloc(lsize, log_rows * sizeof(*lsize)); - if (temp_lsize == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - lsize = temp_lsize; - - temp_lstatus = realloc(lstatus, log_rows * sizeof(*lstatus)); - if (temp_lstatus == NULL) - { - sprintf(tempmessage, "Error allocating log memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - lstatus = temp_lstatus; - return found_error; -} - -int increase_domain_memory(int new_lines) -{ - int found_error = 0; - domain_rows += new_lines; - temp_dposition = realloc(dposition, domain_rows * sizeof(*dposition)); - if (temp_dposition == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - dposition = temp_dposition; - - temp_dsize = realloc(dsize, domain_rows * sizeof(*dsize)); - if (temp_dsize == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - dsize = temp_dsize; - - temp_dstatus = realloc(dstatus, domain_rows * sizeof(*dstatus)); - if (temp_dstatus == NULL) - { - sprintf(tempmessage, "Error allocating domain memory (%s)\n", strerror(errno)); - message_now(tempmessage); - found_error = -2; - } - dstatus = temp_dstatus; - return found_error; -} - -// function to read the log file into memory -int read_log_file(char *log_file) -{ - if (log_file == NULL) - { - sprintf(tempmessage, "Error: No log file specified.\n"); - message_now(tempmessage); - return (1); - } - - FILE *readfile; - readfile = fopen(log_file, "r"); - if (readfile == NULL) - { - sprintf(tempmessage, "Cannot open %s for reading (%s).\n", log_file, strerror(errno)); - message_now(tempmessage); - return (1); - } - - char line[MAX_LINE_LENGTH]; - int i = 0; - int real_line_number = 0; - int found_current = 0; - int found_error = 0; - ddrescue_log = 0; - while (fgets(line, sizeof line, readfile)) - { - real_line_number++; - // process the line here - int scanline; - long long temp_position = 0; - long long temp_size = 0; - unsigned char temp_status = 0; - char raw_position[MAX_LINE_LENGTH]; - char raw_size[MAX_LINE_LENGTH]; - char raw_status[MAX_LINE_LENGTH]; - char raw_info[MAX_LINE_LENGTH]; - char raw_errstat[MAX_LINE_LENGTH]; - char rest_of_line[MAX_LINE_LENGTH]; - strcpy(raw_position, ""); - strcpy(raw_size, ""); - strcpy(raw_status, ""); - strcpy(rest_of_line, ""); - scanline = sscanf(line, "%s %s %s %s %s %[^\n]", raw_position, raw_size, raw_status, raw_info, raw_errstat, rest_of_line); - // ignore blank lines - if (scanline > 0) - { - // if the line doesn't start with a comment then process it - if (raw_position[0] != '#') - { - // the first line should be the current position and status - // new ddrescue format has copy pass added to first line - if ((!found_current && scanline == 2) || (!found_current && scanline == 3)) - { - char *endptr; - current_position = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - current_status = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - // check if ddrescue format - scanline = sscanf(raw_size, "%c %[^\n]", &temp_status, rest_of_line); - if (scanline == 1) - { - if (temp_status == '?') - { - current_status = NONTRIED; - } - else if (temp_status == '+') - { - current_status = FINISHED; - } - else if (temp_status == '*') - { - current_status = NONTRIMMED; - } - else if (temp_status == '/') - { - current_status = NONSCRAPED; - } - else if (temp_status == '-') - { - current_status = BAD; - } - else - { - sprintf(tempmessage, "error processing line %d, status not recognized\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - } - else - { - sprintf(tempmessage, "error processing status on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - } - found_current = 1; - // fprintf (stdout, "%d= %d 0x%08llx 0x%08llx\n", real_line_number, i, current_position, current_status); //debug - } - else if (!found_current) - { - sprintf(tempmessage, "error processing progress log file line %d, expecting current status\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - - // hddclone progress file format - else if (scanline == 5) - { - char *endptr; - lposition[i] = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - lsize[i] = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - lstatus[i] = strtoll(raw_status, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing status on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - lstatus[i] += (strtoll(raw_info, &endptr, 0)) << 8; - if (*endptr) - { - sprintf(tempmessage, "error processing info on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - lstatus[i] += (strtoll(raw_errstat, &endptr, 0)) << 32; - if (*endptr) - { - sprintf(tempmessage, "error processing err/stat on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - // fprintf (stdout, "%d= %d 0x%08llx 0x%08llx 0x%08llx\n", real_line_number, i, lposition[i], lsize[i], lstatus[i]); //debug - i++; - } - - // ddrescue log format - else if (scanline == 3) - { - char *endptr; - temp_position = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - temp_size = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - scanline = sscanf(raw_status, "%c %[^\n]", &temp_status, rest_of_line); - if (scanline != 1) - { - sprintf(tempmessage, "error processing status on line %d\n", real_line_number); - message_now(tempmessage); - found_error = -1; - } - - if (!found_error) - { - lposition[i] = temp_position; - lsize[i] = temp_size; - - if (temp_status == '?') - { - lstatus[i] = NONTRIED; - } - else if (temp_status == '+') - { - lstatus[i] = FINISHED; - } - else if (temp_status == '*') - { - lstatus[i] = NONTRIMMED; - } - else if (temp_status == '/') - { - lstatus[i] = NONSCRAPED; - } - else if (temp_status == '-') - { - lstatus[i] = BAD; - } - else - { - sprintf(tempmessage, "error processing line %d, status not recognized\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - if (!found_error) - { - ddrescue_log = 1; - } - } - - // fprintf (stdout, "%d= %d 0x%08llx 0x%08llx 0x%08llx\n", real_line_number, i, lposition[i], lsize[i], lstatus[i]); //debug - i++; - } - - else - { - sprintf(tempmessage, "error processing progress log file line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = 1; - } - } - // line starts with # so check if sector size - else - { - if (strcmp(raw_size, "sectorsize") == 0) - { - sector_size = strtoll(raw_status, NULL, 0); - // fprintf (stdout, "found sector size of %d\n", sector_size); - } - } - } - - // if used up allocated memory then increase it - if (i >= log_rows) - { - increase_log_memory(1000); - } - - if (found_error) - { - break; - } - } - total_lines = i; - - fclose(readfile); - return (found_error); -} - -// function to read the domain file into memory -int read_domain_file(char *domain_file) -{ - if (domain_file == NULL) - { - sprintf(tempmessage, "Error: No domain file specified.\n"); - message_now(tempmessage); - return (1); - } - - FILE *readfile; - readfile = fopen(domain_file, "r"); - if (readfile == NULL) - { - sprintf(tempmessage, "Cannot open %s for reading (%s).\n", domain_file, strerror(errno)); - message_now(tempmessage); - return (1); - } - - char line[MAX_LINE_LENGTH]; - int i = 0; - int real_line_number = 0; - int found_current = 0; - int found_error = 0; - while (fgets(line, sizeof line, readfile)) - { - found_error = 0; - real_line_number++; - // process the line here - // fprintf (stdout, "line%d= %s", real_line_number, line); //debug - - int scanline; - long long temp_position = 0; - long long temp_size = 0; - unsigned char temp_status = 0; - char raw_position[MAX_LINE_LENGTH]; - char raw_size[MAX_LINE_LENGTH]; - char raw_status[MAX_LINE_LENGTH]; - char raw_info[MAX_LINE_LENGTH]; - char raw_errstat[MAX_LINE_LENGTH]; - char rest_of_line[MAX_LINE_LENGTH]; - strcpy(raw_position, ""); - strcpy(raw_size, ""); - strcpy(raw_status, ""); - strcpy(rest_of_line, ""); - scanline = sscanf(line, "%s %s %s %s %s %[^\n]", raw_position, raw_size, raw_status, raw_info, raw_errstat, rest_of_line); - // ignore blank lines - if (scanline > 0) - { - // if the line doesn't start with a comment then process it - if (raw_position[0] != '#') - { - // the first line should be the current position and status - // new ddrescue format has copy pass added to first line - if ((!found_current && scanline == 2) || (!found_current && scanline == 3)) - { - found_current = 1; - } - - // hddclone progress file format - else if (scanline == 5) - { - char *endptr; - dposition[i] = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing domain position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - dsize[i] = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing domain size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - dstatus[i] = strtoll(raw_status, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing domain status on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - dstatus[i] += (strtoll(raw_info, &endptr, 0)) << 8; - if (*endptr) - { - sprintf(tempmessage, "error processing domain info on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - dstatus[i] += (strtoll(raw_errstat, &endptr, 0)) << 32; - if (*endptr) - { - sprintf(tempmessage, "error processing domain err/stat on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - // fprintf (stdout, "%d= %d 0x%08llx 0x%08llx 0x%08llx\n", real_line_number, i, lposition[i], lsize[i], lstatus[i]); //debug - i++; - } - - // ddrescue log format - else if (scanline == 3) - { - char *endptr; - temp_position = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing domain position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - temp_size = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing domain size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - scanline = sscanf(raw_status, "%c %[^\n]", &temp_status, rest_of_line); - if (scanline != 1) - { - sprintf(tempmessage, "error processing domain status on line %d\n", real_line_number); - message_now(tempmessage); - found_error = -1; - } - - if (!found_error) - { - dposition[i] = temp_position; - dsize[i] = temp_size; - - if (temp_status == '?') - { - dstatus[i] = NONTRIED; - } - else if (temp_status == '+') - { - dstatus[i] = FINISHED; - } - else if (temp_status == '*') - { - dstatus[i] = NONTRIMMED; - } - else if (temp_status == '/') - { - dstatus[i] = NONSCRAPED; - } - else if (temp_status == '-') - { - dstatus[i] = BAD; - } - else - { - sprintf(tempmessage, "error processing line %d, domain status not recognized\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - - // if position did not align then increase position and also decrease size if it is not 0 - if ((found_error & 1)) - { - dposition[i]++; - if (dsize[i] > 0) - { - dsize[i]--; - } - } - // if only size did not align then do nothing as it was already cut by the divide - } - - // fprintf (stdout, "%d= %d 0x%08llx 0x%08llx 0x%08llx\n", real_line_number, i, lposition[i], lsize[i], lstatus[i]); //debug - i++; - } - - else - { - sprintf(tempmessage, "error processing domain file line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - found_current = 1; - } - } - - // if used up allocated memory then increase it - if (i >= domain_rows) - { - increase_domain_memory(1000); - } - - if (found_error < 0) - { - break; - } - } - domain_lines = i; - if (found_error < 0) - { - domain_lines = 0; - } - - fclose(readfile); - return (found_error); -} - -// function to read a dmde file as domain -int read_domain_dmde_file(char *dmde_file) -{ - if (dmde_file == NULL) - { - sprintf(tempmessage, "Error: No file specified.\n"); - message_error(tempmessage); - return (1); - } - // sprintf (tempmessage, "Reading %s into memory...\n", dmde_file); //debug - - FILE *readfile; - readfile = fopen(dmde_file, "r"); - if (readfile == NULL) - { - sprintf(tempmessage, "Cannot open %s for reading (%s).\n", dmde_file, strerror(errno)); - message_error(tempmessage); - return (1); - } - - domain_lines = 1; - dposition[0] = 0; - dsize[0] = total_size; - dstatus[0] = 0; - - char line[MAX_LINE_LENGTH]; - int real_line_number = 0; - int found_error = 0; - while (fgets(line, sizeof line, readfile)) - { - found_error = 0; - real_line_number++; - // process the line here - // sprintf (tempmessage, "line%d= %s", real_line_number, line); //debug - int scanline; - long long temp_position = 0; - long long temp_size = 0; - char raw_position[MAX_LINE_LENGTH]; - char raw_size[MAX_LINE_LENGTH]; - char rest_of_line[MAX_LINE_LENGTH]; - strcpy(raw_position, ""); - strcpy(raw_size, ""); - strcpy(rest_of_line, ""); - scanline = sscanf(line, "%s %s %[^\n]", raw_position, raw_size, rest_of_line); - // ignore blank lines - if (scanline > 0) - { - if (scanline == 2) - { - int good = 1; - char *endptr; - temp_position = strtoull(raw_position, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing position on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - good = 0; - } - temp_size = strtoull(raw_size, &endptr, 0); - if (*endptr) - { - sprintf(tempmessage, "error processing size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - good = 0; - } - if (good) - { - long long position = temp_position / sector_size; - if (temp_position % sector_size) - { - position = position + 1; - } - long long size = temp_size / sector_size; - if (temp_size % sector_size) - { - size = size + 1; - } - if (position + size > total_size) - { - sprintf(tempmessage, "end position greater than source size on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - else if (position > 0 && size > 0) - { - int ret = add_to_domain(position, size); - if (ret) - { - sprintf(tempmessage, "error adding to domain from line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - } - } - } - else - { - sprintf(tempmessage, "format error on line %d\n", real_line_number); - message_now(tempmessage); - sprintf(tempmessage, "line%d= %s", real_line_number, line); - message_now(tempmessage); - found_error = -1; - } - } - } - - fclose(readfile); - return (found_error); -} - -int add_to_domain(long long position, long long size) -{ - // fprintf (debug_file, "change_domain_chunk_status 0x%06llx 0x%06llx\n", position, size); //debug - int line_number; - // fprintf (debug_file,"before\n"); - for (line_number = 0; line_number < domain_lines; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - - int block; - while (1) - { - // fprintf (debug_file,"while start position=%06llx size=0x%06llx\n", position, size); - block = find_domain_block(position); - if (block == -1) - { - strcpy(tempmessage, curlang[LANGDOMAINBLOCKNOTFOUND]); - message_error(tempmessage); - sprintf(tempmessage, "\nposition=%06llx size=0x%06llx", position, size); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - - // fprintf (debug_file,"error1 position=%06llx size=0x%06llx\n", position, size); - for (line_number = 0; line_number < domain_lines; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - - return -1; - } - // see if chunk fits within the block - if (position >= dposition[block] && (position + size) <= (dposition[block] + dsize[block])) - { - // check if already finished status, if so then nothing to do - // we are using status mask in case of imported domain file, but extra status will not be kept - if ((dstatus[block] & STATUS_MASK) == (FINISHED & STATUS_MASK)) - { - return 0; - } - // it fits so break to allow that processing below - else - { - break; - } - } - else - { - // chunk is bigger than block, need to process - // check if position matches - if (position == dposition[block]) - { - // fprintf (debug_file,"while1\n"); - // if position matches then we can mark the block, then move position forward to next block reduce size and process - dstatus[block] = FINISHED; - position += dsize[block]; - size -= dsize[block]; - for (line_number = 0; line_number < 6; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - - // check for same status on next block and merge if needed - if (block < domain_lines - 1) - { - // fprintf (debug_file,"while2\n"); - if ((dstatus[block] & STATUS_MASK) == (dstatus[block + 1] & STATUS_MASK)) - { - // fprintf (debug_file,"while3\n"); - dposition[block + 1] -= dsize[block]; - dsize[block + 1] += dsize[block]; - delete_domain_line(block); - for (line_number = 0; line_number < 6; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - } - } - // check for same status on previous block and merge if needed - if (block > 0 && (FINISHED & STATUS_MASK) == (dstatus[block - 1] & STATUS_MASK)) - { - // fprintf (debug_file,"while4\n"); - dsize[block - 1] += dsize[block]; - delete_domain_line(block); - for (line_number = 0; line_number < 6; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - } - } - // check if position is in middle of the block - else if (position > dposition[block]) - { - // fprintf (debug_file,"while5\n"); - // check for same status on next block and merge if needed - if (block < domain_lines - 1) - { - // fprintf (debug_file,"while6\n"); - if ((FINISHED & STATUS_MASK) == (dstatus[block + 1] & STATUS_MASK)) - { - // fprintf (debug_file,"while7\n"); - dsize[block + 1] += dposition[block + 1] - position; - dposition[block + 1] = position; - } - } - // move position ahead reduce size and shorten size - long long diff = (dposition[block] + dsize[block]) - position; - // dsize[block] -= diff; - position += diff; - size -= diff; - for (line_number = 0; line_number < 6; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - } - // the position is before the block which should not be possible - else - { - strcpy(tempmessage, curlang[LANGDOMAINBLOCKNOTFOUND]); - message_error(tempmessage); - sprintf(tempmessage, "\nposition=%06llx size=0x%06llx", position, size); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - - // fprintf (debug_file,"error2 position=%06llx size=0x%06llx\n", position, size); - for (line_number = 0; line_number < domain_lines; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - - return -1; - } - } - // fprintf (debug_file,"while end position=%06llx size=0x%06llx\n", position, size); - } - - // the chunk fits in the block - // if postion and size match the block then only need to change status - if (position == dposition[block] && size == dsize[block]) - { - dstatus[block] = FINISHED; - if (block < domain_lines - 1) - { - if ((dstatus[block] & STATUS_MASK) == (dstatus[block + 1] & STATUS_MASK)) - { - dposition[block + 1] -= size; - dsize[block + 1] += size; - delete_domain_line(block); - } - } - if (block > 0) - { - if ((dstatus[block] & STATUS_MASK) == (dstatus[block - 1] & STATUS_MASK)) - { - dsize[block - 1] += dsize[block]; - delete_domain_line(block); - } - } - // return 0; - } - // if position matches then check line above and merge or insert new line - else if (position == dposition[block]) - { - if (block > 0 && (FINISHED & STATUS_MASK) == (dstatus[block - 1] & STATUS_MASK)) - { - dsize[block - 1] += size; - dposition[block] += size; - dsize[block] -= size; - // return 0; - } - else - { - insert_domain_line(block + 1, position + size, dsize[block] - size, dstatus[block]); - dposition[block] = position; - dsize[block] = size; - dstatus[block] = FINISHED; - // return 0; - } - } - // if end position matches then check line below and merge or insert new line - else if (position + size == dposition[block] + dsize[block]) - { - if (block < domain_lines - 1 && (FINISHED & STATUS_MASK) == (dstatus[block + 1] & STATUS_MASK)) - { - dposition[block + 1] -= size; - dsize[block + 1] += size; - dsize[block] -= size; - // return 0; - } - else - { - insert_domain_line(block, dposition[block], dsize[block] - size, dstatus[block]); - dposition[block + 1] = dposition[block] + dsize[block]; - dsize[block + 1] = size; - dstatus[block + 1] = FINISHED; - // return 0; - } - } - // if chunk is in the middle of the block then insert 2 lines and adjust - else - { - long long block_end = dposition[block] + dsize[block]; - insert_domain_line(block + 1, position + size, block_end - (position + size), dstatus[block]); - insert_domain_line(block, dposition[block], position - dposition[block], dstatus[block]); - dposition[block + 1] = position; - dsize[block + 1] = size; - dstatus[block + 1] = FINISHED; - } - - // fprintf (debug_file,"after\n"); - for (line_number = 0; line_number < domain_lines; line_number++) - { - // fprintf (debug_file, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", dposition[line_number], dsize[line_number], (dstatus[line_number] & STATUS_MASK), ((dstatus[line_number] & INFO_MASK) >> 8), (dstatus[line_number] >> 32) ); - } - - return 0; -} - -int insert_domain_line(int line, long long position, long long size, long long status) -{ - if (domain_lines + 1 >= domain_rows) - { - int ret = increase_domain_memory(1000); - if (ret) - { - return ret; - } - } - int i; - for (i = domain_lines; i > line; i--) - { - dposition[i] = dposition[i - 1]; - dsize[i] = dsize[i - 1]; - dstatus[i] = dstatus[i - 1]; - } - dposition[i] = position; - dsize[i] = size; - dstatus[i] = status; - domain_lines++; - return (0); -} - -int find_domain_block(long long position) -{ - int first = 0; - int last = domain_lines - 1; - int middle = (first + last) / 2; - while (first <= last) - { - // fprintf (stdout, "pos=0x%llx\n", position); - if (position >= dposition[middle] && position < dposition[middle] + dsize[middle]) - { - return (middle); - } - else if (position > dposition[middle]) - { - first = middle + 1; - } - else - { - last = middle - 1; - } - middle = (first + last) / 2; - } - return (-1); -} - -int delete_domain_line(int line) -{ - int i; - for (i = line; i < domain_lines; i++) - { - dposition[i] = dposition[i + 1]; - dsize[i] = dsize[i + 1]; - dstatus[i] = dstatus[i + 1]; - } - domain_lines--; - return (0); -} - -int check_log(void) -{ - sprintf(tempmessage, "Checking progress log file...\n"); - message_now(tempmessage); - int i; - int fail = 0; - - // check that first position is 0 - if (lposition[0] != 0) - { - sprintf(tempmessage, "The first position is not 0\n"); - message_now(tempmessage); - fail = 1; - } - - for (i = 0; i < total_lines - 1; i++) - { - // check if there is an overlap - if ((lposition[i] + lsize[i]) > lposition[i + 1]) - { - sprintf(tempmessage, "Overlap found on line %d\n", i + 1); - message_now(tempmessage); - fail = 2; - } - // check if size is 0 - if (lsize[i] == 0) - { - sprintf(tempmessage, "Size of 0 found on line %d\n", i + 1); - message_now(tempmessage); - fail = 3; - } - // check if there is a gap - if ((lposition[i] + lsize[i]) < lposition[i + 1]) - { - sprintf(tempmessage, "Gap found on line %d\n", i + 1); - message_now(tempmessage); - fail = 4; - } - // check if the next status is the same - if (lstatus[i] == lstatus[i + 1]) - { - sprintf(tempmessage, "Same status found on line %d\n", i + 1); - message_now(tempmessage); - fail = 5; - } - } - - // get total size from last position - total_size = lposition[total_lines - 1] + lsize[total_lines - 1]; - sprintf(tempmessage, "total size = %lld\n", total_size); - message_now(tempmessage); - - return fail; -} - -int check_domain(void) -{ - sprintf(tempmessage, "Checking domain file...\n"); - message_now(tempmessage); - int i; - int fail = 0; - for (i = 0; i < domain_lines - 1; i++) - { - // check if there is an overlap - if ((dposition[i] + dsize[i]) > dposition[i + 1]) - { - sprintf(tempmessage, "Overlap found on domain line %d\n", i + 1); - message_now(tempmessage); - fail = 2; - } - } - return fail; -} - -int get_block_status(long long position, long long size) -{ - int status = 0; - int line = find_block(position); - if (line == -1) - { - // sprintf (tempmessage, "Error: Position 0x%llx not found in progress log file\n", position); - // message_now(tempmessage); - return -1; - } - // process current status - status = status | process_status(line); - // check if the chunk fits in the block and if not then get next block - // but only get the status of up to 255 more chunks before moving on - // otherwise it can take a long time with a large log file - long long block_end = lposition[line] + lsize[line]; - size -= lposition[line] - position; - int chunk_count = 255; - while (chunk_count > 0) - { - chunk_count--; - if (lposition[line] + size > block_end || lposition[line] > block_end) - { - size -= lsize[line]; - line++; - if (line > total_lines - 1) - { - break; - } - block_end = lposition[line] + lsize[line]; - status = status | process_status(line); - } - else - { - break; - } - // break; - } - - return status; -} - -int get_block_timing(long long position, long long size) -{ - long long new_size = size; - long long time = 0; - int high_time = 0; - int line = find_block(position); - if (line == -1) - { - // sprintf (tempmessage, "Error: Position 0x%llx not found in progress log file\n", position); - // message_now(tempmessage); - return -1; - } - // process current time - time = (lstatus[line] >> 32) & 0xff; - if (time > high_time) - { - high_time = time; - } - // check if the chunk fits in the block and if not then get next block - // but only get the status of up to 255 more chunks before moving on - // otherwise it can take a long time with a large log file - long long block_end = lposition[line] + lsize[line]; - new_size -= lposition[line] - position; - int chunk_count = 255; - while (chunk_count > 0) - { - chunk_count--; - if (lposition[line] + new_size > block_end || lposition[line] > block_end) - { - new_size -= lsize[line]; - line++; - if (line > total_lines - 1) - { - break; - } - block_end = lposition[line] + lsize[line]; - time = (lstatus[line] >> 32) & 0xff; - if (time > high_time) - { - high_time = time; - } - } - else - { - break; - } - // break; - } - - return high_time; -} - -int get_block_information(long long position, long long size) -{ - long long new_size = size; - long long ret = 0; - int line = find_block(position); - if (line == -1) - { - // sprintf (tempmessage, "Error: Position 0x%llx not found in progress log file\n", position); - // message_now(tempmessage); - return -1; - } - int maxcount = 4096; - long long nontried = 0; - long long nontrimmed = 0; - long long nondivided = 0; - long long nonscraped = 0; - long long bad = 0; - long long finished = 0; - long long hightime = 0; - char tempchar[384]; - char lines[maxcount * sizeof(tempchar)]; - strcpy(lines, ""); - // process current status - // fprintf (stdout, "1 pos=%lld siz=%lld nsiz=%lld lin=%d lpos=%lld lsiz=%lld\n", position, size, new_size, line, lposition[line], lsize[line]); //debug - ret = process_information(position, size, line); - if (ret > 0) - { - nontried = nontried + temp_nontried; - nontrimmed = nontrimmed + temp_nontrimmed; - nondivided = nondivided + temp_nondivided; - nonscraped = nonscraped + temp_nonscraped; - bad = bad + temp_bad; - finished = finished + temp_finished; - if (temp_hightime > hightime) - { - hightime = temp_hightime; - } - if (ddrescue_log) - { - sprintf(tempchar, "0x%06llx \t0x%06llx \t%c\n", lposition[line], lsize[line], ddrstatus); - } - else - { - sprintf(tempchar, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", lposition[line], lsize[line], (lstatus[line] & STATUS_MASK), ((lstatus[line] & INFO_MASK) >> 8), (lstatus[line] >> 32)); - } - strcat(lines, tempchar); - } - // check if the chunk fits in the block and if not then get next block - long long block_end = lposition[line] + lsize[line]; - new_size -= lposition[line] - position; - int chunk_count = maxcount; - while (chunk_count > 0) - { - // fprintf (stdout, "2 pos=%lld siz=%lld nsiz=%lld lin=%d lpos=%lld lsiz=%lld\n", position, size, new_size, line, lposition[line], lsize[line]); //debug - chunk_count--; - if (lposition[line] + new_size > block_end || lposition[line] > block_end) - { - new_size -= lsize[line]; - line++; - if (line > total_lines - 1) - { - break; - } - block_end = lposition[line] + lsize[line]; - // fprintf (stdout, "3 pos=%lld siz=%lld nsiz=%lld lin=%d lpos=%lld lsiz=%lld end=%lld\n", position, size, new_size, line, lposition[line], lsize[line], block_end); //debug - ret = process_information(position, size, line); - if (ret > 0) - { - nontried = nontried + temp_nontried; - nontrimmed = nontrimmed + temp_nontrimmed; - nondivided = nondivided + temp_nondivided; - nonscraped = nonscraped + temp_nonscraped; - bad = bad + temp_bad; - finished = finished + temp_finished; - if (temp_hightime > hightime) - { - hightime = temp_hightime; - } - if (ddrescue_log) - { - sprintf(tempchar, "0x%06llx \t0x%06llx \t%c\n", lposition[line], lsize[line], ddrstatus); - } - else - { - sprintf(tempchar, "0x%06llx \t0x%06llx \t0x%llx \t0x%llx \t0x%llx\n", lposition[line], lsize[line], (lstatus[line] & STATUS_MASK), ((lstatus[line] & INFO_MASK) >> 8), (lstatus[line] >> 32)); - } - strcat(lines, tempchar); - } - } - else - { - break; - } - // break; - } - - if (chunk_count == 0) - { - fprintf(stdout, "block line count exceeded\n"); - } - long long total = nontried + nontrimmed + nondivided + nonscraped + bad + finished; - if (total != size) - { - fprintf(stdout, "block sum %lld does not equal block total %lld\n", total, size); - } - - char label[8092 + (maxcount * sizeof(tempchar))]; - strcpy(label, ""); - sprintf(tempchar, "0x%llx-0x%llx (%lld-%lld)\n", position, (position + size) - 1, position, (position + size) - 1); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld ", curlang[LANGFINISHED], finished); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld\n", curlang[LANGBAD], bad); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld ", curlang[LANGNONTRIED], nontried); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld\n", curlang[LANGNONTRIMMED], nontrimmed); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld ", curlang[LANGNONDIVIDED], nondivided); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld\n", curlang[LANGNONSCRAPED], nonscraped); - strcat(label, tempchar); - sprintf(tempchar, "%s=%d ", curlang[LANGAREAS], maxcount - chunk_count); - strcat(label, tempchar); - sprintf(tempchar, "%s=%lld\n", curlang[LANGTIMING], hightime); - strcat(label, tempchar); - strcat(label, lines); - // fprintf (stdout, "%s", label); - // fprintf (stdout, "count=%d\n", maxcount - chunk_count); - gtk_label_set_text(GTK_LABEL(block_information_label), label); - - return 0; -} - -int process_domain(long long position, int size, int status, int status_mask) -{ - if (show_domain) - { - int first = 0; - int last = domain_lines - 1; - int middle = (first + last) / 2; - while (first <= last) - { - // fprintf (stdout, "position=0x%llx size=0x%x dposition=0x%llx dsize=0x%llx\n", position, size, dposition[middle], dsize[middle]); //debug - // fprintf (stdout, "first=%d middle=%d end=%d\n", first, middle, last); //debug - // check if any part of the chunk is in the domain - if (((position >= dposition[middle] && position < dposition[middle] + dsize[middle]) || (dposition[middle] >= position && dposition[middle] < position + size)) && ((dstatus[middle] & status_mask) == status)) - { - // found a matching block - return 1; - } - else if (position > dposition[middle]) - { - first = middle + 1; - } - else - { - last = middle - 1; - } - middle = (first + last) / 2; - } - } - return 0; -} - -int process_status(int line) -{ - int status = 0; - int mask = 0x7f; - if ((lstatus[line] & mask) == (NONTRIED & mask)) - { - status = NONTRIED_BIT; - } - else if ((lstatus[line] & mask) == (NONTRIMMED & mask)) - { - status = NONTRIMMED_BIT; - } - else if ((lstatus[line] & mask) == (NONDIVIDED & mask)) - { - status = NONDIVIDED_BIT; - } - else if ((lstatus[line] & mask) == (NONSCRAPED & mask)) - { - status = NONSCRAPED_BIT; - } - else if ((lstatus[line] & mask) == (BAD & mask)) - { - status = BAD_BIT; - } - else if ((lstatus[line] & mask) == (FINISHED & mask)) - { - status = FINISHED_BIT; - } - else - { - status = UNKNOWN_BIT; - } - if (lstatus[line] & BAD_HEAD) - { - status = status | BAD_HEAD_BIT; - } - return status; -} - -long long process_information(long long position, long long size, int line) -{ - temp_nontried = 0; - temp_nontrimmed = 0; - temp_nondivided = 0; - temp_nonscraped = 0; - temp_bad = 0; - temp_finished = 0; - temp_hightime = 0; - long long start = position; - if (lposition[line] > position) - { - start = lposition[line]; - } - long long end = (position + size); - if ((lposition[line] + lsize[line]) < end) - { - end = (lposition[line] + lsize[line]); - } - long long total = end - start; - if (total < 0) - { - total = 0; - } - ddrstatus = ' '; - int mask = 0x7f; - if ((lstatus[line] & mask) == (NONTRIED & mask)) - { - temp_nontried = total; - ddrstatus = '?'; - // fprintf (stdout, "temp_nontried=%lld\n", total); // debug - } - else if ((lstatus[line] & mask) == (NONTRIMMED & mask)) - { - temp_nontrimmed = total; - ddrstatus = '*'; - // fprintf (stdout, "temp_nontrimmed=%lld\n", total); // debug - } - else if ((lstatus[line] & mask) == (NONDIVIDED & mask)) - { - temp_nondivided = total; - ddrstatus = '*'; - // fprintf (stdout, "temp_nondivided=%lld\n", total); // debug - } - else if ((lstatus[line] & mask) == (NONSCRAPED & mask)) - { - temp_nonscraped = total; - ddrstatus = '/'; - // fprintf (stdout, "temp_nonscraped=%lld\n", total); // debug - } - else if ((lstatus[line] & mask) == (BAD & mask)) - { - temp_bad = total; - ddrstatus = '-'; - // fprintf (stdout, "temp_bad=%lld\n", total); // debug - } - else if ((lstatus[line] & mask) == (FINISHED & mask)) - { - temp_finished = total; - ddrstatus = '+'; - // fprintf (stdout, "temp_finished=%lld\n", total); // debug - } - temp_hightime = (lstatus[line] >> 32) & 0xff; - return total; -} - -int find_block(long long position) -{ - int first = 0; - int last = total_lines - 1; - int middle = (first + last) / 2; - while (first <= last) - { - if (position >= lposition[middle] && position < lposition[middle] + lsize[middle]) - { - return (middle); - } - else if (position > lposition[middle]) - { - first = middle + 1; - } - else - { - last = middle - 1; - } - middle = (first + last) / 2; - } - return (-1); -} - -int find_next_block(int line, long long status, long long mask) -{ - int i; - for (i = line + 1; i < total_lines; i++) - { - if ((lstatus[i] & mask) == (status & mask)) - { - return i; - } - } - return (-1); -} - -int do_nanosleep(unsigned long long time) -{ - // sleep time in nanoseconds - struct timespec tim, tim2; - tim.tv_sec = time / 1000000000; - tim.tv_nsec = time % 1000000000; - nanosleep(&tim, &tim2); - return (0); -} - -int message_exit(char *message) -{ - fprintf(stdout, "%s", message); - strncat(exit_message, message, EXIT_MESSAGE_SIZE - strlen(exit_message) - 1); - return 0; -} - -int message_display(char *message) -{ - fprintf(stdout, "%s", message); - strncat(display_message, message, DISPLAY_MESSAGE_SIZE - strlen(display_message) - 1); - return 0; -} - -int message_now(char *message) -{ - fprintf(stdout, "%s", message); - return 0; -} - -int message_debug(char *message, int level) -{ - if (debug > 0 && debug > level) - { - fprintf(stdout, "%s", message); - } - return 0; -} - -int message_error(char *message) -{ - if (debug > 0) - { - fprintf(stdout, "%s", message); - } - strncat(error_message, message, ERROR_MESSAGE_SIZE - strlen(error_message) - 1); - return 0; -} - -int clear_error_message(void) -{ - strcpy(error_message, "\0"); - return 0; -} - -// function to display help -void help(void) -{ - fprintf(stdout, "\n"); - fprintf(stdout, "Usage: oscviewer [options]\n"); - fprintf(stdout, "\n"); - fprintf(stdout, "OPTIONS:\n"); - fprintf(stdout, " -v, --version Show version and exit\n"); - fprintf(stdout, " -h, --help Show this help and exit\n"); - fprintf(stdout, "\n"); -} - -// function to display version -void version(void) -{ - fprintf(stdout, "%s %s\n", title, version_number); - fprintf(stdout, "Copyright (C) %d Scott Dwyer and OpenSuperClone contributors.\n", copyright_year); - fprintf(stdout, "License type: GPL2\n"); - fprintf(stdout, "There is NO WARRANTY, to the extent permitted by law.\n"); -} - -int set_language(void) -{ - GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - // gtk_window_set_keep_above(GTK_WINDOW(window), TRUE); - gtk_window_set_title(GTK_WINDOW(window), "Language Options"); - gtk_window_set_default_size(GTK_WINDOW(window), 200, 200); - gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); - - gint handler_id1 = g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); - - GtkWidget *box = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(window), box); - - GtkWidget *enbutton = gtk_button_new_with_label("Continue"); - // GtkWidget *exbutton = gtk_button_new_with_label("Export language file"); - GtkWidget *imbutton = gtk_button_new_with_label("Change Language"); - GtkWidget *okim = gtk_image_new_from_stock(GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON); - // GtkWidget *saveim = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON); - GtkWidget *openim = gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON); - gtk_button_set_image(GTK_BUTTON(enbutton), okim); - // gtk_button_set_image(GTK_BUTTON(exbutton), saveim); - gtk_button_set_image(GTK_BUTTON(imbutton), openim); - - gtk_box_pack_start(GTK_BOX(box), enbutton, TRUE, TRUE, 0); - // gtk_box_pack_start (GTK_BOX (box), exbutton, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(box), imbutton, TRUE, TRUE, 0); - - gint handler_id2 = g_signal_connect(enbutton, "clicked", G_CALLBACK(gtk_main_quit), NULL); - // gint handler_id3 = g_signal_connect (exbutton, "clicked", G_CALLBACK (export_language_file), NULL); - gint handler_id4 = g_signal_connect(imbutton, "clicked", G_CALLBACK(import_language_file), NULL); - - gtk_widget_show_all(window); - gtk_main(); - g_signal_handler_disconnect(window, handler_id1); - g_signal_handler_disconnect(enbutton, handler_id2); - // g_signal_handler_disconnect(exbutton, handler_id3); - g_signal_handler_disconnect(imbutton, handler_id4); - gtk_widget_hide_all(window); - gtk_widget_destroy(window); - - return 0; -} - -int print_gui_error_message(char *message, char *title, int type) -{ - GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - GtkWidget *dialog; - GtkDialogFlags message_type; - if (type) - { - message_type = (GtkDialogFlags)GTK_MESSAGE_WARNING; - // dialog = gtk_message_dialog_new(GTK_WINDOW(main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "%s", message); - } - else - { - message_type = (GtkDialogFlags)GTK_MESSAGE_INFO; - // dialog = gtk_message_dialog_new(GTK_WINDOW(main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", message); - } - dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, (GtkMessageType)message_type, GTK_BUTTONS_OK, "%s", message); - gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); - gtk_window_set_title(GTK_WINDOW(dialog), title); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - gtk_widget_destroy(window); - - return 0; -} - -void export_language_file(void) -{ - /* Create a new file selection widget */ - filelangex = gtk_file_selection_new(curlang[LANGEXPORTLANG]); - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(filelangex)); - - /* Connect the ok_button to file_ok_sel function */ - g_signal_connect(GTK_FILE_SELECTION(filelangex)->ok_button, "clicked", G_CALLBACK(file_export_sel), (gpointer)filelangex); - - /* Connect the cancel_button to destroy the widget */ - g_signal_connect_swapped(GTK_FILE_SELECTION(filelangex)->cancel_button, "clicked", G_CALLBACK(gtk_widget_destroy), filelangex); - - // set default file name - // gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), "progress.log"); - - gtk_widget_show(filelangex); -} - -// get the export filename and load it -static void file_export_sel(GtkWidget *w, GtkFileSelection *fs) -{ - // g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs))); - char export_file[1024] = ""; - sprintf(export_file, "%s", gtk_file_selection_get_filename(GTK_FILE_SELECTION(fs))); - printf("%s\n", export_file); - gtk_widget_destroy(filelangex); - - FILE *writefile; - writefile = fopen(export_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], export_file, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - - fprintf(writefile, "%s", program_title); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|_|%d|_|\n", i); - fprintf(writefile, "%s", enlang[i]); - } - - fclose(writefile); -} - -void import_language_file(void) -{ - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new(curlang[LANGIMPORTLANG], - GTK_WINDOW(language_window), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (access(OSCVIEWER_LANG_PATH, F_OK) == 0) - { - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), OSCVIEWER_LANG_PATH); - g_print("found installed languages\n"); - } - else if (access("Language/English", F_OK) == 0) - { - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), "Language"); - g_print("found languages locally\n"); - } - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - fprintf(stdout, "%s\n", filename); - file_import_sel(filename); - g_free(filename); - } - gtk_widget_destroy(dialog); -} - -// get the import filename and load it -static void file_import_sel(char *import_file) -{ - FILE *readfile; - readfile = fopen(import_file, "r"); - if (readfile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGIMPORTERR], import_file, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - else - { - - char line[MAXLANGLENGTH]; - int count = 0; - int found_count = -1; - char found_title[MAXLANGLENGTH] = ""; - int firstline = 1; - - while (fgets(line, sizeof line, readfile)) - { - if (firstline) - { - strcpy(found_title, line); - firstline = 0; - } - else - { - int scanline; - int new_count = -1; - scanline = sscanf(line, "| _ | %d | _ |", &new_count); - if (scanline == 1) - { - // fprintf (stdout, "num=%d, line=%s", new_count, line); - // remove the last new line from the end - if (found_count >= 0) - { - int l = strlen(newlang[found_count]); - if (l > 0 && newlang[found_count][l - 1] == '\n') - { - newlang[found_count][l - 1] = '\0'; - } - } - found_count = new_count; - strcpy(newlang[found_count], ""); - count++; - } - else if (found_count >= 0 && found_count < LANGCOUNT) - { - strcat(newlang[found_count], line); - // fprintf (stdout, "%s", newlang[found_count]); - } - } - } - - count--; - if (count == found_count && count == LANGCOUNT - 1) - { - copy_newlanguage(); - sprintf(tempmessage, "%s", curlang[LANGLANGCHANGESUCCESS]); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGSUCCESS], 0); - clear_error_message(); - } - else - { - // fprintf (stdout, "count=%d found_count=%d LANGCOUNT=%d\n", count, found_count, LANGCOUNT-1); - sprintf(tempmessage, "%s", curlang[LANGLANGIMPORTERR2]); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - - fclose(readfile); - } -} - -#ifdef DEBUG -static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) -{ - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)userp; - - mem->memory = realloc(mem->memory, mem->size + realsize + 1); - if (mem->memory == NULL) - { - /* out of memory! */ - printf("not enough memory (realloc returned NULL)\n"); - return 0; - } - - memcpy(&(mem->memory[mem->size]), contents, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; - - return realsize; -} -#endif - -int translate_all(void) -{ - unsigned int total_language_items = n_languages; - int translate_failed = 0; - if (translate >= 80000 && translate < 80010) - { - char(*reverselang)[LANGCOUNT][MAXLANGLENGTH]; - reverselang = malloc((total_language_items / 3) * sizeof *reverselang); - char(*alllang)[LANGCOUNT][MAXLANGLENGTH]; - alllang = malloc((total_language_items / 3) * sizeof *alllang); - char *reverse_file = "REVERSE_LANGUAGES.CSV"; - char *all_file = "ALL_LANGUAGES.CSV"; - char *export_file = "English"; - FILE *writefile; - writefile = fopen(export_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], export_file, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - fprintf(writefile, "%s", program_title); - unsigned int i; - unsigned int n; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|_|%u|_|\n", i); - fprintf(writefile, "%s", enlang[i]); - } - fclose(writefile); - chmod(export_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - if (total_language_items % 3) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "language count not dividable by 3\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - return -1; - } - for (i = 0; i < total_language_items; i += 3) - { - fprintf(stdout, "translating %u\n", i / 3); - char *translang = languages[i + 1]; - char *language = languages[i]; - char *native = languages[i + 2]; - copy_enlanguage(); - if (translate_language("en", translang, language, native)) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to translate to %s\n", language); - fprintf(stdout, "\n*****************************************************\n"); - translate_failed = 1; - } - if (translate == 80009) - { - for (n = 0; n < LANGCOUNT; n++) - { - strcpy(alllang[i / 3][n], newlang[n]); - } - copy_newlanguage(); - if (translate_language(translang, "en", language, "english")) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to reverse translate %s\n", language); - fprintf(stdout, "\n*****************************************************\n"); - translate_failed = 1; - } - for (n = 0; n < LANGCOUNT; n++) - { - strcpy(reverselang[i / 3][n], newlang[n]); - } - } - } - - if (translate == 80009) - { - writefile = fopen(reverse_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], reverse_file, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - fprintf(writefile, "\"%s\", ", "English"); - for (i = 0; i < total_language_items; i += 3) - { - fprintf(writefile, "\"%s\", ", languages[i]); - } - fprintf(writefile, "\n"); - for (n = 0; n < LANGCOUNT; n++) - { - fprintf(writefile, "\"%s\", ", enlang[n]); - for (i = 0; i < (total_language_items / 3); i++) - { - fprintf(writefile, "\"%s\", ", reverselang[i][n]); - } - fprintf(writefile, "\n"); - } - fclose(writefile); - chmod(reverse_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - writefile = fopen(all_file, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], all_file, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - fprintf(writefile, "\"%s\", ", "English"); - for (i = 0; i < total_language_items; i += 3) - { - fprintf(writefile, "\"%s\", ", languages[i]); - } - fprintf(writefile, "\n"); - for (n = 0; n < LANGCOUNT; n++) - { - fprintf(writefile, "\"%s\", ", enlang[n]); - for (i = 0; i < (total_language_items / 3); i++) - { - fprintf(writefile, "\"%s\", ", alllang[i][n]); - } - fprintf(writefile, "\n"); - } - fclose(writefile); - chmod(all_file, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - } - } - if (translate_failed) - { - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "Failed to translate\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - fprintf(stdout, "\n*****************************************************\n"); - return -1; - } - return 0; -} - -int translate_language(char *fromlang, char *translang, char *language, char *native) -{ - int failure = 0; - char return_data[1000000]; - char new_lang_data[500000]; - char url_data[250000]; - char lang_data[250000]; - char new_data[250000]; - char temp_data[100000]; - strcpy(lang_data, ""); - strcpy(new_data, ""); - strcpy(return_data, ""); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - sprintf(temp_data, "\n|_|%04d|_|\n", i); - strcat(lang_data, temp_data); - sprintf(temp_data, "%s", curlang[i]); - strcat(lang_data, temp_data); - int linebyline = 0; - if (strlen(lang_data) > 3000 || i == LANGCOUNT - 1 || linebyline) - { - int n; - int len = strlen(lang_data); - for (n = 0; n < len; n++) - { - char c = lang_data[n]; - if (c == ' ') - { - strcat(new_data, "%20"); - } - else if (c == '\n') - { - strcat(new_data, "%0a"); - } - else - { - strncat(new_data, &c, 1); - } - } - // fprintf (stdout, "%s\n", new_data); - - strcpy(url_data, "https://translate.googleapis.com/translate_a/single?client=gtx&sl="); - strcat(url_data, fromlang); - strcat(url_data, "&tl="); - strcat(url_data, translang); - strcat(url_data, "&dt=t&q="); - strcat(url_data, new_data); - - fprintf(stdout, "%d %s to %s ", i, fromlang, translang); - do_nanosleep(TRANSLATETIMERFAST); // this is a timer to deal with google translator - char *data = get_translated_data(url_data); - // fprintf (stdout, "%s\n", data); - strcat(return_data, data); - strcpy(lang_data, ""); - strcpy(new_data, ""); - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", return_data); - - strcpy(new_lang_data, ""); - int return_length = strlen(return_data); - int bracket_depth = 0; - for (i = 0; i < return_length; i++) - { - if (return_data[i] == '[') - { - bracket_depth++; - if (return_data[i + 1] == '"' && bracket_depth < 5) - { - int n = i + 2; - while (n < return_length) - { - if (return_data[n] == '"') - { - strcat(new_lang_data, "\n"); - break; - } - else if (return_data[n] == '\\' && return_data[n + 1] == 'n') - { - strcat(new_lang_data, "\n"); - if (return_data[n + 2] == '\\' && return_data[n + 3] == 'n') - { - strcat(new_lang_data, "\n"); - } - if (return_data[n + 4] == '\\' && return_data[n + 5] == 'n') - { - strcat(new_lang_data, "\n"); - } - break; - } - char c = return_data[n]; - strncat(new_lang_data, &c, 1); - n++; - i = n; - } - } - } - else if (return_data[i] == ']') - { - bracket_depth--; - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", new_lang_data); - - // read language data out of the variable - char *line = new_lang_data; - int count = 0; - int found_count = -1; - while (line) - { - char *nextLine = strchr(line, '\n'); - if (nextLine) - *nextLine = '\0'; // temporarily terminate the current line - // printf("%s\n", line); - - int scanline; - int new_count = -1; - scanline = sscanf(line, "| _ | %d | _ |", &new_count); - if (scanline == 1) - { - // fprintf (stdout, "num=%d, line=%s\n", new_count, line); - // remove the last new line from the end - if (found_count >= 0) - { - int l = strlen(newlang[found_count]); - if (l > 0 && newlang[found_count][l - 1] == '\n') - { - newlang[found_count][l - 1] = '\0'; - } - } - found_count = new_count; - strcpy(newlang[found_count], ""); - count++; - } - else if (found_count >= 0 && found_count < LANGCOUNT) - { - unsigned int l = strlen(newlang[found_count]); - strncat(newlang[found_count], line, MAXLANGLENGTH - l - 1); - strcat(newlang[found_count], "\n"); - // fprintf (stdout, "%s\n", newlang[found_count]); - if (MAXLANGLENGTH - l < strlen(line)) - { - fprintf(stdout, "Warning: language count %d exceeded max length and was truncated.\n", found_count); - failure = 1; - } - } - - if (nextLine) - *nextLine = '\n'; // then restore newline-char, just to be tidy - line = nextLine ? (nextLine + 1) : NULL; - } - count--; - if (count == found_count && count == LANGCOUNT - 1) - { - // do noting - } - else - { - fprintf(stdout, "FAILED count=%d found_count=%d LANGCOUNT=%d\n", count, found_count, LANGCOUNT - 1); - failure = 1; - } - - if (failure && 0) - { - int retry = translate_language_slow(fromlang, translang, language, native); - return retry; - } - - char langfile[256]; - strcpy(langfile, language); - strcat(langfile, "("); - strcat(langfile, native); - strcat(langfile, ")"); - if (failure) - { - strcat(langfile, "_FAILED_TRANSLATION"); - } - FILE *writefile; - writefile = fopen(langfile, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], langfile, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - - fprintf(writefile, "%s", program_title); - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|_|%04d|_|\n", i); - fprintf(writefile, "%s", newlang[i]); - } - - fclose(writefile); - chmod(langfile, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - return failure; -} - -char *get_translated_data(char *url_data) -{ -#ifdef DEBUG - do_nanosleep(TRANSLATETIMERALL); // this is a timer to deal with google translator - CURL *curl_handle; - CURLcode res; - - struct MemoryStruct chunk; - - chunk.memory = malloc(1); /* will be grown as needed by the realloc above */ - chunk.size = 0; /* no data at this point */ - - curl_global_init(CURL_GLOBAL_ALL); - - /* init the curl session */ - curl_handle = curl_easy_init(); - - /* specify URL to get */ - curl_easy_setopt(curl_handle, CURLOPT_URL, url_data); - - /* send all data to this function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); - - /* we pass our 'chunk' struct to the callback function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); - - /* some servers don't like requests that are made without a user-agent - field, so we provide one */ - curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0"); - - /* get it! */ - res = curl_easy_perform(curl_handle); - - /* check for errors */ - if (res != CURLE_OK) - { - fprintf(stdout, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); - } - else - { - fprintf(stdout, "%ld bytes retrieved\n", (long)chunk.size); - // printf("%s\n", chunk.memory); - } - - /* cleanup curl stuff */ - curl_easy_cleanup(curl_handle); - - // free(chunk.memory); - - /* we're done with libcurl, so clean it up */ - curl_global_cleanup(); - - return chunk.memory; -#else - return url_data; -#endif -} - -int translate_language_slow(char *fromlang, char *translang, char *language, char *native) -{ - int failure = 0; - char return_data[65536]; - char new_lang_data[32768]; - char url_data[6000]; - char lang_data[8000]; - char new_data[16000]; - char temp_data[4096]; - strcpy(lang_data, ""); - strcpy(new_data, ""); - strcpy(return_data, ""); - int count; - for (count = 0; count < LANGCOUNT; count++) - { - strcpy(lang_data, ""); - strcpy(new_data, ""); - sprintf(temp_data, "%s", curlang[count]); - strcat(lang_data, temp_data); - int n; - int len = strlen(lang_data); - for (n = 0; n < len; n++) - { - char c = lang_data[n]; - if (c == ' ') - { - strcat(new_data, "%20"); - } - else if (c == '\n') - { - strcat(new_data, "%0a"); - } - else - { - strncat(new_data, &c, 1); - } - } - // fprintf (stdout, "%s\n", new_data); - - strcpy(url_data, "https://translate.googleapis.com/translate_a/single?client=gtx&sl="); - strcat(url_data, fromlang); - strcat(url_data, "&tl="); - strcat(url_data, translang); - strcat(url_data, "&dt=t&q="); - strcat(url_data, new_data); - - fprintf(stdout, "%d %s to %s ", count, fromlang, translang); - do_nanosleep(TRANSLATETIMERSLOW); // this is a timer to deal with google translator - char *data = get_translated_data(url_data); - // fprintf (stdout, "%s\n", data); - strcpy(return_data, data); - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", return_data); - - strcpy(new_lang_data, ""); - int return_length = strlen(return_data); - int i; - for (i = 0; i < return_length; i++) - { - if (return_data[i] == '[') - { - if (return_data[i + 1] == '"') - { - int n = i + 2; - while (n < return_length) - { - if (return_data[n] == '"') - { - break; - } - else if (return_data[n] == '\\' && return_data[n + 1] == 'n') - { - strcat(new_lang_data, "\n"); - if (return_data[n + 2] == '\\' && return_data[n + 3] == 'n') - { - strcat(new_lang_data, "\n"); - } - if (return_data[n + 4] == '\\' && return_data[n + 5] == 'n') - { - strcat(new_lang_data, "\n"); - } - break; - } - char c = return_data[n]; - strncat(new_lang_data, &c, 1); - n++; - i = n; - } - } - } - } - // fprintf (stdout, "\n*****************************************************\n"); - // fprintf (stdout, "%s\n", new_lang_data); - if (strlen(new_lang_data) >= MAXLANGLENGTH) - { - fprintf(stdout, "Warning: language count %d exceeded max length and was truncated.\n", count); - failure = 1; - } - strcpy(newlang[count], new_lang_data); - } - - char langfile[256]; - strcpy(langfile, language); - strcat(langfile, "("); - strcat(langfile, native); - strcat(langfile, ")"); - if (failure) - { - strcat(langfile, "_FAILED_TRANSLATION"); - } - FILE *writefile; - writefile = fopen(langfile, "w"); - if (writefile == NULL) - { - sprintf(tempmessage, "%s: %s (%s)", curlang[LANGLANGEXPORTERR], langfile, strerror(errno)); - message_error(tempmessage); - print_gui_error_message(error_message, curlang[LANGERROR], 1); - clear_error_message(); - } - - fprintf(writefile, "%s", program_title); - int i; - for (i = 0; i < LANGCOUNT; i++) - { - fprintf(writefile, "\n|_|%d|_|\n", i); - fprintf(writefile, "%s", newlang[i]); - } - - fclose(writefile); - chmod(langfile, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - return failure; -} - -int copy_enlanguage(void) -{ - int i; - for (i = 0; i < LANGCOUNT; i++) - { - strcpy(curlang[i], enlang[i]); - } - return 0; -} - -int copy_newlanguage(void) -{ - int i; - for (i = 0; i < LANGCOUNT; i++) - { - strcpy(curlang[i], newlang[i]); - // fprintf(stdout, "%d %s", i, newlang[i]); - } - return 0; -} - -int setup_enlanguage(void) -{ - strcpy(enlang[LANGFILE], "File"); - strcpy(enlang[LANGQUIT], "Quit"); - strcpy(enlang[LANGOPEN], "Open"); - strcpy(enlang[LANGERROR], "Error!"); - strcpy(enlang[LANGWARN], "Warning"); - strcpy(enlang[LANGLANGUAGE], "Language"); - strcpy(enlang[LANGEXPORTLANG], "Export language"); - strcpy(enlang[LANGIMPORTLANG], "Import language"); - strcpy(enlang[LANGLANGEXPORTERR], "Cannot open file for writing"); - strcpy(enlang[LANGLANGIMPORTERR], "Cannot open file for reading"); - strcpy(enlang[LANGLANGIMPORTERR2], "Error processing imported language file"); - strcpy(enlang[LANGLANGCHANGESUCCESS], "Language successfully changed!"); - strcpy(enlang[LANGSUCCESS], "Success!"); - strcpy(enlang[LANGOPTIONS], "Options"); - strcpy(enlang[LANGLEFTRES], "Left panel resolution"); - strcpy(enlang[LANGMAINRES], "Main panel resolution"); - strcpy(enlang[LANGMAINSIZE], "Main grid size"); - strcpy(enlang[LANGAUTOUPDATE], "Auto update"); - strcpy(enlang[LANGSHOWBADHEAD], "Show bad head"); - strcpy(enlang[LANGNONTRIMMED], "Non-trimmed"); - strcpy(enlang[LANGNONDIVIDED], "Non-divided"); - strcpy(enlang[LANGNONSCRAPED], "Non-scraped"); - strcpy(enlang[LANGBAD], "Bad"); - strcpy(enlang[LANGNONTRIED], "Non-tried"); - strcpy(enlang[LANGFINISHED], "Finished"); - strcpy(enlang[LANGCURRENT], "Current"); - strcpy(enlang[LANGBADHEAD], "Bad-head"); - strcpy(enlang[LANG1PT], "1 pt"); - strcpy(enlang[LANG2PT], "2 pt"); - strcpy(enlang[LANG3PT], "3 pt"); - strcpy(enlang[LANG4PT], "4 pt"); - strcpy(enlang[LANG6PT], "6 pt"); - strcpy(enlang[LANG8PT], "8 pt"); - strcpy(enlang[LANG10PT], "10 pt"); - strcpy(enlang[LANG12PT], "12 pt"); - strcpy(enlang[LANG14PT], "14 pt"); - strcpy(enlang[LANG16PT], "16 pt"); - strcpy(enlang[LANG4K], "4K"); - strcpy(enlang[LANG8K], "8K"); - strcpy(enlang[LANG16K], "16K"); - strcpy(enlang[LANG32K], "32K"); - strcpy(enlang[LANG64K], "64K"); - strcpy(enlang[LANG128K], "128K"); - strcpy(enlang[LANG256K], "256K"); - strcpy(enlang[LANG512K], "512K"); - strcpy(enlang[LANG1M], "1M"); - strcpy(enlang[LANGOFF], "Off"); - strcpy(enlang[LANG5SEC], "5 seconds"); - strcpy(enlang[LANG10SEC], "10 seconds"); - strcpy(enlang[LANG30SEC], "30 seconds"); - strcpy(enlang[LANG1MIN], "1 minute"); - strcpy(enlang[LANG2MIN], "2 minutes"); - strcpy(enlang[LANG5MIN], "5 minutes"); - strcpy(enlang[LANGSHOWGOODDATA], "Highlight good data"); - strcpy(enlang[LANGGOODDATA], "Good data"); - strcpy(enlang[LANG2M], "2M"); - strcpy(enlang[LANG4M], "4M"); - strcpy(enlang[LANG8M], "8M"); - strcpy(enlang[LANG16M], "16M"); - strcpy(enlang[LANGSHOWTIMING], "Show high time"); - strcpy(enlang[LANGTIMING], "Timing"); - strcpy(enlang[LANGDOMAIN], "Domain"); - strcpy(enlang[LANGSHOWDOMAIN], "Show domain"); - strcpy(enlang[LANGDOMAINBLOCKNOTFOUND], "Domain block not found"); - strcpy(enlang[LANGDMDEDOMAIN], "Domain from DMDE bytes file"); - strcpy(enlang[LANGAREAS], "Areas"); - strcpy(enlang[LANGDUMMY], "dummy always put at bottom of language list"); - // strcpy (enlang[], ""); - - return 0; -} diff --git a/src/oscviewer/oscviewer2.h b/src/oscviewer/oscviewer2.h deleted file mode 100644 index e3153f8..0000000 --- a/src/oscviewer/oscviewer2.h +++ /dev/null @@ -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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef DEBUG -#include -#endif -#include - -#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 *)) diff --git a/src/oscviewer/oscviewer3.glade b/src/oscviewer/oscviewer3.glade deleted file mode 100644 index 555e07f..0000000 --- a/src/oscviewer/oscviewer3.glade +++ /dev/null @@ -1,847 +0,0 @@ - - - - - - False - 2 - - - True - False - - - True - False - - - True - False - file - True - - - True - False - - - True - False - open - True - - - - - True - False - - - - - True - False - domain - True - - - - - True - False - dmde domain - True - - - - - True - False - - - - - True - False - quit - True - - - - - - - - - True - False - options - True - - - True - False - - - True - False - left panel resolution - True - - - True - False - - - True - False - 1pt - True - True - - - - - True - False - 2pt - True - True - True - leftresbutton1 - - - - - True - False - 3pt - True - True - leftresbutton1 - - - - - True - False - 4pt - True - True - leftresbutton1 - - - - - - - - - True - False - main panel resolution - True - - - True - False - - - True - False - 4pt - True - True - - - - - True - False - 6pt - True - True - mainresbutton4 - - - - - True - False - 8pt - True - True - True - mainresbutton4 - - - - - True - False - 10pt - True - True - mainresbutton4 - - - - - True - False - 12pt - True - True - mainresbutton4 - - - - - True - False - 14pt - True - True - mainresbutton4 - - - - - True - False - 16pt - True - True - mainresbutton4 - - - - - - - - - True - False - main grid size - True - - - True - False - - - True - False - 4k - True - True - - - - - True - False - 8k - True - True - mainsizebutton4k - - - - - True - False - 16k - True - True - mainsizebutton4k - - - - - True - False - 32k - True - True - mainsizebutton4k - - - - - True - False - 64k - True - True - True - mainsizebutton4k - - - - - True - False - 128k - True - True - mainsizebutton4k - - - - - True - False - 256k - True - True - mainsizebutton4k - - - - - True - False - 512k - True - True - mainsizebutton4k - - - - - True - False - 1m - True - True - mainsizebutton4k - - - - - True - False - 2m - True - True - mainsizebutton4k - - - - - True - False - 4m - True - True - mainsizebutton4k - - - - - True - False - 8m - True - True - mainsizebutton4k - - - - - True - False - 16m - True - True - mainsizebutton4k - - - - - - - - - True - False - auto update - True - - - True - False - - - True - False - off - True - True - True - - - - - True - False - 5s - True - True - autoupdatebuttonoff - - - - - True - False - 10s - True - True - autoupdatebuttonoff - - - - - True - False - 30s - True - True - autoupdatebuttonoff - - - - - True - False - 1m - True - True - autoupdatebuttonoff - - - - - True - False - 2m - True - True - autoupdatebuttonoff - - - - - True - False - 5m - True - True - autoupdatebuttonoff - - - - - - - - - True - False - show good data - True - - - - - True - False - show bad head - True - - - - - True - False - show timing - True - - - True - False - - - True - False - off - True - True - True - - - - - True - False - 1 - True - True - showtimingbuttonoff - - - - - True - False - 2 - True - True - showtimingbuttonoff - - - - - True - False - 3 - True - True - showtimingbuttonoff - - - - - True - False - 4 - True - True - showtimingbuttonoff - - - - - True - False - 5 - True - True - showtimingbuttonoff - - - - - True - False - 7 - True - True - showtimingbuttonoff - - - - - True - False - 10 - True - True - showtimingbuttonoff - - - - - True - False - 15 - True - True - showtimingbuttonoff - - - - - True - False - 20 - True - True - showtimingbuttonoff - - - - - True - False - 25 - True - True - showtimingbuttonoff - - - - - True - False - 30 - True - True - showtimingbuttonoff - - - - - True - False - 40 - True - True - showtimingbuttonoff - - - - - True - False - 50 - True - True - showtimingbuttonoff - - - - - True - False - 60 - True - True - showtimingbuttonoff - - - - - - - - - True - False - show domain - True - - - - - - - - - False - True - 0 - - - - - True - False - 0 - - - False - True - 1 - - - - - True - False - 0 - - - False - True - 2 - - - - - True - False - - - 100 - True - False - 2 - - - True - False - - - True - True - 0 - - - - - False - False - 0 - - - - - True - False - 2 - - - 100 - True - False - 2 - - - True - False - 2 - - - True - True - automatic - automatic - - - True - False - - - True - False - - - True - False - - - True - False - 0 - 0 - - - True - True - 0 - - - - - 2 - - - - - - - - - True - True - 0 - - - - - True - True - 0 - - - - - 400 - True - False - - - False - False - 1 - - - - - False - False - 0 - - - - - True - False - - - 400 - 300 - True - True - automatic - automatic - - - True - False - - - 200 - 200 - True - False - - - - - - - True - True - 0 - - - - - True - True - 1 - - - - - True - True - 1 - - - - - True - True - 3 - - - - - -