GetParamUInt() публичный статический Метод

public static GetParamUInt ( List vParams, int iIndex ) : uint
vParams List
iIndex int
Результат uint
Пример #1
0
        internal bool RestartTimer()
        {
            if (!m_type.Equals(EcasEventIDs.TimePeriodic))
            {
                Debug.Assert(false); return(false);
            }

            uint s = EcasUtil.GetParamUInt(m_params, 0);

            if (s == 0)
            {
                return(false);
            }

#if DEBUG
            // StackTrace st = new StackTrace(false);
            // Trace.WriteLine("[" + (Environment.TickCount / 1000).ToString() +
            //	"] Restarting timer... (" + st.GetFrame(3).GetMethod().Name +
            //	" -> " + st.GetFrame(2).GetMethod().Name +
            //	" -> " + st.GetFrame(1).GetMethod().Name + ").");
#endif

            DateTime dtNow = DateTime.UtcNow;
            m_lRunAtTicks = dtNow.AddSeconds((double)s - 0.45).Ticks;
            return(true);
        }
        private static bool IsDatabaseModified(EcasCondition c, EcasContext ctx)
        {
            PwDatabase pd = null;

            uint uSel = EcasUtil.GetParamUInt(c.Parameters, 0, 0);

            if (uSel == 0)
            {
                pd = Program.MainForm.ActiveDatabase;
            }
            else if (uSel == 1)
            {
                pd = ctx.Properties.Get <PwDatabase>(EcasProperty.Database);
            }
            else
            {
                Debug.Assert(false);
            }

            if ((pd == null) || !pd.IsOpen)
            {
                return(false);
            }
            return(pd.Modified);
        }
Пример #3
0
        private static void ExecuteSleep(EcasAction a, EcasContext ctx)
        {
            uint uTimeSpan = EcasUtil.GetParamUInt(a.Parameters, 0);

            if ((uTimeSpan != 0) && (uTimeSpan <= (uint)int.MaxValue))
            {
                Thread.Sleep((int)uTimeSpan);
            }
        }
        private static void ActivateDatabaseTab(EcasAction a, EcasContext ctx)
        {
            string strName    = EcasUtil.GetParamString(a.Parameters, 0, true);
            bool   bEmptyName = string.IsNullOrEmpty(strName);

            uint       uSel  = EcasUtil.GetParamUInt(a.Parameters, 1, 0);
            PwDatabase pdSel = ctx.Properties.Get <PwDatabase>(EcasProperty.Database);

            DocumentManagerEx dm = Program.MainForm.DocumentManager;

            foreach (PwDocument doc in dm.Documents)
            {
                if (doc.Database == null)
                {
                    Debug.Assert(false); continue;
                }

                if (uSel == 0)                // Select from all
                {
                    if (bEmptyName)
                    {
                        continue;                                // Name required in this case
                    }
                }
                else if (uSel == 1)                // Triggering only
                {
                    if (!object.ReferenceEquals(doc.Database, pdSel))
                    {
                        continue;
                    }
                }
                else
                {
                    Debug.Assert(false); continue;
                }

                IOConnectionInfo ioc = null;
                if ((doc.LockedIoc != null) && !string.IsNullOrEmpty(doc.LockedIoc.Path))
                {
                    ioc = doc.LockedIoc;
                }
                else if ((doc.Database.IOConnectionInfo != null) &&
                         !string.IsNullOrEmpty(doc.Database.IOConnectionInfo.Path))
                {
                    ioc = doc.Database.IOConnectionInfo;
                }

                if (bEmptyName || ((ioc != null) && (ioc.Path.IndexOf(strName,
                                                                      StrUtil.CaseIgnoreCmp) >= 0)))
                {
                    Program.MainForm.MakeDocumentActive(doc);
                    break;
                }
            }
        }
Пример #5
0
        private static void ChangeTriggerOnOff(EcasAction a, EcasContext ctx)
        {
            string strName = EcasUtil.GetParamString(a.Parameters, 0, true);
            uint   uState  = EcasUtil.GetParamUInt(a.Parameters, 1);

            EcasTrigger t = null;

            if (strName.Length == 0)
            {
                t = ctx.Trigger;
            }
            else
            {
                foreach (EcasTrigger trg in ctx.TriggerSystem.TriggerCollection)
                {
                    if (trg.Name == strName)
                    {
                        t = trg; break;
                    }
                }
            }

            if (t == null)
            {
                throw new Exception(KPRes.ObjectNotFound +
                                    MessageService.NewParagraph + KPRes.TriggerName + ": " + strName + ".");
            }

            if (uState == IdTriggerOn)
            {
                t.On = true;
            }
            else if (uState == IdTriggerOff)
            {
                t.On = false;
            }
            else if (uState == IdTriggerToggle)
            {
                t.On = !t.On;
            }
            else
            {
                Debug.Assert(false);
            }
        }
Пример #6
0
        internal bool RestartTimer()
        {
            if (!m_type.Equals(EcasEventIDs.TimePeriodic))
            {
                Debug.Assert(false); return(false);
            }

            uint s = EcasUtil.GetParamUInt(m_params, 0);

            if (s == 0)
            {
                return(false);
            }

            DateTime dtNow = DateTime.UtcNow;

            m_lRunAtTicks = dtNow.AddSeconds((double)s - 0.45).Ticks;
            return(true);
        }
Пример #7
0
        private static void ImportIntoCurrentDatabase(EcasAction a, EcasContext ctx)
        {
            PwDatabase pd = Program.MainForm.ActiveDatabase;

            if ((pd == null) || !pd.IsOpen)
            {
                return;
            }

            string strPath = EcasUtil.GetParamString(a.Parameters, 0, true);

            if (string.IsNullOrEmpty(strPath))
            {
                return;
            }
            IOConnectionInfo ioc = IOConnectionInfo.FromPath(strPath);

            string strFormat = EcasUtil.GetParamString(a.Parameters, 1, true);

            if (string.IsNullOrEmpty(strFormat))
            {
                return;
            }
            FileFormatProvider ff = Program.FileFormatPool.Find(strFormat);

            if (ff == null)
            {
                throw new Exception(KPRes.Unknown + ": " + strFormat);
            }

            uint          uMethod = EcasUtil.GetParamUInt(a.Parameters, 2);
            Type          tMM     = Enum.GetUnderlyingType(typeof(PwMergeMethod));
            object        oMethod = Convert.ChangeType(uMethod, tMM);
            PwMergeMethod mm      = PwMergeMethod.None;

            if (Enum.IsDefined(typeof(PwMergeMethod), oMethod))
            {
                mm = (PwMergeMethod)oMethod;
            }
            else
            {
                Debug.Assert(false);
            }
            if (mm == PwMergeMethod.None)
            {
                mm = PwMergeMethod.CreateNewUuids;
            }

            CompositeKey cmpKey = KeyFromParams(a, 3, 4, 5);

            if ((cmpKey == null) && ff.RequiresKey)
            {
                KeyPromptForm kpf = new KeyPromptForm();
                kpf.InitEx(ioc, false, true);

                if (UIUtil.ShowDialogNotValue(kpf, DialogResult.OK))
                {
                    return;
                }

                cmpKey = kpf.CompositeKey;
                UIUtil.DestroyForm(kpf);
            }

            bool?b = true;

            try { b = ImportUtil.Import(pd, ff, ioc, mm, cmpKey); }
            finally
            {
                if (b.GetValueOrDefault(false))
                {
                    Program.MainForm.UpdateUI(false, null, true, null, true, null, true);
                }
            }
        }
        private static void ShowMessageBox(EcasAction a, EcasContext ctx)
        {
            VistaTaskDialog vtd = new VistaTaskDialog();

            string strMain = EcasUtil.GetParamString(a.Parameters, 0, true);

            if (!string.IsNullOrEmpty(strMain))
            {
                vtd.MainInstruction = strMain;
            }

            string strText = EcasUtil.GetParamString(a.Parameters, 1, true);

            if (!string.IsNullOrEmpty(strText))
            {
                vtd.Content = strText;
            }

            uint uIcon = EcasUtil.GetParamUInt(a.Parameters, 2, 0);

            if (uIcon == (uint)MessageBoxIcon.Information)
            {
                vtd.SetIcon(VtdIcon.Information);
            }
            else if (uIcon == (uint)MessageBoxIcon.Question)
            {
                vtd.SetIcon(VtdCustomIcon.Question);
            }
            else if (uIcon == (uint)MessageBoxIcon.Warning)
            {
                vtd.SetIcon(VtdIcon.Warning);
            }
            else if (uIcon == (uint)MessageBoxIcon.Error)
            {
                vtd.SetIcon(VtdIcon.Error);
            }
            else
            {
                Debug.Assert(uIcon == (uint)MessageBoxIcon.None);
            }

            vtd.CommandLinks = false;

            uint uBtns      = EcasUtil.GetParamUInt(a.Parameters, 3, 0);
            bool bCanCancel = false;

            if (uBtns == (uint)MessageBoxButtons.OKCancel)
            {
                vtd.AddButton((int)DialogResult.OK, KPRes.Ok, null);
                vtd.AddButton((int)DialogResult.Cancel, KPRes.Cancel, null);
                bCanCancel = true;
            }
            else if (uBtns == (uint)MessageBoxButtons.YesNo)
            {
                vtd.AddButton((int)DialogResult.OK, KPRes.YesCmd, null);
                vtd.AddButton((int)DialogResult.Cancel, KPRes.NoCmd, null);
                bCanCancel = true;
            }
            else
            {
                vtd.AddButton((int)DialogResult.OK, KPRes.Ok, null);
            }

            uint uDef = EcasUtil.GetParamUInt(a.Parameters, 4, 0);
            ReadOnlyCollection <VtdButton> lButtons = vtd.Buttons;

            if (uDef < (uint)lButtons.Count)
            {
                vtd.DefaultButtonID = lButtons[(int)uDef].ID;
            }

            vtd.WindowTitle = PwDefs.ShortProductName;

            string strTrg = ctx.Trigger.Name;

            if (!string.IsNullOrEmpty(strTrg))
            {
                vtd.FooterText = KPRes.Trigger + @": '" + strTrg + @"'.";
                vtd.SetFooterIcon(VtdIcon.Information);
            }

            int dr;

            if (vtd.ShowDialog())
            {
                dr = vtd.Result;
            }
            else
            {
                string str = (strMain ?? string.Empty);
                if (!string.IsNullOrEmpty(strText))
                {
                    if (str.Length > 0)
                    {
                        str += MessageService.NewParagraph;
                    }
                    str += strText;
                }

                MessageBoxDefaultButton mbdb = MessageBoxDefaultButton.Button1;
                if (uDef == 1)
                {
                    mbdb = MessageBoxDefaultButton.Button2;
                }
                else if (uDef == 2)
                {
                    mbdb = MessageBoxDefaultButton.Button3;
                }

                MessageService.ExternalIncrementMessageCount();
                try
                {
                    dr = (int)MessageService.SafeShowMessageBox(str,
                                                                PwDefs.ShortProductName, (MessageBoxButtons)uBtns,
                                                                (MessageBoxIcon)uIcon, mbdb);
                }
                finally { MessageService.ExternalDecrementMessageCount(); }
            }

            uint uActCondID = EcasUtil.GetParamUInt(a.Parameters, 5, 0);

            bool bDrY = ((dr == (int)DialogResult.OK) ||
                         (dr == (int)DialogResult.Yes));
            bool bDrN = ((dr == (int)DialogResult.Cancel) ||
                         (dr == (int)DialogResult.No));

            bool bPerformAction = (((uActCondID == IdMbcY) && bDrY) ||
                                   ((uActCondID == IdMbcN) && bDrN));

            if (!bPerformAction)
            {
                return;
            }

            uint   uActID         = EcasUtil.GetParamUInt(a.Parameters, 6, 0);
            string strActionParam = EcasUtil.GetParamString(a.Parameters, 7, true);

            if (uActID == IdMbaNone)
            {
            }
            else if (uActID == IdMbaAbort)
            {
                if (bCanCancel)
                {
                    ctx.Cancel = true;
                }
            }
            else if (uActID == IdMbaCmd)
            {
                if (!string.IsNullOrEmpty(strActionParam))
                {
                    WinUtil.OpenUrl(strActionParam, null);
                }
            }
            else
            {
                Debug.Assert(false);
            }
        }
        private static void ExecuteShellCmd(EcasAction a, EcasContext ctx)
        {
            string strCmd       = EcasUtil.GetParamString(a.Parameters, 0);
            string strArgs      = EcasUtil.GetParamString(a.Parameters, 1, true, true);
            bool   bWait        = EcasUtil.GetParamBool(a.Parameters, 2);
            uint   uWindowStyle = EcasUtil.GetParamUInt(a.Parameters, 3);
            string strVerb      = EcasUtil.GetParamString(a.Parameters, 4, true);

            if (string.IsNullOrEmpty(strCmd))
            {
                return;
            }

            Process p = null;

            try
            {
                PwEntry pe = null;
                try { pe = Program.MainForm.GetSelectedEntry(false); }
                catch (Exception) { Debug.Assert(false); }

                strCmd = WinUtil.CompileUrl(strCmd, pe, true, null, false);

                ProcessStartInfo psi = new ProcessStartInfo();
                psi.FileName = strCmd;
                if (!string.IsNullOrEmpty(strArgs))
                {
                    psi.Arguments = strArgs;
                }

                bool bShEx = true;
                if (!string.IsNullOrEmpty(strVerb))
                {
                }                                                      // Need ShellExecute
                else if ((uWindowStyle == IdWindowMin) ||
                         (uWindowStyle == IdWindowMax))
                {
                }                                                          // Need ShellExecute
                else
                {
                    string strCmdFlt = strCmd.TrimEnd(new char[] { '\"', '\'',
                                                                   ' ', '\t', '\r', '\n' });
                    if (strCmdFlt.EndsWith(".exe", StrUtil.CaseIgnoreCmp) ||
                        strCmdFlt.EndsWith(".com", StrUtil.CaseIgnoreCmp))
                    {
                        bShEx = false;
                    }
                }
                psi.UseShellExecute = bShEx;

                if (uWindowStyle == IdWindowHidden)
                {
                    psi.CreateNoWindow = true;
                    psi.WindowStyle    = ProcessWindowStyle.Hidden;
                }
                else if (uWindowStyle == IdWindowMin)
                {
                    psi.WindowStyle = ProcessWindowStyle.Minimized;
                }
                else if (uWindowStyle == IdWindowMax)
                {
                    psi.WindowStyle = ProcessWindowStyle.Maximized;
                }

                if (!string.IsNullOrEmpty(strVerb))
                {
                    psi.Verb = strVerb;
                }

                p = NativeLib.StartProcessEx(psi);

                if ((p != null) && bWait)
                {
                    Program.MainForm.UIBlockInteraction(true);
                    MessageService.ExternalIncrementMessageCount();

                    try { p.WaitForExit(); }
                    catch (Exception) { Debug.Assert(false); }

                    MessageService.ExternalDecrementMessageCount();
                    Program.MainForm.UIBlockInteraction(false);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(strCmd + MessageService.NewParagraph + ex.Message);
            }
            finally
            {
                try { if (p != null)
                      {
                          p.Dispose();
                      }
                }
                catch (Exception) { Debug.Assert(false); }
            }
        }