pager:preview-00.png:widget_preview_pager:100:100 \
separator:preview-00.png:widget_preview_separator:10:80 \
radio:preview-00.png:widget_preview_radio:60:20 \
- toggle:preview-00.png:widget_preview_toggle:150:30
+ toggle:preview-00.png:widget_preview_toggle:150:30 \
+ panel:preview-00.png:widget_preview_panel:150:50
widget-build:
@$(MAKE) -C widgets
*/
/**
+ * @page tutorial_panel Panel example
+ * @dontinclude panel_example_01.c
+ *
+ * In this example will have 3 panels, one for each possible orientation. Two of
+ * our panels will start out hidden, the third will start out expanded. For each
+ * of the panels we will use a label as the content, it's however possible to
+ * have any widget(including containers) as the content of panels.
+ *
+ * We start by doing some setup, code you should be familiar with from other
+ * examples:
+ * @until show(bx)
+ *
+ * And move right to creating our first panel, for this panel we are going to
+ * choose the orientation as TOP and toggle it(tell it to hide itself):
+ * @until pack_end
+ *
+ * For the second panel we choose the RIGHT orientation and explicitly set the
+ * state as hidden:
+ * @until pack_end
+ *
+ * For our third and last panel we won't set the orientation(which means it will
+ * use the default: LEFT):
+ * @until pack_end
+ *
+ * All that is left is running the main loop:
+ * @until ELM_MAIN
+ *
+ * This example will look like this;
+ *
+ * @image html screenshots/panel_example_01.png
+ * @image latex screenshots/panel_example_01.epx width=\textwidth
+ * @note The buttons with arrow allow the user to hide/show the panels.
+ *
+ * @example panel_example_01.c
+ */
+
+/**
* @page bg_example_01_c bg_example_01.c
* @include bg_example_01.c
* @example bg_example_01.c
* @image html img/widget/pager/preview-00.png
* @image latex img/widget/pager/preview-00.eps
* @li @ref Panel
+ *
+ * @image html img/widget/panel/preview-00.png
+ * @image latex img/widget/panel/preview-00.eps
* @li @ref Panes
* @li @ref Photo
* @li @ref Photocam
widget_preview_pager \
widget_preview_separator \
widget_preview_radio \
-widget_preview_toggle
+widget_preview_toggle \
+widget_preview_panel
LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@ @ELEMENTARY_EDBUS_LIBS@ @ELEMENTARY_EFREET_LIBS@ @ELEMENTARY_LIBS@ @EIO_LIBS@ @my_libs@
widget_preview_separator.c \
widget_preview_radio.c \
widget_preview_toggle.c \
+ widget_preview_panel.c \
widget_preview_tmpl_foot.c \
widget_preview_tmpl_head.c
--- /dev/null
+#include "widget_preview_tmpl_head.c"
+
+Evas_Object *o = elm_panel_add(win);
+evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+elm_win_resize_object_add(win, o);
+evas_object_show(o);
+
+Evas_Object *o2 = elm_label_add(win);
+elm_object_text_set(o2, "content");
+evas_object_show(o2);
+
+elm_panel_content_set(o, o2);
+
+
+#include "widget_preview_tmpl_foot.c"
ctxpopup_example_01.c \
pager_example_01.c \
separator_example_01.c \
- radio_example_01.c
+ radio_example_01.c \
+ panel_example_01.c
pkglib_PROGRAMS =
pager_example_01 \
separator_example_01 \
radio_example_01 \
- toggle_example_01
+ toggle_example_01 \
+ panel_example_01
# This variable will hold the list of screenshots that will be made
# by "make screenshots". Each item in the list is of the form:
pager_example_01:pager_example_01.png:0.0 \
separator_example_01:separator_example_01.png:0.0 \
radio_example_01:radio_example_01.png:0.0 \
- toggle_example_01:toggle_example_01.png:0.0
+ toggle_example_01:toggle_example_01.png:0.0 \
+ panel_example_01:panel_example_01.png:0.0
HTML_SS_DIR=$(top_builddir)/doc/html/screenshots
LATEX_SS_DIR=$(top_builddir)/doc/latex/screenshots
--- /dev/null
+//Compile with:
+//gcc -g `pkg-config --cflags --libs elementary` panel_example_01.c -o panel_example_01
+
+#include <Elementary.h>
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+EAPI int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *win, *bg, *bx, *panel, *content;
+
+ win = elm_win_add(NULL, "panel", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Panel");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_FALSE);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ panel = elm_panel_add(win);
+ elm_panel_orient_set(panel, ELM_PANEL_ORIENT_TOP);
+ elm_panel_toggle(panel);
+ evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(panel);
+ elm_box_pack_end(bx, panel);
+
+ content = elm_label_add(win);
+ elm_object_text_set(content, "content");
+ evas_object_show(content);
+ evas_object_size_hint_min_set(content, 100, 30);
+ elm_panel_content_set(panel, content);
+
+ panel = elm_panel_add(win);
+ elm_panel_orient_set(panel, ELM_PANEL_ORIENT_RIGHT);
+ elm_panel_hidden_set(panel, EINA_TRUE);
+ evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(panel);
+ elm_box_pack_end(bx, panel);
+
+ content = elm_label_add(win);
+ elm_object_text_set(content, "content2");
+ evas_object_show(content);
+ evas_object_size_hint_min_set(content, 100, 30);
+ elm_panel_content_set(panel, content);
+
+ panel = elm_panel_add(win);
+ evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(panel);
+ elm_box_pack_end(bx, panel);
+
+ content = elm_label_add(win);
+ elm_object_text_set(content, "content2");
+ evas_object_show(content);
+ evas_object_size_hint_min_set(content, 100, 30);
+ elm_panel_content_set(panel, content);
+
+
+ evas_object_show(win);
+
+ elm_run();
+
+ return 0;
+}
+ELM_MAIN()
EAPI double elm_route_lat_max_get(Evas_Object *obj);
- /* panel */
+ /**
+ * @defgroup Panel Panel
+ *
+ * @image html img/widget/panel/preview-00.png
+ * @image latex img/widget/panel/preview-00.eps
+ *
+ * @brief A panel is a type of animated container that contains subobjects.
+ * It can be expanded or contracted by clicking the button on it's edge.
+ *
+ * Orientations are as follows:
+ * @li ELM_PANEL_ORIENT_TOP
+ * @li ELM_PANEL_ORIENT_LEFT
+ * @li ELM_PANEL_ORIENT_RIGHT
+ *
+ * @ref tutorial_panel shows one way to use this widget.
+ * @{
+ */
typedef enum _Elm_Panel_Orient
{
- ELM_PANEL_ORIENT_TOP,
- ELM_PANEL_ORIENT_BOTTOM,
- ELM_PANEL_ORIENT_LEFT,
- ELM_PANEL_ORIENT_RIGHT,
+ ELM_PANEL_ORIENT_TOP, /**< Panel (dis)appears from the top */
+ ELM_PANEL_ORIENT_BOTTOM, /**< Not implemented */
+ ELM_PANEL_ORIENT_LEFT, /**< Panel (dis)appears from the left */
+ ELM_PANEL_ORIENT_RIGHT, /**< Panel (dis)appears from the right */
} Elm_Panel_Orient;
-
+ /**
+ * @brief Adds a panel object
+ *
+ * @param parent The parent object
+ *
+ * @return The panel object, or NULL on failure
+ */
EAPI Evas_Object *elm_panel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Sets the orientation of the panel
+ *
+ * @param parent The parent object
+ * @param orient The panel orientation. Can be one of the following:
+ * @li ELM_PANEL_ORIENT_TOP
+ * @li ELM_PANEL_ORIENT_LEFT
+ * @li ELM_PANEL_ORIENT_RIGHT
+ *
+ * Sets from where the panel will (dis)appear.
+ */
EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the orientation of the panel.
+ *
+ * @param obj The panel object
+ * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure.
+ */
EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the content of the panel.
+ *
+ * @param obj The panel object
+ * @param content The panel content
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_panel_content_unset() function.
+ */
EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the content of the panel.
+ *
+ * @param obj The panel object
+ * @return The content that is being used
+ *
+ * Return the content object which is set for this widget.
+ *
+ * @see elm_panel_content_set()
+ */
EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Unset the content of the panel.
+ *
+ * @param obj The panel object
+ * @return The content that was being used
+ *
+ * Unparent and return the content object which was set for this widget.
+ *
+ * @see elm_panel_content_set()
+ */
EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the state of the panel.
+ *
+ * @param obj The panel object
+ * @param hidden If true, the panel will run the animation to contract
+ */
EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the state of the panel.
+ *
+ * @param obj The panel object
+ * @param hidden If true, the panel is in the "hide" state
+ */
EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Toggle the hidden state of the panel from code
+ *
+ * @param obj The panel object
+ */
EAPI void elm_panel_toggle(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
/* panes */
/**
#include <Elementary.h>
#include "elm_priv.h"
-/**
- * @defgroup Panel Panel
- *
- * A panel is a type of animated container that contains subobjects. It
- * can be expanded or contracted.
- *
- * Orientations are as follows:
- * ELM_PANEL_ORIENT_TOP
- * ELM_PANEL_ORIENT_BOTTOM
- * ELM_PANEL_ORIENT_LEFT
- * ELM_PANEL_ORIENT_RIGHT
- * NOTE: Only LEFT and RIGHT orientations are implemented.
- *
- * THIS WIDGET IS UNDER CONSTRUCTION!
- */
-
typedef struct _Widget_Data Widget_Data;
struct _Widget_Data
{
return EINA_TRUE;
}
-/**
- * Adds a panel object
- *
- * @param parent The parent object
- *
- * @return The panel object, or NULL on failure
- *
- * @ingroup Panel
- */
EAPI Evas_Object *
elm_panel_add(Evas_Object *parent)
{
return obj;
}
-/**
- * Sets the orientation of the panel
- *
- * @param parent The parent object
- * @param orient The panel orientation. Can be one of the following:
- * ELM_PANEL_ORIENT_TOP
- * ELM_PANEL_ORIENT_BOTTOM
- * ELM_PANEL_ORIENT_LEFT
- * ELM_PANEL_ORIENT_RIGHT
- *
- * NOTE: Only LEFT and RIGHT orientations are implemented.
- *
- * @ingroup Panel
- */
EAPI void
elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient)
{
_sizing_eval(obj);
}
-/**
- * Get the orientation of the panel.
- *
- * @param obj The panel object
- * @return The Elm_Panel_Orient, or ELM_PANEL_ORIENT_LEFT on failure.
- *
- * @ingroup Panel
- */
EAPI Elm_Panel_Orient
elm_panel_orient_get(const Evas_Object *obj)
{
return wd->orient;
}
-/**
- * Set the content of the panel.
- *
- * Once the content object is set, a previously set one will be deleted.
- * If you want to keep that old content object, use the
- * elm_panel_content_unset() function.
- *
- * @param obj The panel object
- * @param content The panel content
- *
- * @ingroup Panel
- */
EAPI void
elm_panel_content_set(Evas_Object *obj, Evas_Object *content)
{
_sizing_eval(obj);
}
-/**
- * Get the content of the panel.
- *
- * Return the content object which is set for this widget.
- *
- * @param obj The panel object
- * @return The content that is being used
- *
- * @ingroup Panel
- */
EAPI Evas_Object *
elm_panel_content_get(const Evas_Object *obj)
{
return wd->content;
}
-/**
- * Unset the content of the panel.
- *
- * Unparent and return the content object which was set for this widget.
- *
- * @param obj The panel object
- * @return The content that was being used
- *
- * @ingroup Panel
- */
EAPI Evas_Object *
elm_panel_content_unset(Evas_Object *obj)
{
return content;
}
-/**
- * Set the state of the panel.
- *
- * @param obj The panel object
- * @param hidden If true, the panel will run the edje animation to contract
- *
- * @ingroup Panel
- */
EAPI void
elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden)
{
_toggle_panel(obj, NULL, "elm,action,panel,toggle", "*");
}
-/**
- * Get the state of the panel.
- *
- * @param obj The panel object
- * @param hidden If true, the panel is in the "hide" state
- *
- * @ingroup Panel
- */
EAPI Eina_Bool
elm_panel_hidden_get(const Evas_Object *obj)
{
return wd->hidden;
}
-/**
- * Toggle the state of the panel from code
- *
- * @param obj The panel object
- *
- * @ingroup Panel
- */
EAPI void
elm_panel_toggle(Evas_Object *obj)
{