Esempio n. 1
0
static void save_config( Plugin* p, FILE* fp )
{
    image *img = (image *)p->priv;
    if( img->config_data ) {
        char** lines = g_strsplit( img->config_data, "\n", 0 );
        char** line;
        for( line = lines; *line; ++line ) {
            g_strstrip( *line );
            if( **line )
                lxpanel_put_line( fp, *line );
        }
        g_strfreev( lines );
    }
}
Esempio n. 2
0
static void _config_write_setting(const config_setting_t *setting, GString *buf,
                                  GString *out, FILE *f)
{
    gint indent = buf->len;
    config_setting_t *s;

    switch (setting->type)
    {
    case PANEL_CONF_TYPE_INT:
        g_string_append_printf(buf, "%s=%d\n", setting->name, setting->num);
        break;
    case PANEL_CONF_TYPE_STRING:
        if (!setting->str) /* don't save NULL strings */
            return;
        g_string_append_printf(buf, "%s=%s\n", setting->name, setting->str);
        break;
    case PANEL_CONF_TYPE_GROUP:
        if (!out && setting->hook) /* plugin does not support settings */
        {
            lxpanel_put_line(f, "%s%s {", buf->str, setting->name);
            setting->hook(setting, f, setting->hook_data);
            lxpanel_put_line(f, "%s}", buf->str);
            /* old settings ways are kinda weird... */
        }
        else
        {
            if (out)
            {
                g_string_append(out, buf->str);
                g_string_append(out, setting->name);
                g_string_append(out, " {\n");
            }
            else
                fprintf(f, "%s%s {\n", buf->str, setting->name);
            g_string_append(buf, SETTING_INDENT);
            for (s = setting->first; s; s = s->next)
                _config_write_setting(s, buf, out, f);
            g_string_truncate(buf, indent);
            if (out)
            {
                g_string_append(out, buf->str);
                g_string_append(out, "}\n");
            }
            else
                fprintf(f, "%s}\n", buf->str);
        }
        return;
    case PANEL_CONF_TYPE_LIST:
        if (setting->name[0] != '\0')
        {
            g_warning("only anonymous lists are supported in panel config, got \"%s\"",
                      setting->name);
            return;
        }
        for (s = setting->first; s; s = s->next)
            _config_write_setting(s, buf, out, f);
        return;
    }
    if (out)
        g_string_append(out, buf->str);
    else
        fputs(buf->str, f);
    g_string_truncate(buf, indent);
}