static void _lib_modulegroups_switch_group(dt_lib_module_t *self, dt_iop_module_t *module) { dt_lib_modulegroups_t *d = (dt_lib_modulegroups_t *)self->data; /* do nothing if module is member of current group */ if(_lib_modulegroups_test(self, d->current, module->groups())) return; /* lets find the group which is not favorite/active pipe */ for(int k = DT_MODULEGROUP_BASIC; k < DT_MODULEGROUP_SIZE; k++) { if(_lib_modulegroups_test(self, k, module->groups())) { _lib_modulegroups_set(self, k); return; } } }
static void _lib_modulegroups_update_iop_visibility(dt_lib_module_t *self) { dt_lib_modulegroups_t *d = (dt_lib_modulegroups_t *)self->data; GList *modules = darktable.develop->iop; if(modules) { /* * iterate over ip modules and do various test to * detect if the modules should be shown or not. */ do { dt_iop_module_t *module = (dt_iop_module_t*)modules->data; GtkWidget *w = module->expander; /* skip modules without an gui */ if(dt_iop_is_hidden(module)) continue; /* lets show/hide modules dependent on current group*/ switch(d->current) { case DT_MODULEGROUP_ACTIVE_PIPE: { if(module->enabled) gtk_widget_show(w); else { if(darktable.develop->gui_module == module) dt_iop_request_focus(NULL); gtk_widget_hide(w); } } break; case DT_MODULEGROUP_FAVORITES: { if(module->state == dt_iop_state_FAVORITE) gtk_widget_show(w); else { if(darktable.develop->gui_module == module) dt_iop_request_focus(NULL); gtk_widget_hide(w); } } break; case DT_MODULEGROUP_NONE: { /* show all exept hidden ones */ if((module->state != dt_iop_state_HIDDEN || module->enabled) && (!(module->flags() & IOP_FLAGS_DEPRECATED))) gtk_widget_show(w); else { if(darktable.develop->gui_module == module) dt_iop_request_focus(NULL); gtk_widget_hide(w); } } break; default: { if ( _lib_modulegroups_test(self,d->current, module->groups()) && module->state != dt_iop_state_HIDDEN && (!(module->flags() & IOP_FLAGS_DEPRECATED) || module->enabled)) gtk_widget_show(w); else { if(darktable.develop->gui_module == module) dt_iop_request_focus(NULL); gtk_widget_hide(w); } } } } while((modules = g_list_next(modules))!=NULL); } }