[gitg/vala] Added common GitgExt.UIElement interface



commit cfae9d47950f6e1d60edbd105beb1cc0b4dbce1d
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date:   Tue Jul 17 09:47:07 2012 +0200

    Added common GitgExt.UIElement interface
    
    Both the view and the panel now inherit from this interface

 libgitg-ext/Makefile.am              |    1 +
 libgitg-ext/gitg-ext-panel.vala      |   10 +---
 libgitg-ext/gitg-ext-ui-element.vala |   99 ++++++++++++++++++++++++++++++++++
 libgitg-ext/gitg-ext-view.vala       |   45 +---------------
 4 files changed, 102 insertions(+), 53 deletions(-)
---
diff --git a/libgitg-ext/Makefile.am b/libgitg-ext/Makefile.am
index ac75018..bf950d2 100644
--- a/libgitg-ext/Makefile.am
+++ b/libgitg-ext/Makefile.am
@@ -33,6 +33,7 @@ INST_H_FILES =				\
 VALA_FILES =					\
 	gitg-ext-assembly-info.vala		\
 	gitg-ext-application.vala		\
+	gitg-ext-ui-element.vala		\
 	gitg-ext-panel.vala			\
 	gitg-ext-view.vala			\
 	gitg-ext-navigation.vala		\
diff --git a/libgitg-ext/gitg-ext-panel.vala b/libgitg-ext/gitg-ext-panel.vala
index b0f0db8..3fad7f1 100644
--- a/libgitg-ext/gitg-ext-panel.vala
+++ b/libgitg-ext/gitg-ext-panel.vala
@@ -20,7 +20,6 @@
 namespace GitgExt
 {
 
-public interface Panel : Object
 /**
  * Panel interfaces implemented to show additional details of a particular view.
  *
@@ -36,15 +35,8 @@ public interface Panel : Object
  * displayed when the panel is activated.
  *
  */
+public interface Panel : Object, UIElement
 {
-	public abstract Application? application { owned get; construct; }
-
-	public abstract string id { owned get; }
-	public abstract string display_name { owned get; }
-	public abstract Icon? icon { owned get; }
-
-	public abstract bool supported { get; }
-	public abstract Gtk.Widget? widget { owned get; }
 }
 
 }
diff --git a/libgitg-ext/gitg-ext-ui-element.vala b/libgitg-ext/gitg-ext-ui-element.vala
new file mode 100644
index 0000000..a7b5762
--- /dev/null
+++ b/libgitg-ext/gitg-ext-ui-element.vala
@@ -0,0 +1,99 @@
+/*
+ * This file is part of gitg
+ *
+ * Copyright (C) 2012 - Jesse van den Kieboom
+ *
+ * gitg 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.
+ *
+ * gitg 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 gitg. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace GitgExt
+{
+
+/**
+ * gitg UIElement interface.
+ *
+ * The GitgExtView interface can be implemented to provide a main view in
+ * gitg. An example of such views are the builtin Dashboard, History and
+ * Commit views.
+ *
+ * Implementations of the GitgExtView interface will be integrated
+ * automatically in the gitg interface according to the various interface
+ * methods and properties that need to be implemented.
+ *
+ * To provide a default navigation when the view is active, the
+ * #GitgExtView::navigation property should be implemented and should return a
+ * non-null #GitgExtNavigation. This navigation section will always be present
+ * at the top of the navigation menu. Note that you should normally ''not''
+ * export this type to Peas because you will end up having the navigation
+ * shown twice in the UI.
+ */
+public interface UIElement : Object
+{
+	/**
+	 * The main gitg application interface.
+	 *
+	 * This property is a "construct"
+	 * property and will be automatically set when an instance of the ui element
+	 * object is created.
+	 */
+	public abstract GitgExt.Application? application { owned get; construct set; }
+
+	/**
+	 * A unique id for the ui element.
+	 *
+	 * Ids in gitg are normally of the form /org/gnome/gitg/...
+	 */
+	public abstract string id { owned get; }
+
+	/**
+	 * The display name of the ui element.
+	 *
+	 * This should result in a string which can
+	 * be displayed in the gitg UI to identify the element.
+	 */
+	public abstract string display_name { owned get; }
+
+	/**
+	 * The ui element icon.
+	 *
+	 * If provided, the icon will be used in navigation toolbars
+	 * so that users can switch to the ui element.
+	 */
+	public abstract Icon? icon { owned get; }
+
+	/**
+	 * The ui element widget.
+	 *
+	 * This widget will be embedded in the gitg UI when
+	 * the element is activated.
+	 */
+	public abstract Gtk.Widget? widget { owned get; }
+
+	/**
+	 * Check whether the ui element is available in the current application state.
+	 *
+	 * This method is used by gitg to verify whether or not a particular ui
+	 * element is available given the current state of the application.
+	 *
+	 * @return ``true`` if the view is available, ``false`` otherwise.
+	 *
+	 */
+	public abstract bool is_available();
+
+	public abstract bool is_enabled();
+}
+
+}
+
+// ex: ts=4 noet
diff --git a/libgitg-ext/gitg-ext-view.vala b/libgitg-ext/gitg-ext-view.vala
index 5568f5d..0eb59b6 100644
--- a/libgitg-ext/gitg-ext-view.vala
+++ b/libgitg-ext/gitg-ext-view.vala
@@ -61,41 +61,9 @@ public enum ViewAction
  * export this type to Peas because you will end up having the navigation
  * shown twice in the UI.
  */
-public interface View : Object
+public interface View : Object, UIElement
 {
 	/**
-	 * The main gitg application interface. This property is a "construct"
-	 * property and will be automatically set when an instance of the view
-	 * object is created.
-	 */
-	public abstract GitgExt.Application? application { owned get; construct; }
-
-	/**
-	 * A unique id for the view. Ids in gitg are normally of the form
-	 * /org/gnome/gitg/...
-	 */
-	public abstract string id { owned get; }
-
-	/**
-	 * The display name of the view. This should result in a string which can
-	 * be displayed in the gitg UI to identify the view.
-	 */
-	public abstract string display_name { owned get; }
-
-	/**
-	 * The view icon. If provided, the icon will be used in the top navigation
-	 * toolbar so that users can easily switch to the view. If not provider,
-	 * the only way to activate the view will be through the menu.
-	 */
-	public abstract Icon? icon { owned get; }
-
-	/**
-	 * The view widget. This widget will be embedded in the main gitg UI when
-	 * the view is activated.
-	 */
-	public abstract Gtk.Widget? widget { owned get; }
-
-	/**
 	 * Main navigation for the view.
 	 *
 	 * When provided, the corresponding navigation
@@ -104,17 +72,6 @@ public interface View : Object
 	public abstract Navigation? navigation { owned get; }
 
 	/**
-	 * This method is used by gitg to verify whether or not a particular view
-	 * is available in the current state of #GitgExtView::application.
-	 * Implementations usually at least verify whether there is a repository
-	 * currently open, but other constraints for when a view should be
-	 * available can also be implemented.
-	 *
-	 * @return %TRUE if the view is available, %FALSE otherwise.
-	 */
-	public abstract bool is_available();
-
-	/**
 	 * Check whether the view is the default view for a particular action.
 	 *
 	 * Implement this method when a view should be the preferred default view



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]