Example #1
0
        private void Codepage_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            string      cpe;
            string      previewtext;
            parse_bytes parse_bytes = new parse_bytes();

            //手动选择字符编码
            switch (codepage.SelectedIndex)
            {
            case 1:
            {
                cpe = "gbk";
                break;
            }

            case 2:
            {
                cpe = "big5";
                break;
            }

            case 3:
            {
                cpe = "sjis";
                break;
            }

            case 4:
            {
                cpe = "euckr";
                break;
            }

            default:
            {
                cpe = "";
                break;
            }
            }

            //预览显示效果
            if (src != null)
            {
                previewtext  = parse_bytes.byte2str(src, cpe);
                previewtext  = shrinktext(previewtext);
                preview.Text = previewtext;
                cp           = cpe;
            }
        }
Example #2
0
        private async void Import_ks_Click(object sender, RoutedEventArgs e)
        {
            loadsave    loadsave    = new loadsave();
            parse_bytes parse_bytes = new parse_bytes();


            // 打开文件
            files files = await loadsave.load_ksasync();

            if (files.filename != "empty" && files.srcode.Count() != 0)
            {
                string encoding = parse_bytes.DetectUnicode(files.srcode);
                string src2;

                //ANSI 处理
                if (encoding == "ansi")
                {
                    ansitake ansitake_dlg = new ansitake();
                    ansitake_dlg.src = files.srcode;
                    await ansitake_dlg.ShowAsync();

                    encoding = ansitake_dlg.cp;
                }

                //还原二进制为文本
                src2 = parse_bytes.byte2str(files.srcode, encoding);

                //判断 .ks 文件类型
                if (files.filename.Contains(".ks"))
                {
                    parse_ks_perline parse_ks_perline = new parse_ks_perline();
                    ks_perline = parse_ks_perline.parsestr(src2);

                    //按行拆分文本

                    for (int i = 0; i < ks_perline.Count; i++)
                    {
                        //根据每行内容,进行上色
                        if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
                        {
                            ks_perline[i].textcolor = new SolidColorBrush(this.ActualTheme == ElementTheme.Dark ? ks_perline[i].text_cd : ks_perline[i].text_cl);
                        }
                        else
                        {
                            //由于 this.RequestedTheme 会返回 ElementTheme.Default,故原方法不可用
                            ks_perline[i].textcolor = new SolidColorBrush(Application.Current.RequestedTheme == ApplicationTheme.Dark ? ks_perline[i].text_cd : ks_perline[i].text_cl);
                        }
                    }

                    file_info.Text = files.filename;

                    if (textonly == true)
                    {
                        //过滤代码等内容,只留下文本
                        filter_ks_perline      = parse_ks_perline.filter_perline(ks_perline);
                        text_list.ItemsSource  = filter_ks_perline;
                        text_list2.ItemsSource = filter_ks_perline;
                    }
                    else
                    {
                        //原样输出
                        text_list.ItemsSource  = ks_perline;
                        text_list2.ItemsSource = ks_perline;
                    }

                    bot_p_n.IsEnabled   = true;
                    bot_p_n2.IsEnabled  = true;
                    text_src.IsEnabled  = true;
                    text_src2.IsEnabled = true;
                    text_dst.IsEnabled  = true;
                    text_dst2.IsEnabled = true;
                }
                else if (files.filename.Contains(".out.txt"))
                {
                    parse_bgi_perline parse_bgi_perline = new parse_bgi_perline();
                    bgi_perline = parse_bgi_perline.parsestr(src2);

                    file_info.Text = files.filename;

                    text_list.ItemsSource  = bgi_perline;
                    text_list2.ItemsSource = bgi_perline;

                    for (int i = 0; i < bgi_perline.Count; i++)
                    {
                        //根据每行内容,进行上色
                        if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
                        {
                            bgi_perline[i].textcolor = new SolidColorBrush(this.ActualTheme == ElementTheme.Dark ? bgi_perline[i].text_cd : bgi_perline[i].text_cl);
                        }
                        else
                        {
                            //由于 this.RequestedTheme 会返回 ElementTheme.Default,故原方法不可用
                            bgi_perline[i].textcolor = new SolidColorBrush(Application.Current.RequestedTheme == ApplicationTheme.Dark ? bgi_perline[i].text_cd : bgi_perline[i].text_cl);
                        }
                    }

                    bot_p_n.IsEnabled   = true;
                    bot_p_n2.IsEnabled  = true;
                    text_src.IsEnabled  = true;
                    text_src2.IsEnabled = true;
                    text_dst.IsEnabled  = true;
                    text_dst2.IsEnabled = true;
                }
                else
                {
                    //如果打开文件的过程被中断(比如:按下了“取消”键),会返回“empty”。
                    //由于发现打开空白文件的时候会发生错误,所以这里追加判断打开文件的情况。
                    string err_msg = files.filename == "empty" ? "没有打开文件。" : string.Format("打开了空白的文件:{0}。", files.filename);

                    ContentDialog err_dlg = new ContentDialog()
                    {
                        Title             = "发生错误",
                        Content           = err_msg,
                        PrimaryButtonText = "关闭"
                    };
                    await err_dlg.ShowAsync();
                }
            }
        }