#include <errno.h>
#include <time.h>
#include <unistd.h>
+#include <linux/limits.h>
#include <ventoy_define.h>
#include <ventoy_json.h>
#include <ventoy_http.h>
#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
#include "ventoy_gtk.h"
int g_secure_boot_support = 0;
{
g_secure_boot_support = 1 - g_secure_boot_support;
-vlog("on_secure_boot_toggled %d\n",g_secure_boot_support );
-
if (g_secure_boot_support)
{
gtk_widget_show((GtkWidget *)g_image_secure_local);
}
else
{
- if (g_secure_boot_support)
+ if (!g_secure_boot_support)
{
gtk_check_menu_item_set_active(g_menu_item_secure_boot, 1 - g_secure_boot_support);
}
static ventoy_disk *select_active_dev(const char *select, int *activeid)
{
int i;
+ int alldev;
ventoy_disk *cur = NULL;
+ alldev = ventoy_code_get_cur_show_all();
+
/* find the match one */
if (select)
{
for (i = 0; i < g_disk_num; i++)
{
cur = g_disk_list + i;
+ if (alldev == 0 && cur->type != VTOY_DEVICE_USB)
+ {
+ continue;
+ }
+
if (strcmp(cur->disk_name, select) == 0)
{
*activeid = i;
for (i = 0; i < g_disk_num; i++)
{
cur = g_disk_list + i;
+ if (alldev == 0 && cur->type != VTOY_DEVICE_USB)
+ {
+ continue;
+ }
+
if (cur->vtoydata.ventoy_valid)
{
*activeid = i;
for (i = 0; i < g_disk_num; i++)
{
cur = g_disk_list + i;
+ if (alldev == 0 && cur->type != VTOY_DEVICE_USB)
+ {
+ continue;
+ }
+
if (cur->type == VTOY_DEVICE_USB)
{
*activeid = i;
}
/* use the first one */
- *activeid = 0;
- return g_disk_list;
+ for (i = 0; i < g_disk_num; i++)
+ {
+ cur = g_disk_list + i;
+ if (alldev == 0 && cur->type != VTOY_DEVICE_USB)
+ {
+ continue;
+ }
+
+ *activeid = i;
+ return cur;
+ }
+
+ return NULL;
}
static void fill_dev_list(const char *select)
return;
}
- if (GTK_RESPONSE_CANCEL == msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP"))
+ if (GTK_RESPONSE_OK != msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP"))
{
return;
}
- if (GTK_RESPONSE_CANCEL == msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP2"))
+ if (GTK_RESPONSE_OK != msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP2"))
{
return;
}
void on_button_install_clicked(GtkWidget *widget, gpointer data)
{
int active;
+ long long size;
+ long long space;
ventoy_disk *cur = NULL;
if (g_thread_run || ventoy_code_is_busy())
cur = g_disk_list + active;
+ if (cur->is4kn)
+ {
+ msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "STR_4KN_UNSUPPORTED");
+ return;
+ }
+
if (ventoy_code_get_cur_part_style() == 0 && cur->size_in_byte > 2199023255552ULL)
{
msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "STR_DISK_2TB_MBR_ERROR");
return;
}
- if (GTK_RESPONSE_CANCEL == msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP"))
+ if (g_preserve_space_check)
+ {
+ space = g_preserve_space_number;
+ if (g_preserve_space_unit == 1)
+ {
+ space = space * 1024;
+ }
+ else
+ {
+ space = space;
+ }
+
+ size = cur->size_in_byte / SIZE_1MB;
+ if (size <= space || (size - space) <= (VTOYEFI_PART_BYTES / SIZE_1MB))
+ {
+ msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "STR_SPACE_VAL_INVALID");
+ vlog("reserved space value too big ...\n");
+ return;
+ }
+ }
+
+ if (GTK_RESPONSE_OK != msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP"))
{
return;
}
- if (GTK_RESPONSE_CANCEL == msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP2"))
+ if (GTK_RESPONSE_OK != msgbox(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, "STR_INSTALL_TIP2"))
{
return;
}
return;
}
- if (GTK_RESPONSE_CANCEL == msgbox(GTK_MESSAGE_INFO, GTK_BUTTONS_OK_CANCEL, "STR_UPDATE_TIP"))
+ if (GTK_RESPONSE_OK != msgbox(GTK_MESSAGE_INFO, GTK_BUTTONS_OK_CANCEL, "STR_UPDATE_TIP"))
{
return;
}
for (pos = input; *pos; pos++)
{
- if (*pos < '0' || *pos >= '9')
+ if (*pos < '0' || *pos > '9')
{
msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "STR_SPACE_VAL_INVALID");
return;
SIGNAL("part_cfg_dlg", "delete_event", on_part_cfg_close);
}
+static void add_accelerator(GtkAccelGroup *agMain, void *widget, const char *signal, guint accel_key)
+{
+ gtk_widget_add_accelerator(GTK_WIDGET(widget), signal, agMain, accel_key, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+ gtk_widget_add_accelerator(GTK_WIDGET(widget), signal, agMain, accel_key, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+}
+
void on_init_window(GtkBuilder *pBuilder)
{
GSList *pGroup = NULL;
+ GtkAccelGroup *agMain = NULL;
char version[512];
vlog("on_init_window ...\n");
SIGNAL("menu_item_part_cfg", "activate", on_part_config);
SIGNAL("menu_item_clear", "activate", on_clear_ventoy);
+ agMain = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(g_topWindow), agMain);
+ add_accelerator(agMain, g_dev_combobox, "popup", GDK_KEY_d);
+ add_accelerator(agMain, g_install_button, "clicked", GDK_KEY_i);
+ add_accelerator(agMain, g_update_button, "clicked", GDK_KEY_u);
+ add_accelerator(agMain, g_refresh_button, "clicked", GDK_KEY_r);
+
+ gtk_check_menu_item_set_active(g_menu_item_secure_boot, 1 - g_secure_boot_support);
+
fill_dev_list(NULL);
return;