% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[a4paper,11pt]{report}

\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
\definecolor{Black}{rgb}{0.0,0.0,0.0}

\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}

%%  for a long time these were red and blue by default,
%%  now black, but keep variables to overwrite
\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}


\usepackage{fancyvrb}

\usepackage{mathptmx,helvet}
\usepackage[T1]{fontenc}
\usepackage{textcomp}


\usepackage[
            pdftex=true,
            bookmarks=true,        
            a4paper=true,
            pdftitle={Written with GAPDoc},
            pdfcreator={LaTeX with hyperref package / GAPDoc},
            colorlinks=true,
            backref=page,
            breaklinks=true,
            linkcolor=linkColor,
            citecolor=citeColor,
            filecolor=fileColor,
            urlcolor=urlColor,
            pdfpagemode={UseNone}, 
           ]{hyperref}

\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}

% write page numbers to a .pnr log file for online help
\newwrite\pagenrlog
\immediate\openout\pagenrlog =\jobname.pnr
\immediate\write\pagenrlog{PAGENRS := [}
\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
%% were never documented, give conflicts with some additional packages

\newcommand{\GAP}{\textsf{GAP}}

%% nicer description environments, allows long labels
\usepackage{enumitem}
\setdescription{style=nextline}

%% depth of toc
\setcounter{tocdepth}{1}





%% command for ColorPrompt style examples
\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}


\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\mbox{}\vfill

\begin{center}{\maintitlesize \textbf{ Francy \mbox{}}}\\
\vfill

\hypersetup{pdftitle= Francy }
\markright{\scriptsize \mbox{}\hfill  Francy  \hfill\mbox{}}
{\Huge \textbf{ Framework for Interactive Discrete Mathematics \mbox{}}}\\
\vfill

{\Huge  1.2.5 \mbox{}}\\[1cm]
{ 5 September 2022 \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{ Manuel Martins\\
    \mbox{}}}\\
\hypersetup{pdfauthor= Manuel Martins\\
    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Manuel Martins\\
    }  Email: \href{mailto://manuelmachadomartins@gmail.com} {\texttt{manuelmachadomartins@gmail.com}}\\
  Homepage: \href{http://github.com/mcmartins} {\texttt{http://github.com/mcmartins}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Departamento de Ci{\^e}ncias e Tecnologia da Universidade Aberta\\
 Lisboa, Portugal\\
 Faculdade de Ci{\^e}ncias e Tecnologia da Universidade de Coimbra\\
 Coimbra, Portugal\\
 \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
\newpage

\def\contentsname{Contents\logpage{[ 0, 0, 1 ]}}

\tableofcontents
\newpage

  
\chapter{\textcolor{Chapter }{Introduction}}\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X7DFB63A97E67C0A1}{}
{
  
\section{\textcolor{Chapter }{Francy}}\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7CBAC7577E942028}{}
{
  \textsf{Francy} arose from the necessity of having a lightweight framework for building
interactive graphics, generated from GAP, running primarily on the web,
primarily in a \href{https://jupyter.org} {Jupyter} Notebook. An initial attempt to re-use XGAP and port it was made, but the lack
of a standardized data exchange format between GAP and the graphics renderer,
and the simplistic initial requirements of the project were the basis for the
creation of a new GAP package. Take a look at \textsf{Francy} functionality on these \href{https://mybinder.org/v2/gh/gap-packages/francy/master} {Jupyter Notebooks}. }

 
\section{\textcolor{Chapter }{Applications}}\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X7DD7F0847FF2B96C}{}
{
  \textsf{Francy} has potentially many applications and can be used to provide a graphical
representation of data structures, allowing one to navigate through and
explore properties or relations of these structures. In this way, \textsf{Francy} can be used to enrich a learning environment where GAP provides a library of
thousands of functions implementing algebraic algorithms as well as large data
libraries of algebraic objects. \href{https://github.com/gap-packages/FrancyMonoids} {FrancyMonoids} and \href{https://github.com/mcmartins/subgroup-lattice} {SubgroupLattice} are some example packages using \textsf{Francy}. }

 
\section{\textcolor{Chapter }{Functionality}}\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X87F1120883F5B4D0}{}
{
  \textsf{Francy} provides an interface to draw graphics using objects. This interface is based
on simple concepts of drawing and graph theory, allowing the creation of
directed and undirected graphs, trees, line charts, bar charts and scatter
charts. These graphical objects are drawn inside a canvas that includes a
space for menus and to display informative messages. Within the canvas it is
possible to interact with the graphical objects by clicking, selecting,
dragging and zooming. }

 
\section{\textcolor{Chapter }{Installation}}\logpage{[ 1, 4, 0 ]}
\hyperdef{L}{X8360C04082558A12}{}
{
  This package requires the \textsf{GAP} packages \textsf{JupyterKernel} and \textsf{json}, all of which are distributed with \textsf{GAP}. \textsf{Francy} follows a similar installation procedure to \textsf{JupyterKernel}, so it requires \href{https://jupyter.org} {Jupyter} to be installed on your system. Please note, you need to run the installation
commands from the same python version \href{https://jupyter.org} {Jupyter} is installed on. In order to install/update \textsf{Francy}, please run the following command to download the latest version available
from \href{https://pypi.org/} {\texttt{https://pypi.org/}}: 
\begin{Verbatim}[commandchars=!|A,fontsize=\small,frame=single,label=Example]
        mcmartins@local:~$ pip install jupyter_francy -U
      
\end{Verbatim}
 It is necessary to enable \textsf{Francy} on your \href{https://jupyter.org} {Jupyter} Notebook installation: 
\begin{Verbatim}[commandchars=!|A,fontsize=\small,frame=single,label=Example]
        mcmartins@local:~$ jupyter nbextension enable --py --sys-prefix jupyter_francy
      
\end{Verbatim}
 For \href{https://jupyter.org} {Jupyter} Lab, please run: 
\begin{Verbatim}[commandchars=!|A,fontsize=\small,frame=single,label=Example]
        mcmartins@local:~$ jupyter labextension build
      
\end{Verbatim}
 Alternatively, if you want to run \textsf{Francy} only on \href{https://jupyter.org} {Jupyter} Lab, simply execute: 
\begin{Verbatim}[commandchars=!|A,fontsize=\small,frame=single,label=Example]
        mcmartins@local:~$ jupyter labextension install jupyter-francy
      
\end{Verbatim}
 This will load the module from \href{https://npmjs.org} {\texttt{https://npmjs.org}}. This approach should be used if you want to run \textsf{Francy} only on \href{https://jupyter.org} {Jupyter} Lab. }

 
\section{\textcolor{Chapter }{How it works}}\logpage{[ 1, 5, 0 ]}
\hyperdef{L}{X7CA9D73583D1D456}{}
{
  \textsf{Francy} requires a rendering package to display graphics. \textsf{Francy} uses Renderers based on D3.js and Graphviz, for rendering the semantic
representation produced by the GAP package. The renderers can be swithed at
any time using the user interface, by selecting 'Settings {\textgreater}
Renderers' in the main menu. This library is distributed both as a browser
module and as a \href{https://jupyter.org} {Jupyter} extension. The Jupyter extension can be used in \href{https://jupyter.org} {Jupyter} Notebook or \href{https://jupyter.org} {Jupyter} Lab, using the \textsf{JupyterKernel} and the MIME type 'application/vnd.francy+json' to render the document. Please
check the \href{https://gap-packages.github.io/francy/doc/js/doc/index.html} {JavaScript Documentation} for more information. }

 
\section{\textcolor{Chapter }{Publications}}\logpage{[ 1, 6, 0 ]}
\hyperdef{L}{X818CE5447F74E356}{}
{
  \href{https://doi.org/10.1007/978-3-319-96418-8_42} {ICMS 2018} }

 }

     
\chapter{\textcolor{Chapter }{Francy Callbacks}}\label{Chapter_Francy_Callbacks}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X7FD77853879BC3F6}{}
{
  

 \texttt{Callbacks} are objects that hold a function, a list of arguments and a trigger event. \texttt{Callbacks} are used to execute GAP code from a remote client using the \texttt{Trigger} Operation. 

 \texttt{Callbacks} can be added directly to \texttt{Menus} and/or \texttt{Shapes}. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Callbacks_Section_Categories}
\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Callback Categories. 

\subsection{\textcolor{Chapter }{IsCallback (for IsFrancyObject)}}
\logpage{[ 2, 1, 1 ]}\nobreak
\hyperdef{L}{X7961360C802B12AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCallback({\mdseries\slshape arg})\index{IsCallback@\texttt{IsCallback}!for IsFrancyObject}
\label{IsCallback:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Callback} objects. }

 

\subsection{\textcolor{Chapter }{IsRequiredArg (for IsFrancyObject)}}
\logpage{[ 2, 1, 2 ]}\nobreak
\hyperdef{L}{X7B5CD72681DECF6C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsRequiredArg({\mdseries\slshape arg})\index{IsRequiredArg@\texttt{IsRequiredArg}!for IsFrancyObject}
\label{IsRequiredArg:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{RequiredArg} objects. }

 

\subsection{\textcolor{Chapter }{IsArgType (for IsFrancyTypeObject)}}
\logpage{[ 2, 1, 3 ]}\nobreak
\hyperdef{L}{X7B7E0C807948B7AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsArgType({\mdseries\slshape arg})\index{IsArgType@\texttt{IsArgType}!for IsFrancyTypeObject}
\label{IsArgType:for IsFrancyTypeObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{ArgType} objects. }

 

\subsection{\textcolor{Chapter }{IsTriggerType (for IsFrancyTypeObject)}}
\logpage{[ 2, 1, 4 ]}\nobreak
\hyperdef{L}{X8563CE3284411B39}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsTriggerType({\mdseries\slshape arg})\index{IsTriggerType@\texttt{IsTriggerType}!for IsFrancyTypeObject}
\label{IsTriggerType:for IsFrancyTypeObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{TriggerType} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Callbacks_Section_Families}
\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Callback Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Callbacks_Section_Representations}
\logpage{[ 2, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show all Francy Callback Representations. 

\subsection{\textcolor{Chapter }{IsCallbackRep (for IsComponentObjectRep)}}
\logpage{[ 2, 3, 1 ]}\nobreak
\hyperdef{L}{X810BE3BC849642C6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCallbackRep({\mdseries\slshape arg})\index{IsCallbackRep@\texttt{IsCallbackRep}!for IsComponentObjectRep}
\label{IsCallbackRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Callback} internal representation. }

 

\subsection{\textcolor{Chapter }{IsRequiredArgRep (for IsComponentObjectRep)}}
\logpage{[ 2, 3, 2 ]}\nobreak
\hyperdef{L}{X81CE336A8401CCFA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsRequiredArgRep({\mdseries\slshape arg})\index{IsRequiredArgRep@\texttt{IsRequiredArgRep}!for IsComponentObjectRep}
\label{IsRequiredArgRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{RequiredArg} internal representation. }

 

\subsection{\textcolor{Chapter }{IsArgTypeRep (for IsComponentObjectRep)}}
\logpage{[ 2, 3, 3 ]}\nobreak
\hyperdef{L}{X8154ABB67C695006}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsArgTypeRep({\mdseries\slshape arg})\index{IsArgTypeRep@\texttt{IsArgTypeRep}!for IsComponentObjectRep}
\label{IsArgTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{ArgType} internal representation. }

 

\subsection{\textcolor{Chapter }{IsTriggerTypeRep (for IsComponentObjectRep)}}
\logpage{[ 2, 3, 4 ]}\nobreak
\hyperdef{L}{X7D26E6EB7C6CD408}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsTriggerTypeRep({\mdseries\slshape arg})\index{IsTriggerTypeRep@\texttt{IsTriggerTypeRep}!for IsComponentObjectRep}
\label{IsTriggerTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{TriggerType} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Callbacks_Section_Operations}
\logpage{[ 2, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Callback Operations. 

\subsection{\textcolor{Chapter }{Callback (for IsTriggerType, IsFunction, IsList)}}
\logpage{[ 2, 4, 1 ]}\nobreak
\hyperdef{L}{X8039D4AA7A14B983}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Callback({\mdseries\slshape IsTriggerType, IsFunction, IsList(object)})\index{Callback@\texttt{Callback}!for IsTriggerType, IsFunction, IsList}
\label{Callback:for IsTriggerType, IsFunction, IsList}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Callback} 



 Creates a Callback object that holds a function and args to be executed by a
trigger based on a trigger type. 

 \emph{Please note, the Function must Return!} 

 Examples: 

 Create a simple \texttt{Callback} with no arguments: 
\begin{Verbatim}[commandchars=@|A,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>A @gapinput|MyFunction := function() return "Hello World!"; end;A
  @gapprompt|gap>A @gapinput|callback := Callback(MyFunction);A
  @gapprompt|gap>A @gapinput|Id(callback);A
\end{Verbatim}
 

 Create a \texttt{Callback} with one required argument of type string: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MyFunction := function(str) return Concatenation("Hello", " ", str); end;|
  !gapprompt@gap>| !gapinput@callback := Callback(MyFunction);|
  !gapprompt@gap>| !gapinput@arg := RequiredArg(ArgType.STRING, "Your Name");|
  !gapprompt@gap>| !gapinput@Add(callback, arg);|
\end{Verbatim}
 

 Create a \texttt{Callback} with one known argument of type string: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MyFunction := function(args) return args; end;|
  !gapprompt@gap>| !gapinput@callback := Callback(MyFunction, ["Hello World"]);|
\end{Verbatim}
 

 Create a \texttt{Callback} with one known argument and one required argument of type string: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MyFunction := function(a,b) return Concatenation(a, b); end;|
  !gapprompt@gap>| !gapinput@callback := Callback(MyFunction, ["Hello "]);|
  !gapprompt@gap>| !gapinput@arg := RequiredArg(ArgType.STRING, "Your Name");|
  !gapprompt@gap>| !gapinput@Add(callback, arg);|
\end{Verbatim}
 

 Create a \texttt{Callback} with one known argument and one required argument of type string and double
click trigger Type: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MyFunction := function(a,b) return Concatenation(a, b); end;|
  !gapprompt@gap>| !gapinput@callback := Callback(TriggerType.DOUBLE_CLICK, MyFunction, ["Hello "]);|
  !gapprompt@gap>| !gapinput@arg := RequiredArg(ArgType.STRING, "Your Name");|
  !gapprompt@gap>| !gapinput@Add(callback, arg);|
\end{Verbatim}
 

 In order to see the output of the previous examples, we have to simulate the
external call to \texttt{Trigger} operation: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@MyFunction := function(a,b) return Concatenation(a, b); end;|
  !gapprompt@gap>| !gapinput@callback := Callback(TriggerType.DOUBLE_CLICK, MyFunction, ["Hello "]);|
  !gapprompt@gap>| !gapinput@arg := RequiredArg(ArgType.STRING, "Your Name");|
  !gapprompt@gap>| !gapinput@SetTitle(arg, "Enter your name");|
  !gapprompt@gap>| !gapinput@Title(arg);|
  !gapprompt@gap>| !gapinput@Add(callback, arg);|
  !gapprompt@gap>| !gapinput@SetValue(arg, "Manuel"); # simulate the user input|
  !gapprompt@gap>| !gapinput@Value(arg);|
  !gapprompt@gap>| !gapinput@Trigger(GapToJsonString(Sanitize(callback))); # simulate the external trigger|
\end{Verbatim}
 

 Create a Noop Callback, useful for Menu holders, where no function is
required: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@callback := NoopCallback();|
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{NoopCallback}}
\logpage{[ 2, 4, 2 ]}\nobreak
\hyperdef{L}{X79FB842583B96033}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{NoopCallback({\mdseries\slshape })\index{NoopCallback@\texttt{NoopCallback}}
\label{NoopCallback}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Callback} 



 Creates an empty Callback object that does nothing. Useful to create menu
holders. }

 

\subsection{\textcolor{Chapter }{RequiredArg (for IsArgType, IsString)}}
\logpage{[ 2, 4, 3 ]}\nobreak
\hyperdef{L}{X842979BE7C0694A1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{RequiredArg({\mdseries\slshape IsArgType, IsString(title)})\index{RequiredArg@\texttt{RequiredArg}!for IsArgType, IsString}
\label{RequiredArg:for IsArgType, IsString}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{RequiredArg} 



 Creates a \texttt{Callback} \texttt{RequiredArg}. \texttt{RequiredArg} is user input driven and required for the execution of a \texttt{Callback} This value will be provided by the user. }

 

\subsection{\textcolor{Chapter }{Trigger (for IsString)}}
\logpage{[ 2, 4, 4 ]}\nobreak
\hyperdef{L}{X7AF6D2BC85C96A6D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Trigger({\mdseries\slshape IsString(JSON)})\index{Trigger@\texttt{Trigger}!for IsString}
\label{Trigger:for IsString}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
the result of the execution of the \texttt{Callback} defined \texttt{Function} 



 Triggers a callback function in GAP. Gets a JSON String object representation
of the callback to execute. }

 

\subsection{\textcolor{Chapter }{Add (for IsCallback, IsRequiredArg)}}
\logpage{[ 2, 4, 5 ]}\nobreak
\hyperdef{L}{X83FF6BEE7DBC8617}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsCallback[, IsRequiredArg, List(IsRequiredArg)]})\index{Add@\texttt{Add}!for IsCallback, IsRequiredArg}
\label{Add:for IsCallback, IsRequiredArg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Callback} 



 Adds a \texttt{RequiredArg} to a specific \texttt{Callback}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsCallback, IsRequiredArg)}}
\logpage{[ 2, 4, 6 ]}\nobreak
\hyperdef{L}{X7F67A0CE8601BE21}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsCallback[, IsRequiredArg, List(IsRequiredArg)]})\index{Remove@\texttt{Remove}!for IsCallback, IsRequiredArg}
\label{Remove:for IsCallback, IsRequiredArg}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Callback} 



 Removes a \texttt{RequiredArg} from a specific callback. }

 }

 
\section{\textcolor{Chapter }{Globals}}\label{Chapter_Francy_Callbacks_Section_Globals}
\logpage{[ 2, 5, 0 ]}
\hyperdef{L}{X859DA3398653FCC5}{}
{
  In this section we show the Global Callback Francy Records for multi purpose. }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Callbacks_Section_Attributes}
\logpage{[ 2, 6, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show the Francy Callback Attributes 

\subsection{\textcolor{Chapter }{Title (for IsRequiredArg)}}
\logpage{[ 2, 6, 1 ]}\nobreak
\hyperdef{L}{X7A58A55E806E5F68}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsRequiredArg}
\label{Title:for IsRequiredArg}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 A title on a required arg is used to ask the user what is expected from his
input. }

 

\subsection{\textcolor{Chapter }{Title (for IsRequiredArg)}}
\logpage{[ 2, 6, 2 ]}\nobreak
\hyperdef{L}{X7A58A55E806E5F68}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsRequiredArg}
\label{Title:for IsRequiredArg}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsRequiredArg, IsString)}}
\logpage{[ 2, 6, 3 ]}\nobreak
\hyperdef{L}{X7888408386F15D29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsRequiredArg, IsString})\index{SetTitle@\texttt{SetTitle}!for IsRequiredArg, IsString}
\label{SetTitle:for IsRequiredArg, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the title of the required arg. }

 

\subsection{\textcolor{Chapter }{Value (for IsRequiredArg)}}
\logpage{[ 2, 6, 4 ]}\nobreak
\hyperdef{L}{X78733FD481F16F77}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Value({\mdseries\slshape arg})\index{Value@\texttt{Value}!for IsRequiredArg}
\label{Value:for IsRequiredArg}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the value of the object 



 A value on a required arg is the actual input to be passed to gap. These
values are stored as \texttt{String} for convenience, even if the \texttt{ArgType} specified for the \texttt{RequiredArg} is another. Explicit conversion is required within the \texttt{Callback}function. }

 

\subsection{\textcolor{Chapter }{Value (for IsRequiredArg)}}
\logpage{[ 2, 6, 5 ]}\nobreak
\hyperdef{L}{X78733FD481F16F77}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Value({\mdseries\slshape arg1})\index{Value@\texttt{Value}!for IsRequiredArg}
\label{Value:for IsRequiredArg}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetValue (for IsRequiredArg, IsString)}}
\logpage{[ 2, 6, 6 ]}\nobreak
\hyperdef{L}{X7C4F7F027E8AF083}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetValue({\mdseries\slshape IsRequiredArg, IsString})\index{SetValue@\texttt{SetValue}!for IsRequiredArg, IsString}
\label{SetValue:for IsRequiredArg, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the value of the required arg. }

 

\subsection{\textcolor{Chapter }{ConfirmMessage (for IsCallback)}}
\logpage{[ 2, 6, 7 ]}\nobreak
\hyperdef{L}{X87AA56767C7BB01F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ConfirmMessage({\mdseries\slshape arg})\index{ConfirmMessage@\texttt{ConfirmMessage}!for IsCallback}
\label{ConfirmMessage:for IsCallback}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the message oto be shown to the user prior to the callback execution 



 This will display a confirmation message before any callback is executed. }

 

\subsection{\textcolor{Chapter }{ConfirmMessage (for IsCallback)}}
\logpage{[ 2, 6, 8 ]}\nobreak
\hyperdef{L}{X87AA56767C7BB01F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ConfirmMessage({\mdseries\slshape arg1})\index{ConfirmMessage@\texttt{ConfirmMessage}!for IsCallback}
\label{ConfirmMessage:for IsCallback}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetConfirmMessage (for IsCallback, IsString)}}
\logpage{[ 2, 6, 9 ]}\nobreak
\hyperdef{L}{X7F4046A17BBE64F1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetConfirmMessage({\mdseries\slshape IsRequiredArg, IsString})\index{SetConfirmMessage@\texttt{SetConfirmMessage}!for IsCallback, IsString}
\label{SetConfirmMessage:for IsCallback, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the value of the message to display to the user. }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Canvas}}\label{Chapter_Francy_Canvas}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X7BD5B9D67E663019}{}
{
  A \texttt{Canvas} is an area where the graphics representation of Francy live. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Canvas_Section_Categories}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Canvas Categories. 

\subsection{\textcolor{Chapter }{IsCanvas (for IsFrancyObject)}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X8351E5BE7ED0B87E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCanvas({\mdseries\slshape arg})\index{IsCanvas@\texttt{IsCanvas}!for IsFrancyObject}
\label{IsCanvas:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Canvas} objects. }

 

\subsection{\textcolor{Chapter }{IsCanvasDefaults (for IsFrancyDefaultObject)}}
\logpage{[ 3, 1, 2 ]}\nobreak
\hyperdef{L}{X8040FA4D7BFFA02C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCanvasDefaults({\mdseries\slshape arg})\index{IsCanvasDefaults@\texttt{IsCanvasDefaults}!for IsFrancyDefaultObject}
\label{IsCanvasDefaults:for IsFrancyDefaultObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{CanvasDefaults} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Canvas_Section_Families}
\logpage{[ 3, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Canvas Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Canvas_Section_Representations}
\logpage{[ 3, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show all Francy Canvas Representations. 

\subsection{\textcolor{Chapter }{IsCanvasRep (for IsComponentObjectRep)}}
\logpage{[ 3, 3, 1 ]}\nobreak
\hyperdef{L}{X8528307D784BB534}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCanvasRep({\mdseries\slshape arg})\index{IsCanvasRep@\texttt{IsCanvasRep}!for IsComponentObjectRep}
\label{IsCanvasRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Canvas} internal representation. }

 

\subsection{\textcolor{Chapter }{IsCanvasDefaultsRep (for IsComponentObjectRep)}}
\logpage{[ 3, 3, 2 ]}\nobreak
\hyperdef{L}{X84F3F3517F477404}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCanvasDefaultsRep({\mdseries\slshape arg})\index{IsCanvasDefaultsRep@\texttt{IsCanvasDefaultsRep}!for IsComponentObjectRep}
\label{IsCanvasDefaultsRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{CanvasDefaults} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Canvas_Section_Operations}
\logpage{[ 3, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Canvas Operations. 

\subsection{\textcolor{Chapter }{Canvas (for IsString, IsCanvasDefaults)}}
\logpage{[ 3, 4, 1 ]}\nobreak
\hyperdef{L}{X874453DF7EED04FA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Canvas({\mdseries\slshape IsString(title)[, IsCanvasDefaults]})\index{Canvas@\texttt{Canvas}!for IsString, IsCanvasDefaults}
\label{Canvas:for IsString, IsCanvasDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Callback} 



 Canvas represents a base element to draw graphics on. Inspired by the HTML
canvas tag element which is used to draw graphics, in runtime, via JavaScript.
Examples: 

 Create a simple \texttt{Canvas}: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@canvas := Canvas("");|
  !gapprompt@gap>| !gapinput@Id(canvas);|
  !gapprompt@gap>| !gapinput@SetTitle(canvas, "Quaternion Group Subgroup Lattice");|
  !gapprompt@gap>| !gapinput@Title(canvas);|
  !gapprompt@gap>| !gapinput@SetHeight(canvas, 400); # default 600|
  !gapprompt@gap>| !gapinput@Height(canvas);|
  !gapprompt@gap>| !gapinput@SetWidth(canvas, 400); # default 800|
  !gapprompt@gap>| !gapinput@Width(canvas);|
  !gapprompt@gap>| !gapinput@SetZoomToFit(canvas, false); # default true|
  !gapprompt@gap>| !gapinput@ZoomToFit(canvas);|
  !gapprompt@gap>| !gapinput@Draw(canvas);|
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{Add (for IsCanvas, IsFrancyGraph)}}
\logpage{[ 3, 4, 2 ]}\nobreak
\hyperdef{L}{X7FEEC3AC8666481F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsCanvas[, IsFrancyGraph, List(IsFrancyGraph)]})\index{Add@\texttt{Add}!for IsCanvas, IsFrancyGraph}
\label{Add:for IsCanvas, IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Adds a \texttt{FrancyGraph} to a specific \texttt{Canvas}. Well, the api is abstract enough to allow Adding a list of \texttt{IsFrancyGraph} to a canvas, but this results in setting the graph property only to the last \texttt{IsFrancyGraph} in the list. }

 

\subsection{\textcolor{Chapter }{Remove (for IsCanvas, IsFrancyGraph)}}
\logpage{[ 3, 4, 3 ]}\nobreak
\hyperdef{L}{X8090D82580B6CA23}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsCanvas[, IsFrancyGraph, List(IsFrancyGraph)]})\index{Remove@\texttt{Remove}!for IsCanvas, IsFrancyGraph}
\label{Remove:for IsCanvas, IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Removes a \texttt{FrancyGraph} from a \texttt{Canvas}. }

 

\subsection{\textcolor{Chapter }{Add (for IsCanvas, IsChart)}}
\logpage{[ 3, 4, 4 ]}\nobreak
\hyperdef{L}{X8419F6837D7125A3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsCanvas[, IsChart, List(IsChart)]})\index{Add@\texttt{Add}!for IsCanvas, IsChart}
\label{Add:for IsCanvas, IsChart}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Adds a \texttt{Chart} to a specific \texttt{Canvas}. Well, the api is abstract enough to allow Adding a list of \texttt{IsChart} to a canvas, but this results in setting the graph property only to the last \texttt{IsChart} in the list. }

 

\subsection{\textcolor{Chapter }{Remove (for IsCanvas, IsChart)}}
\logpage{[ 3, 4, 5 ]}\nobreak
\hyperdef{L}{X792342FC842ED287}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsCanvas[, IsChart, List(IsChart)]})\index{Remove@\texttt{Remove}!for IsCanvas, IsChart}
\label{Remove:for IsCanvas, IsChart}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Removes a \texttt{Chart} from a \texttt{Canvas}. }

 

\subsection{\textcolor{Chapter }{Add (for IsCanvas, IsMenu)}}
\logpage{[ 3, 4, 6 ]}\nobreak
\hyperdef{L}{X86AE935D7BFF905F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsCanvas[, IsMenu, List(IsMenu)]})\index{Add@\texttt{Add}!for IsCanvas, IsMenu}
\label{Add:for IsCanvas, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Adds a \texttt{Menu} to a specific \texttt{Canvas}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsCanvas, IsMenu)}}
\logpage{[ 3, 4, 7 ]}\nobreak
\hyperdef{L}{X8175A39B7D0A33D5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsCanvas[, IsMenu, List(IsMenu)]})\index{Remove@\texttt{Remove}!for IsCanvas, IsMenu}
\label{Remove:for IsCanvas, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Canvas} 



 Removes a \texttt{Menu} from a \texttt{Canvas}. }

 

\subsection{\textcolor{Chapter }{Add (for IsCanvas, IsFrancyMessage)}}
\logpage{[ 3, 4, 8 ]}\nobreak
\hyperdef{L}{X7F12F02C7D234A85}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsCanvas[, IsFrancyMessage, List(IsFrancyMessage)]})\index{Add@\texttt{Add}!for IsCanvas, IsFrancyMessage}
\label{Add:for IsCanvas, IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{IsCanvas} 



 Adds a \texttt{FrancyMessage} to a specific \texttt{IsCanvas}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsCanvas, IsFrancyMessage)}}
\logpage{[ 3, 4, 9 ]}\nobreak
\hyperdef{L}{X838A3B0C7F66576C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsCanvas[, IsFrancyMessage, List(IsFrancyMessage)]})\index{Remove@\texttt{Remove}!for IsCanvas, IsFrancyMessage}
\label{Remove:for IsCanvas, IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{IsCanvas} 



 Removes a \texttt{FrancyMessage} from a specific \texttt{IsCanvas}. }

 

\subsection{\textcolor{Chapter }{Draw (for IsCanvas)}}
\logpage{[ 3, 4, 10 ]}\nobreak
\hyperdef{L}{X8352EF6583B2A8B6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Draw({\mdseries\slshape IsCanvas})\index{Draw@\texttt{Draw}!for IsCanvas}
\label{Draw:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{rec} with json representation of the canvas 



 Generates the JSON representation of the canvas and children objects }

 

\subsection{\textcolor{Chapter }{DrawSplash (for IsCanvas)}}
\logpage{[ 3, 4, 11 ]}\nobreak
\hyperdef{L}{X7E989A727B18D82A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DrawSplash({\mdseries\slshape IsCanvas})\index{DrawSplash@\texttt{DrawSplash}!for IsCanvas}
\label{DrawSplash:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{rec} with html generated 



 Generates an HTML page and opens it within the default browser of the system }

 }

 
\section{\textcolor{Chapter }{Global}}\label{Chapter_Francy_Canvas_Section_Global}
\logpage{[ 3, 5, 0 ]}
\hyperdef{L}{X8690E870823975F3}{}
{
  In this section we show all Global Francy Canvas Records for multi purpose. }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Canvas_Section_Attributes}
\logpage{[ 3, 6, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show the Francy Attributes 

\subsection{\textcolor{Chapter }{Width (for IsCanvas)}}
\logpage{[ 3, 6, 1 ]}\nobreak
\hyperdef{L}{X7DF1F7F27DBF05DB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Width({\mdseries\slshape arg})\index{Width@\texttt{Width}!for IsCanvas}
\label{Width:for IsCanvas}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsPosInt} 



 The Width of the canvas in pixels }

 

\subsection{\textcolor{Chapter }{Width (for IsCanvas)}}
\logpage{[ 3, 6, 2 ]}\nobreak
\hyperdef{L}{X7DF1F7F27DBF05DB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Width({\mdseries\slshape arg1})\index{Width@\texttt{Width}!for IsCanvas}
\label{Width:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetWidth (for IsCanvas, IsPosInt)}}
\logpage{[ 3, 6, 3 ]}\nobreak
\hyperdef{L}{X82D7219081829CE5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetWidth({\mdseries\slshape IsCanvas, IsPosInt})\index{SetWidth@\texttt{SetWidth}!for IsCanvas, IsPosInt}
\label{SetWidth:for IsCanvas, IsPosInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the Width of the canvas in pixels }

 

\subsection{\textcolor{Chapter }{Height (for IsCanvas)}}
\logpage{[ 3, 6, 4 ]}\nobreak
\hyperdef{L}{X7C8CA0D97DD98ACC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Height({\mdseries\slshape arg})\index{Height@\texttt{Height}!for IsCanvas}
\label{Height:for IsCanvas}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsPosInt} 



 The Height of the canvas in pixels }

 

\subsection{\textcolor{Chapter }{Height (for IsCanvas)}}
\logpage{[ 3, 6, 5 ]}\nobreak
\hyperdef{L}{X7C8CA0D97DD98ACC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Height({\mdseries\slshape arg1})\index{Height@\texttt{Height}!for IsCanvas}
\label{Height:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetHeight (for IsCanvas, IsPosInt)}}
\logpage{[ 3, 6, 6 ]}\nobreak
\hyperdef{L}{X7B08897D7FD3F0F4}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetHeight({\mdseries\slshape IsCanvas, IsPosInt})\index{SetHeight@\texttt{SetHeight}!for IsCanvas, IsPosInt}
\label{SetHeight:for IsCanvas, IsPosInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the Height of the canvas in pixels }

 

\subsection{\textcolor{Chapter }{ZoomToFit (for IsCanvas)}}
\logpage{[ 3, 6, 7 ]}\nobreak
\hyperdef{L}{X78FB8F5B7A5FC80E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ZoomToFit({\mdseries\slshape arg})\index{ZoomToFit@\texttt{ZoomToFit}!for IsCanvas}
\label{ZoomToFit:for IsCanvas}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{ZoomToFit} is a property that sets the zoom to fit behavior on change in the client
implementation. }

 

\subsection{\textcolor{Chapter }{ZoomToFit (for IsCanvas)}}
\logpage{[ 3, 6, 8 ]}\nobreak
\hyperdef{L}{X78FB8F5B7A5FC80E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ZoomToFit({\mdseries\slshape arg1})\index{ZoomToFit@\texttt{ZoomToFit}!for IsCanvas}
\label{ZoomToFit:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetZoomToFit (for IsCanvas, IsBool)}}
\logpage{[ 3, 6, 9 ]}\nobreak
\hyperdef{L}{X7A474051806655AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetZoomToFit({\mdseries\slshape IsCanvas, IsBool})\index{SetZoomToFit@\texttt{SetZoomToFit}!for IsCanvas, IsBool}
\label{SetZoomToFit:for IsCanvas, IsBool}
}\hfill{\scriptsize (operation)}}\\


 \texttt{ZoomToFit} is a property that sets the zoom to fit behavior on change in the client. }

 

\subsection{\textcolor{Chapter }{Title (for IsCanvas)}}
\logpage{[ 3, 6, 10 ]}\nobreak
\hyperdef{L}{X7EFAFBF4833E214B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsCanvas}
\label{Title:for IsCanvas}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 A title on a required arg is used to ask the user what is expected from his
input. }

 

\subsection{\textcolor{Chapter }{Title (for IsCanvas)}}
\logpage{[ 3, 6, 11 ]}\nobreak
\hyperdef{L}{X7EFAFBF4833E214B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsCanvas}
\label{Title:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsCanvas, IsString)}}
\logpage{[ 3, 6, 12 ]}\nobreak
\hyperdef{L}{X85DA7AAC7A47E8B6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsCanvas, IsString})\index{SetTitle@\texttt{SetTitle}!for IsCanvas, IsString}
\label{SetTitle:for IsCanvas, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the title of the required arg. }

 

\subsection{\textcolor{Chapter }{TexTypesetting (for IsCanvas)}}
\logpage{[ 3, 6, 13 ]}\nobreak
\hyperdef{L}{X86B7B5A579F18055}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TexTypesetting({\mdseries\slshape arg})\index{TexTypesetting@\texttt{TexTypesetting}!for IsCanvas}
\label{TexTypesetting:for IsCanvas}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} with the title of the object 



 Enables usage of Tex typestting on the client implementation, if supported. }

 

\subsection{\textcolor{Chapter }{TexTypesetting (for IsCanvas)}}
\logpage{[ 3, 6, 14 ]}\nobreak
\hyperdef{L}{X86B7B5A579F18055}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TexTypesetting({\mdseries\slshape arg1})\index{TexTypesetting@\texttt{TexTypesetting}!for IsCanvas}
\label{TexTypesetting:for IsCanvas}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTexTypesetting (for IsCanvas, IsBool)}}
\logpage{[ 3, 6, 15 ]}\nobreak
\hyperdef{L}{X879D8DDF798C4E23}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTexTypesetting({\mdseries\slshape IsCanvas, IsBool})\index{SetTexTypesetting@\texttt{SetTexTypesetting}!for IsCanvas, IsBool}
\label{SetTexTypesetting:for IsCanvas, IsBool}
}\hfill{\scriptsize (operation)}}\\


 Sets Tex typestting on the canvas objects }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Charts}}\label{Chapter_Francy_Charts}
\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X7D894A1879FA9052}{}
{
  It is possible to build \texttt{Charts} with simple \texttt{Datasets}. 

 Currently, Francy, supports Bar, Line and Scatter Charts. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Charts_Section_Categories}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Chart Categories. 

\subsection{\textcolor{Chapter }{IsChart (for IsFrancyObject)}}
\logpage{[ 4, 1, 1 ]}\nobreak
\hyperdef{L}{X842E94797B06EA05}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChart({\mdseries\slshape arg})\index{IsChart@\texttt{IsChart}!for IsFrancyObject}
\label{IsChart:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Chart} objects. }

 

\subsection{\textcolor{Chapter }{IsChartType (for IsFrancyTypeObject)}}
\logpage{[ 4, 1, 2 ]}\nobreak
\hyperdef{L}{X7883EB6E7996B768}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChartType({\mdseries\slshape arg})\index{IsChartType@\texttt{IsChartType}!for IsFrancyTypeObject}
\label{IsChartType:for IsFrancyTypeObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{ChartType} objects. }

 

\subsection{\textcolor{Chapter }{IsChartDefaults (for IsFrancyDefaultObject)}}
\logpage{[ 4, 1, 3 ]}\nobreak
\hyperdef{L}{X7D1AD55182909B1E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChartDefaults({\mdseries\slshape arg})\index{IsChartDefaults@\texttt{IsChartDefaults}!for IsFrancyDefaultObject}
\label{IsChartDefaults:for IsFrancyDefaultObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{ChartDefaults} objects. }

 

\subsection{\textcolor{Chapter }{IsAxisScaleType (for IsFrancyTypeObject)}}
\logpage{[ 4, 1, 4 ]}\nobreak
\hyperdef{L}{X7D677CC3851D5DB6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsAxisScaleType({\mdseries\slshape arg})\index{IsAxisScaleType@\texttt{IsAxisScaleType}!for IsFrancyTypeObject}
\label{IsAxisScaleType:for IsFrancyTypeObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{AxisScaleType} objects. }

 

\subsection{\textcolor{Chapter }{IsXAxis (for IsFrancyObject)}}
\logpage{[ 4, 1, 5 ]}\nobreak
\hyperdef{L}{X7DF8B33A81C539A6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsXAxis({\mdseries\slshape arg})\index{IsXAxis@\texttt{IsXAxis}!for IsFrancyObject}
\label{IsXAxis:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{XAxis} objects. }

 

\subsection{\textcolor{Chapter }{IsYAxis (for IsFrancyObject)}}
\logpage{[ 4, 1, 6 ]}\nobreak
\hyperdef{L}{X85EAE56881D91F05}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsYAxis({\mdseries\slshape arg})\index{IsYAxis@\texttt{IsYAxis}!for IsFrancyObject}
\label{IsYAxis:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{YAxis} objects. }

 

\subsection{\textcolor{Chapter }{IsDataset (for IsFrancyObject)}}
\logpage{[ 4, 1, 7 ]}\nobreak
\hyperdef{L}{X83443E0080CEBA59}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsDataset({\mdseries\slshape arg})\index{IsDataset@\texttt{IsDataset}!for IsFrancyObject}
\label{IsDataset:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Dataset} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Charts_Section_Families}
\logpage{[ 4, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Chart Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Charts_Section_Representations}
\logpage{[ 4, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show the Francy Chart Representations. 

\subsection{\textcolor{Chapter }{IsChartRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 1 ]}\nobreak
\hyperdef{L}{X8103CF1C80678FAC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChartRep({\mdseries\slshape arg})\index{IsChartRep@\texttt{IsChartRep}!for IsComponentObjectRep}
\label{IsChartRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Chart} internal representation. }

 

\subsection{\textcolor{Chapter }{IsChartDefaultsRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 2 ]}\nobreak
\hyperdef{L}{X7E2CABA77A09F7DC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChartDefaultsRep({\mdseries\slshape arg})\index{IsChartDefaultsRep@\texttt{IsChartDefaultsRep}!for IsComponentObjectRep}
\label{IsChartDefaultsRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{ChartDefaults} internal representation. }

 

\subsection{\textcolor{Chapter }{IsChartTypeRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 3 ]}\nobreak
\hyperdef{L}{X7A1571668258DC2E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsChartTypeRep({\mdseries\slshape arg})\index{IsChartTypeRep@\texttt{IsChartTypeRep}!for IsComponentObjectRep}
\label{IsChartTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{ChartType} internal representation. }

 

\subsection{\textcolor{Chapter }{IsAxisScaleTypeRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 4 ]}\nobreak
\hyperdef{L}{X7C863513870E27E8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsAxisScaleTypeRep({\mdseries\slshape arg})\index{IsAxisScaleTypeRep@\texttt{IsAxisScaleTypeRep}!for IsComponentObjectRep}
\label{IsAxisScaleTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{AxisScaleType} internal representation. }

 

\subsection{\textcolor{Chapter }{IsAxisRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 5 ]}\nobreak
\hyperdef{L}{X79AF56708511A8BB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsAxisRep({\mdseries\slshape arg})\index{IsAxisRep@\texttt{IsAxisRep}!for IsComponentObjectRep}
\label{IsAxisRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{AxisRep} internal representation. }

 

\subsection{\textcolor{Chapter }{IsDatasetRep (for IsComponentObjectRep)}}
\logpage{[ 4, 3, 6 ]}\nobreak
\hyperdef{L}{X8379B4617DD3972B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsDatasetRep({\mdseries\slshape arg})\index{IsDatasetRep@\texttt{IsDatasetRep}!for IsComponentObjectRep}
\label{IsDatasetRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{DatasetRep} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Charts_Section_Operations}
\logpage{[ 4, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Chart Operations. 

\subsection{\textcolor{Chapter }{Chart (for IsChartType, IsChartDefaults)}}
\logpage{[ 4, 4, 1 ]}\nobreak
\hyperdef{L}{X788E9239817A86F9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Chart({\mdseries\slshape IsChartType[, IsChartDefaults]})\index{Chart@\texttt{Chart}!for IsChartType, IsChartDefaults}
\label{Chart:for IsChartType, IsChartDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Chart} 



 Every object to draw will be a subclass of this object. This will allow all
the objects to contain the same base information. 

 Examples: 

 Create a simple \texttt{Chart} of type \texttt{ChartType.BAR}: 
\begin{Verbatim}[commandchars=@|E,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>E @gapinput|chart:=Chart(ChartType.BAR);E
  @gapprompt|gap>E @gapinput|SetAxisXTitle(chart, "X Axis");E
  @gapprompt|gap>E @gapinput|AxisXTitle(chart);E
  @gapprompt|gap>E @gapinput|SetAxisXDomain(chart, ["domain1", "domain2", "domain3", "domain4", "domain5"]); # default []E
  @gapprompt|gap>E @gapinput|AxisXDomain(chart);E
  @gapprompt|gap>E @gapinput|SetAxisYTitle(chart, "Y Axis");E
  @gapprompt|gap>E @gapinput|AxisYTitle(chart);E
  @gapprompt|gap>E @gapinput|data1 := Dataset("data1", [100,20,30,47,90]);E
  @gapprompt|gap>E @gapinput|data2 := Dataset("data2", [51,60,72,38,97]);E
  @gapprompt|gap>E @gapinput|data3 := Dataset("data3", [50,60,70,80,90]);E
  @gapprompt|gap>E @gapinput|Add(chart, [data1, data2, data3]);E
  @gapprompt|gap>E @gapinput|Remove(chart, data1);E
  @gapprompt|gap>E @gapinput|Add(chart, data1);E
  @gapprompt|gap>E @gapinput|Remove(chart, [data2, data3]);E
  @gapprompt|gap>E @gapinput|Length(RecNames(chart!.data)) = 1;E
\end{Verbatim}
 

 Create a simple \texttt{Chart} of type \texttt{ChartType.LINE}: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@chart:=Chart(ChartType.LINE);|
  !gapprompt@gap>| !gapinput@SetAxisXTitle(chart, "X Axis");|
  !gapprompt@gap>| !gapinput@SetAxisYTitle(chart, "Y Axis");|
  !gapprompt@gap>| !gapinput@data1 := Dataset("data1", [100,20,30,47,90]);|
  !gapprompt@gap>| !gapinput@Add(chart, data1);|
\end{Verbatim}
 

 Create a simple \texttt{Chart} of type \texttt{ChartType.SCATTER}: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@chart:=Chart(ChartType.SCATTER);|
  !gapprompt@gap>| !gapinput@SetAxisXTitle(chart, "X Axis");|
  !gapprompt@gap>| !gapinput@SetAxisYTitle(chart, "Y Axis");|
  !gapprompt@gap>| !gapinput@data1 := Dataset("data1", [100,20,30,47,90]);|
  !gapprompt@gap>| !gapinput@Add(chart, data1);|
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{Add (for IsChart, IsDataset)}}
\logpage{[ 4, 4, 2 ]}\nobreak
\hyperdef{L}{X7FF797E479C02620}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsChart[, IsDataset, List(IsDataset)]})\index{Add@\texttt{Add}!for IsChart, IsDataset}
\label{Add:for IsChart, IsDataset}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Chart} 



 Adds a \texttt{Dataset} to a specific \texttt{Chart}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsChart, IsDataset)}}
\logpage{[ 4, 4, 3 ]}\nobreak
\hyperdef{L}{X7DC73B2B86139E4E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsChart[, IsDataset, List(IsDataset)]})\index{Remove@\texttt{Remove}!for IsChart, IsDataset}
\label{Remove:for IsChart, IsDataset}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Chart} 



 Removes a \texttt{Dataset} from a specific \texttt{Chart}. }

 

\subsection{\textcolor{Chapter }{Dataset (for IsString, IsList)}}
\logpage{[ 4, 4, 4 ]}\nobreak
\hyperdef{L}{X821615638734756B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Dataset({\mdseries\slshape IsString(title), IsList(data)})\index{Dataset@\texttt{Dataset}!for IsString, IsList}
\label{Dataset:for IsString, IsList}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Dataset} 



 Creates a dataset. 

 }

 

\subsection{\textcolor{Chapter }{DefaultAxis (for IsChartType)}}
\logpage{[ 4, 4, 5 ]}\nobreak
\hyperdef{L}{X84014BEA7F51EC98}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DefaultAxis({\mdseries\slshape IsChartType})\index{DefaultAxis@\texttt{DefaultAxis}!for IsChartType}
\label{DefaultAxis:for IsChartType}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{rec} 



 Returns the default settings for a \texttt{ChartType} 

 }

 

\subsection{\textcolor{Chapter }{XAxis (for IsAxisScaleType, IsString, IsList)}}
\logpage{[ 4, 4, 6 ]}\nobreak
\hyperdef{L}{X807FBC8A838DE2AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{XAxis({\mdseries\slshape IsAxisScaleType, IsString(title), IsList(domain)})\index{XAxis@\texttt{XAxis}!for IsAxisScaleType, IsString, IsList}
\label{XAxis:for IsAxisScaleType, IsString, IsList}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{XAxis} 



 Creates a XAxis 

 }

 

\subsection{\textcolor{Chapter }{YAxis (for IsAxisScaleType, IsString, IsList)}}
\logpage{[ 4, 4, 7 ]}\nobreak
\hyperdef{L}{X7EFEC58084FD91A6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{YAxis({\mdseries\slshape IsAxisScaleType, IsString(title), IsList(domain)})\index{YAxis@\texttt{YAxis}!for IsAxisScaleType, IsString, IsList}
\label{YAxis:for IsAxisScaleType, IsString, IsList}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{YAxis} 



 Creates a YAxis 

 }

 }

 
\section{\textcolor{Chapter }{Global}}\label{Chapter_Francy_Charts_Section_Global}
\logpage{[ 4, 5, 0 ]}
\hyperdef{L}{X8690E870823975F3}{}
{
  In this section we show all Global Chart Francy Records for multi purpose. }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Charts_Section_Attributes}
\logpage{[ 4, 6, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show all Francy Attributes 

\subsection{\textcolor{Chapter }{ShowLegend (for IsChart)}}
\logpage{[ 4, 6, 1 ]}\nobreak
\hyperdef{L}{X86A952337E156058}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ShowLegend({\mdseries\slshape arg})\index{ShowLegend@\texttt{ShowLegend}!for IsChart}
\label{ShowLegend:for IsChart}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{ShowLegend} is a property that enables or disables the legend in the client
implementation. }

 

\subsection{\textcolor{Chapter }{ShowLegend (for IsChart)}}
\logpage{[ 4, 6, 2 ]}\nobreak
\hyperdef{L}{X86A952337E156058}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ShowLegend({\mdseries\slshape arg1})\index{ShowLegend@\texttt{ShowLegend}!for IsChart}
\label{ShowLegend:for IsChart}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetShowLegend (for IsChart, IsBool)}}
\logpage{[ 4, 6, 3 ]}\nobreak
\hyperdef{L}{X7F755201834DB9A6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetShowLegend({\mdseries\slshape IsChart, IsBool})\index{SetShowLegend@\texttt{SetShowLegend}!for IsChart, IsBool}
\label{SetShowLegend:for IsChart, IsBool}
}\hfill{\scriptsize (operation)}}\\


 \texttt{ShowLegend} is a property that enables or disables the legend in the client
implementation. }

 

\subsection{\textcolor{Chapter }{AxisXTitle (for IsChart)}}
\logpage{[ 4, 6, 4 ]}\nobreak
\hyperdef{L}{X79F825427AF32645}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisXTitle({\mdseries\slshape arg})\index{AxisXTitle@\texttt{AxisXTitle}!for IsChart}
\label{AxisXTitle:for IsChart}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 This title is used to display the X Axis Title in the client implementation. }

 

\subsection{\textcolor{Chapter }{AxisXTitle (for IsChart)}}
\logpage{[ 4, 6, 5 ]}\nobreak
\hyperdef{L}{X79F825427AF32645}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisXTitle({\mdseries\slshape arg1})\index{AxisXTitle@\texttt{AxisXTitle}!for IsChart}
\label{AxisXTitle:for IsChart}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetAxisXTitle (for IsChart, IsString)}}
\logpage{[ 4, 6, 6 ]}\nobreak
\hyperdef{L}{X799344B184169C7A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetAxisXTitle({\mdseries\slshape IsChart, IsString})\index{SetAxisXTitle@\texttt{SetAxisXTitle}!for IsChart, IsString}
\label{SetAxisXTitle:for IsChart, IsString}
}\hfill{\scriptsize (operation)}}\\


 This title is used to display the X Axis Title in the client implementation. }

 

\subsection{\textcolor{Chapter }{AxisYTitle (for IsChart)}}
\logpage{[ 4, 6, 7 ]}\nobreak
\hyperdef{L}{X870D0E2C792524DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisYTitle({\mdseries\slshape arg})\index{AxisYTitle@\texttt{AxisYTitle}!for IsChart}
\label{AxisYTitle:for IsChart}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 This title is used to display the Y Axis Title in the client implementation. }

 

\subsection{\textcolor{Chapter }{AxisYTitle (for IsChart)}}
\logpage{[ 4, 6, 8 ]}\nobreak
\hyperdef{L}{X870D0E2C792524DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisYTitle({\mdseries\slshape arg1})\index{AxisYTitle@\texttt{AxisYTitle}!for IsChart}
\label{AxisYTitle:for IsChart}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetAxisYTitle (for IsChart, IsString)}}
\logpage{[ 4, 6, 9 ]}\nobreak
\hyperdef{L}{X7F7B850578DC3C73}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetAxisYTitle({\mdseries\slshape IsChart, IsString})\index{SetAxisYTitle@\texttt{SetAxisYTitle}!for IsChart, IsString}
\label{SetAxisYTitle:for IsChart, IsString}
}\hfill{\scriptsize (operation)}}\\


 This title is used to display the Y Axis Title in the client implementation. }

 

\subsection{\textcolor{Chapter }{AxisXDomain (for IsChart)}}
\logpage{[ 4, 6, 10 ]}\nobreak
\hyperdef{L}{X7A66A1197B986866}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisXDomain({\mdseries\slshape arg})\index{AxisXDomain@\texttt{AxisXDomain}!for IsChart}
\label{AxisXDomain:for IsChart}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsList} 



 This is the domain of the X Axis values in the client implementation. }

 

\subsection{\textcolor{Chapter }{AxisXDomain (for IsChart)}}
\logpage{[ 4, 6, 11 ]}\nobreak
\hyperdef{L}{X7A66A1197B986866}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AxisXDomain({\mdseries\slshape arg1})\index{AxisXDomain@\texttt{AxisXDomain}!for IsChart}
\label{AxisXDomain:for IsChart}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetAxisXDomain (for IsChart, IsList)}}
\logpage{[ 4, 6, 12 ]}\nobreak
\hyperdef{L}{X7A7FCC2D868792E1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetAxisXDomain({\mdseries\slshape IsList, IsList})\index{SetAxisXDomain@\texttt{SetAxisXDomain}!for IsChart, IsList}
\label{SetAxisXDomain:for IsChart, IsList}
}\hfill{\scriptsize (operation)}}\\


 This is the domain of the X Axis values in the client implementation. }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Core}}\label{Chapter_Francy_Core}
\logpage{[ 5, 0, 0 ]}
\hyperdef{L}{X86477B3A7A51FF2F}{}
{
  

 Francy is responsible for generating JSON metadata which allows external tools
/ libraries / frameworks to add a visual representation. This JSON
representation defines the contract between this package (server) and a GUI
framework (client), this enables complete SoC (Separation of Concerns). Francy
can be used to provide a graphical interactive environment on existing GAP
packages. 

 A JSON schema is present and can be used to produce clients for this package. \emph{See schema/francy.json} 

 To map required / optional attributes from the schema into GAP code, the
implementation follows the following criteria: 
\begin{itemize}
\item  Object creation requests mandatory attributes, i.e. required with no default
value, e.g. canvas:=Canvas("Title") 
\item  Object creation accepts an object of defaults, i.e. default values for
mandatory fields but that might repeat througout the creation of multiple
similar objects, e.g. defaults:=DefaultCanvas; defaults!.zoomToFit:=false;
canvas:=Canvas("Title",defaults); Where DefaultCanvas contains defaults for
width (800) and height (600) 
\item  Attributes associated with the object that can be set, .i.e. optional with no
defaults, e.g. canvas:=Canvas("Title"); SetTexTypesetting(canvas,true); 
\end{itemize}
 The API follows a common convention and adding objects to other objects is
done using Add(objectHolder,object) 

 Although Francy has the concept of a \texttt{Graph}, it does not implement any Mathematics Graphs Theory. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Core_Section_Categories}
\logpage{[ 5, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Core Categories. 

\subsection{\textcolor{Chapter }{IsFrancyObject (for IsObject)}}
\logpage{[ 5, 1, 1 ]}\nobreak
\hyperdef{L}{X847E2E8B80386B5A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyObject({\mdseries\slshape arg})\index{IsFrancyObject@\texttt{IsFrancyObject}!for IsObject}
\label{IsFrancyObject:for IsObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies all \texttt{Objects} in Francy. }

 

\subsection{\textcolor{Chapter }{IsFrancyDefaultObject (for IsObject)}}
\logpage{[ 5, 1, 2 ]}\nobreak
\hyperdef{L}{X8223C52A839E3265}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyDefaultObject({\mdseries\slshape arg})\index{IsFrancyDefaultObject@\texttt{IsFrancyDefaultObject}!for IsObject}
\label{IsFrancyDefaultObject:for IsObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies all Default records in Francy. }

 

\subsection{\textcolor{Chapter }{IsFrancyTypeObject (for IsObject)}}
\logpage{[ 5, 1, 3 ]}\nobreak
\hyperdef{L}{X7F1E4EE7848C23E4}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyTypeObject({\mdseries\slshape arg})\index{IsFrancyTypeObject@\texttt{IsFrancyTypeObject}!for IsObject}
\label{IsFrancyTypeObject:for IsObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies all Type records in Francy. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Core_Section_Families}
\logpage{[ 5, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Core Families. }

 
\section{\textcolor{Chapter }{Global}}\label{Chapter_Francy_Core_Section_Global}
\logpage{[ 5, 3, 0 ]}
\hyperdef{L}{X8690E870823975F3}{}
{
  In this section we show all Francy Core Types }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Core_Section_Attributes}
\logpage{[ 5, 4, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show all Francy Core Attributes 

\subsection{\textcolor{Chapter }{FrancyId (for IsFrancyObject)}}
\logpage{[ 5, 4, 1 ]}\nobreak
\hyperdef{L}{X7D25B5408731F6F3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FrancyId({\mdseries\slshape arg})\index{FrancyId@\texttt{FrancyId}!for IsFrancyObject}
\label{FrancyId:for IsFrancyObject}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the id of the object 



 All Objects created in Francy have a generated identifier. }

 

\subsection{\textcolor{Chapter }{FrancyId (for IsFrancyObject)}}
\logpage{[ 5, 4, 2 ]}\nobreak
\hyperdef{L}{X7D25B5408731F6F3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FrancyId({\mdseries\slshape arg1})\index{FrancyId@\texttt{FrancyId}!for IsFrancyObject}
\label{FrancyId:for IsFrancyObject}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the id of the object 



 Prints the object unique identifier. }

 

\subsection{\textcolor{Chapter }{SetFrancyId (for IsFrancyObject, IsString)}}
\logpage{[ 5, 4, 3 ]}\nobreak
\hyperdef{L}{X87C8E31387383A61}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetFrancyId({\mdseries\slshape o, s})\index{SetFrancyId@\texttt{SetFrancyId}!for IsFrancyObject, IsString}
\label{SetFrancyId:for IsFrancyObject, IsString}
}\hfill{\scriptsize (operation)}}\\


 Use with care! Changing the unique ID might be useful in certain cases, but
bare in mind it might cause unexpected behavior if you're not sure about! }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Graphs}}\label{Chapter_Francy_Graphs}
\logpage{[ 6, 0, 0 ]}
\hyperdef{L}{X78CA6E5887373DA8}{}
{
  It is possible to build \texttt{Graphs}, direct or indirect. 

 Please see examples section. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Graphs_Section_Categories}
\logpage{[ 6, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Graph Categories. 

\subsection{\textcolor{Chapter }{IsFrancyGraph (for IsFrancyObject)}}
\logpage{[ 6, 1, 1 ]}\nobreak
\hyperdef{L}{X7806CCD67F4EB260}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraph({\mdseries\slshape arg})\index{IsFrancyGraph@\texttt{IsFrancyGraph}!for IsFrancyObject}
\label{IsFrancyGraph:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Graph} objects. }

 

\subsection{\textcolor{Chapter }{IsFrancyGraphType (for IsFrancyObject)}}
\logpage{[ 6, 1, 2 ]}\nobreak
\hyperdef{L}{X87CD35308569DAE1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraphType({\mdseries\slshape arg})\index{IsFrancyGraphType@\texttt{IsFrancyGraphType}!for IsFrancyObject}
\label{IsFrancyGraphType:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{GraphType} objects. }

 

\subsection{\textcolor{Chapter }{IsFrancyGraphDefaults (for IsFrancyDefaultObject)}}
\logpage{[ 6, 1, 3 ]}\nobreak
\hyperdef{L}{X7D895F0886106B52}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraphDefaults({\mdseries\slshape arg})\index{IsFrancyGraphDefaults@\texttt{IsFrancyGraphDefaults}!for IsFrancyDefaultObject}
\label{IsFrancyGraphDefaults:for IsFrancyDefaultObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{GraphDefaults} objects. }

 

\subsection{\textcolor{Chapter }{IsShape (for IsFrancyObject)}}
\logpage{[ 6, 1, 4 ]}\nobreak
\hyperdef{L}{X85CE7A9B82029355}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShape({\mdseries\slshape arg})\index{IsShape@\texttt{IsShape}!for IsFrancyObject}
\label{IsShape:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Shape} objects. }

 

\subsection{\textcolor{Chapter }{IsShapeType (for IsFrancyObject)}}
\logpage{[ 6, 1, 5 ]}\nobreak
\hyperdef{L}{X8424B5618458E11A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShapeType({\mdseries\slshape arg})\index{IsShapeType@\texttt{IsShapeType}!for IsFrancyObject}
\label{IsShapeType:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{ShapeType} objects. }

 

\subsection{\textcolor{Chapter }{IsShapeDefaults (for IsFrancyDefaultObject)}}
\logpage{[ 6, 1, 6 ]}\nobreak
\hyperdef{L}{X793EF06E7B94E24E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShapeDefaults({\mdseries\slshape arg})\index{IsShapeDefaults@\texttt{IsShapeDefaults}!for IsFrancyDefaultObject}
\label{IsShapeDefaults:for IsFrancyDefaultObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{ShapeDefaults} objects. }

 

\subsection{\textcolor{Chapter }{IsLink (for IsFrancyObject)}}
\logpage{[ 6, 1, 7 ]}\nobreak
\hyperdef{L}{X8535990579CB5DAC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsLink({\mdseries\slshape arg})\index{IsLink@\texttt{IsLink}!for IsFrancyObject}
\label{IsLink:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Link} objects. }

 

\subsection{\textcolor{Chapter }{IsLinkDefaults (for IsFrancyDefaultObject)}}
\logpage{[ 6, 1, 8 ]}\nobreak
\hyperdef{L}{X849B921B7F2F5D3C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsLinkDefaults({\mdseries\slshape arg})\index{IsLinkDefaults@\texttt{IsLinkDefaults}!for IsFrancyDefaultObject}
\label{IsLinkDefaults:for IsFrancyDefaultObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{LinkDefaults} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Graphs_Section_Families}
\logpage{[ 6, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Graph Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Graphs_Section_Representations}
\logpage{[ 6, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show all Francy Graph Representations. 

\subsection{\textcolor{Chapter }{IsFrancyGraphRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 1 ]}\nobreak
\hyperdef{L}{X7FBB2ED67A91B1F6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraphRep({\mdseries\slshape arg})\index{IsFrancyGraphRep@\texttt{IsFrancyGraphRep}!for IsComponentObjectRep}
\label{IsFrancyGraphRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Graph} internal representation. }

 

\subsection{\textcolor{Chapter }{IsFrancyGraphDefaultsRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 2 ]}\nobreak
\hyperdef{L}{X7998221386C4DBA0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraphDefaultsRep({\mdseries\slshape arg})\index{IsFrancyGraphDefaultsRep@\texttt{IsFrancyGraphDefaultsRep}!for IsComponentObjectRep}
\label{IsFrancyGraphDefaultsRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{GraphDefaults} internal representation. }

 

\subsection{\textcolor{Chapter }{IsFrancyGraphTypeRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 3 ]}\nobreak
\hyperdef{L}{X7F60FE3F8620C142}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyGraphTypeRep({\mdseries\slshape arg})\index{IsFrancyGraphTypeRep@\texttt{IsFrancyGraphTypeRep}!for IsComponentObjectRep}
\label{IsFrancyGraphTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{GraphType} internal representation. }

 

\subsection{\textcolor{Chapter }{IsShapeRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 4 ]}\nobreak
\hyperdef{L}{X854F96047963F6FC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShapeRep({\mdseries\slshape arg})\index{IsShapeRep@\texttt{IsShapeRep}!for IsComponentObjectRep}
\label{IsShapeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Shape} internal representation. }

 

\subsection{\textcolor{Chapter }{IsShapeDefaultsRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 5 ]}\nobreak
\hyperdef{L}{X79A97344830D8E8C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShapeDefaultsRep({\mdseries\slshape arg})\index{IsShapeDefaultsRep@\texttt{IsShapeDefaultsRep}!for IsComponentObjectRep}
\label{IsShapeDefaultsRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{ShapeDeafults} internal representation. }

 

\subsection{\textcolor{Chapter }{IsShapeTypeRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 6 ]}\nobreak
\hyperdef{L}{X865567BF7B5CA57E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsShapeTypeRep({\mdseries\slshape arg})\index{IsShapeTypeRep@\texttt{IsShapeTypeRep}!for IsComponentObjectRep}
\label{IsShapeTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{ShapeType} internal representation. }

 

\subsection{\textcolor{Chapter }{IsLinkRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 7 ]}\nobreak
\hyperdef{L}{X7841EC887ECC274F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsLinkRep({\mdseries\slshape arg})\index{IsLinkRep@\texttt{IsLinkRep}!for IsComponentObjectRep}
\label{IsLinkRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Link} internal representation. }

 

\subsection{\textcolor{Chapter }{IsLinkDefaultsRep (for IsComponentObjectRep)}}
\logpage{[ 6, 3, 8 ]}\nobreak
\hyperdef{L}{X854E4BD67B712165}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsLinkDefaultsRep({\mdseries\slshape arg})\index{IsLinkDefaultsRep@\texttt{IsLinkDefaultsRep}!for IsComponentObjectRep}
\label{IsLinkDefaultsRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{LinkDeafults} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Graphs_Section_Operations}
\logpage{[ 6, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Graph Operations. 

\subsection{\textcolor{Chapter }{Graph (for IsFrancyGraphType, IsFrancyGraphDefaults)}}
\logpage{[ 6, 4, 1 ]}\nobreak
\hyperdef{L}{X87510C7F82CAE1B2}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Graph({\mdseries\slshape IsFrancyGraphType[, IsFrancyGraphDefaults]})\index{Graph@\texttt{Graph}!for IsFrancyGraphType, IsFrancyGraphDefaults}
\label{Graph:for IsFrancyGraphType, IsFrancyGraphDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Graph} 



 Every object to draw will be a subclass of this object. This will allow all
the objects to contain the same base information. 

 Examples: 

 Create a simple \texttt{Graph} of type \texttt{GraphType.DIRECTED} and simple \texttt{Shapes} connected with \texttt{Links}: 
\begin{Verbatim}[commandchars=@|B,fontsize=\small,frame=single,label=Example]
  @gapprompt|gap>B @gapinput|graph := Graph(GraphType.DIRECTED);B
  @gapprompt|gap>B @gapinput|SetSimulation(graph, false);B
  @gapprompt|gap>B @gapinput|shape1 := Shape(ShapeType.SQUARE);B
  @gapprompt|gap>B @gapinput|shape1!.layer := 1;B
  @gapprompt|gap>B @gapinput|shape2 := Shape(ShapeType.TRIANGLE);B
  @gapprompt|gap>B @gapinput|shape2!.layer := 3;B
  @gapprompt|gap>B @gapinput|link := Link(shape1, shape2);B
  @gapprompt|gap>B @gapinput|Add(graph, link);B
  @gapprompt|gap>B @gapinput|Add(graph, [shape1, shape2]);B
\end{Verbatim}
 

 Create a simple \texttt{Graph} of type \texttt{GraphType.UNDIRECTED} and a simple \texttt{Shape} with a \texttt{TriggerEvent.RIGHT{\textunderscore}CLICK} \texttt{Callback}: 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@graph := Graph(GraphType.UNDIRECTED);|
  !gapprompt@gap>| !gapinput@shape := Shape(ShapeType.SQUARE);|
  !gapprompt@gap>| !gapinput@MyFunction := function() Add(graph, Shape(ShapeType.Circle)); return graph; end;|
  !gapprompt@gap>| !gapinput@callback := Callback(TriggerType.RIGHT_CLICK, MyFunction);|
  !gapprompt@gap>| !gapinput@Add(shape, callback);|
  !gapprompt@gap>| !gapinput@Add(graph, shape);|
\end{Verbatim}
 

 }

 

\subsection{\textcolor{Chapter }{UnsetNodes (for IsFrancyGraph)}}
\logpage{[ 6, 4, 2 ]}\nobreak
\hyperdef{L}{X7A5B92FD8060E2E8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{UnsetNodes({\mdseries\slshape arg})\index{UnsetNodes@\texttt{UnsetNodes}!for IsFrancyGraph}
\label{UnsetNodes:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\


 Removes all nodes from gaph }

 

\subsection{\textcolor{Chapter }{UnsetLinks (for IsFrancyGraph)}}
\logpage{[ 6, 4, 3 ]}\nobreak
\hyperdef{L}{X7E210E5D871147DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{UnsetLinks({\mdseries\slshape arg})\index{UnsetLinks@\texttt{UnsetLinks}!for IsFrancyGraph}
\label{UnsetLinks:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\


 Removes all nodes from gaph }

 

\subsection{\textcolor{Chapter }{Add (for IsFrancyGraph, IsLink)}}
\logpage{[ 6, 4, 4 ]}\nobreak
\hyperdef{L}{X7ABC7BC987B81777}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsFrancyGraph[, IsLink, List(IsLink)]})\index{Add@\texttt{Add}!for IsFrancyGraph, IsLink}
\label{Add:for IsFrancyGraph, IsLink}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Graph} 



 Add \texttt{IsLink} to a specific \texttt{Graph}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsFrancyGraph, IsLink)}}
\logpage{[ 6, 4, 5 ]}\nobreak
\hyperdef{L}{X7978AEF88748A068}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsFrancyGraph[, IsLink, List(IsLink)]})\index{Remove@\texttt{Remove}!for IsFrancyGraph, IsLink}
\label{Remove:for IsFrancyGraph, IsLink}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Graph} 



 Remove \texttt{IsLink} from a specific \texttt{Graph}. }

 

\subsection{\textcolor{Chapter }{Add (for IsFrancyGraph, IsShape)}}
\logpage{[ 6, 4, 6 ]}\nobreak
\hyperdef{L}{X7A2C8F337BB5026D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsFrancyGraph[, IsShape, List(IsShape)]})\index{Add@\texttt{Add}!for IsFrancyGraph, IsShape}
\label{Add:for IsFrancyGraph, IsShape}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Graph} 



 Add \texttt{IsShape} to a specific \texttt{Graph}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsFrancyGraph, IsShape)}}
\logpage{[ 6, 4, 7 ]}\nobreak
\hyperdef{L}{X821273BA7F4DA924}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsFrancyGraph[, IsShape, List(IsShape)]})\index{Remove@\texttt{Remove}!for IsFrancyGraph, IsShape}
\label{Remove:for IsFrancyGraph, IsShape}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Graph} 



 Remove \texttt{IsShape} from a specific \texttt{Graph}. }

 

\subsection{\textcolor{Chapter }{Shape (for IsShapeType, IsString, IsShapeDefaults)}}
\logpage{[ 6, 4, 8 ]}\nobreak
\hyperdef{L}{X7D357B107D4949D1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Shape({\mdseries\slshape IsShapeType[, IsString(title), IsShapeDefaults]})\index{Shape@\texttt{Shape}!for IsShapeType, IsString, IsShapeDefaults}
\label{Shape:for IsShapeType, IsString, IsShapeDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Every object to draw will be a subclass of this object. This will allow all
the objects to contain the same base information. 

 }

 

\subsection{\textcolor{Chapter }{GetShape (for IsFrancyGraph, IsString)}}
\logpage{[ 6, 4, 9 ]}\nobreak
\hyperdef{L}{X83660FEB862437FB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GetShape({\mdseries\slshape IsFrancyGraph, IsString})\index{GetShape@\texttt{GetShape}!for IsFrancyGraph, IsString}
\label{GetShape:for IsFrancyGraph, IsString}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Gets a \texttt{Shape} node from a graph by ID. }

 

\subsection{\textcolor{Chapter }{GetShapes (for IsFrancyGraph)}}
\logpage{[ 6, 4, 10 ]}\nobreak
\hyperdef{L}{X7C4C5CDB87B3749B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GetShapes({\mdseries\slshape IsFrancyGraph, IsString})\index{GetShapes@\texttt{GetShapes}!for IsFrancyGraph}
\label{GetShapes:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{List(Shape)} 



 Gets a \texttt{Shape} node from a graph by ID. }

 

\subsection{\textcolor{Chapter }{Add (for IsShape, IsMenu)}}
\logpage{[ 6, 4, 11 ]}\nobreak
\hyperdef{L}{X7EF659877F394CA8}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsShape[, IsMenu, List(IsMenu)]})\index{Add@\texttt{Add}!for IsShape, IsMenu}
\label{Add:for IsShape, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Add \texttt{Menu} to a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsShape, IsMenu)}}
\logpage{[ 6, 4, 12 ]}\nobreak
\hyperdef{L}{X85BF74EF7F7666CC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsShape[, IsMenu, List(IsMenu)]})\index{Remove@\texttt{Remove}!for IsShape, IsMenu}
\label{Remove:for IsShape, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Remove \texttt{Menu} from a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Add (for IsShape, IsCallback)}}
\logpage{[ 6, 4, 13 ]}\nobreak
\hyperdef{L}{X7DDA822185BE37C7}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsShape[, IsCallback, List(IsCallback)]})\index{Add@\texttt{Add}!for IsShape, IsCallback}
\label{Add:for IsShape, IsCallback}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Add \texttt{Callback} to a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsShape, IsCallback)}}
\logpage{[ 6, 4, 14 ]}\nobreak
\hyperdef{L}{X86EED52F83DD8267}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsShape[, IsCallback, List(IsCallback)]})\index{Remove@\texttt{Remove}!for IsShape, IsCallback}
\label{Remove:for IsShape, IsCallback}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Remove \texttt{Callback} from a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Add (for IsShape, IsFrancyMessage)}}
\logpage{[ 6, 4, 15 ]}\nobreak
\hyperdef{L}{X7D44790C7E3DD809}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsShape[, IsFrancyMessage, List(IsFrancyMessage)]})\index{Add@\texttt{Add}!for IsShape, IsFrancyMessage}
\label{Add:for IsShape, IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Add \texttt{Callback} to a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Remove (for IsShape, IsFrancyMessage)}}
\logpage{[ 6, 4, 16 ]}\nobreak
\hyperdef{L}{X854D516B7E81D53F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsShape[, IsFrancyMessage, List(IsFrancyMessage)]})\index{Remove@\texttt{Remove}!for IsShape, IsFrancyMessage}
\label{Remove:for IsShape, IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Shape} 



 Remove \texttt{Callback} from a specific \texttt{Shape}. }

 

\subsection{\textcolor{Chapter }{Link (for IsShape, IsShape, IsLinkDefaults)}}
\logpage{[ 6, 4, 17 ]}\nobreak
\hyperdef{L}{X7A324F527BCA3207}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Link({\mdseries\slshape IsShape, IsShape})\index{Link@\texttt{Link}!for IsShape, IsShape, IsLinkDefaults}
\label{Link:for IsShape, IsShape, IsLinkDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Link} 



 Creates a \texttt{Link} between the two \texttt{Shape}. 

 }

 

\subsection{\textcolor{Chapter }{Links (for IsList, IsList, IsLinkDefaults)}}
\logpage{[ 6, 4, 18 ]}\nobreak
\hyperdef{L}{X7E90E1F17F599D08}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Links({\mdseries\slshape List(IsShape), List(IsShape)})\index{Links@\texttt{Links}!for IsList, IsList, IsLinkDefaults}
\label{Links:for IsList, IsList, IsLinkDefaults}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{List(Link)} 



 Creates a \texttt{Link} between the \texttt{Shape} of the first list and the second list. 

 }

 

\subsection{\textcolor{Chapter }{GetLink (for IsFrancyGraph, IsString)}}
\logpage{[ 6, 4, 19 ]}\nobreak
\hyperdef{L}{X8273378F7F00BF6A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GetLink({\mdseries\slshape IsFrancyGraph, IsString})\index{GetLink@\texttt{GetLink}!for IsFrancyGraph, IsString}
\label{GetLink:for IsFrancyGraph, IsString}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Link} 



 Gets a \texttt{Link} from a graph by ID. }

 

\subsection{\textcolor{Chapter }{GetLinks (for IsFrancyGraph)}}
\logpage{[ 6, 4, 20 ]}\nobreak
\hyperdef{L}{X7B7ACA577E80B8E3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GetLinks({\mdseries\slshape IsFrancyGraph, IsString})\index{GetLinks@\texttt{GetLinks}!for IsFrancyGraph}
\label{GetLinks:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{List(Link)} 



 Gets a \texttt{Link} from a graph. }

 }

 
\section{\textcolor{Chapter }{Global}}\label{Chapter_Francy_Graphs_Section_Global}
\logpage{[ 6, 5, 0 ]}
\hyperdef{L}{X8690E870823975F3}{}
{
  In this section we show all Global Callback Francy Records for multi purpose. }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Graphs_Section_Attributes}
\logpage{[ 6, 6, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show all Francy Core Attributes 

\subsection{\textcolor{Chapter }{Title (for IsShape)}}
\logpage{[ 6, 6, 1 ]}\nobreak
\hyperdef{L}{X83D2C91985CF0C3D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsShape}
\label{Title:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 Sets the title on the Shape. Supports LaTex syntax that gets translated, if
enabled on the client. }

 

\subsection{\textcolor{Chapter }{Title (for IsShape)}}
\logpage{[ 6, 6, 2 ]}\nobreak
\hyperdef{L}{X83D2C91985CF0C3D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsShape}
\label{Title:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsShape, IsString)}}
\logpage{[ 6, 6, 3 ]}\nobreak
\hyperdef{L}{X7B25A8097AE1AC64}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsRequiredArg, IsString})\index{SetTitle@\texttt{SetTitle}!for IsShape, IsString}
\label{SetTitle:for IsShape, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the title of the Shape. }

 

\subsection{\textcolor{Chapter }{Color (for IsShape)}}
\logpage{[ 6, 6, 4 ]}\nobreak
\hyperdef{L}{X86780CBD85B39F72}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Color({\mdseries\slshape arg})\index{Color@\texttt{Color}!for IsShape}
\label{Color:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Color} of the current shape. }

 

\subsection{\textcolor{Chapter }{Color (for IsShape)}}
\logpage{[ 6, 6, 5 ]}\nobreak
\hyperdef{L}{X86780CBD85B39F72}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Color({\mdseries\slshape arg1})\index{Color@\texttt{Color}!for IsShape}
\label{Color:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetColor (for IsShape, IsString)}}
\logpage{[ 6, 6, 6 ]}\nobreak
\hyperdef{L}{X7BCBDC2D84487FE9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetColor({\mdseries\slshape IsShape, IsString})\index{SetColor@\texttt{SetColor}!for IsShape, IsString}
\label{SetColor:for IsShape, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Color} value. }

 

\subsection{\textcolor{Chapter }{PosX (for IsShape)}}
\logpage{[ 6, 6, 7 ]}\nobreak
\hyperdef{L}{X7F60BE7583BFDD29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{PosX({\mdseries\slshape arg})\index{PosX@\texttt{PosX}!for IsShape}
\label{PosX:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The Position in the X Axis of the Shape in the Canvas in pixels }

 

\subsection{\textcolor{Chapter }{PosX (for IsShape)}}
\logpage{[ 6, 6, 8 ]}\nobreak
\hyperdef{L}{X7F60BE7583BFDD29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{PosX({\mdseries\slshape arg1})\index{PosX@\texttt{PosX}!for IsShape}
\label{PosX:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetPosX (for IsShape, IsInt)}}
\logpage{[ 6, 6, 9 ]}\nobreak
\hyperdef{L}{X78A2408384F94449}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetPosX({\mdseries\slshape IsShape, IsInt})\index{SetPosX@\texttt{SetPosX}!for IsShape, IsInt}
\label{SetPosX:for IsShape, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the Position in the X Axis of the Shape in the Canvas in pixels }

 

\subsection{\textcolor{Chapter }{PosY (for IsShape)}}
\logpage{[ 6, 6, 10 ]}\nobreak
\hyperdef{L}{X82B9D3ED78341B5F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{PosY({\mdseries\slshape arg})\index{PosY@\texttt{PosY}!for IsShape}
\label{PosY:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The Position in the Y Axis of the Shape in the Canvas in pixels }

 

\subsection{\textcolor{Chapter }{PosY (for IsShape)}}
\logpage{[ 6, 6, 11 ]}\nobreak
\hyperdef{L}{X82B9D3ED78341B5F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{PosY({\mdseries\slshape arg1})\index{PosY@\texttt{PosY}!for IsShape}
\label{PosY:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetPosY (for IsShape, IsInt)}}
\logpage{[ 6, 6, 12 ]}\nobreak
\hyperdef{L}{X85DC68867E9E34F2}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetPosY({\mdseries\slshape IsShape, IsInt})\index{SetPosY@\texttt{SetPosY}!for IsShape, IsInt}
\label{SetPosY:for IsShape, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the Position in the Y Axis of the Shape in the Canvas in pixels }

 

\subsection{\textcolor{Chapter }{Size (for IsShape)}}
\logpage{[ 6, 6, 13 ]}\nobreak
\hyperdef{L}{X7A044BEB8590C906}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Size({\mdseries\slshape arg})\index{Size@\texttt{Size}!for IsShape}
\label{Size:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsPosInt} 



 The \texttt{Size} of the Shape }

 

\subsection{\textcolor{Chapter }{Size (for IsShape)}}
\logpage{[ 6, 6, 14 ]}\nobreak
\hyperdef{L}{X7A044BEB8590C906}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Size({\mdseries\slshape arg1})\index{Size@\texttt{Size}!for IsShape}
\label{Size:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetSize (for IsShape, IsPosInt)}}
\logpage{[ 6, 6, 15 ]}\nobreak
\hyperdef{L}{X7F2308F18216D0DF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetSize({\mdseries\slshape IsShape, IsPosInt})\index{SetSize@\texttt{SetSize}!for IsShape, IsPosInt}
\label{SetSize:for IsShape, IsPosInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the Size of the Shape }

 

\subsection{\textcolor{Chapter }{Layer (for IsShape)}}
\logpage{[ 6, 6, 16 ]}\nobreak
\hyperdef{L}{X82452F5F8205546C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Layer({\mdseries\slshape arg})\index{Layer@\texttt{Layer}!for IsShape}
\label{Layer:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Layer} in which the node will be placed. This property is also used to apply a color
based on a scale }

 

\subsection{\textcolor{Chapter }{Layer (for IsShape)}}
\logpage{[ 6, 6, 17 ]}\nobreak
\hyperdef{L}{X82452F5F8205546C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Layer({\mdseries\slshape arg1})\index{Layer@\texttt{Layer}!for IsShape}
\label{Layer:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetLayer (for IsShape, IsInt)}}
\logpage{[ 6, 6, 18 ]}\nobreak
\hyperdef{L}{X865A2CCC7B7310AF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetLayer({\mdseries\slshape IsShape, IsInt})\index{SetLayer@\texttt{SetLayer}!for IsShape, IsInt}
\label{SetLayer:for IsShape, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Layer} number. }

 

\subsection{\textcolor{Chapter }{ParentShape (for IsShape)}}
\logpage{[ 6, 6, 19 ]}\nobreak
\hyperdef{L}{X8057C33487656604}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ParentShape({\mdseries\slshape arg})\index{ParentShape@\texttt{ParentShape}!for IsShape}
\label{ParentShape:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsShape} 



 The \texttt{ParentShape} in which the node will be placed. This property is also used to apply a color
based on a scale }

 

\subsection{\textcolor{Chapter }{ParentShape (for IsShape)}}
\logpage{[ 6, 6, 20 ]}\nobreak
\hyperdef{L}{X8057C33487656604}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ParentShape({\mdseries\slshape arg1})\index{ParentShape@\texttt{ParentShape}!for IsShape}
\label{ParentShape:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetParentShape (for IsShape, IsShape)}}
\logpage{[ 6, 6, 21 ]}\nobreak
\hyperdef{L}{X7EEEDB5385F0FDC2}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetParentShape({\mdseries\slshape IsShape, IsShape})\index{SetParentShape@\texttt{SetParentShape}!for IsShape, IsShape}
\label{SetParentShape:for IsShape, IsShape}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{ParentShape}. }

 

\subsection{\textcolor{Chapter }{Simulation (for IsFrancyGraph)}}
\logpage{[ 6, 6, 22 ]}\nobreak
\hyperdef{L}{X7C3653757FEE9F72}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Simulation({\mdseries\slshape arg})\index{Simulation@\texttt{Simulation}!for IsFrancyGraph}
\label{Simulation:for IsFrancyGraph}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{Simulation} is a property that sets the simulation behavior by applying forces to organize
the graphics, without the need to provide custom positions, in the client
implementation. }

 

\subsection{\textcolor{Chapter }{Simulation (for IsFrancyGraph)}}
\logpage{[ 6, 6, 23 ]}\nobreak
\hyperdef{L}{X7C3653757FEE9F72}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Simulation({\mdseries\slshape arg1})\index{Simulation@\texttt{Simulation}!for IsFrancyGraph}
\label{Simulation:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetSimulation (for IsFrancyGraph, IsBool)}}
\logpage{[ 6, 6, 24 ]}\nobreak
\hyperdef{L}{X7A3901B97FAB1DC5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetSimulation({\mdseries\slshape IsCanvas, IsBool})\index{SetSimulation@\texttt{SetSimulation}!for IsFrancyGraph, IsBool}
\label{SetSimulation:for IsFrancyGraph, IsBool}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Simulation} behavior. }

 

\subsection{\textcolor{Chapter }{Collapsed (for IsFrancyGraph)}}
\logpage{[ 6, 6, 25 ]}\nobreak
\hyperdef{L}{X80AF2B5D7A029564}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Collapsed({\mdseries\slshape arg})\index{Collapsed@\texttt{Collapsed}!for IsFrancyGraph}
\label{Collapsed:for IsFrancyGraph}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{Collapsed} is a property that sets to collapsed the graphic structure by default }

 

\subsection{\textcolor{Chapter }{Collapsed (for IsFrancyGraph)}}
\logpage{[ 6, 6, 26 ]}\nobreak
\hyperdef{L}{X80AF2B5D7A029564}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Collapsed({\mdseries\slshape arg1})\index{Collapsed@\texttt{Collapsed}!for IsFrancyGraph}
\label{Collapsed:for IsFrancyGraph}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetCollapsed (for IsFrancyGraph, IsBool)}}
\logpage{[ 6, 6, 27 ]}\nobreak
\hyperdef{L}{X8798FA78848FFA03}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetCollapsed({\mdseries\slshape IsCanvas, IsBool})\index{SetCollapsed@\texttt{SetCollapsed}!for IsFrancyGraph, IsBool}
\label{SetCollapsed:for IsFrancyGraph, IsBool}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Collapsed} behavior. }

 

\subsection{\textcolor{Chapter }{Selected (for IsShape)}}
\logpage{[ 6, 6, 28 ]}\nobreak
\hyperdef{L}{X816339857B1118EC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Selected({\mdseries\slshape arg})\index{Selected@\texttt{Selected}!for IsShape}
\label{Selected:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{Collapsed} is a property that sets to collapsed the graphic structure by default }

 

\subsection{\textcolor{Chapter }{Selected (for IsShape)}}
\logpage{[ 6, 6, 29 ]}\nobreak
\hyperdef{L}{X816339857B1118EC}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Selected({\mdseries\slshape arg1})\index{Selected@\texttt{Selected}!for IsShape}
\label{Selected:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetSelected (for IsShape, IsBool)}}
\logpage{[ 6, 6, 30 ]}\nobreak
\hyperdef{L}{X7FDA75868647E405}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetSelected({\mdseries\slshape IsCanvas, IsBool})\index{SetSelected@\texttt{SetSelected}!for IsShape, IsBool}
\label{SetSelected:for IsShape, IsBool}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Collapsed} behavior. }

 

\subsection{\textcolor{Chapter }{ConjugateId (for IsShape)}}
\logpage{[ 6, 6, 31 ]}\nobreak
\hyperdef{L}{X7D9DF25C82FCA1D9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ConjugateId({\mdseries\slshape arg})\index{ConjugateId@\texttt{ConjugateId}!for IsShape}
\label{ConjugateId:for IsShape}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBool} True if enabled otherwise False 



 \texttt{Collapsed} is a property that sets to collapsed the graphic structure by default }

 

\subsection{\textcolor{Chapter }{ConjugateId (for IsShape)}}
\logpage{[ 6, 6, 32 ]}\nobreak
\hyperdef{L}{X7D9DF25C82FCA1D9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{ConjugateId({\mdseries\slshape arg1})\index{ConjugateId@\texttt{ConjugateId}!for IsShape}
\label{ConjugateId:for IsShape}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetConjugateId (for IsShape, IsInt)}}
\logpage{[ 6, 6, 33 ]}\nobreak
\hyperdef{L}{X7DDBAECB874E7F40}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetConjugateId({\mdseries\slshape IsCanvas, IsBool})\index{SetConjugateId@\texttt{SetConjugateId}!for IsShape, IsInt}
\label{SetConjugateId:for IsShape, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Collapsed} behavior. }

 

\subsection{\textcolor{Chapter }{Weight (for IsLink)}}
\logpage{[ 6, 6, 34 ]}\nobreak
\hyperdef{L}{X80FA3A2E807481DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Weight({\mdseries\slshape arg})\index{Weight@\texttt{Weight}!for IsLink}
\label{Weight:for IsLink}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Weight} of the current link. }

 

\subsection{\textcolor{Chapter }{Weight (for IsLink)}}
\logpage{[ 6, 6, 35 ]}\nobreak
\hyperdef{L}{X80FA3A2E807481DE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Weight({\mdseries\slshape arg1})\index{Weight@\texttt{Weight}!for IsLink}
\label{Weight:for IsLink}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetWeight (for IsLink, IsInt)}}
\logpage{[ 6, 6, 36 ]}\nobreak
\hyperdef{L}{X830DCE657B6B1701}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetWeight({\mdseries\slshape IsLink, IsInt})\index{SetWeight@\texttt{SetWeight}!for IsLink, IsInt}
\label{SetWeight:for IsLink, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Weight} value. }

 

\subsection{\textcolor{Chapter }{Length (for IsLink)}}
\logpage{[ 6, 6, 37 ]}\nobreak
\hyperdef{L}{X811D69FC859667AE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Length({\mdseries\slshape arg})\index{Length@\texttt{Length}!for IsLink}
\label{Length:for IsLink}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Length} of the current link. }

 

\subsection{\textcolor{Chapter }{Length (for IsLink)}}
\logpage{[ 6, 6, 38 ]}\nobreak
\hyperdef{L}{X811D69FC859667AE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Length({\mdseries\slshape arg1})\index{Length@\texttt{Length}!for IsLink}
\label{Length:for IsLink}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetLength (for IsLink, IsInt)}}
\logpage{[ 6, 6, 39 ]}\nobreak
\hyperdef{L}{X7EFC492284D4C053}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetLength({\mdseries\slshape IsLink, IsInt})\index{SetLength@\texttt{SetLength}!for IsLink, IsInt}
\label{SetLength:for IsLink, IsInt}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Length} value. }

 

\subsection{\textcolor{Chapter }{Invisible (for IsLink)}}
\logpage{[ 6, 6, 40 ]}\nobreak
\hyperdef{L}{X8225EFFA78C9BF04}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Invisible({\mdseries\slshape arg})\index{Invisible@\texttt{Invisible}!for IsLink}
\label{Invisible:for IsLink}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsBoolean} 



 The \texttt{Invisible} of the current link. }

 

\subsection{\textcolor{Chapter }{Invisible (for IsLink)}}
\logpage{[ 6, 6, 41 ]}\nobreak
\hyperdef{L}{X8225EFFA78C9BF04}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Invisible({\mdseries\slshape arg1})\index{Invisible@\texttt{Invisible}!for IsLink}
\label{Invisible:for IsLink}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetInvisible (for IsLink, IsBool)}}
\logpage{[ 6, 6, 42 ]}\nobreak
\hyperdef{L}{X836B3DE1838580F9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetInvisible({\mdseries\slshape IsLink, IsBool})\index{SetInvisible@\texttt{SetInvisible}!for IsLink, IsBool}
\label{SetInvisible:for IsLink, IsBool}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Invisible} value. }

 

\subsection{\textcolor{Chapter }{Color (for IsLink)}}
\logpage{[ 6, 6, 43 ]}\nobreak
\hyperdef{L}{X859C4ED278422D03}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Color({\mdseries\slshape arg})\index{Color@\texttt{Color}!for IsLink}
\label{Color:for IsLink}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Color} of the current link. }

 

\subsection{\textcolor{Chapter }{Color (for IsLink)}}
\logpage{[ 6, 6, 44 ]}\nobreak
\hyperdef{L}{X859C4ED278422D03}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Color({\mdseries\slshape arg1})\index{Color@\texttt{Color}!for IsLink}
\label{Color:for IsLink}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetColor (for IsLink, IsString)}}
\logpage{[ 6, 6, 45 ]}\nobreak
\hyperdef{L}{X84FF9CBB85CAF4A6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetColor({\mdseries\slshape IsShape, IsString})\index{SetColor@\texttt{SetColor}!for IsLink, IsString}
\label{SetColor:for IsLink, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Color} value. }

 

\subsection{\textcolor{Chapter }{Title (for IsLink)}}
\logpage{[ 6, 6, 46 ]}\nobreak
\hyperdef{L}{X7F041B5D783EBE4C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsLink}
\label{Title:for IsLink}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsInt} 



 The \texttt{Title} of the current link. }

 

\subsection{\textcolor{Chapter }{Title (for IsLink)}}
\logpage{[ 6, 6, 47 ]}\nobreak
\hyperdef{L}{X7F041B5D783EBE4C}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsLink}
\label{Title:for IsLink}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsLink, IsString)}}
\logpage{[ 6, 6, 48 ]}\nobreak
\hyperdef{L}{X87333BEB7B63272B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsShape, IsString})\index{SetTitle@\texttt{SetTitle}!for IsLink, IsString}
\label{SetTitle:for IsLink, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the \texttt{Title} value. }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Menus}}\label{Chapter_Francy_Menus}
\logpage{[ 7, 0, 0 ]}
\hyperdef{L}{X80EA9773809C0D61}{}
{
  Menus are agregators of actions that are represented here by \texttt{Callbacks}. Menus can have SubMenus, and are constituted by a Title and a Callback. 

 Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Menus_Section_Categories}
\logpage{[ 7, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy Menu Categories. 

\subsection{\textcolor{Chapter }{IsMenu (for IsFrancyObject)}}
\logpage{[ 7, 1, 1 ]}\nobreak
\hyperdef{L}{X7D4F62FC7EE7D6CA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsMenu({\mdseries\slshape arg})\index{IsMenu@\texttt{IsMenu}!for IsFrancyObject}
\label{IsMenu:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{Menu} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Menus_Section_Families}
\logpage{[ 7, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy Menu Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Menus_Section_Representations}
\logpage{[ 7, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show all Francy Menu Representations. 

\subsection{\textcolor{Chapter }{IsMenuRep (for IsComponentObjectRep)}}
\logpage{[ 7, 3, 1 ]}\nobreak
\hyperdef{L}{X78011B0D79E0AC29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsMenuRep({\mdseries\slshape arg})\index{IsMenuRep@\texttt{IsMenuRep}!for IsComponentObjectRep}
\label{IsMenuRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{Menu} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Menus_Section_Operations}
\logpage{[ 7, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Menu Operations. 

\subsection{\textcolor{Chapter }{Menu (for IsString, IsCallback)}}
\logpage{[ 7, 4, 1 ]}\nobreak
\hyperdef{L}{X80A4CF8778846969}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Menu({\mdseries\slshape IsString(title)[, IsCallback]})\index{Menu@\texttt{Menu}!for IsString, IsCallback}
\label{Menu:for IsString, IsCallback}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Menu} 



 Creates a Menu for a \texttt{Callback} Is up to the client implementation to sort out the Menu and invoke the \texttt{Callback} }

 

\subsection{\textcolor{Chapter }{Add (for IsMenu, IsMenu)}}
\logpage{[ 7, 4, 2 ]}\nobreak
\hyperdef{L}{X7EDDF1E97C71181B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Add({\mdseries\slshape IsMenu[, IsMenu, List(IsMenu)]})\index{Add@\texttt{Add}!for IsMenu, IsMenu}
\label{Add:for IsMenu, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Menu} 



 Add \texttt{Menu} to a specific \texttt{Menu} creating a Submenu. Is up to the client implementation to handle this. }

 

\subsection{\textcolor{Chapter }{Remove (for IsMenu, IsMenu)}}
\logpage{[ 7, 4, 3 ]}\nobreak
\hyperdef{L}{X874B7A668558AFB5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Remove({\mdseries\slshape IsMenu[, IsMenu, List(IsMenu)]})\index{Remove@\texttt{Remove}!for IsMenu, IsMenu}
\label{Remove:for IsMenu, IsMenu}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{Menu} 



 Remove \texttt{Menu} from a specific \texttt{Menu}. The client should be able to handle this. }

 }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Menus_Section_Attributes}
\logpage{[ 7, 5, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show all Francy Core Attributes 

\subsection{\textcolor{Chapter }{Title (for IsMenu)}}
\logpage{[ 7, 5, 1 ]}\nobreak
\hyperdef{L}{X7BBE816B7B22D645}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsMenu}
\label{Title:for IsMenu}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 A title on a \texttt{Menu} is used to identify the menu entry. }

 

\subsection{\textcolor{Chapter }{Title (for IsMenu)}}
\logpage{[ 7, 5, 2 ]}\nobreak
\hyperdef{L}{X7BBE816B7B22D645}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsMenu}
\label{Title:for IsMenu}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsMenu, IsString)}}
\logpage{[ 7, 5, 3 ]}\nobreak
\hyperdef{L}{X792C89BE80A7DA6E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsMenu, IsString})\index{SetTitle@\texttt{SetTitle}!for IsMenu, IsString}
\label{SetTitle:for IsMenu, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the title of the \texttt{Menu}. }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Messages}}\label{Chapter_Francy_Messages}
\logpage{[ 8, 0, 0 ]}
\hyperdef{L}{X7B78725D7DF4522F}{}
{
  \texttt{FrancyMessage} is an object that holds a message. 

 These messages can be used to provide information to users in the form of \texttt{SUCCESS}, \texttt{INFO}, \texttt{WARNING}, \texttt{ERROR}. Please see Francy-JS for client implementation. 
\section{\textcolor{Chapter }{Categories}}\label{Chapter_Francy_Messages_Section_Categories}
\logpage{[ 8, 1, 0 ]}
\hyperdef{L}{X7CC6903E78F24167}{}
{
  In this section we show all Francy FrancyMessage Categories. 

\subsection{\textcolor{Chapter }{IsFrancyMessage (for IsFrancyObject)}}
\logpage{[ 8, 1, 1 ]}\nobreak
\hyperdef{L}{X81B6563E7B6AEA6D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyMessage({\mdseries\slshape arg})\index{IsFrancyMessage@\texttt{IsFrancyMessage}!for IsFrancyObject}
\label{IsFrancyMessage:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{FrancyMessage} objects. }

 

\subsection{\textcolor{Chapter }{IsFrancyMessageType (for IsFrancyObject)}}
\logpage{[ 8, 1, 2 ]}\nobreak
\hyperdef{L}{X7AC1074882D397F6}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyMessageType({\mdseries\slshape arg})\index{IsFrancyMessageType@\texttt{IsFrancyMessageType}!for IsFrancyObject}
\label{IsFrancyMessageType:for IsFrancyObject}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Identifies \texttt{MessageType} objects. }

 }

 
\section{\textcolor{Chapter }{Families}}\label{Chapter_Francy_Messages_Section_Families}
\logpage{[ 8, 2, 0 ]}
\hyperdef{L}{X846063757EC05986}{}
{
  In this section we show all Francy FrancyMessage Families. }

 
\section{\textcolor{Chapter }{Representations}}\label{Chapter_Francy_Messages_Section_Representations}
\logpage{[ 8, 3, 0 ]}
\hyperdef{L}{X7EABCC537D3BC549}{}
{
  In this section we show all Francy FrancyMessage Representations. 

\subsection{\textcolor{Chapter }{IsFrancyMessageRep (for IsComponentObjectRep)}}
\logpage{[ 8, 3, 1 ]}\nobreak
\hyperdef{L}{X81FA07417DA0CBF0}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyMessageRep({\mdseries\slshape arg})\index{IsFrancyMessageRep@\texttt{IsFrancyMessageRep}!for IsComponentObjectRep}
\label{IsFrancyMessageRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{FrancyMessage} internal representation. }

 

\subsection{\textcolor{Chapter }{IsFrancyMessageTypeRep (for IsComponentObjectRep)}}
\logpage{[ 8, 3, 2 ]}\nobreak
\hyperdef{L}{X7A2D43947BDA7E29}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsFrancyMessageTypeRep({\mdseries\slshape arg})\index{IsFrancyMessageTypeRep@\texttt{IsFrancyMessageTypeRep}!for IsComponentObjectRep}
\label{IsFrancyMessageTypeRep:for IsComponentObjectRep}
}\hfill{\scriptsize (filter)}}\\
\textbf{\indent Returns:\ }
\texttt{true} or \texttt{false} 



 Checks whether an \texttt{Object} has a \texttt{FrancyMessage} internal representation. }

 }

 
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Messages_Section_Operations}
\logpage{[ 8, 4, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy FrancyMessage Operations. 

\subsection{\textcolor{Chapter }{FrancyMessage (for IsFrancyMessageType, IsString, IsString)}}
\logpage{[ 8, 4, 1 ]}\nobreak
\hyperdef{L}{X7D5DE52179AE8554}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FrancyMessage({\mdseries\slshape IsString, IsString})\index{FrancyMessage@\texttt{FrancyMessage}!for IsFrancyMessageType, IsString, IsString}
\label{FrancyMessage:for IsFrancyMessageType, IsString, IsString}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{FrancyMessage} 



 Adds an info label with the format label: value 

 }

 }

 
\section{\textcolor{Chapter }{Global}}\label{Chapter_Francy_Messages_Section_Global}
\logpage{[ 8, 5, 0 ]}
\hyperdef{L}{X8690E870823975F3}{}
{
  In this section we show all Global Callback Francy Records for multi purpose. }

 
\section{\textcolor{Chapter }{Attributes}}\label{Chapter_Francy_Messages_Section_Attributes}
\logpage{[ 8, 6, 0 ]}
\hyperdef{L}{X7C701DBF7BAE649A}{}
{
  In this section we show all Francy Core Attributes 

\subsection{\textcolor{Chapter }{Title (for IsFrancyMessage)}}
\logpage{[ 8, 6, 1 ]}\nobreak
\hyperdef{L}{X84394D1F822EA86F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg})\index{Title@\texttt{Title}!for IsFrancyMessage}
\label{Title:for IsFrancyMessage}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 A title on a \texttt{FrancyMessage} is used to display the title information to the user. }

 

\subsection{\textcolor{Chapter }{Title (for IsFrancyMessage)}}
\logpage{[ 8, 6, 2 ]}\nobreak
\hyperdef{L}{X84394D1F822EA86F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Title({\mdseries\slshape arg1})\index{Title@\texttt{Title}!for IsFrancyMessage}
\label{Title:for IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetTitle (for IsFrancyMessage, IsString)}}
\logpage{[ 8, 6, 3 ]}\nobreak
\hyperdef{L}{X7A26B9E77D45DC64}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTitle({\mdseries\slshape IsFrancyMessage, IsString})\index{SetTitle@\texttt{SetTitle}!for IsFrancyMessage, IsString}
\label{SetTitle:for IsFrancyMessage, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the title of the \texttt{FrancyMessage}. }

 

\subsection{\textcolor{Chapter }{Value (for IsFrancyMessage)}}
\logpage{[ 8, 6, 4 ]}\nobreak
\hyperdef{L}{X807A806F83B19870}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Value({\mdseries\slshape arg})\index{Value@\texttt{Value}!for IsFrancyMessage}
\label{Value:for IsFrancyMessage}
}\hfill{\scriptsize (attribute)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} with the title of the object 



 A value on a \texttt{FrancyMessage} is used to display the information to the user. }

 

\subsection{\textcolor{Chapter }{Value (for IsFrancyMessage)}}
\logpage{[ 8, 6, 5 ]}\nobreak
\hyperdef{L}{X807A806F83B19870}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Value({\mdseries\slshape arg1})\index{Value@\texttt{Value}!for IsFrancyMessage}
\label{Value:for IsFrancyMessage}
}\hfill{\scriptsize (operation)}}\\


 

 }

 

\subsection{\textcolor{Chapter }{SetValue (for IsFrancyMessage, IsString)}}
\logpage{[ 8, 6, 6 ]}\nobreak
\hyperdef{L}{X7EE61C43853E71CE}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetValue({\mdseries\slshape IsFrancyMessage, IsString})\index{SetValue@\texttt{SetValue}!for IsFrancyMessage, IsString}
\label{SetValue:for IsFrancyMessage, IsString}
}\hfill{\scriptsize (operation)}}\\


 Sets the actual message of the \texttt{FrancyMessage}. }

 }

 }

   
\chapter{\textcolor{Chapter }{Francy Util}}\label{Chapter_Francy_Util}
\logpage{[ 9, 0, 0 ]}
\hyperdef{L}{X7D19C8447955D526}{}
{
  
\section{\textcolor{Chapter }{Operations}}\label{Chapter_Francy_Util_Section_Operations}
\logpage{[ 9, 1, 0 ]}
\hyperdef{L}{X7DE8E16C7C2D387B}{}
{
  In this section we show all Francy Util Operations. Contains utility methods
to handle Object printing/viewing, Sanitizing, etc. 

\subsection{\textcolor{Chapter }{JUPYTER{\textunderscore}ViewString (for IsObject)}}
\logpage{[ 9, 1, 1 ]}\nobreak
\hyperdef{L}{X7FDA25B980809FC3}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{JUPYTER{\textunderscore}ViewString({\mdseries\slshape arg})\index{JUPYTER{\textunderscore}ViewString@\texttt{JUPYTER{\textunderscore}ViewString}!for IsObject}
\label{JUPYTERuScoreViewString:for IsObject}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{String} 



 This method will pretty print in jupyter environment. }

 

\subsection{\textcolor{Chapter }{Sanitize (for IsObject)}}
\logpage{[ 9, 1, 2 ]}\nobreak
\hyperdef{L}{X804E29DC830EE7B1}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Sanitize({\mdseries\slshape IsObject})\index{Sanitize@\texttt{Sanitize}!for IsObject}
\label{Sanitize:for IsObject}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{rec} 



 This method will clone a \texttt{Object} and return a sanitized record, traversing all the components and sanitizing
when appropriate. Sanitizing in this context means, replace everything with
it's string representation that can't be converted into JSON! }

 

\subsection{\textcolor{Chapter }{MergeObjects (for IsFrancyObject, IsFrancyObject)}}
\logpage{[ 9, 1, 3 ]}\nobreak
\hyperdef{L}{X84A26F95834C1C49}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{MergeObjects({\mdseries\slshape IsFrancyObject, IsFrancyObject})\index{MergeObjects@\texttt{MergeObjects}!for IsFrancyObject, IsFrancyObject}
\label{MergeObjects:for IsFrancyObject, IsFrancyObject}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{rec} 



 This method will merge the properties of 2 \texttt{IsFrancyObjects} into one \texttt{rec}. }

 

\subsection{\textcolor{Chapter }{GenerateID}}
\logpage{[ 9, 1, 4 ]}\nobreak
\hyperdef{L}{X79A299E4878A701B}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GenerateID({\mdseries\slshape })\index{GenerateID@\texttt{GenerateID}}
\label{GenerateID}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }
\texttt{IsString} 



 This method will generate a sequential ID for use as object identifier. }

 }

 }

 \def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
\hyperdef{L}{X83A0356F839C696F}{}
}

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Index}


\printindex

\immediate\write\pagenrlog{["Ind", 0, 0], \arabic{page},}
\newpage
\immediate\write\pagenrlog{["End"], \arabic{page}];}
\immediate\closeout\pagenrlog
\end{document}
