Example #1
0
		/// <summary>
		/// Removes the pages below the current page is necessary, depending on the overlapping code
		/// </summary>
		/// <param name="overlapping">overlapping code</param>
		private void SetOverlapping(byte overlapping)
		{
//			XHtmlDrawing drawing = Window.MainCanvas.Children.OfType<XHtmlDrawing>().FirstOrDefault();

			switch (overlapping)
			{
				case 1:	// effacement partiel
					// on parcourt la liste des pages de la fenêtre et on efface les pages recouvertes totalement par la page en cours
					foreach (XHtmlPage page in Window.ListOfPages.Where(page => page != this && page.JeSuisAffichee == true))
					{
						if (page.left >= left
							&& page.top >= top
							&& (page.left + page.OriginalWidth) <= (left + OriginalWidth)
							&& (page.top + page.OriginalHeight) <= (top + OriginalHeight))
						{
							// On ne peut pas supprimer les Handlers sinon on ne les a plus lors d'un réaffichage de la page (ajoutés uniquement dans le constructeur)
							//Window.MainCanvas.SizeChanged -= page.SizeChangedHandler;
							//Window.MainCanvas.SizeChanged -= page.PositionChangedHandler;
							
							// Window.MainCanvas.Children.Remove(page);
							
							UnParametreEnvoye p = new UnParametreEnvoye();
							Html.Envois.Ajouter("retirerPage", Html.CalculerIdPage(page.Id));
							page.JeSuisAffichee = false;

							////Effacement de la zone recouverte par la page dans Ygraph
							//if (drawing != null)
							//   //drawing.ClearScreenArea(this);
							//   drawing.ClearScreenArea(new Rect(new Point(page.left, page.top), new Size(page.OriginalWidth, page.OriginalHeight)));
						}
					}
					break;

				case 2:	// effacement complet
					// on parcourt la liste des pages de la fenêtre et on efface toutes les pages trouvées
					foreach (XHtmlPage page in Window.ListOfPages.Where(page => page != this && page.JeSuisAffichee == true))
					{
						// On ne peut pas supprimer les Handlers sinon on ne les a plus lors d'un réaffichage de la page (ajoutés uniquement dans le constructeur)
						//Window.MainCanvas.SizeChanged -= page.SizeChangedHandler;
						//Window.MainCanvas.SizeChanged -= page.PositionChangedHandler;
//						Window.MainCanvas.Children.Remove(page);
						Html.Envois.Ajouter("retirerPage", this.Html.CalculerIdPage(page.Id));
						page.JeSuisAffichee = false;
					}

					////RAZ du canvas de dessin de Ygraph
					//if (drawing != null) drawing.ClearDrawing();

					// en effacement complet, la fenêtre prend la couleur de fond de la page
					//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! a faire !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//					Window.SetBinding(BackgroundProperty, new Binding("Background") { Source = this, Mode = BindingMode.OneWay });
					break;

				case 3:	// pas d'effacement
					// on ne fait rien vu qu'on n'efface rien.
					// en fait si : on met le fond à null (et vive la bidouille !!!) - "null" et non pas "transparent" car avec "transparent" le canvas trappe les clics quand même
//					Style = Resources["PageTransStyle"] as Style;
					break;
			}
		}
        public void GetProperties(DVBuffer buffer)
        {
            string idPage; //stockage temporaire des id page, menuItem et toolbarItem
            ProprietesWpf property;
            XHtmlWindow window;
            XHtmlPage page = null;
            XHtmlDataGrid dataGrid;
            ushort? index = null; //pour renvoi d'un index colonne dans un tableau
            ushort? nbRows = null; //pour renvoi du nombre de lignes affichées dans un tableau
            string horizontalScrollbarTooltip = null; //pour renvoi de la bulle de l'ascenseur horizontal dans un tableau
            string verticalScrollbarTooltip = null; //pour renvoi de la bulle de l'ascenseur vertical dans un tableau
            int codepageBulleAscHor = 0, codepageBulleAscVer = 0;

            buffer.Get(out property);

            while (property != ProprietesWpf.CLIENTLEGER_FIN)
            {
                switch (property)
                {
                    case ProprietesWpf.CLIENTLEGER_DEBUT:
                        break;

                    case ProprietesWpf.MENU_SYSTEME_APERCU_ETAT:
                        byte printPreview;
                        buffer.Get(out printPreview);
                        IsPrintPreviewEnabled = (printPreview == 1);
            //						if (StackOfWindows.Any()) StackOfWindows.ToList()[0].UpdatePrintPreviewItem(IsPrintPreviewEnabled);
                        break;

                    case ProprietesWpf.MENU_SYSTEME_TRADUCTIONS:
                        buffer.GetString(out PrintPreviewText);
                        buffer.GetString(out CloseAllText);
                        buffer.GetString(out PrintCloseAllText);
                        buffer.GetString(out SavePrintPreviewText);
                        break;

                    case ProprietesWpf.COULEUR_CREATION_DEBUT:
                        XHtmlColor.Create(buffer,this.Html);
                        break;

                    case ProprietesWpf.POLICE_CREATION_DEBUT:
                        XHtmlFont.Create(buffer,this.Html);
                        break;

                    case ProprietesWpf.BORDURE_CREATION_DEBUT:
                        XHtmlBorder.Create(buffer,this.Html);
                        break;

                    case ProprietesWpf.PADDING_CREATION_DEBUT:
                        XHtmlPadding.Create(buffer,this.Html);
                        break;

                    #region Fenêtre
                    case ProprietesWpf.FENETRE_DEBUT:					// Id Masque (ushort) et Id Page (byte)
                        // ne concerne que les "vraies" fenêtres (i.e. : les fenêtres autres que la toute première, ouverte dans app.xaml.cs)

                        //Window lastWindow = StackOfWindows.Peek();
                        //if (!lastWindow.IsVisible) lastWindow.Show();
                        //lastWindow.IsEnabled = false;

                        window = new XHtmlWindow(); //  { Owner = lastWindow, ShowInTaskbar = false };
                        buffer.GetString(out window.MaskName);
                        buffer.Get(out window.PageNum);
                        window.ReadProperties(buffer);
                        window.Id = window.MaskName.Replace('.', '_') + "_" + window.PageNum.ToString() + "_" + (StackOfWindows.Count + 1).ToString();
                        StackOfWindows.Push(window);

                        ListeParametresComplementaires lc = new ListeParametresComplementaires();
                        lc.Ajouter("ty", window.minContentHeight.ToString());
                        lc.Ajouter("tx", window.minContentWidth.ToString());
                        lc.Ajouter("idFen", window.Id);
                        lc.Ajouter("libelle", window.MaskName);
                        lc.Ajouter("numpage", window.PageNum.ToString());

                        lc.Ajouter("tailleFixe", (window.ModeResize == System.Windows.ResizeMode.NoResize) ? "true" : "false");
                        lc.Ajouter("couleurFond", XHtmlColor.PrefixeCssFond + window.CouleurFond.ToString());
                        lc.Ajouter("titre", window.Title);
                        if (window.icon != null)
                            lc.Ajouter("icone", window.icon.Css);

                        string chaineFenetre = HtmlGlobal.ToJsonString(lc, this.Html.JsonParamCompl, false);
                        {
                            UnParametreEnvoye p = new UnParametreEnvoye();
                            p.commande = "ouvrirFenetre";
                            this.Html.Envois.commandes.Add(p);
                            p.valeur = chaineFenetre;
                        }
                        break;

                    case ProprietesWpf.FENETRE_TITRE:					// Titre de la fenêtre (string)
                        {
                            string title;
                            int codePage;
                            buffer.Get(out codePage);
                            buffer.GetStringCP(out title, codePage);
                            StackOfWindows.Peek().Title = title;

                            UnParametreEnvoye p = new UnParametreEnvoye();
                            p.commande = "xmeTitle";
                            this.Html.Envois.commandes.Add(p);
                            p.valeur = title;
                        }
                        break;

                    case ProprietesWpf.FENETRE_ICONE:					// Titre de la fenêtre (string)
                        var icon = new XHtmlImageFile();
                        icon.ReadProperties(buffer);
                        // StackOfWindows.Peek().SetIcon(icon);
                        break;

                    case ProprietesWpf.FENETRE_TAILLE_INITIALE:		// Taille de référence pour les calculs d'attachement - Hauteur (ushort) x Largeur (ushort)
                        window = StackOfWindows.Peek();
                        buffer.GetString(out window.MaskName);
                        buffer.Get(out window.PageNum);
                        window.SetMinContentSize(buffer);

                        this.Html.Envois.Ajouter("fenetreTailleInitiale",
                                window.MaskName + "," +
                                window.PageNum.ToString() + "," +
                                window.minContentWidth.ToString() + "," +
                                window.minContentHeight.ToString()
                            );

                        break;

                    case ProprietesWpf.FENETRE_FERMETURE:				// Pour fermer la fenêtre en cours
                        window = StackOfWindows.Pop();

                        this.Html.Envois.Ajouter("fermerFenetre", window.Id);

                        //FenetresADepiler.Push(window);
                        //window.Closing -= window.ClosingHandler;
                        //StackOfWindows.Peek().IsEnabled = true; // ne pas remplacer par "window": le StackOfWindow.Peek a changé de valeur à cause du pop() !
                        // window.Close();

                        break;
                    #endregion Fenêtre

                    case ProprietesWpf.PAGE_DEBUT:
                        buffer.GetString(out idPage); // Id Page (string)

                        window = StackOfWindows.Peek();
                        page = window.GetPage(idPage);
                        if (page == null)
                        {
                            window.ListOfPages.Add(page = new XHtmlPage(window,this.Html) { Id = idPage });
                            this.Html.Envois.Ajouter("nouvellePage", this.Html.CalculerIdPage(page.Id));
                            page.JeSuisAffichee = true;
                        }
                        // une page peut être supprimée (dans la gestion de l'effacement d'une autre page), il faut donc la remettre dans la fenêtre le cas échéant
                        //if (!window.MainCanvas.Children.Contains(page)) window.MainCanvas.Children.Add(page);
                        if (page.JeSuisAffichee == false)
                        {
                            this.Html.Envois.Ajouter("remettrePage", this.Html.CalculerIdPage(page.Id));
                        }
                        // cette ligne était plus bas, mais trop tard
                        this.Html.Envois.Ajouter("pageCourante", Html.CalculerIdPage(page.Id), page.StopPoint.ToString(), page.NumPage.ToString());
                        page.JeSuisAffichee = true;
                        // - lecture de la page et des objets
                        page.ReadProperties(buffer);

                        // je la remet aussi ici car avec les panels ca bouge !
                        this.Html.Envois.Ajouter("pageCourante", Html.CalculerIdPage(page.Id), page.StopPoint.ToString(), page.NumPage.ToString());
                        page.EnvoyerCouleurPositionAttachement(false);

                        // on affiche la fenêtre si c'est la toute première page et si la fenêtre n'est pas masquée (application sans fenêtre)
                        // !!!!!!!!!!if (!page.Window.IsVisible && application.Client.FenetreMereHide == 0)
                        // !!!!!!!!!!	page.Window.Show();
                        break;

                    case ProprietesWpf.TABLEAU_DEBUT:								// Mise à jour d'une propriété du tableau

                        dataGrid = GetDataGrid(buffer,out page);
                        dataGrid.ReadProperties(buffer);
                        dataGrid.AjouterEnvoisUnObjet(Html.Envois, page, Html.App.StackOfWindows.Count());
                        break;

                    case ProprietesWpf.TABLEAU_ASCHOR_A_GAUCHE:					// retour au début de la ligne d'un tableau
                        dataGrid = GetDataGrid(buffer,out page);
                        // ScrollIntoView sur la colonne dont le DisplayIndex est = FrozenColumnCount pour mettre l'ascenseur à gauche.
                        // (en tenant compte des colonnes figées)
                        // attention : le tableau peut être vide, d'où le "if Rows.Count > 0"
                        var column = dataGrid.Columns.FirstOrDefault(col => col.DisplayIndex == dataGrid.FrozenColumnCount);
                        //!!!!!!!!!!if (dataGrid.Rows.Count > 0 && column != null)
                        //!!!!!!!!!!	dataGrid.ScrollIntoView(dataGrid.Rows[0], column);
                        break;

                    case ProprietesWpf.TABLEAU_REMPLISSAGE_DEBUT:				// Remplissage du tableau
                        dataGrid = GetDataGrid(buffer,out page);
                        dataGrid.Fill(buffer);
                        dataGrid.AjouterEnvoisUnObjetRemplissageTableau(Html.Envois, page, Html.App.StackOfWindows.Count());
                        break;

                    #region Fonctions Get du tableau
                    case ProprietesWpf.TABLEAU_ASCHOR_GET_BULLE:					// Demande le texte de la bulle de l'ascenseur horizontal
                        dataGrid = GetDataGrid(buffer,out page);
                        horizontalScrollbarTooltip = dataGrid.HorizontalScrollBarToolTip;
                        codepageBulleAscHor = dataGrid.CodepageBulleAscHor;
                        break;

                    case ProprietesWpf.TABLEAU_ASCVER_GET_BULLE:					// Demande le texte de la bulle de l'ascenseur vertical
                        dataGrid = GetDataGrid(buffer,out page);
                        verticalScrollbarTooltip = dataGrid.VerticalScrollBarToolTip;
                        codepageBulleAscVer = dataGrid.CodepageBulleAscVer;
                        break;

                    case ProprietesWpf.TABLEAU_GET_NOMBRE_LIGNES:				// Demande du nombre de lignes affichables dans le tableau
                        {
                            string id = GetIdentDataGrid(buffer);
                            // dataGrid = GetDataGrid(buffer);
                            //!!!!!!!!!! dataGrid.UpdateLayout();	// indispensable, sinon le nombre de lignes envoyé au premier affichage du tableau est potentiellement faux (peut poser pb par la suite)
                            nbRows = 32; //  dataGrid.GetRowCount();
                            Html.Envois.Ajouter("tabGetNbLig", id);
                        }
                        break;

                    case ProprietesWpf.TABLEAU_GET_COL_SAISIE_PREMIERE:		// Demande le numéro de la première colonne en saisie dans la ligne donnée
                        dataGrid = GetDataGrid(buffer,out page);
                        index = dataGrid.GetFirstColumnIndex(buffer);
                        break;

                    case ProprietesWpf.TABLEAU_GET_COL_SAISIE_DERNIERE:		// Demande le numéro de la dernière colonne en saisie dans la ligne donnée
                        dataGrid = GetDataGrid(buffer,out page);
                        index = dataGrid.GetLastColumnIndex(buffer);
                        break;

                    case ProprietesWpf.TABLEAU_GET_COL_SAISIE_PRECEDENTE:		// Demande le numéro de la colonne précédente en saisie dans la ligne donnée
                        dataGrid = GetDataGrid(buffer,out page);
                        index = dataGrid.GetPreviousColumnIndex(buffer);
                        break;

                    case ProprietesWpf.TABLEAU_GET_COL_SAISIE_SUIVANTE:		// Demande le numéro de la colonne suivante en saisie dans la ligne donnée
                        dataGrid = GetDataGrid(buffer,out page);
                        index = dataGrid.GetNextColumnIndex(buffer);
                        break;
                    #endregion Fonctions Get du tableau

                    #region Input
                    case ProprietesWpf.XMEINPUT:
                        AsynchronousResponse = null; // garde-fou
                        buffer.GetString(out idPage);
                        window = StackOfWindows.Peek();
                        window.CurrentPage = window.GetPage(idPage);

                    //!!!!!!!!!!!!!!!!!!!!!!! idem pour consult etc....
            //						this.Html.Envois.Ajouter("pageCourante", Html.CalculerIdPage(window.CurrentPage.Id), window.CurrentPage.StopPoint.ToString(), page.NumPage.ToString());
                        this.Html.Envois.Ajouter("pageCourante", Html.CalculerIdPage(window.CurrentPage.Id), window.CurrentPage.StopPoint.ToString(), window.CurrentPage.NumPage.ToString());

                        ReadInput(buffer, window.CurrentPage);
            //						busyTimer.Stop();
            //						window.Cursor = null;
                        AttenteInput = true; // nécessairement à la fin pour que le HeightChanging potentiellement
                        // envoyé lors du UpdateLayout() contenu dans le readInput soit pris en compte et envoyé en différé
                        break;
                    #endregion Input

                    case ProprietesWpf.XMECONSULT:
                        buffer.GetString(out idPage);
                        Consult(idPage, null);
                        Html.Envois.Ajouter("xmeConsult", idPage);
                        break;

                    #region List Consult
                    case ProprietesWpf.XMELISTCONSULT:
                        {
                            uint idDataGrid;
                            buffer.GetString(out idPage);
                            buffer.Get(out idDataGrid);
                            Consult(idPage, null);
                            Html.Envois.Ajouter("xmeConsult", idPage);

                            string id = Html.CalculerIdDataGrid(idDataGrid, idPage);

                            //dataGrid = Consult(idPage, idDataGrid) as XHtmlDataGrid;
                            //dataGrid.SetIsActive(true); // nécessairement APRES le ManageValidDataGrids() dans le consult car ce dernier RAZ toutes les DataGrids affichées

                            // traitement des ronds dans l'entête de la colonne arbre le cas échéant
                            byte treeCount;
                            buffer.Get(out treeCount);
                            if (treeCount > 0)
                            {
                               byte treeCurrent;
                               buffer.Get(out treeCurrent);
                            //   XHtmlTreeColumn treeColumn = dataGrid.Columns.FirstOrDefault(col => ((IXHtmlDataGridColumn)col).ColumnType == ColumnType.Arbre) as XHtmlTreeColumn;
                            //   if (treeColumn != null) treeColumn.SetCircles(treeCount, treeCurrent);
                            }
                        }
                        break;
                    #endregion List Consult

                    case (ProprietesWpf)161 :
            //		ClientLegerProprietes.PROPCLIENTLEGER_AFFICHEERREUR:
                        AfficherErreurTransmise(buffer);
                        break;

                    case ProprietesWpf.FENETRE_ATTACHER_TOOLBARS_DEBUT:		// Bordel des toolbars
                        buffer.Get(out property);
                        while (property != ProprietesWpf.FENETRE_ATTACHER_TOOLBARS_FIN)
                        {
                            //switch (property)
                            {
                                //case ProprietesWpf.TOOLBAR_DEBUT:							// Création de toolbar

                                //   buffer.Get(out idToolBar);
                                //   toolBar = GetXwpfToolBar(idToolBar);

                                //   if (toolBar == null) listOfToolBars.Add(toolBar = new XwpfToolBar { Id = idToolBar });

                                //   toolBar.ReadProperties(buffer);
                                //   break;

                                //case ProprietesWpf.TOOLBAR_RECONSTRUCTION_DEBUT:							// Reconstruction de toolbar
                                //   buffer.Get(out idToolBar);
                                //   toolBar = GetXwpfToolBar(idToolBar);

                                //   if (toolBar == null) listOfToolBars.Add(toolBar = new XwpfToolBar { Id = idToolBar });

                                //   toolBar.ItemsList.Clear();
                                //   toolBar.ReadProperties(buffer);
                                //   foreach (XwpfWindow windowFromStack in StackOfWindows)
                                //   {
                                //      ToolBarTray toolBarTray = (toolBar.Primary) ? windowFromStack.PrimaryToolBarTray : windowFromStack.SecondaryToolBarTray;

                                //      ToolBar toolBarInList = toolBarTray.ToolBars.FirstOrDefault(tb => tb.DataContext == toolBar);
                                //      if (toolBarInList != null) toolBar.Display(windowFromStack, toolBarInList);
                                //   }
                                //   break;

                                //case ProprietesWpf.FENETRE_ATTACHER_TOOLBAR:				// Pour attacher une toolbar (identifiant menu: ushort)
                                //   buffer.Get(out idToolBar);
                                //   GetXwpfToolBar(idToolBar).Display(StackOfWindows.Peek());
                                //   break;

                                //case ProprietesWpf.FENETRE_DETTACHER_TOOLBAR:			// Pour supprimer une toolbar (identifiant menu: ushort)
                                //   buffer.Get(out idToolBar);
                                //   XwpfToolBar.Remove(idToolBar);
                                //   break;

                                //default:
                                //	throw new XwpfException(XwpfErrorCodes.UnknownProperty, XwpfErrorLocations.Application, property.ToString());
                            }
                            buffer.Get(out property);
                        }
                        break;

                    default:
                        throw new XHtmlException(XHtmlErrorCodes.UnknownProperty, XHtmlErrorLocations.Application, property.ToString());
                }
                buffer.Get(out property);
            }

            var response = new DVBuffer();

            #region Réponse asynchrone
            //if (AsynchronousResponse != null && AttenteInput)	 // impossible d'avoir un double-clic en input
            //   AsynchronousResponse = null;
            //if (AsynchronousResponse != null && AttenteConsult)
            //{
            //   SetInputBuffer(AsynchronousResponse);
            //   Send(AsynchronousResponse); // response déjà replie dans le Handler mais pas encore envoyée pour synchronisation
            //   AsynchronousResponse = null;
            //   responseAlreadySent = true; // Pour bloquer le Send(response) vide dans Analyse()
            //   return;
            //}
            #endregion Réponse asynchrone

            #region Réponse asynchrone intertâche
            //if (interTaskResponses.Count > 0) // si réveil intertâche en attente
            //{
            //   if (AttenteInput) interTaskResponses.Clear(); // en input : r.à.z. de la liste des dialogues intertâches en attente
            //   else if (AttenteConsult || AttenteGetb)
            //   {
            //      SendInterTaskResponse();
            //      responseAlreadySent = true; // Pour bloquer le Send(response) vide dans Analyse()
            //      return;
            //   }
            //}
            #endregion Réponse asynchrone intertâche

            #region nb lignes tableau

            // positionne responseAlreadySend et c'est tout

            if (nbRows.HasValue)
            {
                //response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
                //response.Put(ProprietesWpf.TABLEAU_NOMBRE_LIGNES);
                //response.Put(nbRows.Value);
                //Send(response);
                responseAlreadySent = true;					// Pour bloquer le Emettre(response) vide dans Analyser()
                return;
            }
            #endregion nb lignes tableau

            #region index colonne tableau
            if (index.HasValue)
            {
                response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
                response.Put(ProprietesWpf.TABLEAU_COLONNE_SAISIE);
                response.Put(index.Value);
                Send(response);
                responseAlreadySent = true;							// Pour bloquer le Emettre(response) vide dans Analyser()
                return;
            }
            #endregion index colonne tableau

            #region bulle scrollbar horizontale tableau
            if (horizontalScrollbarTooltip != null)
            {
                response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
                response.Put(ProprietesWpf.TABLEAU_ASCHOR_BULLE);
                response.PutStringCP(horizontalScrollbarTooltip, codepageBulleAscHor);
                Send(response);
                responseAlreadySent = true;						// Pour bloquer le Emettre(response) vide dans Analyser()
                return;
            }
            #endregion bulle scrollbar horizontale tableau

            #region bulle scrollbar verticale tableau
            if (verticalScrollbarTooltip != null)
            {
                response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
                response.Put(ProprietesWpf.TABLEAU_ASCVER_BULLE);
                response.PutStringCP(verticalScrollbarTooltip, codepageBulleAscVer);
                Send(response);
                responseAlreadySent = true;						// Pour bloquer le Emettre(response) vide dans Analyser()
                return;
            }
            #endregion bulle scrollbar verticale tableau

            #region Retour Fonction YGraph (FA)
            //retour normal (ident ou retour par defaut)
            //if (yDrawingOperationRet.HasValue)
            //{
            //   response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
            //   response.Put(yDrawingIsCreation ? yDrawingOperationRet.Value : (int)yDrawingOperationRet.Value);					//	pas de propriétéWPF identifiant la valeur de retour (14/09/2011)
            //   Send(response);
            //   responseAlreadySent = true;					// Pour bloquer le Emettre(response) vide dans Analyser()
            //   return;
            //}
            ////retour de la taille ecran
            //if (yScreenSize.HasValue)
            //{
            //   response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);
            //   response.Put((int)yScreenSize.Value.Width);					//	pas de propriétéWPF identifiant la valeur de retour (21/09/2011)
            //   response.Put((int)yScreenSize.Value.Height);

            //   Send(response);
            //   responseAlreadySent = true;					// Pour bloquer le Emettre(response) vide dans Analyser()
            //   return;
            //}
            #endregion //Retour Fonction YGraph (FA)

            #region Paramètres Initiaux Agenda
            //if (responseCalendarInit != null)
            //{
            //   Send(responseCalendarInit);
            //   responseAlreadySent = true;					// Pour bloquer le Emettre(response) vide dans Analyser()
            //}
            #endregion Paramètres Initiaux Agenda
        }
Example #3
0
        /// <summary>
        /// ajouter les commandes necessaires pour le client
        /// </summary>
        /// <param name="envois"></param>
        /// <param name="page"></param>
        /// <param name="niveau"></param>
        public void AjouterEnvoisUnObjet(ListeParametresEnvoyes envois, XHtmlPage page, int niveau)
        {
            ListeParametresEnvoyes paramsValeurs = new ListeParametresEnvoyes();

            paramsValeurs.Ajouter("idObjet", HtmlGlobal.CalculerId(this.Id, page.Id, niveau), this.Page.Html.CalculerIdPage(page.Id));

            if (this.textHasValue)
                paramsValeurs.Ajouter("texteLabel", this.text);

            if (Presentation != null)
                this.Presentation.GenererHtml(paramsValeurs,this.Page.Html,this.codePage,false);

            UnParametreEnvoye p = new UnParametreEnvoye();

            envois.Ajouter("creerObjet", "<P></P>", HtmlGlobal.CalculerId(this.Id, page.Id, niveau));
            envois.Ajouter("propsObjet", HtmlGlobal.ToJsonString(paramsValeurs, this.Page.Html.JsonParamsEnvoyes, false));
            envois.Ajouter("ajoutObjetCourant","");

            ///////////////////////////////////////// MORCEAU qui génére tout le code HTML : beaucoup plus rapide a l'exec
            ////////////////////////////////////////  on devrait faire comme ca pour les objets les plus utilisés (label champ)
            /*
            ListeParametresEnvoyes paramsValeurs = new ListeParametresEnvoyes();

            string css = this.Presentation.GenererHtml(paramsValeurs);

            css += "id='" + this.Id.ToString() + "'";

            int i = 0;
            UnParametreEnvoye p = new UnParametreEnvoye();
            envois.commandes.Add(p);
            p.commande = "html";
            p.valeur = "<P " + css + ">" + this.text + "</P>";

            p = new UnParametreEnvoye();
            envois.commandes.Add(p);
            p.commande = "script";
            p.valeur = "AjouterObjet(codeHtml,bodyCourant);";
            */
            //////////////////////////////////////////////////////////////
        }
        public void FaireLaListeDesEnvoisPourStyles()
        {
            if (Html.App.PolicesCss.Count > 0)
            {
                UnParametreEnvoye p = new UnParametreEnvoye();
                p.commande = "cssAjouts";
                Html.Envois.commandes.Insert(0, p);
                p.valeur = "<style type='text/css'>\r\n";

                foreach (XHtmlFont pol in Html.App.PolicesCss)
                {
                    if (pol.Transmi == false)
                    {
                        pol.Transmi = true;
                        //if (pol.Vide == true)
                        //   Html.App.ListeIdsPolicesVides.l.Add(pol.Id);
                        p.valeur += pol.Css + "\r\n";
                    }

                }

                foreach (XHtmlColor col in Html.App.CouleursCss)
                {
                    if (col.Transmi == false)
                    {
                        col.Transmi = true;
                        //if (col.Vide == true)
                        //   Html.App.ListeIdsCouleursVides.l.Add(col.Id);
                        //if (col.Transparente == true)
                        //   Html.App.ListeIdsCouleursTransparentes.l.Add(col.Id);
                        p.valeur += col.Css + "\r\n";
                    }
                }

                foreach (XHtmlBorder bord in Html.App.BorduresCss)
                {
                    if (bord.Transmi == false)
                    {
                        bord.Transmi = true;
                        //if (bord.Vide == true)
                        //   Html.App.ListeIdsBorduresVides.l.Add(bord.Id);
                        p.valeur += bord.Css + "\r\n";
                    }
                }

                foreach (XHtmlPadding padd in Html.App.PaddingCss)
                {
                    if (padd.Transmi == false)
                    {
                        padd.Transmi = true;
                        //if (padd.Vide == true)
                        //   Html.App.ListeIdsPaddingsVides.l.Add(padd.Id);
                        p.valeur += padd.Css + "\r\n";
                    }
                }

                // - AJOUTER LES IMAGES POUR LES BOUTONS
                foreach (XHtmlImageFile ima in Html.App.ImagesCss)
                {
                    if (ima.Transmi == false)
                    {
                        ima.Transmi = true;
                        //if (padd.Vide == true)
                        //   Html.App.ListeIdsPaddingsVides.l.Add(padd.Id);
                        p.valeur += ima.Css + "\r\n";
                    }
                }
                p.valeur += "</style>";
            }
        }
        /// <summary>
        /// ajouter les commandes necessaires pour le client
        /// </summary>
        /// <param name="envois"></param>
        /// <param name="page"></param>
        /// <param name="niveau"></param>
        public void AjouterEnvoisUnObjet(ListeParametresEnvoyes envois, XHtmlPage page, int niveau)
        {
            ListeParametresEnvoyes paramsValeurs = new ListeParametresEnvoyes();

            paramsValeurs.Ajouter("idObjet", HtmlGlobal.CalculerId(this.Id, page.Id, niveau), this.Page.Html.CalculerIdPage(page.Id));

            if (this.LibelleGroupe != null)
                paramsValeurs.Ajouter("texteGroupe", this.LibelleGroupe);

            if (Presentation != null)
            {
                this.Presentation.GenererHtml(paramsValeurs, this.Page.Html, this.codePage,true);

                UnParametreEnvoye pp = paramsValeurs.commandes.FirstOrDefault(c => c.commande == "css-fond");
                if (pp != null)
                    pp.commande = "couleurTitreGroupe";

                pp = paramsValeurs.commandes.FirstOrDefault(c => c.commande == "css-police");
                if (pp != null)
                    pp.commande = "policeTitreGroupe";

                pp = paramsValeurs.commandes.FirstOrDefault(c => c.commande == "css-padding");
                if (pp != null)
                    pp.commande = "paddingTitreGroupe";

            }

            if (this.idFondGroupe.HasValue)
            {
                string ct = this.Page.Html.App.GenererUneValeurDeCouleur(this.idFondGroupe);
                if (ct != null)
                {
                    paramsValeurs.Ajouter("css-fond", ct);
                }
            }

            UnParametreEnvoye p = new UnParametreEnvoye();

            //			envois.Ajouter("creerObjet", "<P></P>", HtmlGlobal.CalculerId(this.Id, page.Id, niveau));

            envois.Ajouter("creerGroupBox", " ", HtmlGlobal.CalculerId(this.Id, page.Id, niveau));
            envois.Ajouter("ajoutObjetCourant", "");

            envois.Ajouter("propsObjet", HtmlGlobal.ToJsonString(paramsValeurs, this.Page.Html.JsonParamsEnvoyes, false));
        }
Example #6
0
        //#region Ecouteurs
        ///// <summary>
        ///// Gestionnaire d'évènement "PreviewKeyDown" pour la fonction XMEInput
        ///// </summary>
        //private static void PreviewKeyDownHandler(object sender, KeyEventArgs e)
        //{
        //   var application = ((App)Application.Current).Appli;
        //   if (!application.AttenteInput) // cas impossible en théorie: un contrôle ne peut pas avoir le focus sans que l'on soit en Input
        //   {
        //      e.Handled = true;
        //      return;
        //   }
        //   if (e.Key == Key.Apps)
        //   {
        //      // TODO simuler un clic droit sur touche windows 2
        //      e.Handled = true;
        //   }
        //   string key;
        //   // Touches de fonction (Fn)
        //   if (e.Key == Key.System && e.SystemKey == Key.F10) key = "F10";
        //   else if (XHtmlApplication.FnKeys.Contains(e.Key)) key = e.Key.ToString();
        //   // Autres touches
        //   else // pas la peine de faire les tests spécifiques si une touche générique (Fn) a déjà été détetée
        //   {
        //      if (ValidKeys.Contains(e.Key) || (
        //            (Keyboard.Modifiers & ModifierKeys.Control) != 0
        //            && (Keyboard.Modifiers & ModifierKeys.Alt) == 0
        //            && ValidModifiedKeys.Contains(e.Key))
        //         )
        //         key = e.Key.ToString();
        //      else return; // les touches restantes ne sont pas bloquées
        //   }
        //   e.Handled = true;
        //   application.SendInputKeyDown(key);
        //}
        ///// <summary>
        ///// Gestionnaire d'évènement "PreviewMouseDown"
        ///// </summary>
        //private void PreviewMouseDownHandler(object sender, MouseButtonEventArgs e)
        //{
        //   if (IsReadOnly) // si IsReadOnly, on ne notifie pas l'appli
        //   {
        //      e.Handled = true;
        //      return;
        //   }
        //   // on laisse passer les clics gauches (simples & doubles) en input (géré par wpf)
        //   if (Page.Window.ActiveControl == this && e.ChangedButton == MouseButton.Left) return;
        //   ((App)Application.Current).Appli.SendMouseDown(this, e);
        //}
        ///// <summary>
        ///// Envoi des infos à l'appli pour ouverture de zoom
        ///// </summary>
        //private void ZoomButtonClickHandler(object sender, RoutedEventArgs e)
        //{
        //   e.Handled = true;
        //   var application = ((App)Application.Current).Appli;
        //   var response = new DVBuffer();
        //   response.Put(ProprietesWpf.CLIENTLEGER_DEBUT);				//début de l'acquittement ou de la réponse
        //   application.SetInputBuffer(response);
        //   response.Put(ProprietesWpf.EVENEMENT_SOURIS_DEBUT);		// Début de l'envoi des évenements souris
        //   response.Put(ProprietesWpf.SOURIS_TYPE_EVENEMENT);			// Type d'évènement souris (byte)
        //   if (((App)Application.Current).Client.VersionInterneServeur <= 1)
        //      response.Put((byte)MouseEvent.ZoomCall);
        //   else
        //      response.Put((byte)(MouseEvent.ZoomComboCall));
        //   response.Put(ProprietesWpf.EVENEMENT_SOURIS_FIN);			// Fin de l'envoi des évenements souris
        //   application.Send(response);
        //}
        //#endregion Ecouteurs
        //// D & D non implémenté pour cause d'incompatibilité avec la gestion des mouseUp et MouseDown
        //#region Drag & Drop
        //public void PreviewMouseLeftButtonDownHandler(object sender, MouseEventArgs e)
        //{
        //   if (e == null) throw new ArgumentNullException("e");
        //   startPoint = e.GetPosition(null);
        //}
        //public void PreviewMouseMoveHandler(object sender, MouseEventArgs e)
        //{
        //   if (e == null) throw new ArgumentNullException("e");
        //   if (isDragging) return;
        //   if (e.LeftButton != MouseButtonState.Pressed) return;
        //   // on ne déclenche le drag&drop que si la souris a été suffisament déplacée
        //   Vector diff = startPoint - e.GetPosition(null);
        //   if (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
        //       Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
        //   {
        //      isDragging = true;
        //      DataObject data = new DataObject(DataFormats.UnicodeText, Text);
        //      DragDrop.DoDragDrop(this, data, DragDropEffects.All);
        //      isDragging = false;
        //   }
        //}
        //#endregion Drag & Drop
        /// <summary>
        /// ajouter les commandes necessaires pour le client
        /// </summary>
        /// <param name="envois"></param>
        /// <param name="page"></param>
        /// <param name="niveau"></param>
        public void AjouterEnvoisUnObjet(ListeParametresEnvoyes envois, XHtmlPage page, int niveau)
        {
            ListeParametresEnvoyes paramsValeurs = new ListeParametresEnvoyes();

            paramsValeurs.Ajouter("idObjet", HtmlGlobal.CalculerId(this.Id, page.Id, niveau), this.Page.Html.CalculerIdPage(page.Id));

            if (IsReadOnly.HasValue)
                paramsValeurs.Ajouter("lectureSeule", (bool)IsReadOnly ? "true" : "false");

            if (Presentation != null)
                this.Presentation.GenererHtml(paramsValeurs, this.Page.Html,this.CodePage,false);

            if (this.textHasValue)											// pour le caché etc, apres la presentation
                paramsValeurs.Ajouter("texteChamp", this.Text);

            paramsValeurs.Ajouter("pointSequence", this.SeqPoint.ToString(), page.NumPage.ToString());

            // n'est envoyé que pourle champ en cours de saisie
            if (this.MaxLengthProperty != 0)
                paramsValeurs.Ajouter("tailleSaisie", this.MaxLengthProperty.ToString());

            if (this.ListOfValidButtons != null && this.ListOfValidButtons.Count > 0)
            {
                StringBuilder vb = new StringBuilder();
                vb.Append("@");
                foreach (string n in ListOfValidButtons)
                {
                    vb.Append(n);
                    vb.Append("@");
                }
                paramsValeurs.Ajouter("boutonsValides", vb.ToString());
            }

            UnParametreEnvoye p = new UnParametreEnvoye();

            envois.Ajouter("creerObjet", "<input type='text'/>", HtmlGlobal.CalculerId(this.Id, page.Id, niveau));
            envois.Ajouter("propsObjet", HtmlGlobal.ToJsonString(paramsValeurs, this.Page.Html.JsonParamsEnvoyes, false));
            envois.Ajouter("ajoutObjetCourant", "");
        }
Example #7
0
        /// <summary>
        /// génération des commandes pour le navigateur
        /// </summary>
        /// <param name="pvs"></param>
        /// <param name="html"></param>
        /// <returns></returns>
        public string GenererHtml(ListeParametresEnvoyes pvs,HtmlGlobal html,int codePage,bool ignorerCorrectifCausePadding)
        {
            string ret = "";
            string classes = "";
            int offsetX=0, offsetY=0;

            // version ou on crée une commande par propriété
            ///*
            UnParametreEnvoye pv;
            XHtmlBorder wbordure= null;
            XHtmlPadding wpadding = null;

            if (this.idBordure.HasValue)
                wbordure = html.App.BorduresCss.FirstOrDefault(e => e.Id == this.idBordure);

            if (this.idPadding.HasValue)
                wpadding = html.App.PaddingCss.FirstOrDefault(e => e.Id == this.idPadding);

            pv = new UnParametreEnvoye();
            pv.commande = "css-position";
            pv.valeur = "absolute";
            pvs.commandes.Add(pv);

            // avant tout les positionnements
            if (this.AttachementBas || this.AttachementDroite || this.LargeurVariable || this.HauteurVariable)
            {
                pv = new UnParametreEnvoye();
                pv.commande = "attachements";
                pv.valeur = (AttachementBas ? "1" : "0") + "," +
                                (AttachementDroite ? "1" : "0") + "," +
                                (HauteurVariable ? "1" : "0") + "," +
                                (LargeurVariable ? "1" : "0");

                pvs.commandes.Add(pv);
            }

            // A FINALISER !!!!!!!!!!!!!!!!
            //
            // En HTML les bordures et paddings sont à l'extérieur de la boite xwin
            // en wpf c'est l'inverse, la boite de xwin contient tout

            // HAUTEUR
            //------------------------------------
            if (this.OriginalHeight.HasValue)
            {
                double? val = this.OriginalHeight;
                pv = new UnParametreEnvoye();
                pv.commande = "css-hauteur";
                //pv.valeur = this.OriginalHeight.ToString();
                pvs.commandes.Add(pv);

                //----------------------------------------------------------------
                // - traitement padding et border
                if (wbordure != null && wbordure.Vide == false && wbordure.Epaisseur != 0)
                {
                    val -= (wbordure.Epaisseur * 2);
                    offsetX += (int)wbordure.Epaisseur;
                    offsetY += (int)wbordure.Epaisseur;
                }

                if (ignorerCorrectifCausePadding == false)
                {
                    if (wpadding != null && wpadding.Vide == false && wpadding.Vertical != 0)
                    {
                        val -= (wpadding.Vertical * 2);
                        offsetY += (int)wpadding.Vertical;
                    }
                }
                //----------------------------------------------------------------

                pv.valeur = val.ToString();
                // modifie également line-heigth coté navigazteur
            }

            // LARGEUR
            //------------------------------------
            if (this.OriginalWidth.HasValue)
            {
                double? val = this.OriginalWidth;

                pv = new UnParametreEnvoye();
                pv.commande = "css-largeur";
                pv.valeur = this.OriginalWidth.ToString();
                pvs.commandes.Add(pv);
                //--------------------------------------------------------------------------------
                if (wbordure != null && wbordure.Vide == false && wbordure.Epaisseur != 0)
                    val -= (wbordure.Epaisseur * 2);

                if (ignorerCorrectifCausePadding == false)
                {
                    if (wpadding != null && wpadding.Vide == false && wpadding.Horizontal != 0)
                        val -= (wpadding.Horizontal * 2);
                }
                //--------------------------------------------------------------------------------
                pv.valeur = val.ToString();

            }

            // POSITION XY
            //------------------------------------
            if (this.Top.HasValue || this.Left.HasValue)
            {
                UnParametreEnvoyeAvecCompl pvc = new UnParametreEnvoyeAvecCompl();
                pvc.commande = "css-xy";
                offsetX = 0;
                offsetY = 0;

                pvc.valeur = (this.Left + offsetX)  .ToString();
                pvc.compl  = (this.Top  + offsetY)  .ToString();
                pvs.commandes.Add(pvc);
            }

            // ANGLE
            //--------------------------------------
            if (this.angle.HasValue)
            {
                UnParametreEnvoye pvc = new UnParametreEnvoye();
                pvc.commande = "css-angle";

                if (angle == 0)
                    pvc.valeur = this.angle.ToString() + "deg";
                else
                {
                    pvc.valeur = (this.angle * -1).ToString() + "deg";
                }
                pvs.commandes.Add(pvc);
            }

            // POLICE
            //--------------------------------------
            if (idPolice.HasValue)
            {
                XHtmlFont  i;
                i = html.App.PolicesCss.Find(e => e.Id == idPolice);
                if (i != null)
                {
                    // classes += XHtmlFont.PrefixeCss + idPolice.ToString() + " ";
                    UnParametreEnvoye pvc = new UnParametreEnvoye();
                    pvc.commande = "css-police";
                    if (i.Vide)
                        pvc.valeur = "xxxx";
                    else
                        pvc.valeur = XHtmlFont.PrefixeCss + idPolice.ToString();
                    pvs.commandes.Add(pvc);
                }
            }

            // FOND
            //------------------------------------------
            if (idFond.HasValue)
            {
                UnParametreEnvoye pvc = new UnParametreEnvoye();
                pvc.valeur = html.App.GenererUneValeurDeCouleur(idFond);
                if (pvc.valeur != null)
                {
                    pvc.commande = "css-fond";
                    pvs.commandes.Add(pvc);
                }

                //if (i != null && i.Vide == false && i.Transparente == false)
                //{
                //   classes += XHtmlColor.PrefixeCssFond + idFond.ToString() + " ";
                //}
            }

            // BORDURE
            //--------------------------------------------
            if (idBordure.HasValue)
            {
                XHtmlBorder i;
                i = html.App.BorduresCss.Find(e => e.Id == idBordure);
                if (i != null)
                {
                    UnParametreEnvoye pvc = new UnParametreEnvoye();
                    pvc.commande = "css-bordure";
                    if (i.Vide)
                        pvc.valeur = "xxxx";
                    else
                        pvc.valeur = XHtmlBorder.PrefixeCss + idBordure.ToString();
                    pvs.commandes.Add(pvc);

                }
            //				if (i != null && i.Vide == false)
            //					classes += XHtmlBorder.PrefixeCss + idBordure.ToString() + " ";
            }

            // PADDING
            //----------------------------------------------
            if (idPadding.HasValue)
            {
                XHtmlPadding i;
                i = html.App.PaddingCss.Find(e => e.Id == idPadding);
                if (i != null)
                {
                    UnParametreEnvoye pvc = new UnParametreEnvoye();
                    pvc.commande = "css-padding";
                    if (i.Vide)
                        pvc.valeur = "xxxx";
                    else
                        pvc.valeur = XHtmlPadding.PrefixeCss + idPadding.ToString() + " ";
                    pvs.commandes.Add(pvc);
                    //	classes += XHtmlPadding.PrefixeCss + idPadding.ToString() + " ";
                }
            }

            if (codePage != 0)
            {
                pv = new UnParametreEnvoye();
                pv.commande = "code-page";
                pv.valeur = codePage.ToString();
                pvs.commandes.Add(pv);
            }

            // INFO BULLE
            //--------------------------------------------------
            if (this.frameworkElement.ToolTip != null)
            {
                pv = new UnParametreEnvoye();
                pv.commande = "info-bulle";
                pv.valeur = this.frameworkElement.ToolTip;
                pvs.commandes.Add(pv);
            }

            // Visibilite
            //---------------------------------------------------
            if (Visibilite.HasValue)
            {
                pv = new UnParametreEnvoye();
                pv.commande = "visibilite";
                pv.valeur = Visibilite.ToString();
                pvs.commandes.Add(pv);
            }

            //*/

            ///////////////////////////////////////////////////////
            //////////////////////////////////////// MORCEAU qui génére tout le code HTML : beaucoup plus rapide a l'exec
            /*
                    ret = "style='";
                    // ret += "font-size:50pt;";

                    ret += "position:absolute;";
                    ret += "top:" + this.Top.ToString() + "px;";
                    ret += "left:" + this.Left.ToString() + "px;";
                    ret += "width:" + this.OriginalWidth.ToString() + "px;";
                    ret += "height:" + this.OriginalHeight.ToString() + "px;";

                    if (this.angle.HasValue)
                    {
                        ret += "transform:rotate(" + angle.ToString() + "deg)";
                    }

                    ret += "'";
                    */

            if (classes.Length > 0)
            {
                UnParametreEnvoye pvc = new UnParametreEnvoye();
                pvc.commande = "css-police-fond-padding";
                pvc.valeur = classes;
                pvs.commandes.Add(pvc);
            }
            return ret;
            //////////////////////////////////////////////
            //			return ret;
        }
 public void Ajouter(string commande, string valeur)
 {
     UnParametreEnvoye p = new UnParametreEnvoye();
     p.valeur = valeur;
     p.commande = commande;
     this.commandes.Add(p);
 }