/** Function oyConfigDomainList * @memberof oyConfigs_s * @brief Count and show the global oyConfigs_s suppliers * * @verbatim uint32_t count = 0, * rank_list = 0; char ** texts = 0, * temp = 0, ** attributes = 0, * device_class = 0; int i,j, attributes_n; // get all configuration filters oyConfigDomainList("//"OY_TYPE_STD"/config", &texts, &count,&rank_list ,0 ); for( i = 0; i < count; ++i ) { attributes_n = 0; // pick the filters name and remove the common config part temp = oyFilterRegistrationToText( texts[i], oyFILTER_REG_APPLICATION, malloc ); attributes = oyStringSplit_( temp, '.', &attributes_n, malloc ); free(temp); temp = malloc(1024); temp[0] = 0; for(j = 0; j < attributes_n; ++j) { if(strcmp(attributes[j], "config") == 0) continue; if(j && temp[0]) sprintf( &temp[strlen(temp)], "." ); sprintf( &temp[strlen(temp)], "%s", attributes[j]); } // The string in temp can be passed as the device_class argument to // oyDevicesGet() printf("%d: %s \"%s\"\n", i, texts[i], temp); oyStringListRelease_( &attributes, attributes_n, free ); free (device_class); free(temp); } @endverbatim * * @param[in] registration_pattern a optional filter * @param[out] list the list with full filter registrations * @param[out] count the list count * @param[out] rank_list the rank fitting to list * @param[in] allocateFunc the user allocator for list * @return 0 - good, >= 1 - error, <= -1 unknown * * @version Oyranos: 0.1.10 * @since 2009/01/19 (Oyranos: 0.1.10) * @date 2009/01/19 */ OYAPI int OYEXPORT oyConfigDomainList ( const char * registration_pattern, char *** list, uint32_t * count, uint32_t ** rank_list, oyAlloc_f allocateFunc ) { oyCMMapiFilters_s * apis = 0; oyCMMapiFilter_s_ * api = 0; int error = !list || !count; char ** reg_lists = 0; int i = 0, reg_list_n = 0; uint32_t apis_n = 0; oyExportStart_(EXPORT_CHECK_NO); if(error <= 0) { apis = oyCMMsGetFilterApis_( 0, registration_pattern, oyOBJECT_CMM_API8_S, rank_list, &apis_n); error = !apis; } if(error <= 0) { if(!allocateFunc) allocateFunc = oyAllocateFunc_; for(i = 0; i < apis_n; ++i) { api = (oyCMMapiFilter_s_*)oyCMMapiFilters_Get( apis, i ); oyStringListAddStaticString_( ®_lists, ®_list_n, oyNoEmptyString_m_( api->registration ), oyAllocateFunc_, oyDeAllocateFunc_ ); if(api->release) api->release( (oyStruct_s**)&api ); } if(reg_list_n && reg_lists) *list = oyStringListAppend_( (const char**)reg_lists, reg_list_n, 0,0, ®_list_n, allocateFunc ); oyStringListRelease_( ®_lists, reg_list_n, oyDeAllocateFunc_ ); } if(count) *count = reg_list_n; oyCMMapiFilters_Release( &apis ); oyExportEnd_(); return error; }
int main ( int argc , char **argv ) { fprintf(stdout,"\n===== SIMPLE UI TOOLKIT =====\n\n"); const char *wrong_arg = 0; char *output_model_file = 0; char *xforms_text = 0; char *input_xml_file = 0; sXformsNode *head; struct sCbData *CallBackData; xmlDoc *modelDocPtr; GtkBuilder *builder; GtkWidget *window; GError *error = NULL; if(argc) { #define OY_PARSE_STRING_ARG( opt ) \ if( pos + 1 < argc && argv[pos][i+1] == 0 ) \ { opt = argv[pos+1]; \ if( opt == 0 && strcmp(argv[pos+1],"0") ) \ wrong_arg = "-" #opt; \ ++pos; \ i = 1000; \ } else if(argv[pos][i+1] == '=') \ { opt = &argv[pos][i+2]; \ if( opt == 0 && strcmp(&argv[pos][i+2],"0") ) \ wrong_arg = "-" #opt; \ i = 1000; \ } else wrong_arg = "-" #opt; \ if(argc != 1) { int pos = 1, i; while(pos < argc) { switch(argv[pos][0]) { case '-': for(i = 1; i < (int)strlen(argv[pos]); ++i) switch (argv[pos][i]) { case 'o': OY_PARSE_STRING_ARG( output_model_file ); break; case 'i': OY_PARSE_STRING_ARG( input_xml_file ); break; case 'v': break;//oy_debug += 1; break; case 'h': usage(argc, argv); exit (0); break; case 'l': /* only for compatibility with cmd line */ break; #if 0 case '-': if(strcmp(&argv[pos][2],"verbose") == 0) { //oy_debug += 1; i=100; break; } STRING_ADD( t, &argv[pos][2] ); text = oyStrrchr_(t, '='); /* get the key only */ if(text) text[0] = 0; oyStringListAddStaticString_( &other_args,&other_args_n, t, oyAllocateFunc_,oyDeAllocateFunc_ ); if(text) oyStringListAddStaticString_( &other_args,&other_args_n, oyStrrchr_(&argv[pos][2], '=') + 1, oyAllocateFunc_,oyDeAllocateFunc_ ); else { if(argv[pos+1]) { oyStringListAddStaticString_( &other_args, &other_args_n, argv[pos+1], oyAllocateFunc_,oyDeAllocateFunc_ ); ++pos; } else wrong_arg = argv[pos]; } if(t) oyDeAllocateFunc_( t ); t = 0; i=100; break; #endif case '?': default: fprintf(stderr, "%s -%c\n", ("Unknown argument"), argv[pos][i]); usage(argc, argv); exit (0); break; } break; default: wrong_arg = argv[pos]; } if( wrong_arg ) { fprintf(stderr, "%s %s\n", ("wrong argument to option:"), wrong_arg); exit(1); } ++pos; } } } fprintf(stdout,"INPUT FILE = %s\n",input_xml_file); if(!input_xml_file) { #if 0 size_t text_size = 0; text = oyReadStdinToMem_(&text_size, oyAllocateFunc_); if(text_size == 0) { usage(argc, argv); exit (0); } #else usage(argc, argv); exit (0); #endif } if(input_xml_file) { xforms_text = sReadFileToMem(input_xml_file); } head = ParseXformsToTree( xforms_text,&modelDocPtr); //sPrintsXformsTree(head); gtk_init( &argc, &argv ); builder = gtk_builder_new(); //cb_data = sGenerateGladeFile(head); CallBackData = sGenerateGladeFile(head,modelDocPtr,&DummyIfFunction); //print_user_data(CallBackData); if( ! gtk_builder_add_from_file( builder, sGTK_UI_FILE, &error ) ) { g_warning( "%s", error->message ); g_free( error ); return( 1 ); } //Get main window pointer from UI window = GTK_WIDGET( gtk_builder_get_object( builder, sGTK_GLADE_MAIN_WINDOW_NAME) ); // = MakeDummy(); gtk_builder_connect_signals( builder, CallBackData); g_object_unref( G_OBJECT( builder ) ); gtk_widget_show( window ); gtk_main(); if(output_model_file) { FILE *fp = fopen(output_model_file,"w"); if( fp != NULL ) xmlDocDump(fp, modelDocPtr); fclose(fp); } xmlDocDump(stdout, modelDocPtr); fprintf(stdout,"\n"); return( 0 ); }