[gitg/vala] Added common GitgExt.UIElement interface
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg/vala] Added common GitgExt.UIElement interface
- Date: Tue, 17 Jul 2012 07:57:10 +0000 (UTC)
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]