toplevel.h File Reference


Detailed Description

Declaration of the main toplevel window for seaudit.

Author:
Jeremy A. Mowery jmowery@tresys.com

Jason Tang jtang@tresys.com

Copyright (C) 2003-2007 Tresys Technology, LLC

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Definition in file toplevel.h.

#include "progress.h"
#include "seaudit.h"
#include <apol/policy-path.h>
#include <gtk/gtk.h>
#include <seaudit/message.h>
#include "progress.h"

Go to the source code of this file.


Typedefs

typedef toplevel toplevel_t

Functions

toplevel_ttoplevel_create (seaudit_t *s)
 Allocate and return an instance of the toplevel window object.
void toplevel_destroy (toplevel_t **top)
 Destroy the toplevel window.
void toplevel_open_log (toplevel_t *top, const char *filename)
 Open a log file, destroying any existing logs and views first.
int toplevel_open_policy (toplevel_t *top, apol_policy_path_t *path)
 Open a policy file, destroying any existing policies upon success.
void toplevel_update_status_bar (toplevel_t *top)
 Update the status bar to show the current policy, number of log messages in the current view, range of messages in current view, and monitor status.
void toplevel_update_selection_menu_item (toplevel_t *top)
 Update the menu items whenever a message is selected/deselected.
void toplevel_update_tabs (toplevel_t *top)
 Update the tab names for all views.
preferences_ttoplevel_get_prefs (toplevel_t *top)
 Return the current preferences object for the toplevel object.
seaudit_log_ttoplevel_get_log (toplevel_t *top)
 Return a seaudit_log_t object used for error reporting by libseaudit.
apol_vector_ttoplevel_get_log_users (toplevel_t *top)
 Return a vector of strings corresponding to all users found within the current log file.
apol_vector_ttoplevel_get_log_roles (toplevel_t *top)
 Return a vector of strings corresponding to all roles found within the current log file.
apol_vector_ttoplevel_get_log_types (toplevel_t *top)
 Return a vector of strings corresponding to all types found within the current log file.
apol_vector_ttoplevel_get_log_classes (toplevel_t *top)
 Return a vector of strings corresponding to all object classes found within the current log file.
apol_policy_ttoplevel_get_policy (toplevel_t *top)
 Return the currently loaded policy.
char * toplevel_get_glade_xml (toplevel_t *top)
 Return the filename containing seaudit's glade file.
progress_ttoplevel_get_progress (toplevel_t *top)
 Return the progress object, so that sub-windows may also show the threaded progress object.
GtkWindow * toplevel_get_window (toplevel_t *top)
 Return the main application window.
void toplevel_find_terules (toplevel_t *top, seaudit_message_t *message)
 (Re)open a dialog that allows the user to search for TE rules in the currently opened policy.
void toplevel_ERR (toplevel_t *top, const char *format,...) __attribute__((format(printf
 Pop-up an error dialog with a line of text and wait for the user to dismiss the dialog.
void toplevel_WARN (toplevel_t *top, const char *format,...) __attribute__((format(printf
 Pop-up a warning dialog with a line of text and wait for the user to dismiss the dialog.

Typedef Documentation

typedef struct toplevel toplevel_t
 

Definition at line 28 of file toplevel.h.

Referenced by filter_view_run(), find_dialog_create(), init_icons(), message_view_create(), modify_view_run(), open_policies_dialog_run(), open_policy_window_run(), policy_components_view_run(), policy_view_create(), preferences_view_run(), progress_create(), remap_types_run(), report_window_copy_prefs(), report_window_init_dialog(), report_window_run(), result_item_inline_link_event(), result_item_on_mod_activate(), result_item_on_orig_activate(), results_create(), select_diff_dialog_run(), toplevel_add_new_model(), toplevel_add_new_view(), toplevel_create(), toplevel_destroy(), toplevel_destroy_views(), toplevel_enable_log_items(), toplevel_enable_policy_items(), toplevel_ERR(), toplevel_find_terules(), toplevel_get_current_view(), toplevel_get_glade_xml(), toplevel_get_log(), toplevel_get_log_classes(), toplevel_get_log_roles(), toplevel_get_log_types(), toplevel_get_log_users(), toplevel_get_notebook_page(), toplevel_get_poldiff(), toplevel_get_poldiff_run_flags(), toplevel_get_policy(), toplevel_get_prefs(), toplevel_get_progress(), toplevel_get_text_view(), toplevel_get_window(), toplevel_message(), toplevel_monitor_log(), toplevel_monitor_log_timer(), toplevel_notebook_find_view(), toplevel_on_about_seaudit_activate(), toplevel_on_about_sediffx_activate(), toplevel_on_class_asc_activate(), toplevel_on_class_des_activate(), toplevel_on_clear_view_activate(), toplevel_on_clear_view_click(), toplevel_on_conditional_asc_activate(), toplevel_on_conditional_des_activate(), toplevel_on_copy_activate(), toplevel_on_create_report_activate(), toplevel_on_default_sort_activate(), toplevel_on_destroy(), toplevel_on_edit_menu_activate(), toplevel_on_export_all_messages_activate(), toplevel_on_export_selected_messages_activate(), toplevel_on_find_activate(), toplevel_on_find_terules_activate(), toplevel_on_find_terules_click(), toplevel_on_help_activate(), toplevel_on_modify_view_activate(), toplevel_on_modify_view_click(), toplevel_on_monitor_log_activate(), toplevel_on_monitor_log_click(), toplevel_on_new_view_activate(), toplevel_on_notebook_switch_page(), toplevel_on_open_activate(), toplevel_on_open_log_activate(), toplevel_on_open_policies_button_click(), toplevel_on_open_policy_activate(), toplevel_on_open_recent_log_activate(), toplevel_on_open_recent_policy_activate(), toplevel_on_open_view_activate(), toplevel_on_preferences_activate(), toplevel_on_quit_activate(), toplevel_on_remap_types_activate(), toplevel_on_remap_types_button_click(), toplevel_on_run_diff_activate(), toplevel_on_run_diff_button_click(), toplevel_on_save_view_activate(), toplevel_on_save_viewas_activate(), toplevel_on_select_all_activate(), toplevel_on_source_type_asc_activate(), toplevel_on_source_type_des_activate(), toplevel_on_switch_page(), toplevel_on_tab_close(), toplevel_on_target_type_asc_activate(), toplevel_on_target_type_des_activate(), toplevel_on_view_entire_message_activate(), toplevel_open_log(), toplevel_open_policies(), toplevel_open_policy(), toplevel_run_diff(), toplevel_set_recent_logs_submenu(), toplevel_set_recent_policies_submenu(), toplevel_set_sort_menu_selection(), toplevel_set_sort_menu_sensitivity(), toplevel_show_policy_line(), toplevel_update_selection_menu_item(), toplevel_update_status_bar(), toplevel_update_tabs(), toplevel_update_title_bar(), and toplevel_WARN().


Function Documentation

toplevel_t* toplevel_create seaudit_t s  ) 
 

Allocate and return an instance of the toplevel window object.

This will create the window, set up the menus and icons, create an empty notebook, then display the window.

Parameters:
s Main seaudit object that will control the toplevel.
Returns:
An initialized toplevel object, or NULL upon error. The caller must call toplevel_destroy() afterwards.

Definition at line 419 of file toplevel.c.

References apol_file_find_path(), apol_vector_create(), init_icons(), message_view_free(), policy_view_create(), progress_create(), toplevel::s, seaudit_t, toplevel_add_new_model(), toplevel_destroy(), toplevel_on_notebook_switch_page(), toplevel_set_recent_logs_submenu(), toplevel_set_recent_policies_submenu(), and toplevel_t.

00420 {
00421         toplevel_t *top;
00422         GtkWidget *vbox;
00423         int error = 0;
00424 
00425         if ((top = calloc(1, sizeof(*top))) == NULL || (top->views = apol_vector_create(message_view_free)) == NULL) {
00426                 error = errno;
00427                 goto cleanup;
00428         }
00429         top->s = s;
00430         top->next_model_number = 1;
00431 
00432         if ((top->xml_filename = apol_file_find_path("seaudit.glade")) == NULL ||
00433             (top->xml = glade_xml_new(top->xml_filename, "TopLevel", NULL)) == NULL) {
00434                 fprintf(stderr, "Could not open seaudit.glade.\n");
00435                 error = EIO;
00436                 goto cleanup;
00437         }
00438         top->w = GTK_WINDOW(glade_xml_get_widget(top->xml, "TopLevel"));
00439         g_object_set_data(G_OBJECT(top->w), "toplevel", top);
00440         init_icons(top);
00441         top->notebook = GTK_NOTEBOOK(gtk_notebook_new());
00442         g_signal_connect_after(G_OBJECT(top->notebook), "switch-page", G_CALLBACK(toplevel_on_notebook_switch_page), top);
00443         vbox = glade_xml_get_widget(top->xml, "NotebookVBox");
00444         gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(top->notebook));
00445         gtk_widget_show(GTK_WIDGET(top->notebook));
00446         gtk_widget_show(GTK_WIDGET(top->w));
00447         toplevel_set_recent_logs_submenu(top);
00448         toplevel_set_recent_policies_submenu(top);
00449 
00450         glade_xml_signal_autoconnect(top->xml);
00451 
00452         /* create initial blank tab for the notebook */
00453         toplevel_add_new_model(top);
00454 
00455         /* initialize sub-windows, now that glade XML file has been
00456          * read */
00457         if ((top->pv = policy_view_create(top)) == NULL || (top->progress = progress_create(top)) == NULL) {
00458                 error = errno;
00459                 goto cleanup;
00460         }
00461       cleanup:
00462         if (error != 0) {
00463                 toplevel_destroy(&top);
00464                 errno = error;
00465                 return NULL;
00466         }
00467         return top;
00468 }

void toplevel_destroy toplevel_t **  top  ) 
 

Destroy the toplevel window.

This function will recursively destroy all other windows. This does nothing if the pointer is set to NULL.

Parameters:
top Reference to a toplevel object. Afterwards the pointer will be set to NULL.

Definition at line 470 of file toplevel.c.

00471 {
00472         if (top != NULL && *top != NULL) {
00473                 if ((*top)->monitor_id > 0) {
00474                         g_source_remove((*top)->monitor_id);
00475                 }
00476                 policy_view_destroy(&(*top)->pv);
00477                 apol_vector_destroy(&(*top)->views);
00478                 free((*top)->xml_filename);
00479                 g_free((*top)->view_filename);
00480                 progress_destroy(&(*top)->progress);
00481                 if ((*top)->w != NULL) {
00482                         gtk_widget_destroy(GTK_WIDGET((*top)->w));
00483                 }
00484                 free(*top);
00485                 *top = NULL;
00486         }
00487 }

void toplevel_open_log toplevel_t top,
const char *  filename
 

Open a log file, destroying any existing logs and views first.

Afterwards, create a new view for the log.

Parameters:
top Toplevel object, used for UI control.
filename Name of the log to open.

Definition at line 630 of file toplevel.c.

References toplevel::do_monitor_log, FALSE, log_run_datum::file, log_run_datum::log, toplevel::next_model_number, preferences_get_real_time_at_startup(), toplevel::progress, progress_hide(), progress_show(), progress_wait(), log_run_datum::result, toplevel::s, seaudit_set_log(), toplevel_add_new_model(), toplevel_destroy_views(), toplevel_enable_log_items(), toplevel_get_prefs(), toplevel_monitor_log(), toplevel_open_log_runner(), toplevel_set_recent_logs_submenu(), toplevel_t, toplevel_update_selection_menu_item(), toplevel_update_status_bar(), toplevel_update_title_bar(), TRUE, util_cursor_clear(), util_cursor_wait(), toplevel::w, and toplevel::xml.

Referenced by delayed_main(), toplevel_on_open_log_activate(), and toplevel_on_open_recent_log_activate().

00631 {
00632         struct log_run_datum run = { top, NULL, filename, NULL, 0 };
00633         int was_monitor_running;
00634         GtkCheckMenuItem *w;
00635 
00636         /* disable monitoring during the threaded part of this code */
00637         was_monitor_running = top->do_monitor_log;
00638         top->do_monitor_log = 0;
00639         toplevel_monitor_log(top);
00640 
00641         util_cursor_wait(GTK_WIDGET(top->w));
00642         progress_show(top->progress, "Opening Log");
00643         g_thread_create(toplevel_open_log_runner, &run, FALSE, NULL);
00644         progress_wait(top->progress);
00645         progress_hide(top->progress);
00646         util_cursor_clear(GTK_WIDGET(top->w));
00647 
00648         if (run.result < 0) {
00649                 top->do_monitor_log = was_monitor_running;
00650                 toplevel_monitor_log(top);
00651                 return;
00652         }
00653 
00654         toplevel_destroy_views(top);
00655         top->next_model_number = 1;
00656         seaudit_set_log(top->s, run.log, run.file, filename);
00657         toplevel_set_recent_logs_submenu(top);
00658         toplevel_enable_log_items(top, TRUE);
00659         toplevel_add_new_model(top);
00660         toplevel_update_title_bar(top);
00661         toplevel_update_status_bar(top);
00662         toplevel_update_selection_menu_item(top);
00663         top->do_monitor_log = preferences_get_real_time_at_startup(toplevel_get_prefs(top));
00664 
00665         w = GTK_CHECK_MENU_ITEM(glade_xml_get_widget(top->xml, "MonitorLog"));
00666 
00667         gtk_check_menu_item_set_active(w, top->do_monitor_log);
00668         /* call this again because the check item could have already
00669          * been active, thus its handler would not run */
00670         toplevel_monitor_log(top);
00671 }

int toplevel_open_policy toplevel_t top,
apol_policy_path_t path
 

Open a policy file, destroying any existing policies upon success.

Parameters:
top Toplevel object, used for UI control.
path Path to the policy to open. This function takes ownership of this object.
Returns:
0 on successful open, < 0 on error.

Definition at line 705 of file toplevel.c.

References apol_policy_path_destroy(), apol_policy_path_get_primary(), apol_policy_path_t, FALSE, policy_run_datum::policy, policy_view_update(), toplevel::progress, progress_hide(), progress_show(), progress_wait(), toplevel::pv, policy_run_datum::result, toplevel::s, seaudit_set_policy(), toplevel_enable_policy_items(), toplevel_open_policy_runner(), toplevel_set_recent_policies_submenu(), toplevel_t, toplevel_update_status_bar(), toplevel_update_title_bar(), TRUE, util_cursor_clear(), util_cursor_wait(), and toplevel::w.

Referenced by delayed_main(), open_policy_window_run(), and toplevel_on_open_recent_policy_activate().

00706 {
00707         struct policy_run_datum run = { top, path, NULL, 0 };
00708 
00709         util_cursor_wait(GTK_WIDGET(top->w));
00710         progress_show(top->progress, apol_policy_path_get_primary(path));
00711         g_thread_create(toplevel_open_policy_runner, &run, FALSE, NULL);
00712         progress_wait(top->progress);
00713         progress_hide(top->progress);
00714         util_cursor_clear(GTK_WIDGET(top->w));
00715         if (run.result < 0) {
00716                 apol_policy_path_destroy(&path);
00717                 return run.result;
00718         }
00719         seaudit_set_policy(top->s, run.policy, path);
00720         toplevel_set_recent_policies_submenu(top);
00721         toplevel_enable_policy_items(top, TRUE);
00722         toplevel_update_title_bar(top);
00723         toplevel_update_status_bar(top);
00724         policy_view_update(top->pv, path);
00725         return 0;
00726 }

void toplevel_update_status_bar toplevel_t top  ) 
 

Update the status bar to show the current policy, number of log messages in the current view, range of messages in current view, and monitor status.

Parameters:
top Toplevel whose status bar to update.

Definition at line 728 of file toplevel.c.

References apol_policy_get_version_type_mls_str(), apol_policy_t, message_view_get_num_log_messages(), message_view_t, toplevel::s, seaudit_get_log_first(), seaudit_get_log_last(), seaudit_get_num_log_messages(), seaudit_get_policy(), seaudit_log_t, toplevel_ERR(), toplevel_get_current_view(), toplevel_get_log(), toplevel_t, and toplevel::xml.

Referenced by message_view_modify(), modify_view_run(), toplevel_on_notebook_switch_page(), toplevel_open_log(), and toplevel_open_policy().

00729 {
00730         apol_policy_t *policy = seaudit_get_policy(top->s);
00731         GtkLabel *policy_version = (GtkLabel *) glade_xml_get_widget(top->xml, "PolicyVersionLabel");
00732         GtkLabel *log_num = (GtkLabel *) glade_xml_get_widget(top->xml, "LogNumLabel");
00733         GtkLabel *log_dates = (GtkLabel *) glade_xml_get_widget(top->xml, "LogDateLabel");
00734         seaudit_log_t *log = toplevel_get_log(top);
00735 
00736         if (policy == NULL) {
00737                 gtk_label_set_text(policy_version, "Policy: No policy");
00738         } else {
00739                 char *policy_str = apol_policy_get_version_type_mls_str(policy);
00740                 if (policy_str == NULL) {
00741                         toplevel_ERR(top, "%s", strerror(errno));
00742                 } else {
00743                         char *s;
00744                         if (asprintf(&s, "Policy: %s", policy_str) < 0) {
00745                                 toplevel_ERR(top, "%s", strerror(errno));
00746                         } else {
00747                                 gtk_label_set_text(policy_version, s);
00748                                 free(s);
00749                         }
00750                         free(policy_str);
00751                 }
00752         }
00753 
00754         if (log == NULL) {
00755                 gtk_label_set_text(log_num, "Log Messages: No log");
00756                 gtk_label_set_text(log_dates, "Dates: No log");
00757         } else {
00758                 message_view_t *view = toplevel_get_current_view(top);
00759                 size_t num_messages = seaudit_get_num_log_messages(top->s);
00760                 size_t num_view_messages;
00761                 const struct tm *first = seaudit_get_log_first(top->s);
00762                 const struct tm *last = seaudit_get_log_last(top->s);
00763                 assert(view != NULL);
00764                 num_view_messages = message_view_get_num_log_messages(view);
00765                 char *s, t1[256], t2[256];
00766                 if (asprintf(&s, "Log Messages: %zd/%zd", num_view_messages, num_messages) < 0) {
00767                         toplevel_ERR(top, "%s", strerror(errno));
00768                 } else {
00769                         gtk_label_set_text(log_num, s);
00770                         free(s);
00771                 }
00772                 if (first == NULL || last == NULL) {
00773                         gtk_label_set_text(log_dates, "Dates: No messages");
00774                 } else {
00775                         strftime(t1, 256, "%b %d %H:%M:%S", first);
00776                         strftime(t2, 256, "%b %d %H:%M:%S", last);
00777                         if (asprintf(&s, "Dates: %s - %s", t1, t2) < 0) {
00778                                 toplevel_ERR(top, "%s", strerror(errno));
00779                         } else {
00780                                 gtk_label_set_text(log_dates, s);
00781                                 free(s);
00782                         }
00783                 }
00784         }
00785 }

void toplevel_update_selection_menu_item toplevel_t top  ) 
 

Update the menu items whenever a message is selected/deselected.

Certain commands are legal only when one or more messages are selected.

Parameters:
top Toplevel whose menu to update.

Definition at line 802 of file toplevel.c.

References message_view_is_message_selected(), message_view_t, toplevel_get_current_view(), toplevel_t, and toplevel::xml.

Referenced by message_view_delayed_selection_menu_item(), message_view_on_row_activate(), toplevel_on_notebook_switch_page(), and toplevel_open_log().

00803 {
00804         static const char *items[] = {
00805                 "ExportSelected", "ViewMessage",
00806                 NULL
00807         };
00808         message_view_t *view = toplevel_get_current_view(top);
00809         gboolean sens = FALSE;
00810         size_t i;
00811         const char *s;
00812         if (view != NULL) {
00813                 sens = message_view_is_message_selected(view);
00814         }
00815         for (i = 0, s = items[0]; s != NULL; s = items[++i]) {
00816                 GtkWidget *w = glade_xml_get_widget(top->xml, s);
00817                 assert(s != NULL);
00818                 gtk_widget_set_sensitive(w, sens);
00819         }
00820 }

void toplevel_update_tabs toplevel_t top  ) 
 

Update the tab names for all views.

Parameters:
top Toplevel whose notebook tabs to update.

Definition at line 787 of file toplevel.c.

References message_view_get_model(), message_view_t, toplevel::notebook, seaudit_model_get_name(), seaudit_model_t, and toplevel_t.

Referenced by message_view_set_model().

00788 {
00789         gint i = gtk_notebook_get_n_pages(top->notebook) - 1;
00790         while (i >= 0) {
00791                 GtkWidget *child = gtk_notebook_get_nth_page(top->notebook, i);
00792                 GtkWidget *tab = gtk_notebook_get_tab_label(top->notebook, child);
00793                 GtkWidget *label = g_object_get_data(G_OBJECT(tab), "label");
00794                 message_view_t *v = g_object_get_data(G_OBJECT(tab), "view-object");
00795                 seaudit_model_t *model = message_view_get_model(v);
00796                 const char *name = seaudit_model_get_name(model);
00797                 gtk_label_set_text(GTK_LABEL(label), name);
00798                 i--;
00799         }
00800 }

preferences_t* toplevel_get_prefs toplevel_t top  ) 
 

Return the current preferences object for the toplevel object.

Parameters:
top Toplevel containing preferences.
Returns:
Pointer to a preferences object. Do not free() this pointer.

Definition at line 822 of file toplevel.c.

References preferences_t, toplevel::s, seaudit_get_prefs(), and toplevel_t.

Referenced by message_view_update_visible_columns(), preferences_view_run(), report_window_copy_prefs(), toplevel_monitor_log(), toplevel_monitor_log_timer(), toplevel_open_log(), toplevel_set_recent_logs_submenu(), and toplevel_set_recent_policies_submenu().

00823 {
00824         return seaudit_get_prefs(top->s);
00825 }

seaudit_log_t* toplevel_get_log toplevel_t top  ) 
 

Return a seaudit_log_t object used for error reporting by libseaudit.

Parameters:
top Toplevel containing seaudit log object.
Returns:
libseaudit reporting object, or NULL if no log exists yet. Treat this as a const pointer.

Definition at line 827 of file toplevel.c.

References toplevel::s, seaudit_get_log(), seaudit_log_t, and toplevel_t.

Referenced by message_view_update_rows(), report_window_run(), and toplevel_update_status_bar().

00828 {
00829         return seaudit_get_log(top->s);
00830 }

apol_vector_t* toplevel_get_log_users toplevel_t top  ) 
 

Return a vector of strings corresponding to all users found within the current log file.

The vector will be sorted alphabetically.

Parameters:
top Toplevel containing seaudit log object.
Returns:
Vector of sorted users, or NULL if no log is loaded. The caller must call apol_vector_destroy() upon the return value.

Definition at line 832 of file toplevel.c.

References apol_vector_t, toplevel::s, seaudit_get_log_users(), and toplevel_t.

Referenced by filter_view_on_suser_context_click(), and filter_view_on_tuser_context_click().

00833 {
00834         return seaudit_get_log_users(top->s);
00835 }

apol_vector_t* toplevel_get_log_roles toplevel_t top  ) 
 

Return a vector of strings corresponding to all roles found within the current log file.

The vector will be sorted alphabetically.

Parameters:
top Toplevel containing seaudit log object.
Returns:
Vector of sorted roles, or NULL if no log is loaded. The caller must call apol_vector_destroy() upon the return value.

Definition at line 837 of file toplevel.c.

References apol_vector_t, toplevel::s, seaudit_get_log_roles(), and toplevel_t.

Referenced by filter_view_on_srole_context_click(), and filter_view_on_trole_context_click().

00838 {
00839         return seaudit_get_log_roles(top->s);
00840 }

apol_vector_t* toplevel_get_log_types toplevel_t top  ) 
 

Return a vector of strings corresponding to all types found within the current log file.

The vector will be sorted alphabetically.

Parameters:
top Toplevel containing seaudit log object.
Returns:
Vector of sorted types, or NULL if no log is loaded. The caller must call apol_vector_destroy() upon the return value.

Definition at line 842 of file toplevel.c.

References apol_vector_t, toplevel::s, seaudit_get_log_types(), and toplevel_t.

Referenced by filter_view_on_stype_context_click(), and filter_view_on_ttype_context_click().

00843 {
00844         return seaudit_get_log_types(top->s);
00845 }

apol_vector_t* toplevel_get_log_classes toplevel_t top  ) 
 

Return a vector of strings corresponding to all object classes found within the current log file.

The vector will be sorted alphabetically.

Parameters:
top Toplevel containing seaudit log object.
Returns:
Vector of sorted classes, or NULL if no log is loaded. The caller must call apol_vector_destroy() upon the return value.

Definition at line 847 of file toplevel.c.

References apol_vector_t, toplevel::s, seaudit_get_log_classes(), and toplevel_t.

Referenced by filter_view_on_class_context_click().

00848 {
00849         return seaudit_get_log_classes(top->s);
00850 }

apol_policy_t* toplevel_get_policy toplevel_t top  ) 
 

Return the currently loaded policy.

Parameters:
top Toplevel containing policy.
Returns:
Current policy, or NULL if no policy is loaded yet. Treat this as a const pointer.

Definition at line 852 of file toplevel.c.

References apol_policy_t, toplevel::s, seaudit_get_policy(), and toplevel_t.

Referenced by filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), message_view_popup_menu(), policy_view_display_avrule_results(), policy_view_load_policy_source(), policy_view_on_find_terules_click(), and policy_view_populate_combo_boxes().

00853 {
00854         return seaudit_get_policy(top->s);
00855 }

char* toplevel_get_glade_xml toplevel_t top  ) 
 

Return the filename containing seaudit's glade file.

Parameters:
top Toplevel containing glade XML declarations.
Returns:
Name of the glade file. Do not modify this string.

Definition at line 857 of file toplevel.c.

00858 {
00859         return top->xml_filename;
00860 }

progress_t* toplevel_get_progress toplevel_t top  ) 
 

Return the progress object, so that sub-windows may also show the threaded progress object.

Parameters:
top Toplevel containing progress object.
Returns:
Progress object. Do not free() this pointer.

Definition at line 862 of file toplevel.c.

00863 {
00864         return top->progress;
00865 }

GtkWindow* toplevel_get_window toplevel_t top  ) 
 

Return the main application window.

Sub-windows should be set transient to this window.

Parameters:
top Toplevel containing main window.
Returns:
Main window.

Definition at line 867 of file toplevel.c.

00868 {
00869         return top->w;
00870 }

void toplevel_find_terules toplevel_t top,
seaudit_message_t message
 

(Re)open a dialog that allows the user to search for TE rules in the currently opened policy.

If message is not NULL then set the query's initial parameters to the message's source type, target type, and object class.

Parameters:
top Toplevel containing policy.
message If non-NULL, the initial parameters for query.

Definition at line 872 of file toplevel.c.

References message, policy_view_find_terules(), toplevel::pv, seaudit_message_t, and toplevel_t.

Referenced by message_view_popup_on_find_terules_activate(), toplevel_on_find_terules_activate(), and toplevel_on_find_terules_click().

00873 {
00874         policy_view_find_terules(top->pv, message);
00875 }

void toplevel_ERR toplevel_t top,
const char *  format,
  ...
 

Pop-up an error dialog with a line of text and wait for the user to dismiss the dialog.

Parameters:
top Toplevel window; this message dialog will be centered upon it.
format Format string to print, using syntax of printf(3).

void toplevel_WARN toplevel_t top,
const char *  format,
  ...
 

Pop-up a warning dialog with a line of text and wait for the user to dismiss the dialog.

Parameters:
top Toplevel window; this message dialog will be centered upon it.
format Format string to print, using syntax of printf(3).