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
- 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
-
-
-
- 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
-
-
-
- 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
-
-
-
-
-
-