Glib::ustring Plugin::find_empty_monitor_dir() { Glib::ustring mon_dir; int c = 1; // Search for read-only settings file gchar* file = xfce_panel_plugin_lookup_rc_file(xfce_plugin); if (file) { // One exists - loading readonly settings XfceRc* settings_ro = xfce_rc_simple_open(file, true); g_free(file); do { mon_dir = String::ucompose("%1", c++); } while (xfce_rc_has_group(settings_ro, mon_dir.c_str())); // Close settings file xfce_rc_close(settings_ro); } else { /* No configuration file exists yet - setting mon_dir to 1 and * informing user */ mon_dir = String::ucompose("%1", c); } // Returning next free monitor directory (number) return mon_dir; }
static void migrate_46_plugin_systray (XfconfChannel *channel, XfceRc *rc) { if (xfce_rc_has_group (rc, "Global")) { xfce_rc_set_group (rc, "Global"); migrate_46_plugin_bool ("ShowFrame", "show-frame", TRUE); migrate_46_plugin_uint ("Rows", "rows", 1); } if (xfce_rc_has_group (rc, "Applications")) { xfce_rc_set_group (rc, "Applications"); /* TODO */ /* xfce_rc_read_bool_entry (rc, appname, hidden); */ } }
static GSList * parole_pl_parser_parse_pls (const gchar *filename) { XfceRc *rcfile; GSList *list = NULL; ParoleFile *file; const gchar *file_entry, *title_entry; guint i, nentries; gchar key[128]; rcfile = xfce_rc_simple_open (filename, TRUE); if ( xfce_rc_has_group (rcfile, "playlist") ) { xfce_rc_set_group (rcfile, "playlist"); nentries = xfce_rc_read_int_entry (rcfile, "NumberOfEntries", 0); for (i = 1; i <= nentries; i++) { g_snprintf (key, 128, "File%d", i); file_entry = xfce_rc_read_entry (rcfile, key, NULL); if (!file_entry) continue; g_snprintf (key, 128, "Title%d", i); title_entry = xfce_rc_read_entry (rcfile, key, NULL); file = parole_file_new_with_display_name (file_entry, title_entry); list = g_slist_append (list, file); } } xfce_rc_close (rcfile); return list; }
void Plugin::remove_monitor(Monitor *monitor) { // Detatching monitor if (view.get()) view->detach(monitor); // Search for a writeable settings file, create one if it doesnt exist gchar* file = xfce_panel_plugin_save_location(xfce_plugin, true); if (file) { // Opening setting file XfceRc* settings_w = xfce_rc_simple_open(file, false); g_free(file); // Removing settings group associated with the monitor if it exists if (xfce_rc_has_group(settings_w, monitor->get_settings_dir().c_str())) xfce_rc_delete_group(settings_w, monitor->get_settings_dir().c_str(), FALSE); // Close settings file xfce_rc_close(settings_w); } else { // Unable to obtain writeable config file - informing user std::cerr << _("Unable to obtain writeable config file path in " "order to remove a monitor!\n"); } // Everyone has been notified, it's now safe to remove and delete // the monitor monitors.remove(monitor); //remove_sync_for(monitor); delete monitor; }
static void migrate_46_plugin_launcher (XfconfChannel *channel, XfceRc *rc, guint plugin_id, GError **error) { guint i; gchar buf[128]; XfceRc *new_desktop; gchar *path; GTimeVal timeval; GPtrArray *array; GValue *value; gchar *filename; if (xfce_rc_has_group (rc, "Global")) { xfce_rc_set_group (rc, "Global"); migrate_46_plugin_bool ("MoveFirst", "move-first", FALSE); migrate_46_plugin_bool ("ArrowPosition", "arrow-position", 0); } g_get_current_time (&timeval); array = g_ptr_array_new (); for (i = 0; i < 100 /* arbitrary */; i++) { g_snprintf (buf, sizeof (buf), "Entry %d", i); if (!xfce_rc_has_group (rc, buf)) break; xfce_rc_set_group (rc, buf); g_snprintf (buf, sizeof (buf), "heartlenv" G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S LAUNCHER_FOLDER "-%d" G_DIR_SEPARATOR_S "%ld%d.desktop", plugin_id, timeval.tv_sec, i); path = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, buf, TRUE); if (G_UNLIKELY (path == NULL)) { g_set_error (error, G_FILE_ERROR_FAILED, G_FILE_ERROR, "Failed to create new launcher desktop file in \"%s\"", buf); break; } else if (g_file_test (path, G_FILE_TEST_EXISTS)) { g_set_error (error, G_FILE_ERROR_EXIST, G_FILE_ERROR, "Deasktop item \"%s\" already exists", path); g_free (path); break; } new_desktop = xfce_rc_simple_open (path, FALSE); if (G_UNLIKELY (new_desktop == NULL)) { g_set_error (error, G_FILE_ERROR_FAILED, G_FILE_ERROR, "Failed to create new desktop file \"%s\"", path); g_free (path); break; } xfce_rc_set_group (new_desktop, G_KEY_FILE_DESKTOP_GROUP); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_TYPE, G_KEY_FILE_DESKTOP_TYPE_APPLICATION); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_NAME, xfce_rc_read_entry (rc, "Name", "")); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_COMMENT, xfce_rc_read_entry (rc, "Comment", "")); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_ICON, xfce_rc_read_entry (rc, "Icon", "")); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_EXEC, xfce_rc_read_entry (rc, "Exec", "")); xfce_rc_write_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_PATH, xfce_rc_read_entry (rc, "Path", "")); xfce_rc_write_bool_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_TERMINAL, xfce_rc_read_bool_entry (rc, "Terminal", FALSE)); xfce_rc_write_bool_entry (new_desktop, G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY, xfce_rc_read_bool_entry (rc, "StartupNotify", FALSE)); xfce_rc_flush (new_desktop); if (xfce_rc_is_dirty (new_desktop)) { g_set_error (error, G_FILE_ERROR_FAILED, G_FILE_ERROR, "Failed to flush desktop file \"%s\"", path); g_free (path); xfce_rc_close (new_desktop); break; } g_free (path); xfce_rc_close (new_desktop); value = g_new0 (GValue, 1); g_value_init (value, G_TYPE_STRING); filename = g_strdup_printf ("%ld%d.desktop", timeval.tv_sec, i); g_value_take_string (value, filename); g_ptr_array_add (array, value); } xfconf_channel_set_arrayv (channel, "/items", array); xfconf_array_free (array); }