mirror of
https://github.com/wmjordan/PDFPatcher.git
synced 2026-10-22 00:16:23 +08:00
87 lines
3.2 KiB
C#
87 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using BrightIdeasSoftware;
|
|
using PDFPatcher.Common;
|
|
using PDFPatcher.Functions.Editor;
|
|
|
|
namespace PDFPatcher.Functions
|
|
{
|
|
public sealed partial class AutoBookmarkForm : DraggableForm
|
|
{
|
|
List<EditModel.AutoBookmarkStyle> _list;
|
|
readonly Controller _controller;
|
|
|
|
internal AutoBookmarkForm(Controller controller) {
|
|
InitializeComponent();
|
|
_controller = controller;
|
|
}
|
|
|
|
private void AutoBookmarkForm_Load(object sender, EventArgs e) {
|
|
MinimumSize = Size;
|
|
_ConditionColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => String.Concat("字体为", o.FontName, "且尺寸为", o.FontSize);
|
|
});
|
|
//_FontSizeColumn.AsTyped<EditModel.TitleStyle>(c => {
|
|
// c.AspectGetter = o => o.FontSize;
|
|
// c.AspectPutter = (o, v) => o.FontSize = Convert.ToInt32(v);
|
|
//});
|
|
_LevelColumn.CellEditUseWholeCell = true;
|
|
_LevelColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => o.Level;
|
|
c.AspectPutter = (o, v) => o.Level = Convert.ToInt32(v).LimitInRange(1, 10);
|
|
});
|
|
_BoldColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => o.Style.IsBold;
|
|
c.AspectPutter = (o, v) => o.Style.IsBold = (bool)v;
|
|
});
|
|
_ItalicColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => o.Style.IsItalic;
|
|
c.AspectPutter = (o, v) => o.Style.IsItalic = (bool)v;
|
|
});
|
|
_ColorColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => "点击设置颜色";
|
|
});
|
|
_OpenColumn.AsTyped<EditModel.AutoBookmarkStyle>(c => {
|
|
c.AspectGetter = o => o.Style.IsOpened;
|
|
c.AspectPutter = (o, v) => o.Style.IsOpened = (bool)v;
|
|
});
|
|
_BookmarkConditionBox.IsSimpleDragSource = true;
|
|
_BookmarkConditionBox.IsSimpleDropSink = true;
|
|
_BookmarkConditionBox.CellClick += (s, args) => {
|
|
var ts = args.Model as EditModel.AutoBookmarkStyle;
|
|
if (args.ColumnIndex == _ColorColumn.Index) {
|
|
this.ShowCommonDialog<ColorDialog>(
|
|
f => f.Color = ts.Style.ForeColor == Color.Transparent ? Color.White : ts.Style.ForeColor,
|
|
f => {
|
|
ts.Style.ForeColor = f.Color == Color.White ? Color.Transparent : f.Color;
|
|
_BookmarkConditionBox.RefreshItem(args.Item);
|
|
}
|
|
);
|
|
}
|
|
};
|
|
_BookmarkConditionBox.RowFormatter = (r) => {
|
|
var ts = r.RowObject as EditModel.AutoBookmarkStyle;
|
|
r.UseItemStyleForSubItems = false;
|
|
r.SubItems[_ColorColumn.Index].ForeColor = ts.Style.ForeColor == Color.Transparent ? _BookmarkConditionBox.ForeColor : ts.Style.ForeColor;
|
|
};
|
|
}
|
|
|
|
internal void SetValues(List<EditModel.AutoBookmarkStyle> list) {
|
|
_BookmarkConditionBox.Objects = _list = list;
|
|
}
|
|
|
|
private void _RemoveButton_Click(object sender, EventArgs e) {
|
|
_BookmarkConditionBox.SelectedObjects.ForEach<EditModel.AutoBookmarkStyle>(i => _list.Remove(i));
|
|
_BookmarkConditionBox.RemoveObjects(_BookmarkConditionBox.SelectedObjects);
|
|
}
|
|
|
|
private void _AutoBookmarkButton_Click(object sender, EventArgs e) {
|
|
_list.Clear();
|
|
_list.AddRange(new TypedObjectListView<EditModel.AutoBookmarkStyle>(_BookmarkConditionBox).Objects);
|
|
_controller.AutoBookmark(_list, _MergeAdjacentTitleBox.Checked);
|
|
}
|
|
}
|
|
}
|