aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/legacy/Dialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/legacy/Dialog.h')
-rw-r--r--src/interfaces/legacy/Dialog.h426
1 files changed, 426 insertions, 0 deletions
diff --git a/src/interfaces/legacy/Dialog.h b/src/interfaces/legacy/Dialog.h
new file mode 100644
index 0000000000..a06a2abf40
--- /dev/null
+++ b/src/interfaces/legacy/Dialog.h
@@ -0,0 +1,426 @@
+ /*
+ * Copyright (C) 2005-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * 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, 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 XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <vector>
+
+#include "WindowException.h"
+#include "AddonClass.h"
+#include "AddonString.h"
+#include "ApplicationMessenger.h"
+#include "dialogs/GUIDialogProgress.h"
+#include "dialogs/GUIDialogExtendedProgressBar.h"
+#include "Alternative.h"
+
+#define INPUT_ALPHANUM 0
+#define INPUT_NUMERIC 1
+#define INPUT_DATE 2
+#define INPUT_TIME 3
+#define INPUT_IPADDRESS 4
+#define INPUT_PASSWORD 5
+
+#define PASSWORD_VERIFY 1
+#define ALPHANUM_HIDE_INPUT 2
+
+namespace XBMCAddon
+{
+ namespace xbmcgui
+ {
+ /**
+ * Dialog class (Duh!)\n
+ */
+ class Dialog : public AddonClass
+ {
+ public:
+
+ inline Dialog() {}
+ virtual ~Dialog();
+
+ /**
+ * yesno(heading, line1[, line2, line3]) -- Show a dialog 'YES/NO'.\n
+ * \n
+ * heading : string or unicode - dialog heading.\n
+ * line1 : string or unicode - line #1 text.\n
+ * line2 : [opt] string or unicode - line #2 text.\n
+ * line3 : [opt] string or unicode - line #3 text.\n
+ * nolabel : [opt] label to put on the no button.\n
+ * yeslabel : [opt] label to put on the yes button.\n
+ * autoclose : [opt] integer - milliseconds to autoclose dialog. (default=do not autoclose)\n
+ * \n
+ * *Note, Returns True if 'Yes' was pressed, else False.\n
+ * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()\n
+ * - ret = dialog.yesno('XBMC', 'Do you want to exit this script?')n\n
+ */
+ bool yesno(const String& heading, const String& line1,
+ const String& line2 = emptyString,
+ const String& line3 = emptyString,
+ const String& nolabel = emptyString,
+ const String& yeslabel = emptyString,
+ int autoclose = 0) throw (WindowException);
+
+ /**
+ * select(heading, list) -- Show a select dialog.\n
+ * \n
+ * heading : string or unicode - dialog heading.\n
+ * list : string list - list of items.\n
+ * autoclose : [opt] integer - milliseconds to autoclose dialog. (default=do not autoclose)\n
+ * \n
+ * *Note, Returns the position of the highlighted item as an integer.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()\n
+ * - ret = dialog.select('Choose a playlist', ['Playlist #1', 'Playlist #2, 'Playlist #3'])n\n
+ */
+ int select(const String& heading, const std::vector<String>& list, int autoclose=0) throw (WindowException);
+
+ /**
+ * ok(heading, line1[, line2, line3]) -- Show a dialog 'OK'.\n
+ * \n
+ * heading : string or unicode - dialog heading.\n
+ * line1 : string or unicode - line #1 text.\n
+ * line2 : [opt] string or unicode - line #2 text.\n
+ * line3 : [opt] string or unicode - line #3 text.\n
+ * \n
+ * *Note, Returns True if 'Ok' was pressed, else False.\n
+ * *Note: Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()\n
+ * - ok = dialog.ok('XBMC', 'There was an error.')n\n
+ */
+ bool ok(const String& heading, const String& line1,
+ const String& line2 = emptyString,
+ const String& line3 = emptyString) throw (WindowException);
+
+ /**
+ * browse(type, heading, shares[, mask, useThumbs, treatAsFolder, default, enableMultiple]) -- Show a 'Browse' dialog.\n
+ * \n
+ * type : integer - the type of browse dialog.\n
+ * heading : string or unicode - dialog heading.\n
+ * shares : string or unicode - from sources.xml. (i.e. 'myprograms')\n
+ * mask : [opt] string or unicode - '|' separated file mask. (i.e. '.jpg|.png')\n
+ * useThumbs : [opt] boolean - if True autoswitch to Thumb view if files exist.\n
+ * treatAsFolder : [opt] boolean - if True playlists and archives act as folders.\n
+ * default : [opt] string - default path or file.\n
+ *
+ * enableMultiple : [opt] boolean - if True multiple file selection is enabled.
+ *
+ * Types:
+ * - 0 : ShowAndGetDirectory
+ * - 1 : ShowAndGetFile
+ * - 2 : ShowAndGetImage
+ * - 3 : ShowAndGetWriteableDirectory
+ *
+ * *Note, If enableMultiple is False (default): returns filename and/or path as a string\n
+ * to the location of the highlighted item, if user pressed 'Ok' or a masked item\n
+ * was selected. Returns the default value if dialog was canceled.\n
+ * If enableMultiple is True: returns tuple of marked filenames as a strin\n
+ * if user pressed 'Ok' or a masked item was selected. Returns empty tuple if dialog was canceled.\n
+ * \n
+ * If type is 0 or 3 the enableMultiple parameter is ignore\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()\n
+ * - fn = dialog.browse(3, 'XBMC', 'files', '', False, False, False, 'special://masterprofile/script_data/XBMC Lyrics')\n
+ */
+ Alternative<String, std::vector<String> > browse(int type, const String& heading, const String& s_shares,
+ const String& mask = emptyString, bool useThumbs = false,
+ bool treatAsFolder = false, const String& defaultt = emptyString,
+ bool enableMultiple = false) throw (WindowException);
+
+ /**
+ * browse(type, heading, shares[, mask, useThumbs, treatAsFolder, default]) -- Show a 'Browse' dialog.\n
+ * \n
+ * type : integer - the type of browse dialog.\n
+ * heading : string or unicode - dialog heading.\n
+ * shares : string or unicode - from sources.xml. (i.e. 'myprograms')\n
+ * mask : [opt] string or unicode - '|' separated file mask. (i.e. '.jpg|.png')\n
+ * useThumbs : [opt] boolean - if True autoswitch to Thumb view if files exist (default=false).\n
+ * treatAsFolder : [opt] boolean - if True playlists and archives act as folders (default=false).\n
+ * default : [opt] string - default path or file.\n
+ * \n
+ * Types:\n
+ * - 0 : ShowAndGetDirectory
+ * - 1 : ShowAndGetFile
+ * - 2 : ShowAndGetImage
+ * - 3 : ShowAndGetWriteableDirectory
+ * \n
+ * *Note, Returns filename and/or path as a string to the location of the highlighted item,\n
+ * if user pressed 'Ok' or a masked item was selected.\n
+ * Returns the default value if dialog was canceled.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()
+ * - fn = dialog.browse(3, 'XBMC', 'files', '', False, False, 'special://masterprofile/script_data/XBMC Lyrics')
+ */
+ String browseSingle(int type, const String& heading, const String& shares,
+ const String& mask = emptyString, bool useThumbs = false,
+ bool treatAsFolder = false,
+ const String& defaultt = emptyString ) throw (WindowException);
+
+ /**
+ * browse(type, heading, shares[, mask, useThumbs, treatAsFolder, default]) -- Show a 'Browse' dialog.\n
+ * \n
+ * type : integer - the type of browse dialog.\n
+ * heading : string or unicode - dialog heading.\n
+ * shares : string or unicode - from sources.xml. (i.e. 'myprograms')\n
+ * mask : [opt] string or unicode - '|' separated file mask. (i.e. '.jpg|.png')\n
+ * useThumbs : [opt] boolean - if True autoswitch to Thumb view if files exist (default=false).\n
+ * treatAsFolder : [opt] boolean - if True playlists and archives act as folders (default=false).\n
+ * default : [opt] string - default path or file.\n
+ * \n
+ * Types:
+ * - 1 : ShowAndGetFile
+ * - 2 : ShowAndGetImage
+ *
+ * *Note, \n
+ * returns tuple of marked filenames as a string,"\n
+ * if user pressed 'Ok' or a masked item was selected. Returns empty tuple if dialog was canceled.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()
+ * - fn = dialog.browseMultiple(2, 'XBMC', 'files', '', False, False, 'special://masterprofile/script_data/XBMC Lyrics')
+ */
+ std::vector<String> browseMultiple(int type, const String& heading, const String& shares,
+ const String& mask = emptyString, bool useThumbs = false,
+ bool treatAsFolder = false,
+ const String& defaultt = emptyString ) throw (WindowException);
+
+
+ /**
+ * numeric(type, heading[, default]) -- Show a 'Numeric' dialog.\n
+ * \n
+ * type : integer - the type of numeric dialog.\n
+ * heading : string or unicode - dialog heading.\n
+ * default : [opt] string - default value.\n
+ * \n
+ * Types:
+ * - 0 : ShowAndGetNumber (default format: #)
+ * - 1 : ShowAndGetDate (default format: DD/MM/YYYY)
+ * - 2 : ShowAndGetTime (default format: HH:MM)
+ * - 3 : ShowAndGetIPAddress (default format: #.#.#.#)
+ *
+ * *Note, Returns the entered data as a string.\n
+ * Returns the default value if dialog was canceled.\n
+ * \n
+ * example:\n
+ * - dialog = xbmcgui.Dialog()
+ * - d = dialog.numeric(1, 'Enter date of birth')
+ */
+ String numeric(int type, const String& heading, const String& defaultt = emptyString);
+
+ /**
+ * notification(heading, message[, icon, time, sound]) -- Show a Notification alert.\n
+ * \n
+ * heading : string - dialog heading.\n
+ * message : string - dialog message.\n
+ * icon : [opt] string - icon to use. (default xbmcgui.NOTIFICATION_INFO)\n
+ * time : [opt] integer - time in milliseconds (default 5000)\n
+ * sound : [opt] bool - play notification sound (default True)\n
+ * \n
+ * Builtin Icons:\n
+ * - xbmcgui.NOTIFICATION_INFO
+ * - xbmcgui.NOTIFICATION_WARNING
+ * - xbmcgui.NOTIFICATION_ERROR
+ * \n
+ * example:
+ * - dialog = xbmcgui.Dialog()
+ * - dialog.notification('Movie Trailers', 'Finding Nemo download finished.', xbmcgui.NOTIFICATION_INFO, 5000)
+ */
+ void notification(const String& heading, const String& message, const String& icon = emptyString, int time = 0, bool sound = true);
+
+ /**
+ * input(heading[, default, type, option, autoclose]) -- Show an Input dialog.\n
+ *\n
+ * heading : string - dialog heading.\n
+ * default : [opt] string - default value. (default=empty string)\n
+ * type : [opt] integer - the type of keyboard dialog. (default=xbmcgui.INPUT_ALPHANUM)\n
+ * option : [opt] integer - option for the dialog. (see Options below)\n
+ * autoclose : [opt] integer - milliseconds to autoclose dialog. (default=do not autoclose)\n
+ *\n
+ * Types:
+ * - xbmcgui.INPUT_ALPHANUM (standard keyboard)
+ * - xbmcgui.INPUT_NUMERIC (format: #)
+ * - xbmcgui.INPUT_DATE (format: DD/MM/YYYY)
+ * - xbmcgui.INPUT_TIME (format: HH:MM)
+ * - xbmcgui.INPUT_IPADDRESS (format: #.#.#.#)
+ * - xbmcgui.INPUT_PASSWORD (return md5 hash of input, input is masked)
+ *
+ * Options Password Dialog:\n
+ * - xbmcgui.PASSWORD_VERIFY (verifies an existing (default) md5 hashed password)
+ *\n
+ * Options Alphanum Dialog:\n
+ * - xbmcgui.ALPHANUM_HIDE_INPUT (masks input)
+ *\n
+ * *Note, Returns the entered data as a string.\n
+ * Returns an empty string if dialog was canceled.\n
+ *\n
+ * example:
+ * - dialog = xbmcgui.Dialog()
+ * - d = dialog.input('Enter secret code', type=xbmcgui.INPUT_ALPHANUM, option=xbmcgui.ALPHANUM_HIDE_INPUT)n
+ */
+ String input(const String& heading,
+ const String& defaultt = emptyString,
+ int type = INPUT_ALPHANUM,
+ int option = 0,
+ int autoclose = 0) throw (WindowException);
+ };
+
+ /**
+ * DialogProgress class (Duh!)
+ */
+ class DialogProgress : public AddonClass
+ {
+ CGUIDialogProgress* dlg;
+ bool open;
+
+ protected:
+ virtual void deallocating();
+
+ public:
+
+ DialogProgress() : dlg(NULL), open(false) {}
+ virtual ~DialogProgress();
+
+
+ /**
+ * create(heading[, line1, line2, line3]) -- Create and show a progress dialog.\n
+ * \n
+ * heading : string or unicode - dialog heading.\n
+ * line1 : [opt] string or unicode - line #1 text.\n
+ * line2 : [opt] string or unicode - line #2 text.\n
+ * line3 : [opt] string or unicode - line #3 text.\n
+ * \n
+ * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+ * *Note, Use update() to update lines and progressbar.\n
+ * \n
+ * example:
+ * - pDialog = xbmcgui.DialogProgress()
+ * - pDialog.create('XBMC', 'Initializing script...')
+ */
+ void create(const String& heading, const String& line1 = emptyString,
+ const String& line2 = emptyString,
+ const String& line3 = emptyString) throw (WindowException);
+
+ /**
+ * update(percent[, line1, line2, line3]) -- Updates the progress dialog.\n
+ * \n
+ * percent : integer - percent complete. (0:100)\n
+ * line1 : [opt] string or unicode - line #1 text.\n
+ * line2 : [opt] string or unicode - line #2 text.\n
+ * line3 : [opt] string or unicode - line #3 text.\n
+ * \n
+ * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+ * *Note, If percent == 0, the progressbar will be hidden.\n
+ * \n
+ * example:
+ * - pDialog.update(25, 'Importing modules...')
+ */
+ void update(int percent, const String& line1 = emptyString,
+ const String& line2 = emptyString,
+ const String& line3 = emptyString) throw (WindowException);
+
+ /**
+ * close() -- Close the progress dialog.\n
+ * \n
+ * example:
+ * - pDialog.close()
+ */
+ void close();
+
+ /**
+ * iscanceled() -- Returns True if the user pressed cancel.\n
+ * \n
+ * example:
+ * - if (pDialog.iscanceled()): return
+ */
+ bool iscanceled();
+ };
+
+ /**
+ * DialogProgressBG class
+ */
+ class DialogProgressBG : public AddonClass
+ {
+ CGUIDialogExtendedProgressBar* dlg;
+ CGUIDialogProgressBarHandle* handle;
+ bool open;
+
+ protected:
+ virtual void deallocating();
+
+ public:
+
+ DialogProgressBG() : dlg(NULL), handle(NULL), open(false) {}
+ virtual ~DialogProgressBG();
+
+
+ /**
+ * create(heading[, message]) -- Create and show a background progress dialog.\n
+ *
+ * heading : string or unicode - dialog heading.\n
+ * message : [opt] string or unicode - message text.\n
+ *
+ * *Note, 'heading' is used for the dialog's id. Use a unique heading.\n
+ * Use update() to update heading, message and progressbar.\n
+ *
+ * example:
+ * - pDialog = xbmcgui.DialogProgressBG()
+ * - pDialog.create('Movie Trailers', 'Downloading Monsters Inc. ...')
+ */
+ void create(const String& heading, const String& message = emptyString) throw (WindowException);
+
+ /**
+ * update([percent, heading, message]) -- Updates the background progress dialog.
+ *
+ * percent : [opt] integer - percent complete. (0:100)\n
+ * heading : [opt] string or unicode - dialog heading.\n
+ * message : [opt] string or unicode - message text.\n
+ *
+ * *Note, To clear heading or message, you must pass a blank character.\n
+ *
+ * example:
+ * - pDialog.update(25, message='Downloading Finding Nemo ...')
+ */
+ void update(int percent = 0, const String& heading = emptyString, const String& message = emptyString) throw (WindowException);
+
+ /**
+ * close() -- Close the background progress dialog
+ *
+ * example:
+ * - pDialog.close()
+ */
+ void close();
+
+ /**
+ * isFinished() -- Returns True if the background dialog is active.
+ *
+ * example:
+ * - if (pDialog.isFinished()): return
+ */
+ bool isFinished();
+ };
+
+ }
+}