static void infinoted_plugin_autosave_buffer_notify_modified_cb(GObject* object, GParamSpec* pspec, gpointer user_data) { InfinotedPluginAutosaveSessionInfo* info; InfSession* session; InfBuffer* buffer; info = (InfinotedPluginAutosaveSessionInfo*)user_data; g_object_get(G_OBJECT(info->proxy), "session", &session, NULL); buffer = inf_session_get_buffer(session); if(inf_buffer_get_modified(buffer) == TRUE) { if(info->timeout == NULL) infinoted_plugin_autosave_start(info); } else { if(info->timeout != NULL) infinoted_plugin_autosave_stop(info); } g_object_unref(session); }
static void infinoted_plugin_autosave_session_added(const InfBrowserIter* iter, InfSessionProxy* proxy, gpointer plugin_info, gpointer session_info) { InfinotedPluginAutosaveSessionInfo* info; InfSession* session; InfBuffer* buffer; info = (InfinotedPluginAutosaveSessionInfo*)session_info; info->plugin = (InfinotedPluginAutosave*)plugin_info; info->iter = *iter; info->proxy = proxy; info->timeout = NULL; g_object_ref(proxy); g_object_get(G_OBJECT(proxy), "session", &session, NULL); buffer = inf_session_get_buffer(session); g_signal_connect( G_OBJECT(buffer), "notify::modified", G_CALLBACK(infinoted_plugin_autosave_buffer_notify_modified_cb), info ); if(inf_buffer_get_modified(buffer) == TRUE) infinoted_plugin_autosave_start(info); g_object_unref(session); }
void Gobby::TitleBar::update_title() { // TODO: Show path, as gedit does. This requires change notification // for document info storage. if(m_current_view != NULL) { InfSession* session = m_current_view->get_session(); InfBuffer* buffer = inf_session_get_buffer(session); InfSessionStatus status = inf_session_get_status(session); if(status == INF_SESSION_SYNCHRONIZING || !inf_buffer_get_modified(buffer)) { m_window.set_title( m_current_view->get_title() + " - Gobby"); } else { m_window.set_title( "*" + m_current_view->get_title() + " - Gobby"); } } else { m_window.set_title("Gobby"); } }
static void infinoted_autosave_add_session(InfinotedAutosave* autosave, InfdDirectoryIter* iter) { InfinotedAutosaveSession* session; InfdSessionProxy* proxy; InfBuffer* buffer; g_assert(infinoted_autosave_find_session(autosave, iter) == NULL); session = g_slice_new(InfinotedAutosaveSession); session->autosave = autosave; session->iter = *iter; proxy = infd_directory_iter_peek_session(autosave->directory, iter); g_assert(proxy != NULL); session->proxy = proxy; session->timeout_handle = NULL; autosave->sessions = g_slist_prepend(autosave->sessions, session); buffer = inf_session_get_buffer(infd_session_proxy_get_session(proxy)); g_signal_connect( G_OBJECT(buffer), "notify::modified", G_CALLBACK(infinoted_autosave_buffer_notify_modified_cb), session ); if(inf_buffer_get_modified(buffer) == TRUE) { infinoted_autosave_session_start(autosave, session); } }
void Gobby::TextTabLabel::update_modified() { InfSession* session = INF_SESSION(m_view.get_session()); bool modified = inf_buffer_get_modified(inf_session_get_buffer(session)); InfSessionStatus status = inf_session_get_status(session); if(status == INF_SESSION_SYNCHRONIZING || status == INF_SESSION_PRESYNC) { modified = false; } if(modified) m_title.set_text("*" + m_view.get_title()); else m_title.set_text(m_view.get_title()); }
static void infinoted_autosave_buffer_notify_modified_cb(GObject* object, GParamSpec* pspec, gpointer user_data) { InfinotedAutosaveSession* session; InfBuffer* buffer; session = (InfinotedAutosaveSession*)user_data; buffer = inf_session_get_buffer( infd_session_proxy_get_session(session->proxy) ); if(inf_buffer_get_modified(buffer) == TRUE) { if(session->timeout_handle == NULL) infinoted_autosave_session_start(session->autosave, session); } else { if(session->timeout_handle != NULL) infinoted_autosave_session_stop(session->autosave, session); } }