void logview_manager_close_active_log (LogviewManager *manager) { LogviewLog *active_log; char *log_uri; GFile *file; g_assert (LOGVIEW_IS_MANAGER (manager)); active_log = manager->priv->active_log; log_uri = logview_log_get_uri (active_log); file = logview_log_get_gfile (active_log); g_signal_emit (manager, signals[LOG_CLOSED], 0, active_log, NULL); logview_prefs_remove_stored_log (logview_prefs_get (), file); g_object_unref (file); /* we own two refs to the active log; one is inside the hash table */ g_object_unref (active_log); g_hash_table_remove (manager->priv->logs, log_uri); g_free (log_uri); /* someone else will take care of setting the next active log to us */ }
static void logview_app_init (LogviewApp *self) { LogviewAppPrivate *priv = self->priv = GET_PRIVATE (self); priv->prefs = logview_prefs_get (); priv->manager = logview_manager_get (); }
static void create_log_cb (LogviewLog *log, GError *error, gpointer user_data) { CreateCBData *data = user_data; if (log) { char *log_uri; LogviewPrefs *prefs; GFile *file; log_uri = logview_log_get_uri (log); /* creation went well, store the log and notify */ g_hash_table_insert (data->manager->priv->logs, log_uri, log); prefs = logview_prefs_get (); file = logview_log_get_gfile (log); logview_prefs_store_log (prefs, file); g_object_unref (file); g_signal_emit (data->manager, signals[LOG_ADDED], 0, log, NULL); if (data->set_active) { logview_manager_set_active_log (data->manager, log); } } else { char *path; /* notify the error */ path = g_file_get_path (data->file); if (!data->is_multiple) { logview_app_add_error (logview_app_get (), path, error->message); } else { char **error_arr = g_new0 (char *, 3); error_arr[0] = g_strdup (path); error_arr[1] = g_strdup (error->message); error_arr[2] = NULL; g_ptr_array_add (op->errors, error_arr); } g_free (path); } if (data->is_multiple) { op->current++; if (op->total == op->current) { logview_app_add_errors (logview_app_get (), op->errors); multiple_creation_op_free (op); op = NULL; } } g_object_unref (data->file); g_slice_free (CreateCBData, data); }
static void logview_filter_manager_init (LogviewFilterManager *manager) { GtkWidget *table; GtkWidget *scrolled_window; GtkTreeViewColumn *column; GtkCellRenderer *text_renderer; LogviewFilterManagerPrivate *priv; manager->priv = LOGVIEW_FILTER_MANAGER_GET_PRIVATE (manager); priv = manager->priv; priv->builder = gtk_builder_new (); g_object_ref (priv->builder); priv->prefs = logview_prefs_get (); gtk_dialog_add_button (GTK_DIALOG(manager), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); gtk_window_set_modal (GTK_WINDOW (manager), TRUE); priv->model = GTK_TREE_MODEL (gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_OBJECT)); logview_filter_manager_update_model (manager); table = gtk_table_new (3, 2, FALSE); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); priv->tree = gtk_tree_view_new_with_model (priv->model); gtk_widget_set_size_request (priv->tree, 150, 200); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree), FALSE); gtk_container_add (GTK_CONTAINER (scrolled_window), priv->tree); text_renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new(); gtk_tree_view_column_pack_start (column, text_renderer, TRUE); gtk_tree_view_column_set_attributes (column, text_renderer, "text", COLUMN_NAME, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree), column); priv->add_button = gtk_button_new_from_stock (GTK_STOCK_ADD); priv->edit_button = gtk_button_new_from_stock (GTK_STOCK_PROPERTIES); priv->remove_button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); gtk_window_set_title (GTK_WINDOW (manager), _("Filters")); g_signal_connect (priv->add_button, "clicked", G_CALLBACK (on_add_clicked), manager); g_signal_connect (priv->edit_button, "clicked", G_CALLBACK (on_edit_clicked), manager); g_signal_connect (priv->remove_button, "clicked", G_CALLBACK (on_remove_clicked), manager); gtk_widget_set_sensitive (priv->edit_button, FALSE); gtk_widget_set_sensitive (priv->remove_button, FALSE); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree)), "changed", G_CALLBACK (on_tree_selection_changed), manager); gtk_table_attach_defaults (GTK_TABLE (table), scrolled_window, 0, 1, 0, 3); gtk_table_attach (GTK_TABLE (table), priv->add_button, 1, 2, 0, 1, GTK_FILL, 0, 5, 5); gtk_table_attach (GTK_TABLE (table), priv->edit_button, 1, 2, 1, 2, GTK_FILL, 0, 5, 5); gtk_table_attach (GTK_TABLE (table), priv->remove_button, 1, 2, 2, 3, GTK_FILL, 0, 5, 5); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (manager))), table, TRUE, TRUE, 5); gtk_widget_show_all (GTK_WIDGET (manager)); }