Esempio n. 1
0
int iKXPlugin::get_user_interface()
{
 if(get_param_count()>0)
 {
   // for FXBus it get_param_count() returns 0
   if(
      strcmp(get_plugin_description(IKX_PLUGIN_GUID),"631d8de5-11bc-4c3d-a0d2-f079977fd184")==0 ||   // prolog
      strcmp(get_plugin_description(IKX_PLUGIN_GUID),"313149FA-24FB-4f08-9C22-EB38B651BA58")==0 ||  // xrouting
      strcmp(get_plugin_description(IKX_PLUGIN_GUID),"ceffc302-ea28-44df-873f-d3df1ba31736")==0      // epilog
     )
      return IKXPLUGIN_NONE;

   return IKXPLUGIN_SIMPLE;
 }
 else
   return IKXPLUGIN_NONE;
}
Esempio n. 2
0
int iKXPlugin::delete_preset(const char *new_name)
{
  kSettings cfg;

  char full_key[127+KX_MAX_STRING];
  sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

  cfg.delete_value_abs(full_key,new_name);

  return 0;
}
Esempio n. 3
0
int iKXPlugin::export_presets(const char *file_name)
{
 unlink(file_name);

 int cnt=get_param_count();

    kSettings cfg;
    kSettings exp_file(NULL,file_name);

    char full_key[127+KX_MAX_STRING];
    sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

    exp_file.write_abs("kXPreset","Size",cnt);
    exp_file.write_abs("kXPreset","Version",PRESET_VERSION);
    exp_file.write_abs("kXPreset","GUID",get_plugin_description(IKX_PLUGIN_GUID));

    int ndx=0;

    while(1)
    {
     char key_name[KX_MAX_STRING+256]; 
     kxparam_t value[256];

     if(cfg.enum_abs(ndx,full_key,key_name,sizeof(key_name),(TCHAR *)value,sizeof(value))==0)
     {
       char key[KX_MAX_STRING+10];
       sprintf(key,"%d.name",ndx);
       exp_file.write_abs(get_plugin_description(IKX_PLUGIN_GUID),key,key_name);
       sprintf(key,"%d.data",ndx);
       exp_file.write_bin_abs(get_plugin_description(IKX_PLUGIN_GUID),key,value,cnt*sizeof(kxparam_t));
     }
      else
     {
      break;
     }
     ndx++;
    }

 return 0;
}
Esempio n. 4
0
void add_plugin_to_menu (gpointer data, gpointer user_data)
{
    static int i=1;
    GtkPluginManagerMenu *menu=(GtkPluginManagerMenu *) user_data;
    GtkWidget *item;
    Plugin *plugin;
    plugin = PLUGIN(data);
    /*
    * Syntax plugins are automatically incorporate to the syntax check system so don't show that plugins here.
    * TODO: maybe configure this in preferences??
    */
    if (get_plugin_syntax_type(plugin)==-1){ 
    item =  gtk_menu_item_new_image_item(GTK_STOCK_EXECUTE, get_plugin_name(plugin));
    gtk_widget_show(item);
    install_menu_hint(item, (gchar *)get_plugin_description(plugin), &main_window);
    g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(plugin_exec), (gpointer) menu);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
    if (i<10) gtk_widget_add_accelerator(item, "activate", menu->priv->accel_group, parse_shortcut(i), GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
    i++;
    }
}
Esempio n. 5
0
int iKXPlugin::save_preset(const char *new_name)
{
 kSettings cfg;

 char full_key[127+KX_MAX_STRING];
 sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

  kxparam_t *data=0;
  int cnt=get_param_count();
  data=(kxparam_t *)malloc(cnt*sizeof(kxparam_t));
  if(data)
  {
   get_all_params(data);

   cfg.write_bin_abs(full_key,new_name,data,cnt*sizeof(kxparam_t));

   free(data);
  }
   else return -1;

  return 0;
}
Esempio n. 6
0
int iKXPlugin::populate_presets(HMENU mnu)
{
   // built-in presets first...
   int need_sep=0;
   int to_ret=-1;

    try
    {
       const kxparam_t *t=get_plugin_presets();
       
       if(t)
       {
          int num=get_param_count();
          int ndx=0;

          while(1)
          {
           char *name=(char *)t[0];
           if(name==0)
            break;

           AppendMenu(mnu,MFT_STRING,IKXPLUGIN_PRESETS_BUILTIN+ndx,name);
           to_ret=1;
           need_sep=1;
           ndx++;
           t+=(num+1);
          }
       }
    }
    catch(...)
    {
     debug("Incorrect plugin: %d [pointer from populate_presets()]\n",__LINE__);
    }


   int ndx=0;
   kSettings cfg;
   char full_key[127+KX_MAX_STRING];
   sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

      while(1)
      {
       char key_name[KX_MAX_STRING+256]; 
       char value[MAX_PATH]; 

       if(cfg.enum_abs(ndx,full_key,key_name,sizeof(key_name),value,sizeof(value))==0)
       {
        if(key_name[0]!='#')
        {
          if(need_sep)
          {
           AppendMenu(mnu,MFT_SEPARATOR,0,"");
           need_sep=0;
          }
          AppendMenu(mnu,MFT_STRING,IKXPLUGIN_PRESETS_CUSTOM+ndx,key_name);
          to_ret=0;
        }
       }
        else
       {
        break;
       }
       ndx++;
      }

      return to_ret;
}
Esempio n. 7
0
int iKXPlugin::populate_presets(kMenu *mnu)
{
   // built-in presets first...
   int need_sep=0;
   int to_ret=-1;

    try
    {
       const kxparam_t *t=get_plugin_presets();
       
       if(t)
       {
          int num=get_param_count();
          int ndx=0;

          while(1)
          {
           const char *name=(char *)t[0];
           if(name==0)
            break;

           mnu->add(name,IKXPLUGIN_PRESETS_BUILTIN+ndx);
           to_ret=1;
           need_sep=1;
           ndx++;
           t+=(num+1);
          }
       }
    }
    catch(...)
    {
     debug("Incorrect plugin: %d [pointer from populate_presets()]\n",__LINE__);
    }


   int ndx=0;
   kSettings cfg;
   char full_key[127+KX_MAX_STRING];
   sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

   char *value; 
   value=(char *)malloc((get_param_count()+1)*sizeof(kxparam_t));

      while(1)
      {
       char key_name[KX_MAX_STRING+256]; 

       if(cfg.enum_abs(ndx,full_key,key_name,sizeof(key_name),value,(get_param_count()+1)*sizeof(kxparam_t))==0)
       {
        if(key_name[0]!='#')
        {
          if(need_sep)
          {
           mnu->separator();
           need_sep=0;
          }
          mnu->add(key_name,IKXPLUGIN_PRESETS_CUSTOM+ndx);
          to_ret=0;
        }
       }
        else
       {
        break;
       }
       ndx++;
      }

   free(value);
      return to_ret;
}
Esempio n. 8
0
int iKXPlugin::import_presets(const char *file_name)
{
 int ori_cnt=get_param_count();
 dword cnt=0;

    kSettings cfg;
    kSettings exp_file(NULL,file_name);

    exp_file.read_abs("kXPreset","Version",&cnt);
    if(cnt<PRESET_VERSION)
    {
     debug("kxapi: invalid preset version: %d %d\n",cnt,PRESET_VERSION);
     return -3;
    }

    char tmp_guid[KX_MAX_STRING];
    exp_file.read_abs("kXPreset","GUID",tmp_guid,sizeof(tmp_guid));
    if(strncmp(tmp_guid,get_plugin_description(IKX_PLUGIN_GUID),KX_MAX_STRING)!=0)
    {
        debug("kxapi: invalid preset GUID\n");
        return -2;
    }

    exp_file.read_abs("kXPreset","Size",&cnt);
    if((int)cnt!=ori_cnt)
    {
        debug("kxapi: invalid preset size [%d.%d]\n",cnt,ori_cnt);
    return -1;
    }

    int ndx=0;
    char full_key[127+KX_MAX_STRING];
    sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

    while(1)
    {
     char key[KX_MAX_STRING+256]; 
     char key_name[KX_MAX_STRING+128];
     kxparam_t value[256];

     sprintf(key,"%d.name",ndx);

     if(exp_file.read_abs(get_plugin_description(IKX_PLUGIN_GUID),key,key_name,sizeof(key_name))==0)
     {
       sprintf(key,"%d.data",ndx);
       int sz=sizeof(value);
       if(exp_file.read_bin_abs(get_plugin_description(IKX_PLUGIN_GUID),key,value,&sz)==0)
       {
        if(sz==(int)(cnt*sizeof(kxparam_t)))
         cfg.write_bin_abs(full_key,key_name,value,cnt*sizeof(kxparam_t));
       }
     }
      else
     {
      break;
     }
     ndx++;
    }

 return 0;
}
Esempio n. 9
0
int iKXPlugin::get_current_preset(char *ret_name)
{
 int found=0;

 kxparam_t *data=0;
 int cnt=get_param_count();
 if(cnt)
    data=(kxparam_t *)malloc(cnt*sizeof(kxparam_t));

 if(data)
 {
    get_all_params(data);

    kSettings cfg;

    char full_key[127+KX_MAX_STRING];
    sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

    int ndx=0;

       while(1)
       {
        char key_name[KX_MAX_STRING+256]; 
        kxparam_t value[256];

        if(cfg.enum_abs(ndx,full_key,key_name,sizeof(key_name),(TCHAR *)value,sizeof(value))==0)
        {
          if(memcmp(value,data,cnt*sizeof(kxparam_t))==0)
          {
           strncpy(ret_name,key_name,KX_MAX_STRING);
           found=1;
           goto OK;
          }
        }
         else
        {
         break;
        }
        ndx++;
       }

    // second, check built-in presets
    try
    {
       const kxparam_t *t=get_plugin_presets();
       
       if(t)
       {
          int num=get_param_count();

          while(1)
          {
           char *name=(char *)t[0];
           if(name==0)
            break;

           if(memcmp(data,&t[1],num*sizeof(kxparam_t))==0)
           {
            strncpy(ret_name,name,KX_MAX_STRING);
            found=1;
            goto OK;
           }

           t+=(num+1);
          }
       }
    }
    catch(...)
    {
     debug("Incorrect plugin: %d [pointer from get_current_preset()]\n",__LINE__);
    }

OK:
    free(data);
 }
 
 return found?0:-1;
}
Esempio n. 10
0
int iKXPlugin::apply_preset(int ndx)
{
   int success=0;

   if(ndx>=IKXPLUGIN_PRESETS_CUSTOM && ndx<=IKXPLUGIN_PRESETS_CUSTOM+IKXPLUGIN_MAX_PRESETS)
   {
       kSettings cfg;

       char full_key[127+KX_MAX_STRING];
       sprintf(full_key,"Plugins\\%s",get_plugin_description(IKX_PLUGIN_GUID));

       char key_name[KX_MAX_STRING+256]; 

       try
       {
           dword cnt=get_param_count();

           kxparam_t *value=(kxparam_t *)malloc((cnt+1)*sizeof(kxparam_t));

           if(value)
           {
               // add two 'guard bytes' (due to kSettings.enum_abs limitations...)
               value[cnt-1]=0x12345678;
               value[cnt]=0x87654321;

               if(cfg.enum_abs(ndx-IKXPLUGIN_PRESETS_CUSTOM,full_key,key_name,sizeof(key_name),
                  (char *)value,cnt*sizeof(kxparam_t))==0)
               {
                if(value[cnt-1]!=0x12345678 && value[cnt]==0x87654321)
                {
                  set_all_params(value);
                  success=1;
                }
                else
                {
                 cfg.delete_value_abs(full_key,key_name);
                 debug("kxapi: presets: invalid preset [%d; %s; %s]\n",ndx,key_name,full_key);
                }
               }

               free(value);
           }
           else
            debug("kxapi: presets: not enough memory [%d]\n",cnt);
       }
       catch(...)
       {
         debug("kxapi: presets: exception when trying to apply preset\n");
       };
    }

    if(ndx>=IKXPLUGIN_PRESETS_BUILTIN)
    {
         // check built-in presets
         try
         {
            const kxparam_t *t=get_plugin_presets();
            
            if(t)
            {
               int num=get_param_count();

               set_all_params((kxparam_t *)&t[(num+1)*(ndx-IKXPLUGIN_PRESETS_BUILTIN)+1]);

               success=1;
            }
         }
         catch(...)
         {
          debug("Incorrect plugin: %d [pointer from get_plugin_presets()] -- apply preset()\n",__LINE__);
         }
    }
    if(success)
     return 0;
    else
     return -1;
}