Example #1
0
/** configure from preferences */
static NftResult _this_from_prefs(
        NftPrefs * prefs,
        void **newObj,
        NftPrefsNode * node,
        void *userptr)
{
		/* window geometry */
		gint x = 0, y = 0, width = 0, height = 0;
        nft_prefs_node_prop_int_get(node, "x", &x);
        nft_prefs_node_prop_int_get(node, "y", &y);
        nft_prefs_node_prop_int_get(node, "width", &width);
        nft_prefs_node_prop_int_get(node, "height", &height);

        if(width > 0 && height > 0)
                gtk_window_resize(GTK_WINDOW(UI("window")), width, height);
        if(x > 0 && y > 0)
                gtk_window_move(GTK_WINDOW(UI("window")), x, y);
		
		/* log visible? */
		bool boolean = false;
		nft_prefs_node_prop_boolean_get(node, "window-visible", &boolean);
		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(niftyconf_ui("item_log_win")), boolean);
		ui_log_show(boolean);

		/* log level */
		char *loglevel;
		if((loglevel = nft_prefs_node_prop_string_get(node, "loglevel")))
		{
				nft_log_level_set(nft_log_level_from_string(loglevel));
				nft_prefs_free(loglevel);
		}

		/* log flags */
		nft_prefs_node_prop_boolean_get(node, "show-file", &boolean);
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UI("checkbutton_file")), boolean);
		nft_prefs_node_prop_boolean_get(node, "show-line", &boolean);
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UI("checkbutton_line")), boolean);
		nft_prefs_node_prop_boolean_get(node, "show-function", &boolean);
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(UI("checkbutton_function")), boolean);
		
		return NFT_SUCCESS;
}
Example #2
0
/** function to generate a Person "object" from a preferences description */
static NftResult _person_from_prefs(NftPrefs *p, void **newObj, NftPrefsNode *node, void *userptr)
{
        static size_t i;

        /* only fill reserved space, not more */
        if(i >= sizeof(persons)/sizeof(struct Person))
                return NFT_FAILURE;

        char *name;
		if(!(name = nft_prefs_node_prop_string_get(node, "name")))
		{
				NFT_LOG(L_ERROR, "failed to get property \"name\" from prefs-node");
				return NFT_FAILURE;
		}

        char *email;
		if(!(email = nft_prefs_node_prop_string_get(node, "email")))
		{
				NFT_LOG(L_ERROR, "failed to get property \"email\" from prefs-node");
				return NFT_FAILURE;
		}

        int age;
        if(!nft_prefs_node_prop_int_get(node, "age", &age))
		{
				NFT_LOG(L_ERROR, "failed to get property \"age\" from prefs-node");
				return NFT_FAILURE;
		}

		bool alive;
		if(!nft_prefs_node_prop_boolean_get(node, "alive", &alive))
		{
				NFT_LOG(L_ERROR, "failed to get property \"alive\" from prefs-node");
				return NFT_FAILURE;
		}
		
        strncpy(persons[i].name, name, sizeof(persons[i].name));
        strncpy(persons[i].email, email, sizeof(persons[i].email));
        persons[i].age = age;
		persons[i].alive = alive;
		
        /* free strings */
        nft_prefs_free(name);
        nft_prefs_free(email);

        /* save pointer to new object */
        *newObj = &persons[i++];


        return NFT_SUCCESS;
}