Пример #1
0
        private void button_unionCatalog_findDp2Server_Click(object sender, EventArgs e)
        {
            dp2SearchForm dp2_searchform = this.MainForm.GetDp2SearchForm();

            GetDp2ResDlg dlg = new GetDp2ResDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "请指定要绑定的 dp2library 服务器名";
#if OLD_CHANNEL
            dlg.dp2Channels = dp2_searchform.Channels;
#endif
            dlg.ChannelManager = this.MainForm;
            dlg.Servers        = this.MainForm.Servers;
            dlg.EnabledIndices = new int[] { dp2ResTree.RESTYPE_SERVER };
            dlg.Path           = this.textBox_unionCatalog_bindingDp2ServerName.Text;

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            this.textBox_unionCatalog_bindingDp2ServerName.Text = dlg.Path;
        }
Пример #2
0
        private void button_modifyBindingItem_Click(object sender, EventArgs e)
        {
            if (this.listView_recordSyntaxAndEncodingBinding.SelectedItems.Count == 0)
            {
                MessageBox.Show(this, "尚未选定要修改的事项");
                return;
            }

            ListViewItem item = this.listView_recordSyntaxAndEncodingBinding.SelectedItems[0];

            RecordSyntaxAndEncodingBindingItemDlg dlg = new RecordSyntaxAndEncodingBindingItemDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.RecordSyntax = item.Text;
            dlg.Encoding     = item.SubItems[1].Text;

            dlg.StartPosition = FormStartPosition.CenterScreen;
            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            item.Text             = dlg.RecordSyntax;
            item.SubItems[1].Text = dlg.Encoding;
        }
Пример #3
0
        private void button_findServerName_Click(object sender, EventArgs e)
        {
            GetDp2ResDlg dlg = new GetDp2ResDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "请指定一个作为查重目标的 dp2library 服务器";
#if OLD_CHANNEL
            dlg.dp2Channels = this.Channels;
#endif
            dlg.ChannelManager = Program.MainForm;

            dlg.Servers        = this.MainForm.Servers;
            dlg.EnabledIndices = new int[] { dp2ResTree.RESTYPE_SERVER };
            dlg.Path           = this.textBox_serverName.Text;

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            this.textBox_serverName.Text = dlg.Path;
        }
Пример #4
0
        ServerDlg SetDefaultAccount(
            string strServerUrl,
            string strTitle,
            string strComment,
            IWin32Window owner)
        {
            dp2Server server = this.MainForm.Servers[strServerUrl];

            ServerDlg dlg = new ServerDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            if (String.IsNullOrEmpty(strServerUrl) == true)
            {
            }
            else
            {
                dlg.ServerUrl = strServerUrl;
            }

            if (owner == null)
            {
                owner = this;
            }


            if (String.IsNullOrEmpty(strTitle) == false)
            {
                dlg.Text = strTitle;
            }

            dlg.Comment  = strComment;
            dlg.UserName = server.DefaultUserName;

            this.MainForm.AppInfo.LinkFormState(dlg,
                                                "dp2_logindlg_state");

            dlg.ShowDialog(owner);

            this.MainForm.AppInfo.UnlinkFormState(dlg);


            if (dlg.DialogResult == DialogResult.Cancel)
            {
                return(null);
            }

            server.DefaultUserName = dlg.UserName;
            server.DefaultPassword =
                (dlg.SavePassword == true) ?
                dlg.Password : "";

            server.SavePassword = dlg.SavePassword;

            server.Url = dlg.ServerUrl;
            return(dlg);
        }
Пример #5
0
        // GCAT通道登录 旧的方式
        public void gcat_channel_BeforeLogin(object sender,
                                             DigitalPlatform.GcatClient.BeforeLoginEventArgs e)
        {
            string strUserName = (string)this.DetailForm.MainForm.ParamTable["author_number_account_username"];
            string strPassword = (string)this.DetailForm.MainForm.ParamTable["author_number_account_password"];

            if (String.IsNullOrEmpty(strUserName) == true)
            {
                strUserName = "******";
                strPassword = "";
            }

            // 直接试探
            if (!(e.UserName == strUserName && e.Failed == true) &&
                strUserName != "")
            {
                e.UserName = strUserName;
                e.Password = strPassword;
                return;
            }

            LoginDlg dlg = new LoginDlg();

            GuiUtil.SetControlFont(dlg, this.DetailForm.MainForm.Font);

            if (e.Failed == true)
            {
                dlg.textBox_comment.Text = "登录失败。加著者号码功能需要重新登录";
            }
            else
            {
                dlg.textBox_comment.Text = "加著者号码功能需要登录";
            }

            dlg.textBox_serverAddr.Text       = e.GcatServerUrl;
            dlg.textBox_userName.Text         = strUserName;
            dlg.textBox_password.Text         = strPassword;
            dlg.checkBox_savePassword.Checked = true;

            dlg.textBox_serverAddr.Enabled = false;
            dlg.TopMost = true; // 2009/11/12 因为ShowDialog(null),为了防止对话框被放在非顶部
            dlg.ShowDialog(null);
            if (dlg.DialogResult != DialogResult.OK)
            {
                e.Cancel = true;    // 2009/11/12 如果缺这一句,会造成Cancel后仍然重新弹出登录对话框
                return;
            }

            strUserName = dlg.textBox_userName.Text;
            strPassword = dlg.textBox_password.Text;

            e.UserName = strUserName;
            e.Password = strPassword;

            this.DetailForm.MainForm.ParamTable["author_number_account_username"] = strUserName;
            this.DetailForm.MainForm.ParamTable["author_number_account_password"] = strPassword;
        }
Пример #6
0
        // 修改名字和注释
        void menu_modify(object sender, System.EventArgs e)
        {
            string strError = "";

            if (listView1.SelectedItems.Count == 0)
            {
                strError = "尚未选择拟修改的模板记录事项...";
                goto ERROR1;
            }

            ListViewItem item = listView1.SelectedItems[0];

            TemplateRecordDlg dlg = new TemplateRecordDlg();

            GuiUtil.SetControlFont(dlg, this.Font, false);

            string strOldName = ListViewUtil.GetItemText(item, 0);

            dlg.TemplateName = ListViewUtil.GetItemText(item, 0);
            dlg.Comment      = ListViewUtil.GetItemText(item, 1);

REDO_INPUT:
            dlg.ShowDialog(this);
            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            // 查重 2014/6/21
            ListViewItem dup = ListViewUtil.FindItem(this.listView1, dlg.TemplateName, 0);

            if (dup != null && dup != item)
            {
                strError = "模板名 '" + dlg.TemplateName + "' 已经被使用了,不允许重复出现。请重新输入模板名";
                MessageBox.Show(this, strError);
                goto REDO_INPUT;
            }

            int nRet = ChangeRecordProperty(strOldName,
                                            dlg.TemplateName,
                                            dlg.Comment,
                                            out strError);

            if (nRet == -1)
            {
                goto ERROR1;
            }

            FillList(false);
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #7
0
        void menu_modifyServer(object sender, System.EventArgs e)
        {
            if (listView1.SelectedIndices.Count == 0)
            {
                MessageBox.Show(this, "尚未选择要修改的事项 ...");
                return;
            }


            int nActiveLine = listView1.SelectedIndices[0];
            // ListViewItem item = listView1.Items[nActiveLine];

            ServerDlg dlg = new ServerDlg();

            // GuiUtil.AutoSetDefaultFont(dlg);
            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "修改缺省帐户参数";

            dlg.ServerName   = ((dp2Server)Servers[nActiveLine]).Name;
            dlg.Password     = ((dp2Server)Servers[nActiveLine]).DefaultPassword;
            dlg.ServerUrl    = ((dp2Server)Servers[nActiveLine]).Url;
            dlg.UserName     = ((dp2Server)Servers[nActiveLine]).DefaultUserName;
            dlg.SavePassword = ((dp2Server)Servers[nActiveLine]).SavePassword;

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            ((dp2Server)Servers[nActiveLine]).Name            = dlg.ServerName;
            ((dp2Server)Servers[nActiveLine]).DefaultPassword = dlg.Password;
            ((dp2Server)Servers[nActiveLine]).Url             = dlg.ServerUrl;
            ((dp2Server)Servers[nActiveLine]).DefaultUserName = dlg.UserName;
            ((dp2Server)Servers[nActiveLine]).SavePassword    = dlg.SavePassword;

            Servers.Changed = true;

            FillList();

            // 选择一行
            // parameters:
            //		nIndex	要设置选择标记的行。如果==-1,表示清除全部选择标记但不选择。
            //		bMoveFocus	是否同时移动focus标志到所选择行
            ListViewUtil.SelectLine(listView1,
                                    nActiveLine,
                                    true);

            m_bChanged = true;
        }
Пример #8
0
        private void button_viewXmlRecord_Click(object sender, EventArgs e)
        {
            XmlViewerForm dlg = new XmlViewerForm();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text          = "当前XML数据";
            dlg.MainForm      = this.MainForm;
            dlg.XmlString     = this.XmlRecord;
            dlg.StartPosition = FormStartPosition.CenterScreen;
            dlg.ShowDialog();
            return;
        }
Пример #9
0
        // 获得缺省查重起点路径
        private void button_dp2library_searchDup_findDefaultStartPath_Click(object sender, EventArgs e)
        {
            string strError = "";

            dp2SearchForm dp2_searchform = this.MainForm.GetDp2SearchForm();

            if (dp2_searchform == null)
            {
                strError = "无法获得打开的 dp2检索窗,无法获得 dp2library 数据库名";
                goto ERROR1;
            }

            string strDefaultStartPath = Global.GetForwardStyleDp2Path(this.textBox_dp2library_searchDup_defaultStartPath.Text);

            // 临时指定一个dp2library服务器和数据库
            GetDp2ResDlg dlg = new GetDp2ResDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "请指定一个 dp2library 数据库,以作为模拟的查重起点";
#if OLD_CHANNEL
            dlg.dp2Channels = dp2_searchform.Channels;
#endif
            dlg.ChannelManager = Program.MainForm;

            dlg.Servers        = this.MainForm.Servers;
            dlg.EnabledIndices = new int[] { dp2ResTree.RESTYPE_DB };
            dlg.Path           = strDefaultStartPath;

            this.MainForm.AppInfo.LinkFormState(dlg,
                                                "searchdup_selectstartpath_dialog_state");

            dlg.ShowDialog(this);

            this.MainForm.AppInfo.UnlinkFormState(dlg);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            strDefaultStartPath = Global.GetBackStyleDp2Path(dlg.Path + "/?");


            this.textBox_dp2library_searchDup_defaultStartPath.Text = strDefaultStartPath;
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #10
0
        private void button_hostManage_Click(object sender, EventArgs e)
        {
            DigitalPlatform.DTLP.HostManageDlg dlg
                = new DigitalPlatform.DTLP.HostManageDlg();
            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.applicationInfo = MainForm.AppInfo;
            dlg.StartPosition   = FormStartPosition.CenterScreen;
            dlg.ShowDialog(this);

            if (dlg.DialogResult == DialogResult.OK)
            {
                MessageBox.Show(this, "服务器地址修改后,需要重新打开相关窗口,新的配置才能反映在资源树中 ...");
            }
        }
Пример #11
0
        private void toolStripButton_modify_Click(object sender, EventArgs e)
        {
            string strError;

            if (this.listView1.SelectedItems.Count == 0)
            {
                strError = "尚未选择要修改的服务器";
                goto ERROR1;
            }
            ListViewItem item = this.listView1.SelectedItems[0];

            XmlElement server = (XmlElement)item.Tag;

            using (ZServerPropertyForm dlg = new ZServerPropertyForm())
            {
                GuiUtil.SetControlFont(dlg, this.Font);
                dlg.UnionCatalogPageVisible = false;
                dlg.XmlNode       = server;
                dlg.StartPosition = FormStartPosition.CenterScreen;
                dlg.ShowDialog(this);

                if (dlg.DialogResult == DialogResult.Cancel)
                {
                    return;
                }

                // 对 server name 进行查重
                string name = server.GetAttribute("name");
                if (SearchDup(ref name, item) == true)
                {
                    server.SetAttribute("name", name);
                }

                {
                    ListViewUtil.ChangeItemText(item, COLUMN_NAME, server.GetAttribute("name"));
                    ListViewUtil.ChangeItemText(item, COLUMN_DATABASE, ZServerUtil.GetDatabaseList(server));
                }

                this.Changed = true;
                return;
            }
ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #12
0
        private void toolStripSplitButton_new1_ButtonClick(object sender, EventArgs e)
        {
            XmlElement server = _dom.CreateElement("server");

            _dom.DocumentElement.AppendChild(server);
            // server.SetAttribute("recsperbatch", "10");

            using (ZServerPropertyForm dlg = new ZServerPropertyForm())
            {
                GuiUtil.SetControlFont(dlg, this.Font);
                dlg.UnionCatalogPageVisible = false;
                dlg.XmlNode       = server;
                dlg.StartPosition = FormStartPosition.CenterScreen;
                dlg.ShowDialog(this);

                if (dlg.DialogResult == DialogResult.Cancel)
                {
                    server.ParentNode.RemoveChild(server);
                    return;
                }

                // 对 server name 进行查重
                string name = server.GetAttribute("name");
                if (SearchDup(ref name, null) == true)
                {
                    server.SetAttribute("name", name);
                }

                {
                    ListViewItem item = new ListViewItem();
                    item.Tag = server;
                    ListViewUtil.ChangeItemText(item, COLUMN_NAME, name);
                    ListViewUtil.ChangeItemText(item, COLUMN_DATABASE, ZServerUtil.GetDatabaseList(server));
                    ListViewUtil.ChangeItemText(item, COLUMN_ENABLED, "是");
                    SetItemColor(item);

                    this.listView1.Items.Add(item);
                }

                this.Changed = true;
            }
        }
Пример #13
0
        // 为 library.xml 配置服务器同步参数
        private void ToolStripMenuItem_configServerReplication_Click(object sender, EventArgs e)
        {
            string strError = "";

            string strDataDir      = this.textBox_dataDir.Text;
            string strInstanceName = this.textBox_instanceName.Text;

            if (string.IsNullOrEmpty(strDataDir))
            {
                strError = "尚未指定数据目录";
                goto ERROR1;
            }

            string strLibraryXmlFileName = Path.Combine(strDataDir, "library.xml");

            if (File.Exists(strLibraryXmlFileName) == false)
            {
                strError = "配置文件 '" + strLibraryXmlFileName + "' 不存在,无法进行进一步配置";
                goto ERROR1;
            }

            LibraryXmlDialog dlg = new LibraryXmlDialog();

            GuiUtil.SetControlFont(dlg, this.Font);
            dlg.Text = "服务器同步参数";
            dlg.LibraryXmlFileName = strLibraryXmlFileName;
            dlg.ShowDialog(this);

            if (dlg.DialogResult == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }

            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #14
0
        private void button_dtlp_dupCfg_Click(object sender, EventArgs e)
        {
            string strError = "";

            DtlpSearchForm dtlp_searchform = this.MainForm.GetDtlpSearchForm();

            if (dtlp_searchform == null)
            {
                strError = "无法获得打开的DTLP检索窗,无法配置查重";
                goto ERROR1;
            }


            DupCfgDialog dlg = new DupCfgDialog();

            GuiUtil.SetControlFont(dlg, this.Font);

            int nRet = dlg.Initial(this.MainForm.DataDir + "\\dtlp_dup.xml",
                                   out strError);

            if (nRet == -1)
            {
                goto ERROR1;
            }

            dlg.DtlpChannels = dtlp_searchform.DtlpChannels;
            dlg.DtlpChannel  = dtlp_searchform.DtlpChannel;

            // dlg.StartPosition = FormStartPosition.CenterScreen;
            this.MainForm.AppInfo.LinkFormState(dlg,
                                                "dupcfg_dialogdialog_state");
            dlg.ShowDialog(this);
            this.MainForm.AppInfo.UnlinkFormState(dlg);
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #15
0
        private void button_newBindingItem_Click(object sender, EventArgs e)
        {
            RecordSyntaxAndEncodingBindingItemDlg dlg = new RecordSyntaxAndEncodingBindingItemDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Encoding      = this.comboBox_defaultEncoding.Text; // 引入缺省编码方式值
            dlg.StartPosition = FormStartPosition.CenterScreen;
            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            // 查重
            string strNewSyntax = ZTargetControl.GetLeftValue(dlg.RecordSyntax);

            for (int i = 0; i < this.listView_recordSyntaxAndEncodingBinding.Items.Count; i++)
            {
                string strExistSyntax = this.listView_recordSyntaxAndEncodingBinding.Items[i].Text;
                strExistSyntax = ZTargetControl.GetLeftValue(strExistSyntax);

                if (strNewSyntax == strExistSyntax)
                {
                    MessageBox.Show(this, "数据格式 '" + strNewSyntax + "' 已经存在(第 " + (i + 1).ToString() + " 行),不能重复加入");
                    return;
                }
            }

            ListViewItem item = new ListViewItem();

            item.Text = dlg.RecordSyntax;
            item.SubItems.Add(dlg.Encoding);

            this.listView_recordSyntaxAndEncodingBinding.Items.Add(item);
        }
Пример #16
0
        private void button_findDate_Click(object sender, EventArgs e)
        {
            GetDateDlg dlg = new GetDateDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text     = this.Caption;
            dlg.DateTime = this.Value;
            // dlg.StartLocation = Control.MousePosition;

            dlg.StartPosition = FormStartPosition.Manual;
            dlg.Location      = this.PointToScreen(
                new Point(this.Margin.Horizontal,
                          4 + this.Height + this.Margin.Vertical)
                );
            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            this.Value = dlg.DateTime;
        }
Пример #17
0
        private void button_worToIso_convert_Click(object sender, EventArgs e)
        {
            string strError = "";
            int    nRet     = 0;

            if (string.IsNullOrEmpty(this.textBox_worToIso_worFilename.Text) == true)
            {
                strError = "尚未指定工作单文件名";
                goto ERROR1;
            }

            Encoding encoding = MarcUtil.GetEncoding(this.comboBox_worToIso_encoding.Text);

            if (encoding == null)
            {
                encoding = Encoding.GetEncoding(936);
            }

            Encoding preferredEncoding = Encoding.UTF8;

            OpenMarcFileDlg dlg = new OpenMarcFileDlg();

            GuiUtil.SetControlFont(dlg, this.Font);
            dlg.Text                  = "请指定目标 ISO2709 文件名";
            dlg.IsOutput              = true;
            dlg.FileName              = "";
            dlg.CrLf                  = false;
            dlg.AddG01Visible         = false;
            dlg.RemoveField998Visible = false;
            //dlg.RemoveField998 = m_mainForm.LastRemoveField998;
            dlg.EncodingListItems = Global.GetEncodingList(false);
            dlg.MarcSyntax        = "<自动>"; // strPreferedMarcSyntax;
            dlg.EnableMarcSyntax  = false;

            this.MainForm.AppInfo.LinkFormState(dlg, "OpenMarcFileDlg_forOutput_state");
            dlg.ShowDialog(this);
            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            Encoding targetEncoding = null;

            nRet = Global.GetEncoding(dlg.EncodingName,
                                      out targetEncoding,
                                      out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }

            bool bExist  = File.Exists(dlg.FileName);
            bool bAppend = false;

            if (bExist == true)
            {
                DialogResult result = MessageBox.Show(this,
                                                      "文件 '" + dlg.FileName + "' 已存在,是否以追加方式写入记录?\r\n\r\n--------------------\r\n注:(是)追加  (否)覆盖  (取消)放弃",
                                                      "UtilityForm",
                                                      MessageBoxButtons.YesNoCancel,
                                                      MessageBoxIcon.Question,
                                                      MessageBoxDefaultButton.Button1);
                if (result == DialogResult.Yes)
                {
                    bAppend = true;
                }

                if (result == DialogResult.No)
                {
                    bAppend = false;
                }

                if (result == DialogResult.Cancel)
                {
                    strError = "放弃处理...";
                    goto ERROR1;
                }
            }


            EnableControls(false);

            stop.OnStop += new StopEventHandler(this.DoStop);
            stop.Initial("正在转换文件格式 ...");
            stop.BeginLoop();

            try
            {
                using (TextReader reader = new StreamReader(this.textBox_worToIso_worFilename.Text, encoding))
                    using (Stream target = File.Open(dlg.FileName,
                                                     FileMode.OpenOrCreate))
                    {
                        if (bAppend == false)
                        {
                            target.SetLength(0);
                        }
                        else
                        {
                            target.Seek(0, SeekOrigin.End);
                        }

                        for (int i = 0; ; i++)
                        {
                            stop.SetMessage("正在转换 " + (i + 1).ToString());

                            Application.DoEvents(); // 出让界面控制权

                            if (stop != null && stop.State != 0)
                            {
                                strError = "用户中断";
                                goto ERROR1;
                            }
                            string strMARC = "";
                            // return:
                            //	-2	MARC格式错
                            //	-1	出错
                            //	0	正确
                            //	1	结束(当前返回的记录有效)
                            //	2	结束(当前返回的记录无效)
                            nRet = MarcUtil.ReadWorksheetRecord(reader,
                                                                out strMARC,
                                                                out strError);
                            if (nRet == -1 || nRet == -2)
                            {
                                goto ERROR1;
                            }
                            if (nRet == 2)
                            {
                                break;
                            }

                            if (dlg.Mode880 == true && dlg.MarcSyntax == "usmarc")
                            {
                                MarcRecord record = new MarcRecord(strMARC);
                                MarcQuery.To880(record);
                                strMARC = record.Text;
                            }

                            byte[] baTarget = null;

                            // 将MARC机内格式转换为ISO2709格式
                            // parameters:
                            //      strSourceMARC   [in]机内格式MARC记录。
                            //      strMarcSyntax   [in]为"unimarc"或"usmarc"
                            //      targetEncoding  [in]输出ISO2709的编码方式。为UTF8、codepage-936等等
                            //      baResult    [out]输出的ISO2709记录。编码方式受targetEncoding参数控制。注意,缓冲区末尾不包含0字符。
                            // return:
                            //      -1  出错
                            //      0   成功
                            nRet = MarcUtil.CvtJineiToISO2709(
                                strMARC,
                                dlg.MarcSyntax,
                                targetEncoding,
                                out baTarget,
                                out strError);
                            if (nRet == -1)
                            {
                                goto ERROR1;
                            }

                            target.Write(baTarget, 0,
                                         baTarget.Length);

                            if (dlg.CrLf == true)
                            {
                                byte[] baCrLf = targetEncoding.GetBytes("\r\n");
                                target.Write(baCrLf, 0,
                                             baCrLf.Length);
                            }
                        }
                    }
            }
            catch (Exception ex)
            {
                strError = "转换过程出现异常: " + ex.Message;
                goto ERROR1;
            }
            finally
            {
                stop.EndLoop();
                stop.OnStop -= new StopEventHandler(this.DoStop);
                stop.Initial("");

                EnableControls(true);
            }
            MessageBox.Show(this, "转换完成。记录已写入文件 " + dlg.FileName + " 中");
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #18
0
        async void menu_newServer(object sender, System.EventArgs e)
        {
            List <string> errors = new List <string>();

            int nActiveLine = -1;

            if (listView1.SelectedIndices.Count != 0)
            {
                nActiveLine = listView1.SelectedIndices[0];
            }

            ServerDlg dlg = new ServerDlg();

            // GuiUtil.AutoSetDefaultFont(dlg);
            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "新增服务器地址和默认帐户";

            if (nActiveLine == -1)
            {
                // 无参考事项情形的新增
#if NO
                dlg.ServerName = "社科院联合编目中心";
                dlg.ServerUrl  = "http://ssucs.org/dp2library";
                dlg.UserName   = "******";
#endif
                dlg.ServerName = "单机版服务器";
                dlg.ServerUrl  = "net.pipe://localhost/dp2library/xe";
                dlg.UserName   = "******";
            }
            else
            {
                dp2Server server = (dp2Server)Servers[nActiveLine];
                dlg.ServerName   = server.Name;
                dlg.Password     = server.DefaultPassword;
                dlg.ServerUrl    = server.Url;
                dlg.UserName     = server.DefaultUserName;
                dlg.SavePassword = server.SavePassword;
            }

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            List <string> urls = new List <string>();
            if (dlg.ServerUrl.IndexOf("\r\n") == -1)
            {
                urls.Add(dlg.ServerUrl);
            }
            else
            {
                urls = StringUtil.SplitList(dlg.ServerUrl.Replace("\r\n", "\r"), '\r');
                StringUtil.RemoveBlank(ref urls);
                StringUtil.RemoveDupNoSort(ref urls);
            }

            using (MessageBar bar = MessageBar.Create(this, "正在添加服务器节点"))
            {
                // 允许一次创建多个服务器节点
                int i = 0;
                foreach (string url in urls)
                {
                    // 获得服务器 UID
                    string uid = "";
                    bar.SetMessageText($"正在获取服务器 {url} 的 UID ...");
                    var result = await ServerDlg.GetServerUID(url);

                    if (result.Value == -1)
                    {
                        errors.Add($"针对服务器 {url} 获取服务器 UID 时出错: {result.ErrorInfo}");
                    }
                    else
                    {
                        uid = result.ErrorCode;
                    }

                    // 对 UID 进行查重
                    if (string.IsNullOrEmpty(uid) == false)
                    {
                        var dup_list = Servers.FindServerByUID(uid);
                        if (dup_list.Count > 0)
                        {
                            errors.Add($"拟添加的新服务器节点 '{url}' 因其 UID '{uid}' 和已有的服务器节点({dup_list[0].Name})重复,无法添加");
                            continue;
                        }
                    }

                    dp2Server server = Servers.NewServer(nActiveLine);
                    // TODO: 建议用 public 账户尝试从 dp2library 服务器获得服务器名字符串
                    string name = dlg.ServerName;
                    if (i > 0)
                    {
                        name = dlg.ServerName + (i + 1).ToString();
                    }
                    server.Name            = name;
                    server.DefaultPassword = dlg.Password;
                    server.Url             = url;
                    server.DefaultUserName = dlg.UserName;
                    server.SavePassword    = dlg.SavePassword;
                    server.UID             = uid;

                    i++;
                }
            }

            Servers.Changed = true;

            FillList();

            // 选择一行
            // parameters:
            //		nIndex	要设置选择标记的行。如果==-1,表示清除全部选择标记但不选择。
            //		bMoveFocus	是否同时移动focus标志到所选择行
            ListViewUtil.SelectLine(listView1,
                                    Servers.Count - 1,
                                    true);
            listView1.EnsureVisible(Servers.Count - 1);

            m_bChanged = true;

            if (errors.Count > 0)
            {
                MessageDlg.Show(this, $"新增服务器节点时出错:\r\n{StringUtil.MakePathList(errors, "\r\n")}", "ServersDlg");
            }
        }
Пример #19
0
        async void menu_modifyServer(object sender, System.EventArgs e)
        {
            string strError;

            if (listView1.SelectedIndices.Count == 0)
            {
                strError = "尚未选择要修改的事项 ...";
                goto ERROR1;
            }

            int nActiveLine = listView1.SelectedIndices[0];
            // ListViewItem item = listView1.Items[nActiveLine];

            ServerDlg dlg = new ServerDlg();

            // GuiUtil.AutoSetDefaultFont(dlg);
            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "修改缺省帐户参数";

            dlg.ServerName   = ((dp2Server)Servers[nActiveLine]).Name;
            dlg.Password     = ((dp2Server)Servers[nActiveLine]).DefaultPassword;
            dlg.ServerUrl    = ((dp2Server)Servers[nActiveLine]).Url;
            dlg.UserName     = ((dp2Server)Servers[nActiveLine]).DefaultUserName;
            dlg.SavePassword = ((dp2Server)Servers[nActiveLine]).SavePassword;

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            dp2Server server = ((dp2Server)Servers[nActiveLine]);

            server.Name            = dlg.ServerName;
            server.DefaultPassword = dlg.Password;
            server.Url             = dlg.ServerUrl;
            server.DefaultUserName = dlg.UserName;
            server.SavePassword    = dlg.SavePassword;

            // 获取 UID
            using (MessageBar bar = MessageBar.Create(this,
                                                      "获取 UID",
                                                      $"正在获取服务器 {server.Url} 的 UID ..."))
            {
                var result = await ServerDlg.GetServerUID(server.Url);

                if (result.Value == -1)
                {
                    strError = result.ErrorInfo;
                    goto ERROR1;
                }
                server.UID = result.ErrorCode;
            }

            Servers.Changed = true;

            FillList();

            // 选择一行
            // parameters:
            //		nIndex	要设置选择标记的行。如果==-1,表示清除全部选择标记但不选择。
            //		bMoveFocus	是否同时移动focus标志到所选择行
            ListViewUtil.SelectLine(listView1,
                                    nActiveLine,
                                    true);

            m_bChanged = true;
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
Пример #20
0
        void menuItem_property_Click(object sender,
                                     EventArgs e)
        {
            TreeNode node = this.SelectedNode;

            if (node == null)
            {
                MessageBox.Show(this, "尚未选择节点");
                return;
            }

            if (IsServer(node) == true)
            {
                OaiServerPropertyForm dlg = new OaiServerPropertyForm();
                GuiUtil.SetControlFont(dlg, this.Font);
                dlg.XmlNode       = TreeNodeInfo.GetXmlNode(node);
                dlg.StartPosition = FormStartPosition.CenterScreen;
                dlg.ShowDialog(this);
                if (dlg.DialogResult == DialogResult.OK)
                {
                    this.Changed = true;
                    node.Text    = dlg.ServerName;

                    TreeNodeInfo info = (TreeNodeInfo)node.Tag;
                    info.Name = dlg.ServerName;

                    /*
                     * // 显示下面的数据库节点
                     * RefreshDatabaseNames(node);
                     * node.Expand();
                     * */

                    if (this.OnServerChanged != null)
                    {
                        ServerChangedEventArgs e1 = new ServerChangedEventArgs();
                        e1.TreeNode = node;
                        this.OnServerChanged(this, e1);
                    }

                    if (node.ImageIndex == TYPE_SERVER_ONLINE)
                    {
                        MessageBox.Show(this, "注意:(当前OAI服务器处于已联机状态。) 对OAI服务器属性参数的修改,要在下一次连接中才能生效。\r\n\r\n为使参数立即生效,可断开连接,然后重新进行检索操作。");
                    }
                }
            }

            if (node.ImageIndex == TYPE_DIR)
            {
                ZDirPopertyForm dlg = new ZDirPopertyForm();
                GuiUtil.SetControlFont(dlg, this.Font);
                dlg.XmlNode       = TreeNodeInfo.GetXmlNode(node);
                dlg.StartPosition = FormStartPosition.CenterScreen;
                dlg.ShowDialog(this);
                if (dlg.DialogResult == DialogResult.OK)
                {
                    this.Changed = true;
                    node.Text    = dlg.DirName;

                    TreeNodeInfo info = (TreeNodeInfo)node.Tag;
                    info.Name = dlg.DirName;
                }
            }
        }
Пример #21
0
        void menu_newServer(object sender, System.EventArgs e)
        {
            int nActiveLine = -1;

            if (listView1.SelectedIndices.Count != 0)
            {
                nActiveLine = listView1.SelectedIndices[0];
            }

            ServerDlg dlg = new ServerDlg();

            // GuiUtil.AutoSetDefaultFont(dlg);
            GuiUtil.SetControlFont(dlg, this.Font);

            dlg.Text = "新增服务器地址和缺省帐户";

            if (nActiveLine == -1)
            {
                // 无参考事项情形的新增
                dlg.ServerName = "社科院联合编目中心";
                dlg.ServerUrl  = "http://ssucs.org/dp2library";
                dlg.UserName   = "******";
            }
            else
            {
                dlg.ServerName   = ((dp2Server)Servers[nActiveLine]).Name;
                dlg.Password     = ((dp2Server)Servers[nActiveLine]).DefaultPassword;
                dlg.ServerUrl    = ((dp2Server)Servers[nActiveLine]).Url;
                dlg.UserName     = ((dp2Server)Servers[nActiveLine]).DefaultUserName;
                dlg.SavePassword = ((dp2Server)Servers[nActiveLine]).SavePassword;
            }

            dlg.ShowDialog(this);

            if (dlg.DialogResult != DialogResult.OK)
            {
                return;
            }

            dp2Server server = Servers.NewServer(nActiveLine);

            server.Name            = dlg.ServerName;
            server.DefaultPassword = dlg.Password;
            server.Url             = dlg.ServerUrl;
            server.DefaultUserName = dlg.UserName;
            server.SavePassword    = dlg.SavePassword;

            Servers.Changed = true;

            FillList();

            // 选择一行
            // parameters:
            //		nIndex	要设置选择标记的行。如果==-1,表示清除全部选择标记但不选择。
            //		bMoveFocus	是否同时移动focus标志到所选择行
            ListViewUtil.SelectLine(listView1,
                                    Servers.Count - 1,
                                    true);

            m_bChanged = true;
        }
Пример #22
0
        void channelArray_AskAccountInfo(object sender,
                                         AskDtlpAccountInfoEventArgs e)
        {
            e.Owner    = null;
            e.UserName = "";
            e.Password = "";

            LoginDlg dlg = new LoginDlg();

            GuiUtil.SetControlFont(dlg, this.Font);

            AccountItem item = (AccountItem)AccountTable[e.Path];

            if (item == null)
            {
                item = new AccountItem();
                AccountTable.Add(e.Path, item);

                // 从配置文件中得到缺省账户
                item.UserName = MainForm.AppInfo.GetString(
                    "preference",
                    "defaultUserName",
                    "public");
                item.Password = MainForm.AppInfo.GetString(
                    "preference",
                    "defaultPassword",
                    "");
            }

            dlg.textBox_serverAddr.Text = e.Path;
            dlg.textBox_userName.Text   = item.UserName;
            dlg.textBox_password.Text   = item.Password;

            // 先登录一次再说
            {
                byte[] baResult = null;
                int    nRet     = e.Channel.API_ChDir(dlg.textBox_userName.Text,
                                                      dlg.textBox_password.Text,
                                                      e.Path,
                                                      out baResult);

                // 登录成功
                if (nRet > 0)
                {
                    e.Result = 2;
                    return;
                }
            }


            dlg.StartPosition = FormStartPosition.CenterScreen;
            dlg.ShowDialog(this);

            if (dlg.DialogResult == DialogResult.OK)
            {
                item.UserName = dlg.textBox_userName.Text;
                item.Password = dlg.textBox_password.Text;

                e.UserName = dlg.textBox_userName.Text;
                e.Password = dlg.textBox_password.Text;
                e.Owner    = this;
                e.Result   = 1;
                return;
            }

            e.Result = 0;
            return;
        }