Author: dannym
Date: 2007-02-03 17:43:55 +0000 (Sat, 03 Feb 2007)
New Revision: 24833
Modified:
libxfcegui4/trunk/libxfcegui4/session-client.c
libxfcegui4/trunk/libxfcegui4/session-client.h
Log:
add SessionClient property accessors (paranoid)
Modified: libxfcegui4/trunk/libxfcegui4/session-client.c
===================================================================
--- libxfcegui4/trunk/libxfcegui4/session-client.c 2007-02-03 14:29:25 UTC
(rev 24832)
+++ libxfcegui4/trunk/libxfcegui4/session-client.c 2007-02-03 17:43:55 UTC
(rev 24833)
@@ -831,3 +831,369 @@
return session_client;
}
+
+void client_session_free(SessionClient * session_client)
+{
+ /* session_client->data; */
+ /* session_client->session_connection; */
+
+ if (session_client->current_state != SESSION_CLIENT_DISCONNECTED) {
+ disconnect(session_client);
+ }
+
+ g_free(session_client->client_id);
+ g_free(session_client->given_client_id);
+
+ g_free(session_client->current_directory);
+ g_free(session_client->program);
+ g_strfreev(session_client->clone_command);
+ g_strfreev(session_client->resign_command);
+ g_strfreev(session_client->restart_command);
+ g_strfreev(session_client->discard_command);
+ g_strfreev(session_client->shutdown_command);
+ g_free(session_client);
+}
+
+gchar* safe_strdup(gchar const* source)
+{
+ if (source != NULL) {
+ return g_strdup(source);
+ } else {
+ return NULL;
+ }
+}
+
+gchar** safe_strvdup(gchar** const source)
+{
+ int count;
+ int i;
+ gchar** result;
+
+ count = g_strv_length(source);
+ result = g_new0(gchar*, count + 1);
+
+ for (i = 0; i < count; ++i) {
+ result[i] = safe_strdup(source[i]);
+ }
+
+ result[count] = NULL;
+ return result;
+}
+
+/* messes with session_connection:
+SessionClient *client_session_copy(SessionClient * session_client)
+{
+ SessionClient* result;
+ result = g_new0(SessionClient, 1);
+
+ result->data = session_client->data;
+ result->session_connection = session_client->session_connection;
+
+ result->current_state = session_client->current_state;
+ result->restart_style = session_client->restart_style;
+ result->interact_style = session_client->interact_style;
+
+ result->priority = session_client->priority;
+
+ result->client_id = safe_strdup(session_client->client_id);
+ result->given_client_id = safe_strdup(session_client->given_client_id);
+
+ result->current_directory = safe_strdup(session_client->current_directory);
+ result->program = safe_strdup(session_client->program);
+ result->clone_command = safe_strvdup(session_client->clone_command);
+ result->resign_command = safe_strvdup(session_client->resign_command);
+ result->restart_command = safe_strvdup(session_client->restart_command);
+ result->discard_command = safe_strvdup(session_client->discard_command);
+ result->shutdown_command = safe_strvdup(session_client->shutdown_command);
+
+ result->shutdown = session_client->shutdown;
+}
+*/
+
+void client_session_set_save_phase_2_callback(SessionClient * session_client,
save_phase_2_callback value)
+{
+ session_client->save_phase_2 = value;
+}
+
+void client_session_set_interact_callback(SessionClient * session_client,
interact_callback value)
+{
+ session_client->interact = value;
+}
+
+void client_session_set_shutdown_cancelled_callback(SessionClient *
session_client, shutdown_cancelled_callback value)
+{
+ session_client->shutdown_cancelled = value;
+}
+
+void client_session_set_save_complete_callback(SessionClient * session_client,
save_complete_callback value)
+{
+ session_client->save_complete = value;
+}
+
+void client_session_set_die_callback(SessionClient * session_client,
die_callback value)
+{
+ session_client->die = value;
+}
+
+void client_session_set_save_yourself_callback(SessionClient * session_client,
save_yourself_callback value)
+{
+ session_client->save_yourself = value;
+}
+
+void client_session_set_data(SessionClient * session_client, gpointer value)
+{
+ session_client->data = value;
+}
+
+/*void client_session_set_session_connection(SessionClient * session_client,
gpointer value)*/
+
+/*void client_session_set_current_state(SessionClient * session_client,
SessionClientState value)*/
+
+void client_session_set_restart_style(SessionClient * session_client,
SessionRestartStyle value)
+{
+ if (session_client->session_connection != NULL) {
+ g_error("SessionClient: changing \"restart_style\" while connected to
session manager is not implemented.");
+ return;
+ }
+
+ session_client->restart_style = value;
+}
+
+/* void client_session_set_interact_style(SessionClient * session_client,
SessionInteractStyle value) */
+
+void client_session_set_priority(SessionClient * session_client, gchar value)
+{
+ if (session_client->session_connection != NULL) {
+ g_error("SessionClient: changing \"priority\" while connected to
session manager is not implemented.");
+ return;
+ }
+
+ session_client->priority = value;
+}
+
+void client_session_set_client_id(SessionClient * session_client, gchar const*
value)
+{
+ if (session_client->session_connection != NULL) {
+ g_error("SessionClient: changing \"client_id\" while connected to
session manager is not possible.");
+ return;
+ }
+
+ if (session_client->client_id != value) {
+ g_free(session_client->client_id);
+ session_client->client_id = safe_strdup(value);
+ }
+}
+
+/*void client_session_set_given_client_id(SessionClient * session_client,
gchar const* value) */
+
+void client_session_set_current_directory(SessionClient * session_client,
gchar const* value)
+{
+ if (session_client->session_connection != NULL) {
+ g_error("SessionClient: changing \"current_directory\" while connected
to session manager is not implemented.");
+ return;
+ }
+
+ if (session_client->current_directory != value) {
+ g_free(session_client->current_directory);
+ session_client->current_directory = safe_strdup(value);
+ }
+}
+
+void client_session_set_program(SessionClient * session_client, gchar const*
value)
+{
+ if (session_client->session_connection != NULL) {
+ g_error("SessionClient: changing \"program\" while connected to
session manager is not implemented.");
+ return;
+ }
+
+ if (session_client->program != value) {
+ g_free(session_client->program);
+ session_client->program = safe_strdup(value);
+ }
+}
+
+void client_session_set_clone_command(SessionClient * session_client, gchar**
const value)
+{
+ if (session_client->clone_command == value) {
+ return;
+ }
+
+ if (session_client->clone_command != NULL) {
+ g_strfreev(session_client->clone_command);
+ session_client->clone_command = NULL;
+ }
+
+ if (value != NULL) {
+ session_client->clone_command = safe_strvdup(value);
+ }
+}
+
+void client_session_set_resign_command(SessionClient * session_client, gchar**
const value)
+{
+ if (session_client->resign_command == value) {
+ return;
+ }
+
+ if (session_client->resign_command != NULL) {
+ g_strfreev(session_client->resign_command);
+ session_client->resign_command = NULL;
+ }
+
+ if (value != NULL) {
+ session_client->resign_command = safe_strvdup(value);
+ }
+}
+
+void client_session_set_restart_command(SessionClient * session_client,
gchar** const value)
+{
+ if (session_client->restart_command == value) {
+ return;
+ }
+
+ if (session_client->restart_command != NULL) {
+ g_strfreev(session_client->restart_command);
+ session_client->restart_command = NULL;
+ }
+
+ if (value != NULL) {
+ session_client->restart_command = safe_strvdup(value);
+ }
+}
+
+void client_session_set_discard_command(SessionClient * session_client,
gchar** const value)
+{
+ if (session_client->discard_command == value) {
+ return;
+ }
+
+ if (session_client->discard_command != NULL) {
+ g_strfreev(session_client->discard_command);
+ session_client->discard_command = NULL;
+ }
+
+ if (value != NULL) {
+ session_client->discard_command = safe_strvdup(value);
+ }
+}
+
+void client_session_set_shutdown_command(SessionClient * session_client,
gchar** const value)
+{
+ if (session_client->shutdown_command == value) {
+ return;
+ }
+
+ if (session_client->shutdown_command != NULL) {
+ g_strfreev(session_client->shutdown_command);
+ session_client->shutdown_command = NULL;
+ }
+
+ if (value != NULL) {
+ session_client->shutdown_command = safe_strvdup(value);
+ }
+}
+
+save_phase_2_callback client_session_get_save_phase_2_callback(SessionClient *
session_client)
+{
+ return session_client->save_phase_2;
+}
+
+interact_callback client_session_get_interact_callback(SessionClient *
session_client)
+{
+ return session_client->interact;
+}
+
+shutdown_cancelled_callback
client_session_get_shutdown_cancelled_callback(SessionClient * session_client)
+{
+ return session_client->shutdown_cancelled;
+}
+
+save_complete_callback client_session_get_save_complete_callback(SessionClient
* session_client)
+{
+ return session_client->save_complete;
+}
+
+die_callback client_session_get_die_callback(SessionClient * session_client)
+{
+ return session_client->die;
+}
+
+save_yourself_callback client_session_get_save_yourself_callback(SessionClient
* session_client)
+{
+ return session_client->save_yourself;
+}
+
+gpointer client_session_get_data(SessionClient * session_client)
+{
+ return session_client->data;
+}
+
+gpointer client_session_get_session_connection(SessionClient * session_client)
+{
+ return session_client->session_connection;
+}
+
+SessionClientState client_session_get_current_state(SessionClient *
session_client)
+{
+ return session_client->current_state;
+}
+
+SessionRestartStyle client_session_get_restart_style(SessionClient *
session_client)
+{
+ return session_client->restart_style;
+}
+
+SessionInteractStyle client_session_get_interact_style(SessionClient *
session_client)
+{
+ return session_client->interact_style;
+}
+
+gchar client_session_get_priority(SessionClient * session_client)
+{
+ return session_client->priority;
+}
+
+gchar const* client_session_get_client_id(SessionClient * session_client)
+{
+ return session_client->client_id;
+}
+
+gchar const* client_session_get_given_client_id(SessionClient * session_client)
+{
+ return session_client->given_client_id;
+}
+
+gchar const* client_session_get_current_directory(SessionClient *
session_client)
+{
+ return session_client->current_directory;
+}
+
+gchar const* client_session_get_program(SessionClient * session_client)
+{
+ return session_client->program;
+}
+
+gchar** const client_session_get_clone_command(SessionClient * session_client)
+{
+ return session_client->clone_command;
+}
+
+gchar** const client_session_get_resign_command(SessionClient * session_client)
+{
+ return session_client->resign_command;
+}
+
+gchar** const client_session_get_restart_command(SessionClient *
session_client)
+{
+ return session_client->restart_command;
+}
+
+gchar** const client_session_get_discard_command(SessionClient *
session_client)
+{
+ return session_client->discard_command;
+}
+
+gchar** const client_session_get_shutdown_command(SessionClient *
session_client)
+{
+ return session_client->shutdown_command;
+}
+
Modified: libxfcegui4/trunk/libxfcegui4/session-client.h
===================================================================
--- libxfcegui4/trunk/libxfcegui4/session-client.h 2007-02-03 14:29:25 UTC
(rev 24832)
+++ libxfcegui4/trunk/libxfcegui4/session-client.h 2007-02-03 17:43:55 UTC
(rev 24833)
@@ -118,8 +118,49 @@
SessionRestartStyle restart_style,
gchar priority);
+void client_session_free(SessionClient * session_client);
+/* SessionClient *client_session_copy(SessionClient * session_client); */
+
gboolean session_init (SessionClient * session_client);
void session_shutdown (SessionClient * session_client);
void logout_session (SessionClient * session_client);
+void client_session_set_save_phase_2_callback(SessionClient * session_client,
save_phase_2_callback value);
+void client_session_set_interact_callback(SessionClient * session_client,
interact_callback value);
+void client_session_set_shutdown_cancelled_callback(SessionClient *
session_client, shutdown_cancelled_callback value);
+void client_session_set_save_complete_callback(SessionClient * session_client,
save_complete_callback value);
+void client_session_set_die_callback(SessionClient * session_client,
die_callback value);
+void client_session_set_save_yourself_callback(SessionClient * session_client,
save_yourself_callback value);
+void client_session_set_data(SessionClient * session_client, gpointer value);
+void client_session_set_restart_style(SessionClient * session_client,
SessionRestartStyle value);
+void client_session_set_priority(SessionClient * session_client, gchar value);
+void client_session_set_client_id(SessionClient * session_client, gchar const*
value);
+void client_session_set_current_directory(SessionClient * session_client,
gchar const* value);
+void client_session_set_program(SessionClient * session_client, gchar const*
value);
+void client_session_set_clone_command(SessionClient * session_client, gchar**
const value);
+void client_session_set_resign_command(SessionClient * session_client, gchar**
const value);
+void client_session_set_restart_command(SessionClient * session_client,
gchar** const value);
+void client_session_set_discard_command(SessionClient * session_client,
gchar** const value);
+void client_session_set_shutdown_command(SessionClient * session_client,
gchar** const value);
+save_phase_2_callback client_session_get_save_phase_2_callback(SessionClient *
session_client);
+interact_callback client_session_get_interact_callback(SessionClient *
session_client);
+shutdown_cancelled_callback
client_session_get_shutdown_cancelled_callback(SessionClient * session_client);
+save_complete_callback client_session_get_save_complete_callback(SessionClient
* session_client);
+die_callback client_session_get_die_callback(SessionClient * session_client);
+save_yourself_callback client_session_get_save_yourself_callback(SessionClient
* session_client);
+gpointer client_session_get_data(SessionClient * session_client);
+gpointer client_session_get_session_connection(SessionClient * session_client);
+SessionClientState client_session_get_current_state(SessionClient *
session_client);
+SessionRestartStyle client_session_get_restart_style(SessionClient *
session_client);
+SessionInteractStyle client_session_get_interact_style(SessionClient *
session_client);
+gchar client_session_get_priority(SessionClient * session_client);
+gchar const* client_session_get_client_id(SessionClient * session_client);
+gchar const* client_session_get_given_client_id(SessionClient *
session_client);
+gchar const* client_session_get_current_directory(SessionClient *
session_client);
+gchar const* client_session_get_program(SessionClient * session_client);
+gchar** const client_session_get_clone_command(SessionClient * session_client);
+gchar** const client_session_get_resign_command(SessionClient *
session_client);
+gchar** const client_session_get_restart_command(SessionClient *
session_client);
+gchar** const client_session_get_discard_command(SessionClient *
session_client);
+gchar** const client_session_get_shutdown_command(SessionClient *
session_client);
#endif
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits