Добавил блокировку окна при пустом значении

pull/24/head
Igor Belitskiy 2 years ago
parent 40ad432165
commit 1aacad8d22

@ -90,6 +90,7 @@ void chk_toggled_user_group (
gtk_tree_model_get(model,&iter,0, &flag,-1);
gtk_list_store_set(table_widgets->liststoreUsersGroups,&iter, 0,!flag,-1);
gtk_tree_view_set_model(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), model);
// table_btn_block_save();
}
@ -149,3 +150,19 @@ void set_actors(vector* actors) {
}
gtk_tree_view_set_model(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), model);
}
void table_btn_block_save() {
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups);
int valid = 1;
int flag_activ = 0;
for(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter);valid==1;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter)){
int is_active=0;
gtk_tree_model_get(model,&iter,0,&is_active,-1);
char* user_group;
if (is_active){
flag_activ = 1;
}
}
gtk_widget_set_sensitive(table_widgets->btnSave,flag_activ);
}

@ -36,8 +36,9 @@ void get_actors_table(vector* actors);
void table_u_g_get_actors(vector* actors);
void set_actors(vector* actors);
table_u_g* get_widget_table_u_g();
void chk_toggled_user_group (
void chk_toggled_user_group(
GtkCellRendererToggle* self,
gchar* path,
gpointer user_data
);
void table_btn_block_save();

@ -139,12 +139,14 @@ void temp_show(GtkWidget *self, char* _glade_path) {
set_activ_project_id();
temp_init_windows();
event_toggled_all();
block_btn_save();
}
else {
temp_setup_window_base(_glade_path);
gtk_widget_show(temp_widgets->Window);
set_activ_project_id();
event_toggled_all();
block_btn_save();
}
}
@ -156,20 +158,26 @@ void temp_init_windows() {
}
void temp_event(temp_set_window* temp_widgets) {
g_signal_connect(G_OBJECT(temp_widgets->btnTempCancel),"clicked",G_CALLBACK(temp_on_destroy_subwindow),NULL);
g_signal_connect(G_OBJECT(temp_widgets->Window), "destroy", G_CALLBACK(temp_destroy), NULL);
g_signal_connect(G_OBJECT(temp_widgets->btnTempCancel),"clicked",G_CALLBACK(temp_destroy),temp_widgets->Window);
g_signal_connect(G_OBJECT(temp_widgets->Window), "destroy", G_CALLBACK(temp_destroy), temp_widgets->Window);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeSoftLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeHardLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesSoftLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesHardLimitCheck), "toggled", G_CALLBACK(event_toggled_all), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeSoftLimitSpin), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupSizeHardLimitSpin), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->quotegroupFilesSoftLimitSpin), "changed", G_CALLBACK(block_btn_save), NULL);
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);
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->entryProjectId), "changed", G_CALLBACK(block_btn_save), NULL);
g_signal_connect(G_OBJECT(temp_widgets->entryProjectName), "changed", G_CALLBACK(block_btn_save), NULL);
}
else {
g_signal_connect(G_OBJECT(temp_widgets->btnOpenUserGroup),"clicked",G_CALLBACK(table_u_g_show),_glade_path);
@ -186,7 +194,6 @@ void temp_on_destroy_subwindow(GtkWidget *self) {
gtk_widget_destroy(gtk_widget_get_toplevel(self));
temp_widgets = NULL;
model_free_vector_string(&temp_vec_actors);
vectorFree(&temp_vec_actors);
}
}
void event_toggled_all() {
@ -204,6 +211,16 @@ void event_toggled_all() {
philos_set_active_widgets(temp_widgets->quotegroupFilesHardLimitCheck,
temp_widgets->quotegroupFilesHardLimitSpin,
NULL);
block_btn_save();
}
void block_btn_save() {
if (wrapper_check_save()) {
gtk_widget_set_sensitive(temp_widgets->btnSaveTempSave, 1);
}
else {
gtk_widget_set_sensitive(temp_widgets->btnSaveTempSave, 0);
}
}
void wrapper_show_file_manager() {
@ -214,7 +231,12 @@ void wrapper_show_file_manager() {
}
void temp_destroy(GtkWidget *self) {
temp_widgets = NULL;
if (self) {
gtk_widget_destroy(gtk_widget_get_toplevel(self));
model_free_vector_string(&temp_vec_actors);
temp_widgets = NULL;
}
}
@ -233,6 +255,7 @@ void destroy_file_manager(GtkWidget *self) {
temp_widgets->wndChooseFileWallpaper = NULL;
temp_widgets->btnFilemangerOk = NULL;
temp_widgets->btnFilemangerExit = NULL;
block_btn_save();
}
void btn_ok_file_manager(GtkWidget *self) {
@ -355,21 +378,96 @@ void get_add_gui_data_base(config_all* all_config) {
config_u_g_p* _config = malloc(sizeof(config_u_g_p));
model_null_str_writing(_config);
get_temp_gui_data_base(_config);
_config->actors.pfVectorCopy(&_config->actors, &temp_vec_actors);
if (temp_vec_actors.vectorList.total != 0) {
_config->actors.pfVectorCopy(&_config->actors, &temp_vec_actors);
}
vec_temp->pfVectorAdd(vec_temp, _config);
}
void save(GtkWidget *self) {
if (strcmp(set_add_edit, "add")==0) {
get_actors_table(&temp_vec_actors);
table_u_g_on_hide_subwindow(self);
block_btn_save();
}
else {
// get_actors_table(_actors);
table_u_g_on_hide_subwindow(self);
block_btn_save();
}
}
int check_save() {
gboolean active1 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->quotegroupSizeSoftLimitCheck));
gboolean active2 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->quotegroupSizeHardLimitCheck));
gboolean active3 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->quotegroupFilesSoftLimitCheck));
gboolean active4 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->quotegroupFilesHardLimitCheck));
char* value1 = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->quotegroupSizeSoftLimitSpin));
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));
if (!active1 && !active2 && !active3 && !active4) {
return 0;
}
if (((!strcmp(value1, "0") || !strcmp(value1, "")) && active1)
|| ((!strcmp(value2, "0") || !strcmp(value2, "")) && active2)
|| ((!strcmp(value3, "0") || !strcmp(value3, "")) && active3)
|| ((!strcmp(value4, "0") || !strcmp(value4, "")) && active4)) {
return 0;
}
return 1;
}
int check_save_project() {
gboolean active1 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->chbAuto));
char* project_name = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryProjectName));
if (strcmp(set_add_edit, "add")==0) {
char* file_dir = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryCatalogProject));
char* project_id = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryProjectId));
if (!strlen(file_dir) && (!strlen(project_id) && !active1) && !strlen(project_name)) {
return 0;
}
else if (!strlen(project_id) && !active1) {
return 0;
}
return 1;
}
else {
if (strlen(project_name)<=1) {
return 0;
}
return 1;
}
}
int wrapper_check_save() {
if (strstr(flag_temp_u_g_p,"prjquota")) {
int flag_save_project = check_save_project();
int flag_save = check_save();
if (flag_save_project && flag_save) {
return 1;
}
return 0;
}
else {
if (strcmp(set_add_edit, "add")==0 && temp_vec_actors.vectorList.total != 0) {
if (check_save()) {
return 1;
}
return 0;
}
else {
if (check_save()) {
return 1;
}
return 0;
}
}
}
void table_u_g_event() {
@ -419,11 +517,17 @@ config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config) {
}
gboolean active = active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp_widgets->chbAuto));
if (active) {
_config->id = -1;
}
else {
char* id = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryProjectId));
_config->id = atoi(id);
if (strlen(id)) {
_config->id = atoi(id);
}
else {
_config->id = -1;
}
}
if (strcmp(set_add_edit, "add")==0) {
char* file_dir = (char*)gtk_entry_get_text(GTK_ENTRY(temp_widgets->entryCatalogProject));
@ -487,6 +591,6 @@ void set_activ_project_id() {
}
gtk_widget_set_sensitive(temp_widgets->entryProjectId, !active);
gtk_widget_set_sensitive(temp_widgets->btnGenerateProject, !active);
block_btn_save();
}

@ -40,3 +40,6 @@ void get_edit_gui_data_base(config_all* all_config, int index);
void set_widget(GtkWidget* check, GtkWidget* spin, GtkWidget* combo, int value_spin, int pow_mem_size);
void generate_id();
void set_activ_project_id();
int wrapper_check_save();
void block_btn_save();
int table_check_save();

@ -601,6 +601,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="max-length">255</property>
<property name="completion">entrycompletion1</property>
</object>
<packing>
@ -757,7 +758,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="max-length">5</property>
<property name="completion">entrycompletion2</property>
<property name="input-purpose">number</property>
</object>
<packing>
<property name="expand">True</property>
@ -847,6 +850,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="max-length">12</property>
<property name="completion">entrycompletion3</property>
</object>
<packing>

Loading…
Cancel
Save