44
55import os
66import sys
7+ import platform
78import tkinter as tk
89from tkinter import ttk
910from tkinter import filedialog
@@ -17,20 +18,23 @@ def __init__(self, master):
1718 master .title ("Manga PDF Converter" )
1819 self .master .resizable (0 , 0 )
1920 self .processing_window = None
21+ self .system = platform .system ()
2022
2123 # Create five frames
2224 path_frame = ttk .Frame (master )
2325 conversion_frame = ttk .Frame (master )
24- pagelayout_frame = ttk .Frame (master )
2526 direction_frame = ttk .Frame (master )
27+ pagelayout_frame = ttk .Frame (master )
28+ pagemode_frame = ttk .Frame (master )
2629 button_frame = ttk .Frame (master )
2730
2831 # Set grid layout
2932 path_frame .grid (row = 0 , column = 0 , columnspan = 3 , sticky = 'we' )
3033 conversion_frame .grid (row = 1 , column = 0 , sticky = 'nswe' )
31- pagelayout_frame .grid (row = 1 , column = 1 , sticky = 'nswe' )
32- direction_frame .grid (row = 1 , column = 2 , sticky = 'nswe' )
33- button_frame .grid (row = 2 , column = 0 , columnspan = 3 , sticky = 'we' )
34+ direction_frame .grid (row = 2 , column = 0 , sticky = 'nswe' )
35+ pagelayout_frame .grid (row = 1 , column = 1 , rowspan = 2 , sticky = 'nswe' )
36+ pagemode_frame .grid (row = 1 , column = 2 , rowspan = 2 , sticky = 'nswe' )
37+ button_frame .grid (row = 3 , column = 0 , columnspan = 3 , sticky = 'we' )
3438
3539 # Add input path label and entry
3640 input_frame = ttk .Frame (path_frame )
@@ -44,7 +48,10 @@ def __init__(self, master):
4448 self .input_directory_button_text = {"en" : "Select Directory" , "ja" : "フォルダ選択" }
4549 self .input_directory_button = ttk .Button (input_frame , text = self .input_directory_button_text [self .language ], command = self .browse_input_directory )
4650 self .input_directory_button .pack (side = "right" , padx = 10 , pady = 5 )
47- self .input_entry = ttk .Entry (path_frame , width = 65 )
51+ if self .system == "Windows" :
52+ self .input_entry = ttk .Entry (path_frame , width = 90 )
53+ else :
54+ self .input_entry = ttk .Entry (path_frame , width = 65 )
4855 self .input_entry .grid (row = 1 , column = 0 , columnspan = 3 , padx = 10 , pady = 5 , sticky = "ew" )
4956
5057 # Add output path label and entry
@@ -59,13 +66,16 @@ def __init__(self, master):
5966 self .auto_output_button_text = {"en" : "Auto" , "ja" : "自動設定" }
6067 self .auto_output_button = ttk .Button (output_frame , text = self .auto_output_button_text [self .language ], command = self .auto_output_path )
6168 self .auto_output_button .pack (side = "right" , padx = 10 , pady = 5 )
62- self .output_entry = ttk .Entry (path_frame , width = 65 )
69+ if self .system == "Windows" :
70+ self .output_entry = ttk .Entry (path_frame , width = 90 )
71+ else :
72+ self .output_entry = ttk .Entry (path_frame , width = 65 )
6373 self .output_entry .grid (row = 3 , column = 0 , columnspan = 3 , padx = 10 , pady = 5 , sticky = "ew" )
6474
6575 # Create a LabelFrame for the conversion options
6676 self .conversion_label_text = {"en" : "Conversion Options:" , "ja" : "圧縮方式:" }
6777 self .conversion_labelframe = ttk .LabelFrame (conversion_frame , text = self .conversion_label_text [self .language ], padding = 5 )
68- self .conversion_labelframe .grid (row = 0 , column = 0 , rowspan = 10 , sticky = "nsew" , padx = 5 , pady = 1 )
78+ self .conversion_labelframe .grid (row = 0 , column = 0 , rowspan = 5 , sticky = "nsew" , padx = 2 , pady = 1 )
6979
7080 self .conversion_var = tk .StringVar (value = "none" )
7181 self .conversion_text = {
@@ -79,12 +89,30 @@ def __init__(self, master):
7989 self .conversion_labelframe , text = conversion , variable = self .conversion_var , value = self .conversion_value [i ]
8090 )
8191 self .conversion_radio .append (conversion_radio )
82- conversion_radio .grid (row = i + 1 , column = 0 , sticky = "nsew" , padx = 5 , pady = 1 )
92+ conversion_radio .grid (row = i + 1 , column = 0 , sticky = "nsew" , padx = 2 , pady = 1 )
93+
94+ # Create a LabelFrame for the direction options
95+ self .direction_label_text = {"en" : "Direction:" , "ja" : "綴じ方向:" }
96+ self .direction_labelframe = ttk .LabelFrame (direction_frame , text = self .direction_label_text [self .language ], padding = 5 )
97+ self .direction_labelframe .grid (row = 0 , column = 0 , rowspan = 5 , sticky = "nsew" , padx = 2 , pady = 1 )
98+
99+ self .direction_var = tk .StringVar (value = "R2L" )
100+ self .direction_text = {
101+ "en" : ["L2R" , "R2L" ],
102+ "ja" : ["左綴じ" , "右綴じ" ],
103+ }
104+ self .direction_value = ["L2R" , "R2L" ]
105+ self .direction_radio = []
106+ for i , direction in enumerate (self .direction_text [self .language ]):
107+ direction_radio = ttk .Radiobutton (
108+ self .direction_labelframe , text = direction , variable = self .direction_var , value = self .direction_value [i ])
109+ self .direction_radio .append (direction_radio )
110+ direction_radio .grid (row = i + 1 , column = 0 , sticky = "nsew" , padx = 2 , pady = 1 )
83111
84112 # Create a LabelFrame for the page layout options
85113 self .pagelayout_label_text = {"en" : "Page Layout:" , "ja" : "ページレイアウト:" }
86114 self .pagelayout_labelframe = ttk .LabelFrame (pagelayout_frame , text = self .pagelayout_label_text [self .language ], padding = 5 )
87- self .pagelayout_labelframe .grid (row = 0 , column = 1 , rowspan = 10 , sticky = "nsew" , padx = 5 , pady = 1 )
115+ self .pagelayout_labelframe .grid (row = 0 , column = 0 , rowspan = 10 , sticky = "nsew" , padx = 2 , pady = 1 )
88116
89117 self .pagelayout_var = tk .StringVar (value = "TwoPageRight" )
90118 self .pagelayout_text = {
@@ -98,25 +126,26 @@ def __init__(self, master):
98126 self .pagelayout_labelframe , text = pagelayout , variable = self .pagelayout_var , value = self .pagelayout_value [i ]
99127 )
100128 self .pagelayout_radio .append (pagelayout_radio )
101- pagelayout_radio .grid (row = i + 1 , column = 1 , sticky = "nsew" , padx = 5 , pady = 1 )
129+ pagelayout_radio .grid (row = i + 1 , column = 0 , sticky = "nsew" , padx = 2 , pady = 1 )
102130
103- # Create a LabelFrame for the direction options
104- self .direction_label_text = {"en" : "Direction :" , "ja" : "綴じ方向 :" }
105- self .direction_labelframe = ttk .LabelFrame (direction_frame , text = self .direction_label_text [self .language ], padding = 5 )
106- self .direction_labelframe .grid (row = 0 , column = 2 , rowspan = 10 , sticky = "nsew" , padx = 5 , pady = 1 )
131+ # Create a LabelFrame for the page mode options
132+ self .pagemode_label_text = {"en" : "Page Mode :" , "ja" : "ページモード :" }
133+ self .pagemode_labelframe = ttk .LabelFrame (pagemode_frame , text = self .pagemode_label_text [self .language ], padding = 5 )
134+ self .pagemode_labelframe .grid (row = 0 , column = 0 , rowspan = 10 , sticky = "nsew" , padx = 2 , pady = 1 )
107135
108- self .direction_var = tk .StringVar (value = "R2L " )
109- self .direction_text = {
110- "en" : ["L2R " , "R2L " ],
111- "ja" : ["左綴じ " , "右綴じ " ],
136+ self .pagemode_var = tk .StringVar (value = "UseNone " )
137+ self .pagemode_text = {
138+ "en" : ["UseNone " , "UseOutlines" , "UseThumbs" , "FullScreen" , "UseOC" , "UseAttachments " ],
139+ "ja" : ["デフォルト表示 " , "アウトラインパネルを表示" , "サムネイルパネルを表示" , "フルスクリーンモード" , "コンテンツパネルを表示" , "添付ファイルパネルを表示 " ],
112140 }
113- self .direction_value = ["L2R" , "R2L" ]
114- self .direction_radio = []
115- for i , direction in enumerate (self .direction_text [self .language ]):
116- direction_radio = ttk .Radiobutton (
117- self .direction_labelframe , text = direction , variable = self .direction_var , value = self .direction_value [i ])
118- self .direction_radio .append (direction_radio )
119- direction_radio .grid (row = i + 1 , column = 2 , sticky = "nsew" , padx = 5 , pady = 1 )
141+ self .pagemode_value = ["UseNone" , "UseOutlines" , "UseThumbs" , "FullScreen" , "UseOC" , "UseAttachments" ]
142+ self .pagemode_radio = []
143+ for i , pagemode in enumerate (self .pagemode_text [self .language ]):
144+ pagemode_radio = ttk .Radiobutton (
145+ self .pagemode_labelframe , text = pagemode , variable = self .pagemode_var , value = self .pagemode_value [i ]
146+ )
147+ self .pagemode_radio .append (pagemode_radio )
148+ pagemode_radio .grid (row = i + 1 , column = 0 , sticky = "nsew" , padx = 2 , pady = 1 )
120149
121150 # Add language toggle button
122151 self .language_button_text = {"en" : "日本語表示に切替" , "ja" : "Display in English" }
@@ -164,14 +193,18 @@ def update_language(self):
164193 for i , conversion in enumerate (self .conversion_text [self .language ]):
165194 self .conversion_radio [i ].configure (text = conversion )
166195 self .conversion_var .set (self .conversion_var .get ())
167- self .pagelayout_labelframe .configure (text = self .pagelayout_label_text [self .language ])
168- for i , pagelayout in enumerate (self .pagelayout_text [self .language ]):
169- self .pagelayout_radio [i ].configure (text = pagelayout )
170- self .pagelayout_var .set (self .pagelayout_var .get ())
171196 self .direction_labelframe .configure (text = self .direction_label_text [self .language ])
172197 for i , direction in enumerate (self .direction_text [self .language ]):
173198 self .direction_radio [i ].configure (text = direction )
174199 self .direction_var .set (self .direction_var .get ())
200+ self .pagelayout_labelframe .configure (text = self .pagelayout_label_text [self .language ])
201+ for i , pagelayout in enumerate (self .pagelayout_text [self .language ]):
202+ self .pagelayout_radio [i ].configure (text = pagelayout )
203+ self .pagemode_var .set (self .pagemode_var .get ())
204+ self .pagemode_labelframe .configure (text = self .pagemode_label_text [self .language ])
205+ for i , pagemode in enumerate (self .pagemode_text [self .language ]):
206+ self .pagemode_radio [i ].configure (text = pagemode )
207+ self .pagelayout_var .set (self .pagelayout_var .get ())
175208 self .language_button .configure (text = self .language_button_text [self .language ])
176209 self .convert_button .configure (text = self .convert_button_text [self .language ])
177210 self .quit_button .configure (text = self .quit_button_text [self .language ])
@@ -270,7 +303,7 @@ def run_convert(self):
270303
271304 # Call MangaPdfConverter with the appropriate arguments
272305 try :
273- converter = MangaPdfConverter (input_path = input_path , output_path = output_path , pagelayout = self .pagelayout_var .get (), pagemode = 'UseNone' , direction = self .direction_var .get ())
306+ converter = MangaPdfConverter (input_path = input_path , output_path = output_path , pagelayout = self .pagelayout_var .get (), pagemode = self . pagemode_var . get () , direction = self .direction_var .get ())
274307
275308 # Ask user if they want to convert
276309 confirm_text = {"en" : "Are you sure you want to convert?" , "ja" : "変換処理を開始しますか?" }
0 commit comments