Добавил защиту от пустых и неверных данные в окно редактирования

pull/24/head
Igor Belitskiy 2 years ago
parent b665d4faa0
commit 2b51460f8a

@ -33,12 +33,13 @@ void model_clear_cfg_device(disk_status* _config) {
}
void model_free_vector_string(vector* vec_str) {
if (vec_str->vectorList.total> 0) {
for (int i = 0; i < vec_str->vectorList.total; i++) {
vectorDelete(vec_str, i);
if (vec_str) {
if (vec_str->vectorList.total> 0) {
for (int i = 0; i < vec_str->vectorList.total; i++) {
vectorDelete(vec_str, i);
}
}
}
}
void model_tree_view_add(config_u_g_p* _config) {

@ -74,6 +74,9 @@ typedef struct {
GtkWidget* entryUser;
GtkWidget* UserDeviceCombo;
GtkWidget* lblSetQuotasStatus;
GtkWidget* lblWarningText;
GtkWidget* WarrningWindow;
GtkWidget* CancelWarrningButton;
} temp_set_window;
typedef struct {

@ -9,7 +9,45 @@ config_all* _all_config_temp = NULL;
int table_index = 0;
char* disk = NULL;
vector* temp_vec_actors;
vector* temp_vec_actors = NULL;
void temp_check_activ_disk() {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(temp_widgets->UserDeviceCombo));
if (menu_id == -1) {
gtk_widget_set_sensitive(temp_widgets->entryCatalogProject, 0);
gtk_widget_set_sensitive(temp_widgets->btnReviewProject, 0);
}
else {
gtk_widget_set_sensitive(temp_widgets->entryCatalogProject, 1);
gtk_widget_set_sensitive(temp_widgets->btnReviewProject, 1);
}
}
void destroy_show_warning(GtkWidget *self) {
gtk_widget_destroy(gtk_widget_get_toplevel(self));
temp_widgets->WarrningWindow = NULL;
temp_widgets->CancelWarrningButton = NULL;
temp_widgets->lblWarningText = NULL;
block_btn_save();
}
void show_warning() {
GtkBuilder *builder = gtk_builder_new_from_resource(_glade_path);
char* text_mess = yon_char_new("");
temp_widgets->WarrningWindow = yon_gtk_builder_get_widget(builder,"WarrningWindow");
temp_widgets->lblWarningText = yon_gtk_builder_get_widget(builder,"lblWarningText");
temp_widgets->CancelWarrningButton = yon_gtk_builder_get_widget(builder,"CancelWarrningButton");
char* str_disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(temp_widgets->UserDeviceCombo));
for (int i = 0; i < _all_config_temp->v_disk_status.vectorList.total; i++) {
disk_status* _config = (disk_status*)_all_config_temp->v_disk_status.pfVectorGet(&_all_config_temp->v_disk_status, i);
if (strstr(str_disk, _config->device)) {
text_mess = _("The selected directory is not located on the target device");
text_mess = yon_char_unite(text_mess, " ", _config->device, NULL);
}
}
gtk_label_set_label(GTK_LABEL(temp_widgets->lblWarningText), text_mess);
gtk_widget_show(temp_widgets->WarrningWindow);
g_signal_connect(G_OBJECT(temp_widgets->WarrningWindow), "destroy", G_CALLBACK(destroy_show_warning), temp_widgets->WarrningWindow);
g_signal_connect(G_OBJECT(temp_widgets->CancelWarrningButton),"clicked",G_CALLBACK(destroy_show_warning),temp_widgets->WarrningWindow);
}
void set_disk(char* _disk) {
disk = yon_char_new(_disk);
@ -27,8 +65,6 @@ void set_vector(vector* _vec_temp) {
vec_temp = _vec_temp;
}
void temp_set_index(int _index) {
table_index = _index;
}
@ -49,6 +85,23 @@ temp_set_window *temp_setup_window_base(char* __glade_path) {
return temp_widgets;
}
void temp_check_path() {
char* str_disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(temp_widgets->UserDeviceCombo));
for (int i = 0; i < _all_config_temp->v_disk_status.vectorList.total; i++) {
disk_status* _config = (disk_status*)_all_config_temp->v_disk_status.pfVectorGet(&_all_config_temp->v_disk_status, i);
if (strstr(str_disk, _config->device)) {
const char* str_path = gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryCatalogProject));
if (strstr(str_path,_config->mount_point)) {
}
else {
gtk_widget_set_sensitive(temp_widgets->btnSaveTempSave, 0);
show_warning();
}
}
}
block_btn_save();
}
temp_set_window *temp_setup_window_custom(temp_set_window* temp_widgets, GtkBuilder *builder) {
temp_vec_actors = malloc(sizeof(vector));
vector_init(temp_vec_actors);
@ -89,6 +142,27 @@ temp_set_window *temp_setup_window_custom(temp_set_window* temp_widgets, GtkBuil
table_u_g_set_glade_path(_glade_path);
temp_settings();
}
void temp_select_disk() {
block_btn_save();
char* str_disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(temp_widgets->UserDeviceCombo));
for (int i = 0; i < _all_config_temp->v_disk_status.vectorList.total; i++) {
disk_status* _config = (disk_status*)_all_config_temp->v_disk_status.pfVectorGet(&_all_config_temp->v_disk_status, i);
if (strstr(str_disk, _config->device)) {
if (_config->status == 2) {
gtk_label_set_label(GTK_LABEL(temp_widgets->lblSetQuotasStatus), _("On"));
}
else if (_config->status == 1){
gtk_label_set_label(GTK_LABEL(temp_widgets->lblSetQuotasStatus), _("Off"));
}
else {
gtk_label_set_label(GTK_LABEL(temp_widgets->lblSetQuotasStatus), _("Not set"));
}
}
}
}
void temp_settings() {
char *split_simvol = " ";
for (int i = 0; i < _all_config_temp->v_disk_status.vectorList.total; i++) {
@ -106,7 +180,6 @@ void temp_settings() {
gtk_widget_hide(temp_widgets->lblSetUGP);
gtk_widget_hide(temp_widgets->lblSetUGPData);
gtk_widget_hide(temp_widgets->btnOpenUserGroup);
gtk_widget_hide(temp_widgets->boxTempDevice);
gtk_widget_hide(temp_widgets->entryUser);
if (strcmp(set_add_edit, "add")==0) {
gtk_widget_hide(temp_widgets->lblCatalogProjectEdit);
@ -148,8 +221,7 @@ void temp_settings() {
gtk_widget_hide(temp_widgets->entryUser);
gtk_widget_hide(temp_widgets->UserDeviceCombo);
gtk_label_set_label(GTK_LABEL(temp_widgets->lblHeadQuotasEditWindow), _("Settings disk quotas - Editing"));
}
}
}
}
@ -200,12 +272,12 @@ void temp_event(temp_set_window* temp_widgets) {
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesHardLimitSpin), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeSoftLimitCombo), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeHardLimitCombo), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->UserDeviceCombo), "changed", G_CALLBACK(temp_select_disk), NULL);
if (strstr(flag_temp_u_g_p,"prjquota")) {
g_signal_connect(G_OBJECT(temp_widgets->btnReviewProject),"clicked",G_CALLBACK(wrapper_show_file_manager),NULL);
g_signal_connect(G_OBJECT(temp_widgets->btnGenerateProject),"clicked",G_CALLBACK(generate_id),NULL);
g_signal_connect(G_OBJECT(temp_widgets->chbAuto),"toggled",G_CALLBACK(set_activ_project_id),NULL);
g_signal_connect(G_OBJECT(temp_widgets->entryCatalogProject), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->entryCatalogProject), "changed", G_CALLBACK(temp_check_path), NULL);
g_signal_connect(G_OBJECT(temp_widgets->entryProjectId), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->entryProjectName), "changed", G_CALLBACK(block_btn_save), NULL);
}
@ -258,17 +330,25 @@ void wrapper_show_file_manager() {
GtkBuilder *builder = gtk_builder_new_from_resource(_glade_path);
show_file_manger(temp_widgets, builder);
gtk_widget_show(temp_widgets->wndChooseFileWallpaper);
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(temp_widgets->wndChooseFileWallpaper),"/home/");
gtk_window_set_title(GTK_WINDOW(temp_widgets->wndChooseFileWallpaper), _("Please select folder"));
char* str_disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(temp_widgets->UserDeviceCombo));
for (int i = 0; i < _all_config_temp->v_disk_status.vectorList.total; i++) {
disk_status* _config = (disk_status*)_all_config_temp->v_disk_status.pfVectorGet(&_all_config_temp->v_disk_status, i);
if (strstr(str_disk, _config->device)) {
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(temp_widgets->wndChooseFileWallpaper),_config->mount_point);
}
}
}
void temp_destroy(GtkWidget *self) {
if (self) {
gtk_widget_destroy(gtk_widget_get_toplevel(self));
model_free_vector_string(temp_vec_actors);
vectorFree(temp_vec_actors);
temp_vec_actors = NULL;
if (temp_vec_actors) {
model_free_vector_string(temp_vec_actors);
vectorFree(temp_vec_actors);
temp_vec_actors = NULL;
}
temp_widgets = NULL;
temp_vec_actors = NULL;
}
}
@ -439,10 +519,11 @@ int check_save() {
char* value2 = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->quotegroupSizeHardLimitSpin));
char* value3 = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->quotegroupFilesSoftLimitSpin));
char* value4 = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->quotegroupFilesHardLimitSpin));
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(temp_widgets->UserDeviceCombo));
if (!active1 && !active2 && !active3 && !active4) {
return 0;
}
if (((!strcmp(value1, "0") || !strcmp(value1, "")) && active1)
if (menu_id == -1 || ((!strcmp(value1, "0") || !strcmp(value1, "")) && active1)
|| ((!strcmp(value2, "0") || !strcmp(value2, "")) && active2)
|| ((!strcmp(value3, "0") || !strcmp(value3, "")) && active3)
|| ((!strcmp(value4, "0") || !strcmp(value4, "")) && active4)) {
@ -475,6 +556,7 @@ int check_save_project() {
int wrapper_check_save() {
if (strstr(flag_temp_u_g_p,"prjquota")) {
temp_check_activ_disk();
int flag_save_project = check_save_project();
int flag_save = check_save();
if (flag_save_project && flag_save) {

@ -194,6 +194,163 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</packing>
</child>
</object>
<object class="GtkApplicationWindow" id="WarrningWindow">
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="default-width">450</property>
<property name="icon-name">dialog-question-symbolic</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="xpad">20</property>
<property name="ypad">20</property>
<property name="icon-name">dialog-information-symbolic</property>
<property name="icon_size">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="helpHeader1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-top">10</property>
<property name="margin-bottom">5</property>
<property name="label" translatable="yes">Warning</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="size" value="14336"/>
</attributes>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="lblWarningText">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin-right">10</property>
<property name="margin-end">10</property>
<property name="label" translatable="yes">The selected directory is not located on the target device</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">30</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="CancelWarrningButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="webHeaderNameLabel1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Disk quotas</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
</object>
</child>
</object>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">1000000</property>
<property name="step-increment">1</property>
@ -2174,6 +2331,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<widget name="lblProjectName"/>
</widgets>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -4693,7 +4855,7 @@ limit
</object>
<object class="GtkFileChooserDialog" id="wndChooseFileWallpaper">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Please select File</property>
<property name="title" translatable="yes">Please select folder</property>
<property name="modal">True</property>
<property name="window-position">center</property>
<property name="default-width">500</property>
@ -4704,6 +4866,7 @@ limit
<property name="skip-taskbar-hint">True</property>
<property name="urgency-hint">True</property>
<property name="startup-id">a</property>
<property name="action">select-folder</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can-focus">False</property>

@ -399,4 +399,14 @@ msgid "Postponing the hard limit (files)"
msgstr ""
msgid "On"
msgstr ""
msgstr ""
msgid "Please select folder"
msgstr ""
msgid "Warning"
msgstr ""
msgid "The selected directory is not located on the target device"
msgstr ""

@ -403,3 +403,11 @@ msgstr "Отсрочка жёсткого ограничения (файлы)"
msgid "On"
msgstr "Включено"
msgid "Please select folder"
msgstr "Выберите каталог"
msgid "Warning"
msgstr "Внимание"
msgid "The selected directory is not located on the target device"
msgstr "Выбранный каталог не расположен на целевом устройстве"
Loading…
Cancel
Save