summaryrefslogtreecommitdiffstats
path: root/sediff/toplevel.h
diff options
context:
space:
mode:
Diffstat (limited to 'sediff/toplevel.h')
-rw-r--r--sediff/toplevel.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/sediff/toplevel.h b/sediff/toplevel.h
new file mode 100644
index 0000000..14074a7
--- /dev/null
+++ b/sediff/toplevel.h
@@ -0,0 +1,202 @@
+/**
+ * @file
+ * Headers for main toplevel window.
+ *
+ * @author Jeremy A. Mowery jmowery@tresys.com
+ * @author Jason Tang jtang@tresys.com
+ * @author Brandon Whalen bwhalen@tresys.com
+ * @author Randy Wicks rwicks@tresys.com
+ *
+ * Copyright (C) 2005-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
+ */
+
+#ifndef TOPLEVEL_H
+#define TOPLEVEL_H
+
+typedef struct toplevel toplevel_t;
+
+#include "progress.h"
+#include "results.h"
+#include "sediffx.h"
+#include <apol/policy-path.h>
+#include <gtk/gtk.h>
+#include <poldiff/poldiff.h>
+
+/**
+ * Allocate and return an instance of the toplevel window object.
+ * This will create the window, set up the menus and icons, then
+ * display the window.
+ *
+ * @param s Main sediffx object that will control the toplevel.
+ *
+ * @return An initialized toplevel object, or NULL upon error. The
+ * caller must call toplevel_destroy() afterwards.
+ */
+toplevel_t *toplevel_create(sediffx_t * s);
+
+/**
+ * Destroy the toplevel window. This function will recursively
+ * destroy all other windows. This does nothing if the pointer is set
+ * to NULL.
+ *
+ * @param top Reference to a toplevel object. Afterwards the pointer
+ * will be set to NULL.
+ */
+void toplevel_destroy(toplevel_t ** top);
+
+/**
+ * Open the policy files. Upon success destroy the existing policies
+ * and current poldiff objects.
+ *
+ * @param top Toplevel object, used for UI control.
+ * @param orig_path Path to the original policy. This function takes
+ * ownership of this object.
+ * @param mod_path Path to the modified policy. This function takes
+ * ownership of this object.
+ *
+ * @return 0 on successful open, < 0 on error.
+ */
+int toplevel_open_policies(toplevel_t * top, apol_policy_path_t * orig_path, apol_policy_path_t * mod_path);
+
+/**
+ * Run the current poldiff object. Afterwards this function will
+ * notify the results object to update its view.
+ *
+ * @param top Toplevel object whose poldiff to run.
+ */
+void toplevel_run_diff(toplevel_t * top);
+
+/**
+ * Switch to the given policy's source tab, if not already visible,
+ * and then scroll the view to show the given line. Policy line
+ * numbers are zero-indexed.
+ *
+ * @param top Toplevel object containing policy source tabs.
+ * @param which Which policy's source tab to show.
+ * @param line Line to show.
+ */
+void toplevel_show_policy_line(toplevel_t * top, sediffx_policy_e which, unsigned long line);
+
+/**
+ * Enable or disable the toplevel's sort menu. The sort menu should
+ * be enabled only when showing the differences for TE rules;
+ * otherwise it should be disabled.
+ *
+ * @param top Toplevel object containing sort menu.
+ * @param sens New sensitivity for the menu.
+ */
+void toplevel_set_sort_menu_sensitivity(toplevel_t * top, gboolean sens);
+
+/**
+ * Set the current sort menu selection to the given field and
+ * direction.
+ *
+ * @param top Toplevel object containing sort menu.
+ * @param field Sort field to select.
+ * @param dir Sort direction to select.
+ */
+void toplevel_set_sort_menu_selection(toplevel_t * top, results_sort_e field, results_sort_dir_e dir);
+
+/**
+ * Return the filename containing sediffx's glade file.
+ *
+ * @param top Toplevel containing glade XML declarations.
+ *
+ * @return Name of the glade file. Do not modify this string.
+ */
+char *toplevel_get_glade_xml(toplevel_t * top);
+
+/**
+ * Return the current page number for the toplevel main notebook.
+ *
+ * @param top Toplevel to query.
+ *
+ * @return Page number for the currently showing tab.
+ */
+gint toplevel_get_notebook_page(toplevel_t * top);
+
+/**
+ * Return the progress object, so that sub-windows may also show the
+ * threaded progress object.
+ *
+ * @param top Toplevel containing progress object.
+ *
+ * @return Progress object. Do not free() this pointer.
+ */
+progress_t *toplevel_get_progress(toplevel_t * top);
+
+/**
+ * Return the main application window. Sub-windows should be set
+ * transient to this window.
+ *
+ * @param top Toplevel containing main window.
+ *
+ * @return Main window.
+ */
+GtkWindow *toplevel_get_window(toplevel_t * top);
+
+/**
+ * Get the currently showing text view. This depends upon which
+ * toplevel notebook page is showing.
+ *
+ * @param top Toplevel containing text views.
+ *
+ * @return Currently visible text view.
+ */
+GtkTextView *toplevel_get_text_view(toplevel_t * top);
+
+/**
+ * Retrieve the currently active poldiff object. If policies have not
+ * yet been loaded then this returns NULL. Note that the poldiff
+ * object will not be run yet; for that call toplevel_run_diff().
+ *
+ * @param top Toplevel containing poldiff object.
+ *
+ * @return poldiff object, or NULL if none availble or upon error.
+ */
+poldiff_t *toplevel_get_poldiff(toplevel_t * top);
+
+/**
+ * Get the flags that were used the most recently run poldiff.
+ *
+ * @param top Toplevel object to query.
+ *
+ * @return poldiff run flags, or 0 in none set.
+ */
+uint32_t toplevel_get_poldiff_run_flags(toplevel_t * top);
+
+/**
+ * Pop-up an error dialog with a line of text and wait for the user to
+ * dismiss the dialog.
+ *
+ * @param top Toplevel window; this message dialog will be centered
+ * upon it.
+ * @param format Format string to print, using syntax of printf(3).
+ */
+void toplevel_ERR(toplevel_t * top, const char *format, ...) __attribute__ ((format(printf, 2, 3)));
+
+/**
+ * Pop-up a warning dialog with a line of text and wait for the user
+ * to dismiss the dialog.
+ *
+ * @param top Toplevel window; this message dialog will be centered
+ * upon it.
+ * @param format Format string to print, using syntax of printf(3).
+ */
+void toplevel_WARN(toplevel_t * top, const char *format, ...) __attribute__ ((format(printf, 2, 3)));
+
+#endif