Filter combo box now works

pull/89/head
parent 0c8856cf59
commit d7b86a7d6c

@ -145,69 +145,115 @@ void on_driver_pack_info(GtkWidget *self, main_window *widgets){
}
void on_pack_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
char *package;
int installed;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,8,&package,-1);
if (!installed){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=INSTALL_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
free(data);
if (!GTK_IS_TREE_MODEL_FILTER(model)){
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
model=GTK_TREE_MODEL(main_config.list);
} else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
GtkTreeIter itar;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar);
}
char *package;
int installed;
gtk_tree_model_get(GTK_TREE_MODEL(model),&iter,1,&installed,8,&package,-1);
if (!installed){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=INSTALL_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
free(data);
} else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
free(data);
}
free(data);
}
}
void on_module_install_activate(GtkCellRendererToggle* self,gchar* path,main_window *widgets){
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
char *package;
int installed;
if (!GTK_IS_TREE_MODEL_FILTER(model)){
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
} else {
GtkTreeIter itar;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar);
}
char *package;
int installed;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,7,&package,-1);
if (!installed){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=INSTALL_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
if (!installed){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=INSTALL_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = install_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
free(data);
} else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
}
}
free(data);
}
}
gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widgets){
const char *target = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo));
char *cur;
gtk_tree_model_get(model,iter,2,&cur,-1);
if (!strcmp(cur,target))return 1;
return 0;
}
void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){
int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self));
if (active){
if (!GTK_IS_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))){
GtkTreeModel *model = gtk_tree_model_filter_new(GTK_TREE_MODEL(main_config.list),NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),model);
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),(GtkTreeModelFilterVisibleFunc)yon_filter_func,widgets,NULL);
} else {
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree))));
}
free(data);
} else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
data->function=NULL;
data->data=NULL;
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
if (!yon_char_is_empty(package)){
char *command = delete_proprietary_command(package);
yon_terminal_start(widgets,command);
}
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
if (GTK_IS_TREE_MODEL_FILTER(model)) {
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
g_object_unref(model);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
}
free(data);
}
}
@ -1279,6 +1325,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL);
g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunEntry);
g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry);
g_signal_connect(G_OBJECT(widgets->KernelsCombo),"changed",G_CALLBACK(on_kernel_filter_changed),widgets);
// yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->DriversTree));

Loading…
Cancel
Save