@@ -28,7 +28,10 @@ public partial class MainWindow : Window, INotifyPropertyChanged
2828
2929 public string InfoText { get ; set ; }
3030 public string SearchTerm { get ; set ; }
31-
31+ public PdfBookmarkCollection Bookmarks { get ; set ; }
32+ public bool ShowBookmarks { get ; set ; }
33+ public PdfBookmark SelectedBookIndex { get ; set ; }
34+
3235 public double ZoomPercent
3336 {
3437 get => Renderer . Zoom * 100 ;
@@ -42,6 +45,11 @@ public int Page
4245 get => Renderer . PageNo + 1 ;
4346 set => Renderer . GotoPage ( Math . Min ( Math . Max ( value - 1 , 0 ) , Renderer . PageCount - 1 ) ) ;
4447 }
48+ public FlowDirection IsRtl
49+ {
50+ get => Renderer . IsRightToLeft ? FlowDirection . RightToLeft : FlowDirection . LeftToRight ;
51+ set => Renderer . IsRightToLeft = value == FlowDirection . RightToLeft ? true : false ;
52+ }
4553
4654
4755 public MainWindow ( )
@@ -160,31 +168,36 @@ private void OnRotateRightClick(object sender, RoutedEventArgs e)
160168 private void OnInfo ( object sender , RoutedEventArgs e )
161169 {
162170 var info = Renderer . GetInformation ( ) ;
163- var sb = new StringBuilder ( ) ;
164- sb . AppendLine ( $ "Author: { info . Author } ") ;
165- sb . AppendLine ( $ "Creator: { info . Creator } ") ;
166- sb . AppendLine ( $ "Keywords: { info . Keywords } ") ;
167- sb . AppendLine ( $ "Producer: { info . Producer } ") ;
168- sb . AppendLine ( $ "Subject: { info . Subject } ") ;
169- sb . AppendLine ( $ "Title: { info . Title } ") ;
170- sb . AppendLine ( $ "Create Date: { info . CreationDate } ") ;
171- sb . AppendLine ( $ "Modified Date: { info . ModificationDate } ") ;
172-
173- MessageBox . Show ( sb . ToString ( ) , "Information" , MessageBoxButton . OK , MessageBoxImage . Information ) ;
171+ if ( info != null )
172+ {
173+ var sb = new StringBuilder ( ) ;
174+ sb . AppendLine ( $ "Author: { info . Author } ") ;
175+ sb . AppendLine ( $ "Creator: { info . Creator } ") ;
176+ sb . AppendLine ( $ "Keywords: { info . Keywords } ") ;
177+ sb . AppendLine ( $ "Producer: { info . Producer } ") ;
178+ sb . AppendLine ( $ "Subject: { info . Subject } ") ;
179+ sb . AppendLine ( $ "Title: { info . Title } ") ;
180+ sb . AppendLine ( $ "Create Date: { info . CreationDate } ") ;
181+ sb . AppendLine ( $ "Modified Date: { info . ModificationDate } ") ;
182+
183+ MessageBox . Show ( sb . ToString ( ) , "Information" , MessageBoxButton . OK , MessageBoxImage . Information ) ;
184+ }
174185 }
175186
176187 private void OnGetText ( object sender , RoutedEventArgs e )
177188 {
178189 var txtViewer = new TextViewer ( ) ;
179190 var page = Renderer . PageNo ;
180191 txtViewer . Body = Renderer . GetPdfText ( page ) ;
181- txtViewer . Caption = $ "Page { page + 1 } contains { txtViewer . Body . Length } character(s):";
192+ txtViewer . Caption = $ "Page { page + 1 } contains { txtViewer . Body ? . Length } character(s):";
182193 txtViewer . ShowDialog ( ) ;
183194 }
184195
185196 private void OnDisplayBookmarks ( object sender , RoutedEventArgs e )
186197 {
187- throw new NotImplementedException ( ) ;
198+ Bookmarks = Renderer . Bookmarks ;
199+ if ( Bookmarks ? . Count > 0 )
200+ ShowBookmarks = ! ShowBookmarks ;
188201 }
189202
190203 private void OnContinuousModeClick ( object sender , RoutedEventArgs e )
@@ -335,11 +348,13 @@ private void OnPrevFoundClick(object sender, RoutedEventArgs e)
335348 private void ToRtlClick ( object sender , RoutedEventArgs e )
336349 {
337350 Renderer . IsRightToLeft = true ;
351+ OnPropertyChanged ( nameof ( IsRtl ) ) ;
338352 }
339353
340354 private void ToLtrClick ( object sender , RoutedEventArgs e )
341355 {
342356 Renderer . IsRightToLeft = false ;
357+ OnPropertyChanged ( nameof ( IsRtl ) ) ;
343358 }
344359
345360 private async void OnClosePdf ( object sender , RoutedEventArgs e )
@@ -356,5 +371,13 @@ private async void OnClosePdf(object sender, RoutedEventArgs e)
356371 Console . WriteLine ( exception ) ;
357372 }
358373 }
374+
375+ /// <summary>
376+ /// Call when SelectedBookIndex changed.
377+ /// </summary>
378+ private void OnSelectedBookIndexChanged ( )
379+ {
380+ Renderer . GotoPage ( SelectedBookIndex . PageIndex ) ;
381+ }
359382 }
360383}
0 commit comments