Esempio n. 1
0
        /// <summary>
        /// Update depiction style
        /// </summary>
        /// <param name="psc"></param>

        public void UpdateDepictions(ParsedStructureCriteria psc)
        {
            SmallWorldPredefinedParameters swp = psc.SmallWorldParameters;             // new values

            if (Qm == null || Qm.ResultsFormatter == null ||
                Qm.ResultsFormatter.StructureHighlightPssc == null ||
                Qm.ResultsFormatter.StructureHighlightPssc.SmallWorldParameters == null)
            {
                return;
            }

            ResultsFormatter fmtr = Qm.ResultsFormatter;
            SmallWorldPredefinedParameters swp2 =             // current view values
                                                  fmtr.StructureHighlightPssc.SmallWorldParameters;

            psc.Highlight = swp2.Highlight = swp.Highlight;
            psc.Align     = swp2.Align = swp.Align;

            int i = SmallWorldData.GetSvgOptionsIndex(swp2.Highlight, swp2.Align);
            SmallWorldDepictions d = fmtr.SmallWorldDepictions;

            if ((swp.Highlight || swp.Align) && d != null && i != 0 && d.SvgDict[i] == null)           // need to start retrieval for depiction type we don't alread have?
            {
                d.StartDepictionRetrieval(Qm, psc.QueryColumn, swp2.Highlight, swp2.Align);
                return;                 // leave display as is for now
            }

            else                                                           // clear current decpiction so new one shows
            {
                Qm.DataTableManager.ResetFormattedValues(psc.QueryColumn); // clear existing bitmaps
                Qm.MoleculeGrid.RefreshDataSource();
            }

            return;
        }
Esempio n. 2
0
/// <summary>
/// Start retieval of requested depiction type list for the supplied hitlist
/// </summary>
/// <param name="qc"></param>
/// <param name="color"></param>
/// <param name="align"></param>
/// <param name="getAdditionalDataDelegate"></param>

        public void StartDepictionRetrieval(
            QueryManager qm,
            QueryColumn qc,
            bool color,
            bool align)
        {
            int i = SmallWorldData.GetSvgOptionsIndex(color, align);

            if (Status[i] != 0)
            {
                return;                             // just return if already requested
            }
            string mcName  = qc.MetaColumn.MetaTableDotMetaColumnName;
            string command = "GetDepictions " + mcName + " " + color + " " + align;

            QeGetAdditionalDataDelegate gadd = new QeGetAdditionalDataDelegate(qm.QueryEngine.GetAdditionalData);

            DepictionRetrievalArgs a = new DepictionRetrievalArgs();

            a.qm        = qm;
            a.qc        = qc;
            a.color     = color;
            a.align     = align;
            a.reqId     = ++CurrentRequestId;
            a.startTime = DateTime.Now;

            Status[i] = a.reqId;             // indicate requested

            if (Debug)
            {
                DebugLog.Message("StartDepictionRetrieval " + CurrentRequestId + ", Mc " + mcName + ", Hilight " + color + ", Align " + align);
            }
            gadd.BeginInvoke(command, new AsyncCallback(DepictionRetrievalComplete), a);
            return;
        }
Esempio n. 3
0
        /// <summary>
        /// Get depiction for a Cid if available on client
        /// </summary>
        /// <param name="hitListId"></param>
        /// <param name="rowId"></param>
        /// <param name="color"></param>
        /// <param name="align"></param>
        /// <returns></returns>

        public string GetDepiction(
            string cid,
            bool color,
            bool align)
        {
            int i = SmallWorldData.GetSvgOptionsIndex(color, align);

            if (SvgDict[i] == null)
            {
                return(null);
            }
            if (!SvgDict[i].ContainsKey(cid))
            {
                return("");
            }
            string xml = SvgDict[i][cid];

            return(xml);
        }
Esempio n. 4
0
/// <summary>
/// Retrieval complete. Update cache and request display of values
/// </summary>
/// <param name="r"></param>

        void DepictionRetrievalComplete(IAsyncResult r)
        {
            try
            {
                QeGetAdditionalDataDelegate d = (r as AsyncResult).AsyncDelegate as QeGetAdditionalDataDelegate;

                DepictionRetrievalArgs a = r.AsyncState as DepictionRetrievalArgs;
                int i = SmallWorldData.GetSvgOptionsIndex(a.color, a.align);
                Status[i] = -Status[i];                 // set to negative to indicate complete

                string depictionsListString = d.EndInvoke(r) as string;
                SvgDict[i] = Deserialize(depictionsListString);
                int count = SvgDict[i].Count;

                if (Debug)
                {
                    DebugLog.Message("DepictionRetrievalComplete " + a.reqId + ", Current: " + (a.reqId == CurrentRequestId) +
                                     ", Count: " + count + ", Time: " + LogFile.FormatElapsedTimeInMs(a.startTime));
                }

                if (a.reqId == CurrentRequestId)                 // if latest request then display
                {
                    QueryManager        qm   = a.qm;
                    MoleculeGridControl grid = qm.MoleculeGrid;

                    if (grid.InvokeRequired)                     // use invoke if not on UI thread
                    {
                        grid.Invoke(new MethodInvoker(grid.RefreshDataSourceMx));
                    }

                    else
                    {
                        grid.RefreshDataSourceMx();
                    }
                }
            }
            catch (Exception ex)
            {
                DebugLog.Message("DepictionRetrievalComplete exception: " + DebugLog.FormatExceptionMessage(ex));
            }
        }