// Selected policy from combo box by the user. void SySettingsModule::selectPolicy(int current OY_UNUSED) { selected_policy = ui->currentPolicyCombo->currentText(); if(!selected_policy.count()) return; oyPolicySet( selected_policy.toLocal8Bit(), 0 ); SySendNativeUpdate(__func__); checkPolicy(0); }
// check if the current policy is editable void SySettingsModule::checkPolicy(int set) { if(!selected_policy.count()) { // in case of just observing reload(); return; } char * full_name = 0; oyPolicyFileNameGet( selected_policy.toLocal8Bit(), &full_name, malloc ); QFile file( full_name ); if(file.permissions() & QFile::WriteOwner) { isCustom = true; // This is a custom policy. ui->removePolicyButton->setEnabled(true); if(set) { oyPolicySet( selected_policy.toLocal8Bit(), 0 ); SySendNativeUpdate(__func__); } } if(full_name) free( full_name ); // Make sure the user doesn't delete the current policy settings! if(default_policy == selected_policy) ui->removePolicyButton->setEnabled(false); for (int i = 0; i < ui->policySettingsList->count(); i++) { QListWidgetItem * temp_item = ui->policySettingsList->item(i); if(selected_policy == temp_item->text()) ui->policySettingsList->setCurrentRow(i); } reload(); setEditableItems(isCustom); }
int main( int argc , char** argv ) { int error = 0; const char* save_policy = NULL, * import_policy = NULL; oySCOPE_e scope = oySCOPE_USER; size_t size = 0; char * xml = NULL; char * import_policy_fn = NULL; int current_policy = 0, list_policies = 0, list_paths = 0, dump_policy = 0; int long_help = 0, internal_name = 0, file_name = 0; int verbose = 0; #ifdef USE_GETTEXT setlocale(LC_ALL,""); #endif oyExportStart_(EXPORT_CHECK_NO); if(argc >= 2) { int pos = 1, i; char *wrong_arg = 0; DBG_PROG1_S("argc: %d\n", argc); while(pos < argc) { switch(argv[pos][0]) { case '-': for(i = 1; i < strlen(argv[pos]); ++i) switch (argv[pos][i]) { case 'c': current_policy = 1; break; case 'd': dump_policy = 1; break; case 'e': internal_name = 1; break; case 'f': file_name = 1; break; case 'i': OY_PARSE_STRING_ARG(import_policy); break; case 'l': list_policies = 1; break; case 'p': list_paths = 1; break; case 's': OY_PARSE_STRING_ARG(save_policy); break; case 'v': if(verbose) oy_debug += 1; verbose = 1; break; case '-': if(i == 1) { if(OY_IS_ARG("help")) { long_help = 1; i=100; break; } else if(OY_IS_ARG("path")) { list_paths = 1; i=100; break; } else if(OY_IS_ARG("system-wide")) { scope = oySCOPE_SYSTEM; i=100; break; } } case 'h': default: printfHelp(argc, argv); exit (0); break; } break; default: printfHelp(argc, argv); exit (0); break; } if( wrong_arg ) { fprintf(stderr, "%s %s\n", _("wrong argument to option:"), wrong_arg); printfHelp(argc, argv); exit(1); } ++pos; } } else { printfHelp(argc, argv); exit (0); } if(verbose) fprintf( stderr, " Oyranos v%s\n", oyNoEmptyName_m_(oyVersionString(1,0))); /* check the default paths */ /*oyPathAdd( OY_PROFILE_PATH_USER_DEFAULT );*/ /* load the policy file into memory */ import_policy_fn = oyMakeFullFileDirName_(import_policy); if(oyIsFile_(import_policy_fn)) { xml = oyReadFileToMem_( oyMakeFullFileDirName_(import_policy), &size, oyAllocateFunc_ ); oyDeAllocateFunc_( import_policy_fn ); } /* parse and set policy */ if(xml) { oyReadXMLPolicy( oyGROUP_ALL, xml ); oyDeAllocateFunc_( xml ); } else if ( import_policy ) { error = oyPolicySet( import_policy, 0 ); if(error) fprintf( stderr, "%s:%d could not read file: %s\n",__FILE__,__LINE__, import_policy); return 1; } if(save_policy) { error = oyPolicySaveActual( oyGROUP_ALL, scope, save_policy ); if(!error) fprintf( stdout, "%s \"%s\"\n", _("installed new policy"), save_policy); else fprintf( stdout, "\"%s\" %s %d\n", save_policy, _("installation of new policy file failed with error:"), error); } else if(current_policy || list_policies || list_paths) { const char ** names = NULL; int count = 0, i, current = -1; oyOptionChoicesGet( oyWIDGET_POLICY, &count, &names, ¤t ); if(list_policies) for(i = 0; i < count; ++i) { if(file_name) { char * full_name = NULL; error = oyPolicyFileNameGet_( names[i], &full_name, oyAllocateFunc_ ); if(error) fprintf(stderr, "%s error: %d\n", names[i], error); if(internal_name) fprintf(stdout, "%s (%s)\n", names[i], full_name); else fprintf(stdout, "%s\n", full_name); oyFree_m_( full_name ); } else fprintf(stdout, "%s\n", names[i]); } if(current_policy) { fprintf( stderr, "%s\n", _("Currently active policy:")); if(current >= 0 && file_name) { char * full_name = NULL; error = oyPolicyFileNameGet_( names[current], &full_name, oyAllocateFunc_ ); if(internal_name) fprintf(stdout, "%s (%s)\n", names[current], full_name); else fprintf(stdout, "%s\n", full_name); oyFree_m_( full_name ); } else fprintf( stdout, "%s\n", current>=0?names[current]:"---"); } if(list_paths) { char ** path_names = oyDataPathsGet_( &count, "color/settings", oyALL, oySCOPE_USER_SYS, oyAllocateFunc_ ); fprintf(stdout, "%s:\n", _("Policy search paths")); for(i = 0; i < count; ++i) fprintf(stdout, "%s\n", path_names[i]); oyStringListRelease_(&path_names, count, oyDeAllocateFunc_); } } else if(dump_policy) { size = 0; xml = oyPolicyToXML( oyGROUP_ALL, 1, oyAllocateFunc_ ); DBG_PROG2_S("%s:%d new policy:\n\n",__FILE__,__LINE__); fprintf(stdout, "%s\n", xml); if(xml) oyDeAllocateFunc_( xml ); } else if(long_help) { const char * opts[] = {"add_html_header","1", "add_oyranos_title","1", "add_oyranos_copyright","1", NULL}; size = 0; xml = oyDescriptionToHTML( oyGROUP_ALL, opts, oyAllocateFunc_ ); fprintf(stdout, "%s\n", xml); if(xml) oyDeAllocateFunc_( xml ); } oyFinish_( FINISH_IGNORE_I18N | FINISH_IGNORE_CACHES ); return error; }