├── .gitattributes
├── LICENSE
├── README.md
├── badphrases.dat
├── badphrases.rc
├── badphrases.res
├── extra
├── icon
│ ├── 128.png
│ ├── 16.png
│ ├── 24.png
│ ├── 256.png
│ ├── 32.png
│ ├── 40.png
│ ├── 48.png
│ ├── 512.png
│ ├── 64.png
│ ├── 72.png
│ ├── 80.png
│ ├── 96.png
│ ├── FS.ico
│ └── fasubrip.icns
├── repo-clone-use-lowecase.gif
└── screenshots
│ ├── fasubrip-fedora.gif
│ ├── fasubrip-kubuntu.gif
│ ├── fasubrip-macos-catalina.gif
│ ├── fasubrip-macos-sierra.gif
│ ├── fasubrip-peppermint.gif
│ └── fasubrip-win10.gif
├── fasubrip.ico
├── fasubrip.lpi
├── fasubrip.lpr
├── fasubrip.res
├── releases
├── macos unidentified developer note.txt
├── make release.sh
└── qt5 runtime dependency note.txt
├── uabout.lfm
├── uabout.pas
├── umain.lfm
└── umain.pas
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 | {one line to give the program's name and a brief idea of what it does.}
635 | Copyright (C) 2017 {name of author}
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | FaSubrip Copyright (C) 2017 m-audio91
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FaSubrip
2 | 
3 | 
4 |
5 | v1.2.3
6 |
7 | FaSubrip autodetects and converts encoding of Farsi (Persian) subrip files. with additional functionalities.
8 |
9 | [**Download Latest Version - دانلود جدیدترین نسخه**](https://github.com/m-audio91/FaSubrip/releases)
10 | [**Screenshots - تصاویر محیط برنامه**](https://github.com/m-audio91/FaSubrip/wiki)
11 | [**آموزش کامپایل از روی سورس برای برنامه نویسان - Compilation guide for programers**](https://github.com/m-audio91/FaSubrip/wiki/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84-%D8%B3%D9%88%D8%B1%D8%B3-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87)
12 |
13 | Copyright (C) 2016-2021 Mohammadreza Bahrami, m.audio91 [AT] gmail.com
--------------------------------------------------------------------------------
/badphrases.dat:
--------------------------------------------------------------------------------
1 | [startofbadphrases]
2 | گائید
3 | گایید
4 | گایدم
5 | به گا
6 | بهگا
7 | بهگا
8 | بهگا
9 | بگا
10 | به گات
11 | بهگات
12 | بگات
13 | به گاتون
14 | بهگاتون
15 | بهگاتون
16 | بگاتون
17 | به گاش
18 | بهگاش
19 | بهگاش
20 | بگاش
21 | به گاشون
22 | بهگاشون
23 | بهگاشون
24 | بگاشون
25 | به گام
26 | بهگام
27 | بهگام
28 | بگام
29 | به گامون
30 | بهگامون
31 | بهگامون
32 | بگامون
33 | بگام
34 | بگات
35 | بگاش
36 | به گارفت
37 | بهگارفت
38 | بهگارفت
39 | بگارفت
40 | بگائی
41 | بگایی
42 | ننت رو بگا
43 | ننتو بگا
44 | ننش رو بگا
45 | ننشو بگا
46 | ننت رو میگا
47 | ننتو میگا
48 | ننش رو میگا
49 | ننشو میگا
50 | ننتون رو میگا
51 | ننتونو میگا
52 | ننشون رو میگا
53 | ننشونو میگا
54 | ننشون رو بگا
55 | ننشونو بگا
56 | جند
57 | جنده
58 | جنده
59 | جنده
60 | جنده
61 | جنده!
62 | "جنده
63 | جنده منده
64 | مادرجن
65 | درتو میز
66 | درتو بز
67 | درتونو بز
68 | درتون رو بز
69 | در خودتو بز
70 | در خودتونو بز
71 | در خودتون رو بز
72 | حرومزاده
73 | حرومزاده
74 | حرام زاده
75 | حرامزاده
76 | حرامزاده
77 | حرومــــز
78 | حرومز
79 | حرومی
80 | حرامی
81 | مادر به خطا
82 | مادربه خطا
83 | مادربهخطا
84 | مادربهخطا
85 | مادرقحبه
86 | مادر قحبه
87 | مادرقهبه
88 | مادر قهبه
89 | ننه قحبه
90 | ننهقحبه
91 | ننهقحبه
92 | ننه قهبه
93 | ننهقهبه
94 | ننهقهبه
95 | با مادرت بخواب
96 | با مادرت بخاب
97 | با مادرت میخواب
98 | با مادرت میخاب
99 | با خواهرت بخواب
100 | با خواهرت بخاب
101 | با خواهرت میخواب
102 | با خواهرت میخاب
103 | با زنت میخواب
104 | با زنت میخاب
105 | با همسرت میخواب
106 | با همسرت میخاب
107 | با شوهرت میخواب
108 | با شوهرت میخاب
109 | مادرکس
110 | خوارکس
111 | خوارکص
112 | خوارکث
113 | خارکس
114 | خارکص
115 | خارکث
116 | پتیاره
117 | پطیاره
118 | بی ناموس
119 | بیناموس
120 | بیناموس
121 | دیّوث
122 | دیوث
123 | دیّوس
124 | دیوس
125 | دیّوص
126 | دیوص
127 | کُس
128 | كُص
129 | کُث
130 | کص
131 | كست
132 | کصکش
133 | کثکش
134 | كس كش
135 | كسکش
136 | كصکش
137 | كسكش
138 | کثکش
139 | کثکش
140 | کث کش
141 | کس ننه
142 | کسننه
143 | کسننه
144 | کث ننه
145 | کثننه
146 | کثننه
147 | کص ننه
148 | کصننه
149 | کصننه
150 | پفیوز
151 | جاکش
152 | کیر
153 | کیری
154 | کیری
155 | کیری
156 | کیری
157 | کیرم
158 | کیرت
159 | کیرش
160 | کیرمو
161 | کیرشو
162 | کیرتو
163 | کیرمونو
164 | کیرشونو
165 | کیرتونو
166 | کله کیری
167 | کلهکیری
168 | کیری میری
169 | کیریمیری
170 | کیریمیری
171 | کیری پیری
172 | کیریپیری
173 | کیرپیری
174 | شومبول
175 | دودول
176 | سرش رو بخ
177 | سرشرو بخ
178 | سرشو بخ
179 | سرشوبخ
180 | ساک بز
181 | ساکبز
182 | ساک میز
183 | ساک زد
184 | ساک زن
185 | ساک نز
186 | ساکز
187 | ساکزن
188 | ساک و لیس
189 | ساکولیس
190 | ساکولیس
191 | سکس
192 | سکس
193 | سکسی
194 | سکسی
195 | مَنی
196 | لاشی
197 | بکُن
198 | بُکن
199 | چاقال
200 | راست کرد
201 | راستکرد
202 | راستکرد
203 | راست نکرد
204 | راست شد
205 | راستشد
206 | راستشد
207 | راست نشد
208 | سوراخ کو
209 | سولاخ کو
210 | سوراخی
211 | سولاخی
212 | لاپایی
213 | ننتو
214 | لاش رو باز ک
215 | لاشو باز ک
216 | لاشو بازک
217 | لاشو واز ک
218 | لاشو وازک
219 | لاشو وا ک
220 | لاشو واک
221 | جق
222 | جغ
223 | جقی
224 | جغی
225 | جلق
226 | جلغ
227 | کف دستی
228 | کفدستی
229 | کفدستی
230 | مادر*
231 | مادر *
232 | ننه *
233 | آبش اومد
234 | آبش میاد
235 | آبش داره می
236 | آبش می آد
237 | آبش میآد
238 | آبش بیاد
239 | آبم داره می
240 | آبم اومد
241 | آبم میاد
242 | آبم بیاد
243 | آبت داره می
244 | آبت رو بریز
245 | آبترو بریز
246 | آبتو بریز
247 | آبت رو بپاش
248 | آبترو بپاش
249 | آبتو بپاش
250 | آبم رو بریز
251 | آبمرو بریز
252 | آبمو بریز
253 | آبم رو بپاش
254 | آبمرو بپاش
255 | آبمو بپاش
256 | آبم رو می
257 | آبمرو می
258 | آبمو می
259 | پریود
260 | ارضا
261 | حشری
262 | تناسل
263 | آلتم
264 | آلتت
265 | آلتش
266 | التم
267 | التمو
268 | التت
269 | التش
270 | آلت
271 | انگشت كن
272 | خایه
273 | خایه
274 | خایه ها
275 | خایمو
276 | خایتو
277 | خایشو
278 | کونی
279 | کونیا
280 | کیونیا
281 | بچّه کونی
282 | بچه کونی
283 | بچهکونی
284 | بچهکونی
285 | از کون
286 | کیونی
287 | کونیم
288 | کونی هست
289 | کونده
290 | کیونده
291 | کونده
292 | کیونده
293 | تو کونت
294 | توکونت
295 | تو کونت
296 | توکونت
297 | مادرخراب
298 | مادر خراب
299 | اسپرم
300 | زنمش زمین
301 | زنمشون زمین
302 | زنمت زمین
303 | زنمتون زمین
304 | کوبمش زمین
305 | کوبمشون زمین
306 | کوبمت زمین
307 | کوبتون زمین
308 | فاحشه
309 | هرزه
310 | همجنس گرا
311 | همجنسگرا
312 | همجنسگرا
313 | همجنس باز
314 | همجنسباز
315 | همجنسباز
316 | پورن
317 | کاندوم
318 | کاندم
319 | سوزاک
320 | تخمم
321 | تخمت
322 | تخمش
323 | تخم هام
324 | تخم هات
325 | تخم هاش
326 | تخمهام
327 | تخمهات
328 | تخمهاش
329 | تخمهام
330 | تخمهات
331 | تخمهاش
332 | تخمام
333 | تخمات
334 | تخماش
335 | تخم حروم
336 | تخمحروم
337 | تخمحروم
338 | تخم حرام
339 | تخمحرام
340 | تخمحرام
341 | [endofbadphrases]
342 | [startofmorebadphrases]
343 | کس کلک
344 | كسکلک
345 | کس شر
346 | کس و شعر
347 | کسشر
348 | کسشعر
349 | کس شعر
350 | كسشعر
351 | كسشر
352 | كسشِر
353 | کص و شعر
354 | کصشر
355 | کصشعر
356 | کص شعر
357 | كصشعر
358 | كصشر
359 | كصشِر
360 | کسمغز
361 | کسمغز
362 | کس مغز
363 | کصمغز
364 | کصمغز
365 | کص مغز
366 | کثمغز
367 | کثمغز
368 | کث مغز
369 | کسمخ
370 | کسمخ
371 | کس مخ
372 | کصمخ
373 | کصمخ
374 | کص مخ
375 | کثمخ
376 | کثمخ
377 | کث مخ
378 | کسخل
379 | كسخل
380 | کس خل
381 | کثخل
382 | كثخل
383 | کصخل
384 | كصخل
385 | کس میخ
386 | کسمیخ
387 | کسمشنگ
388 | كسمشنگ
389 | کس مشنگ
390 | لخت ش
391 | پستون
392 | سوتين
393 | نزدیکی کنم
394 | نزدیکی کنی
395 | نزدیکی کنه
396 | درت بذار=گمشو
397 | درتو بذار=گمشو
398 | درت رو بذار=گمشو
399 | در خودت بذار=گمشو
400 | در خودتو بذار=گمشو
401 | در خودت رو بذار=گمشو
402 | پشمام=پرام
403 | پشمات=پرات
404 | پشماش=پراش
405 | پشمم=چیم
406 | پشمت=چیت
407 | پشمش=چیش
408 | تخمی= مزخرف
409 | گُه=چیز
410 | شاش=بار
411 | ان تو ان=شلوغ پلوغ
412 | انتوان=شلوغ پلوغ
413 | انتوان=شلوغ پلوغ
414 | ممه ها=چیزا
415 | ممهها=چیزا
416 | ممهها=چیزا
417 | ويسكي=نوشیدنی
418 | ودکا=نوشیدنی
419 | وُدکا=نوشیدنی
420 | وودکا=موشیدنی
421 | شراب=نوشیدنی
422 | مشروب=نوشیدنی
423 | مارتینی=نوشیدنی
424 | رید= گند زد
425 | میریدی=گند میزدی
426 | میریدم=گند میزدم
427 | میریدن=گند میزدن
428 | داشت میرید=داشت گند میزد
429 | کون لق=مردشور
430 | تجاوز= حمله
431 | مادرسگ=حمال
432 | مادر سگ =حمال
433 | ننه سگ-حمال
434 | ننهسگ-حمال
435 | ننهسگ-حمال
436 | سگ ننه=جمال
437 | سگننه=جمال
438 | پدر سگ=جمال
439 | پدرسگ=حمال
440 | پدسگ=حمال
441 | پدسّگ=حمال
442 | [endofmorebadphrases]
--------------------------------------------------------------------------------
/badphrases.rc:
--------------------------------------------------------------------------------
1 | badphrases RCDATA badphrases.dat
--------------------------------------------------------------------------------
/badphrases.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/badphrases.res
--------------------------------------------------------------------------------
/extra/icon/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/128.png
--------------------------------------------------------------------------------
/extra/icon/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/16.png
--------------------------------------------------------------------------------
/extra/icon/24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/24.png
--------------------------------------------------------------------------------
/extra/icon/256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/256.png
--------------------------------------------------------------------------------
/extra/icon/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/32.png
--------------------------------------------------------------------------------
/extra/icon/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/40.png
--------------------------------------------------------------------------------
/extra/icon/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/48.png
--------------------------------------------------------------------------------
/extra/icon/512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/512.png
--------------------------------------------------------------------------------
/extra/icon/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/64.png
--------------------------------------------------------------------------------
/extra/icon/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/72.png
--------------------------------------------------------------------------------
/extra/icon/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/80.png
--------------------------------------------------------------------------------
/extra/icon/96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/96.png
--------------------------------------------------------------------------------
/extra/icon/FS.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/FS.ico
--------------------------------------------------------------------------------
/extra/icon/fasubrip.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/icon/fasubrip.icns
--------------------------------------------------------------------------------
/extra/repo-clone-use-lowecase.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/repo-clone-use-lowecase.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-fedora.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-fedora.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-kubuntu.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-kubuntu.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-macos-catalina.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-macos-catalina.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-macos-sierra.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-macos-sierra.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-peppermint.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-peppermint.gif
--------------------------------------------------------------------------------
/extra/screenshots/fasubrip-win10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/extra/screenshots/fasubrip-win10.gif
--------------------------------------------------------------------------------
/fasubrip.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/fasubrip.ico
--------------------------------------------------------------------------------
/fasubrip.lpi:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
--------------------------------------------------------------------------------
/fasubrip.lpr:
--------------------------------------------------------------------------------
1 | program FaSubrip;
2 | { FaSubrip: autodetects and converts encoding of farsi (persian) subrip files.
3 | with additional functionalities.
4 |
5 | Copyright (C) 2019 Mohammadreza Bahrami m.audio91@gmail.com
6 |
7 | This program is free software: you can redistribute it and/or modify
8 | it under the terms of the GNU General Public License as published by
9 | the Free Software Foundation, either version 3 of the License, or
10 | (at your option) any later version.
11 |
12 | This program is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see .
19 | }
20 |
21 | {$mode objfpc}{$H+}
22 |
23 | uses
24 | {$IFDEF UNIX}{$IFDEF UseCThreads}
25 | cthreads,
26 | {$ENDIF}{$ENDIF}
27 | Interfaces, // this includes the LCL widgetset
28 | Classes, Forms, SysUtils, lazcontrols, umain, uabout
29 | { you can add units after this };
30 | {$ifdef FPC_CROSSCOMPILING}
31 | {$ifdef Linux}
32 | // for most versions of Linux in case of linking errors
33 | {$linklib libc_nonshared.a}
34 | {$IFDEF CPUARM}
35 | // for GUI on RPi[1,2,3] with Arch Linux in case of linking errors
36 | // {$linklib GLESv2}
37 | {$ENDIF}
38 | {$endif}
39 | {$endif}
40 |
41 | var
42 | i: Word;
43 |
44 | {$R *.res}
45 |
46 | begin
47 | Application.Scaled:=True;
48 | Application.Title:='FaSubrip';
49 | RequireDerivedFormResource:=True;
50 | {$IFDEF LCLQt5}
51 | Application.BidiMode := bdRightToLeft;
52 | {$ENDIF}
53 | Application.Initialize;
54 | Application.CreateForm(TFaSubripMain, FaSubripMain);
55 | {$ifndef darwin}
56 | if Application.ParamCount < 1 then
57 | FaSubripMain.FAutoRun := False
58 | else
59 | begin
60 | SetLength(FaSubripMain.FInputFiles, Application.ParamCount);
61 | for i := 1 to Application.ParamCount do
62 | FaSubripMain.FInputFiles[i-1] := Application.Params[i];
63 | FaSubripMain.FAutoRun := True;
64 | end;
65 | {$endif}
66 | Application.CreateForm(TFaSubripAbout, FaSubripAbout);
67 | DefaultFormatSettings.DecimalSeparator:='.';
68 | Application.Run;
69 | end.
70 |
71 |
--------------------------------------------------------------------------------
/fasubrip.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m-audio91/FaSubrip/c46f4e13d656d5035ad7315e9a63e35f46a6c99d/fasubrip.res
--------------------------------------------------------------------------------
/releases/macos unidentified developer note.txt:
--------------------------------------------------------------------------------
1 | Unfortunately I can't afford apple developer license.
so I can't sign my application bundles. If you get "unknown developer"
or "unidentified developer" errors you still can right click on the bundle
and click Open, then you should be able to open the application. ty.
متاسفانه اینجانب حاضر به پرداخت هزینه
برای تهیه اکانت توسعه دهنده اپل نیستم بنابراین
نمی توانم باندل مک برنامه های خودم را امضا کنم. در نتیجه
در زمان اجرای آنها با دابل کلیک با خطای "توسعه دهند
ناشناخته" اپل مواجه خواهید شد.
برای حل این مشکل باید روی باندل کلیک راست کرده و گزینه
open
را انتخاب نمایید تا به شما اجازه باز کردن را بدهد
ممکن است چندبار مجبور به انجام اینکار بشوید
با تشکر
--------------------------------------------------------------------------------
/releases/make release.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/bash
2 | # first compile for every target and then run this scipt to get the zip file.
3 | # note: this script uses relative paths. so it is necessary to open the Terminal in the same folder as this script.
4 |
5 | name="fasubrip"
6 | namec="FaSubrip"
7 | ver="1.2.3"
8 | archive="$name""_v$ver""_cross_platform"
9 | hashfile="./$ver/$archive.hash.txt"
10 | lin32bin="$name-i386-linux"
11 | lin64bin="$name-x86_64-linux"
12 | lin64qt5bin="$name-x86_64-linux-Qt5"
13 | winbin="$name-i386-win32.exe"
14 | macosbin="$name-x86_64-darwin"
15 | arm7bin="$name-arm-linux"
16 | qt5note="qt5 runtime dependency note.txt"
17 | macosnote="macos unidentified developer note.txt"
18 |
19 | echo start
20 | rm -r ./$ver
21 | mkdir ./$ver
22 | touch $hashfile
23 | echo $archive >> $hashfile
24 | echo SHA256 valuse are calculated using sha256sum utility in default mode >> $hashfile
25 | echo "" >> $hashfile
26 |
27 | #gui
28 | if [ -f "../$lin32bin" ]; then
29 | mkdir -p ./$ver/linux32/icon
30 | cp ../$lin32bin ./$ver/linux32/$name
31 | cp ../extra/icon/*.png ./$ver/linux32/icon
32 | sha256sum ./$ver/linux32/$name >> $hashfile
33 | fi
34 | if [ -f "../$lin64bin" ]; then
35 | mkdir -p ./$ver/linux64/icon
36 | cp ../$lin64bin ./$ver/linux64/$name
37 | cp ../extra/icon/*.png ./$ver/linux64/icon
38 | sha256sum ./$ver/linux64/$name >> $hashfile
39 | fi
40 | if [ -f "../$lin64qt5bin" ]; then
41 | mkdir -p ./$ver/linux64-qt5/icon
42 | cp ../$lin64qt5bin ./$ver/linux64-qt5/$name
43 | cp ../extra/icon/*.png ./$ver/linux64-qt5/icon
44 | cp "./$qt5note" "./$ver/linux64-qt5/$qt5note"
45 | sha256sum ./$ver/linux64-qt5/$name >> $hashfile
46 | fi
47 | if [ -f "../$winbin" ]; then
48 | mkdir -p ./$ver/windows
49 | cp ../$winbin ./$ver/windows/$namec.exe
50 | sha256sum ./$ver/windows/$namec.exe >> $hashfile
51 | fi
52 | if [ -f "../$macosbin" ]; then
53 | mkdir -p ./$ver/macos
54 | cp -r ../$namec.app ./$ver/macos/$namec.app
55 | cp ../$macosbin ./$ver/macos/$namec.app/Contents/MacOS/$namec
56 | cp "./$macosnote" "./$ver/macos/$macosnote"
57 | sha256sum ./$ver/macos/$namec.app/Contents/MacOS/$namec >> $hashfile
58 | fi
59 | if [ -f "../$arm7bin" ]; then
60 | mkdir -p ./$ver/arm7/icon
61 | cp ../$arm7bin ./$ver/arm7/$name
62 | cp ../extra/icon/*.png ./$ver/arm7/icon
63 | sha256sum ./$ver/arm7/$name >> $hashfile
64 | fi
65 |
66 | #final output
67 | cd ./$ver
68 | zip -r ./$archive.zip ./linux32 ./linux64 ./linux64-qt5 ./windows ./macos ./arm7
69 | rm -r ./linux32 ./linux64 ./linux64-qt5 ./windows ./macos ./arm7
70 |
71 | echo done
72 |
73 |
--------------------------------------------------------------------------------
/releases/qt5 runtime dependency note.txt:
--------------------------------------------------------------------------------
1 | برای اجرای نسخه کیوت۵ نصب پکیجی که در زیر آمده لازم است. این پکیج تنها روی توزیع های اصلی و بروز (اوبونتو ۲۰+ و فدورا ۳۲+) و زیرتوزیع های اصلی آنها موجود است.
2 | The following dependency is needed to run Qt5 version. available only in main distros with recent versions (Ubunto 20+, Fedora32+ etc).
3 | Using your distros repository -
4 |
5 | Fedora, Mageia... - sudo dnf install qt5pas
6 | Ubuntu, Debian... - sudo apt install libqt5pas1
7 |
--------------------------------------------------------------------------------
/uabout.lfm:
--------------------------------------------------------------------------------
1 | object FaSubripAbout: TFaSubripAbout
2 | Left = 310
3 | Height = 97
4 | Top = 250
5 | Width = 360
6 | AutoSize = True
7 | BorderIcons = [biSystemMenu]
8 | BorderStyle = bsSingle
9 | Caption = 'پشتیبانی'
10 | ClientHeight = 97
11 | ClientWidth = 360
12 | OnCreate = FormCreate
13 | OnShow = FormShow
14 | Position = poMainFormCenter
15 | object Header: TPanel
16 | Left = 0
17 | Height = 96
18 | Top = 0
19 | Width = 360
20 | Align = alTop
21 | AutoSize = True
22 | BevelOuter = bvNone
23 | ClientHeight = 96
24 | ClientWidth = 360
25 | Color = 4342338
26 | Constraints.MinWidth = 360
27 | Font.Color = clWhite
28 | ParentColor = False
29 | ParentFont = False
30 | TabOrder = 0
31 | object Logo: TImage
32 | Left = 8
33 | Height = 80
34 | Top = 8
35 | Width = 344
36 | Align = alTop
37 | AutoSize = True
38 | BorderSpacing.Around = 8
39 | Center = True
40 | Picture.Data = {
41 | 1754506F727461626C654E6574776F726B47726170686963FC13000089504E47
42 | 0D0A1A0A0000000D49484452000000500000005008060000008E11F2AD000000
43 | 0970485973000049D1000049D10105FCAB950000001974455874536F66747761
44 | 7265007777772E696E6B73636170652E6F72679BEE3C1A000013894944415478
45 | 9CDD9C797455D5BDC73FFB9C3B24B9190849C8CD9C00210C62800281002ADAA7
46 | 0C6D55B4825AFBDAFA6AEBEAA8ABB50FA93EFA10C1DA7959BB6A97EDAB5D0C5A
47 | 153A80A0568A9044206A98210C996742E6E10EE7ECF747C225F7DE73939B7003
48 | E277ADAC75EFD9637E77EFFDFBFDBEBFDF3E826B84AAC25F842BC2B100A9CFD4
49 | 113942CA1C84C801128668DA24E19422E56904A5123E928417A6E53FDE7335E6
50 | ED0B713507AB2ADC385D41BF5BC2ADC03CC01AA2AE7B810F40BCA74B7D5BFA82
51 | 35C742D4EF90187501961DFCA9DDACB9EE478A2F0333467BBC7E7C0CBC6256E4
52 | 96C4796B1A4673A0511360C5BE0DE34D26F93D297904081BAD7186800BD82A74
53 | 6D7DCAC2A74E8FC600211760CDFE75395255D722F922A086BAFF114293F09A50
54 | 599B9AF76469283B0E99006B8BD746E80ECB1A043F002CC1B673B975AA1B3AA9
55 | 6FEEA6AEA98B868B3DF43ADC389C3A3D0E3700E15613568B4298D544E2D87092
56 | 126C24C5DB484DB4615295E14CD381E07929C39E0D95D2098900AB8AD62F1552
57 | BC08640653BFACA69D23679A3979BE85B3556D385DDA88C6B59855B2D3639892
58 | 15CBF4EC38B252A2836A27A14C221F4DCF5FB37B44030FC01509B0B8F8F766BB
59 | A3792382C786EAABB9AD97828FEB2828A9A3EE42F7950C1B10C9093616CC4862
60 | C18C24C6C60CA9E0A544FCACC13276CDECD9DF708D74CC110BB0E6E03369D2AD
61 | 6E05993F68BDC64E76ECABA0E8703D9A2E473ADCB02004CC9996C8DDB78E2765
62 | 9C6DA8EA874CAAB6D29EF754D988C61A49A3CA820D731421773088D1DBD4D2C3
63 | D65D67283ED188BC3A72F3C32541AE5A924DFC98410D81464511CB92E7ADFE70
64 | D8630CB74175C1865BA590DB04181E389AA6F3AF83D5BCFECE397A9D233BDB42
65 | 0D8B5965F9A20C3E7F73E6604AA74B47DE33DC73715802AC2E78F65E049B08A0
66 | 656B9BBA7861EB51AA1B3A87D3ED55439A3D926FAD9C4E7242C06DED94523C90
67 | B660F51BC1F619B400AB0B36DC8A903B09E07E1594D4F1E7BF9F1A9555171369
68 | 61D5926CC6A7C6D0D3EBE6ED0F2A292CA91F515F16B3CA43CB2771F3EC944055
69 | 5C3AF2F3C1AEC4A004D87FE6BD0744FA9649099B769EE6EDA2AA60BA02202136
70 | 9CB937247ABE77763BD9FB616DC0FA4F3EFC19B2D3C7A0AA7DD3ED7568FC6AD3
71 | 614E9CBF18F498BE58B2209DFB97642384A1083A14216F499EBFE6A3A1FA310D
72 | 55A1AE6843A626E50E0C84A7693A2FBD7982A2C3C35B0DC9093656DC96D5F745
73 | 08DADA07176046729447780016B3C284B4982B12E0AE824ADA3B9D7C7DC55454
74 | FF73314A976267CDC167E6A4CCFDF1A02B635033BEB8F8F7664DCAAD18685B4D
75 | D3F9F5E623C316DE25B8DC12B349C5AC2A43EE83E65687D777A74BA7BCB67D44
76 | E30E44E1E17A7EBDF9089AA61B15274AB7BAB5B8F8F7E6C1FA1854807647F346
77 | 20CFF7B9949297B79FA4E4F485614D78A47879FB093ABA5DF43A34DC9ACEFB1F
78 | D570F44C7348FA2E397D8197DE3C11C0D492F949AE0BEB066B1F700B5715AD5F
79 | 8AE431A3B24D3B4BD9FF71DDF0667A053857D5C6779FDB475C8C958E6E173DBD
80 | EE90F65F74B89E319116EE5F3AC9AF4C4AF1446DC186F79217AC7EDBA8ADA100
81 | AB0A7F118EECFD2D069BABE848FDB014C6952221369CBB6FCD2277523CB67033
82 | 3DBD6EEA9BBBD9B9BF22A446FA5B0595A42745B16046926F91D0857CA9B678ED
83 | D4E4D96BFD7C50C32D2C64EF8F0564F93EAFBFD0CDFFFDED5468661C04A64F8C
84 | 63FD77E6919F9B4494CD82A2086C116626A4C5F05F2BA6B2FEDBF31913152A52
85 | 1BFEFCF753D43675191565684ECB8F8C0AFC0458B37F5D4E3F25E5054D93FC66
86 | CB110FC534DA181B13C6771E984E98454551FCB54CB8D5445242044F3D321BB3
87 | 6958945640F43A355E7CF598A15211F0A3AA0FD665FB3EF71B590AF52718781A
88 | 3BF6955F550F63E9820C2FC1389C1A5DBD6E2F435D5504D19116962DCA0CD9B8
89 | 95F51DEC2A343CA2AC429A9EF67DE825C0CA82751310DCEB5BA9B9AD977FBC5F
90 | 1EB2490683DC9C3854A56F7ABD0E8D7FEC2DE7977F29E1D5DD67710CD80556B3
91 | CA6D7353433AF6B6F7CED1D462C0B74A79BFEF2AF412A010CA9318D0F09B7796
92 | E2B8CAC4802DECB27E339914761755525AD1CABF0E54B169D719AF95680B5389
93 | B6054D820F09A74BE7AF6F9F352A5215A9FE70E0038F00CB0EFED42E105FF26D
94 | 51D3D849F189C6904D2E58740D3055DC6E8D07974EE23FE6A5B1784E2AB63093
95 | 97F6756992C4B8F0908E7FE05883A1429192FFAC2F787EDCA5EF9E9FD9ACB91F
96 | C0E0ECFBFBDEF26BC2E79D2E6F65DCD870142108B39AB8654E0A2EB78EA6E908
97 | 2130A9DE8AC5163EA8C3306C4809FF7CBF9C47EE99E65B647109E7FDC0AF61E0
98 | 16963CE45BB3B9AD9783474735AC1A106FEDAFC0E5F2D68666535F60C96A51BD
99 | FC572120CC12FA0060D1E17A2EB6F5FA3D17882F5FFAAC0054ECDF380D83A077
100 | C1C775578586570CAC90DAA62E5E7CED183D0E373DFDDAD7E9D20CE7A30A81D5
101 | 3A242F326C68BAA4D0D8D79F5559B0FE06E8DFC22645BFC7484C011A5F3124D2
102 | CBC5890CB0FD3E3ED5C4F77FBA9F9CCC31845B4D84594D44849988B0AA2C5D94
103 | E9D9C68A2AB09A4727045D5052C7E76ECAF47BAE20EE028E9900FA7355BC5056
104 | D31EC82ABF62389C3A0337A794705B5E2AE7ABDBE9EA71F99DB9358DDEF348B7
105 | 47A269D22340B726E9EE1D71606D50D434765151D74146529477816031F08CA9
106 | 6CCFDA300C18972321623B8C50DBD4856580916CB5A8ACBC3D1BAB45452271BB
107 | 25BA6E4831017D02B75A2EB75780D3E52DA336DFA3679AFD0508F95585BF0857
108 | CC56F3020C72574E9E1FBD09757439395DD6827B80CB14665511021421B098FB
109 | 9445A0BFF00136A2D3A571E844234D2DFE877DA81080B80D137ACF3C45C02CDF
110 | 12B7A673B6AA6DD42604F0E25F8F515EDB418F430346A6A81C4E8DD2CA565EDE
111 | 7632B493F3416945ABD78FED8160964947E4F8BAEA55F59D234EB708169DDD2E
112 | D6BD54CCF4ECB1DC343385F1A9D1C48FB1F6D92443C0EDD6A9BDD0C5CEFD9514
113 | 1DAE478EB2A1EA74E9D43476F96D63A1881C9380C9BE0DEA4729F5C217524A8E
114 | 943673A474F4CEDB50A1FE42B7FF3928658E02F8D1B075174647FB5ECF3074EB
115 | 10390A10EF5BD070F19AA41B7FA2D1682C93040503DA3ED431874F030210C946
116 | 4E149F989C964F12022D2A43015E6DEEEF7A40A04535620F3CDD1E456AA28DD8
117 | E8309C6E8DB60E2767ABDA0CD98BC1F0F0DD5348B74771BEBA9D3FFF2370C02A
118 | CD1EE9479ABADC3AAD1D0E9ADB1C5E718CE58B32997B431F65F7F3574A68EF72
119 | 0E6B4EC381A100AD83504309B1E17CE3DE694CCA18E35726A5E44C651BCFFCA1
120 | 38E80924C5DBC84A89A67B8873F7AEC5E399336D9C61594FAF9B5D85956CDF53
121 | 869492B831619E745FA380D44810882E331460A0CA568BCA7F7FED3324C486A1
122 | 693A078E355255DF81D9A492911CC98C4909A4D9FD7CC690E3D0F146A49444DB
123 | 2C64A7C7101E66E2EE5BC7D3E370B3ABA0920F8ED45355DF17000B15C930D07D
124 | 1C08137D7E94D7CF1411A0F28C9C781262FBDCE6D7DF3DCF8E7DE55EE5B1D156
125 | 56DC36012104CB16660070B6B295D315AD9E3A9F99320E7B7C049D3D2EF616D7
126 | F88D91373D91599313D0A5A4F878231F9E6CF2ABF3C2D6231EC6262B259A9F3C
127 | 3A1780F937DAD95550E9F53FB8DC92E9D971A4DBA370BA34DEF9A08AC959B12C
128 | 9C9984C5AC72F27C0B7B8B6BD087F06602C84437096890601FF834312EC2B093
129 | 81B47994CD9FC36B6977F0F2B6132842B0F28E89006CDF73DE4B80F37313997B
130 | 4322B54D5D5E02B4859B79EC4B339839F9B259BA6046129BDF2AF508C5086535
131 | ED385D3A16B3E2D9AE53C7C7B2E2B609401FB33D7BEA3816CF49A1ABC78D3D3E
132 | 82CFE6A57AD2DAE64D4F64625A0C7F78F378C03100C68D358CB9D42920FD2E9E
133 | D8E38D053830236AD9C20C7EF2E85CEEFDEC04664E8E0FB8C48345527C04B54D
134 | 5DFCFC951236BF55EAD17AF7DC3681706BE0337972562C16739F31515ADE1AB0
135 | 1E4078988AC5ACF09BCD4779E98DE3B4B4F7657D2D9A95644457F9CCCF20AB55
136 | 506A42528AE0A6212B03E7ABDBF977710DB7F4677766A5447B0E6B975BE7A393
137 | 4D6CDA594A7BE7F0B5DED9AA365EDD7D0680C3A57D41F39577F4718413D3BC15
138 | D67DB767A32A82B83156664DEE532C4D2D3D43C6AE3BBA5C5ECC4D7B97931F7C
139 | 7926D0B76A2BEA3A02B6355C54529E3121F05B81698991582DAAA13DF8C7ED27
140 | 397EEE2237CD4A2627730C967E2ADD6C52C89B9E486672143FFEED8141FF9160
141 | 70B2EC321FE97BE763F9A20CAFEFA7CA5AF8ED6BC768EBF0CE231C0AA7068C11
142 | 3726705834CCA2926A745D42526AD2857248F81CA0AA2AC84E8FE1D859E30CD0
143 | 03471B3870B4015511A4264672C3C4B12C5D9841B4CD42625C0437665F3EC786
144 | 7915CB03877320D9EA7D3CFCEEB56358CC0A0F7D2E078B5925799C0DB33A7C73
145 | C5ED96E852A20881D51C789ED919638CB2585154F580D2DB622BA2EFBEAD1726
146 | 67C6FA35488A8F401D605769BAA4A2AE831DFB2AD8FEDEE57B2A0315CC48E3B5
147 | E3C65E26C97D8DF383C71BD8FB61ADC7F08EB659F8DE83B99EB3305824F4C79D
148 | 019ADB02AFDEA9E3FD650174775D8C38A4642FFBAE0341916F696E8E1F49C3C2
149 | 99493CFD8D39CCC889F70C0C7DE7D5E4ACCBE7D4F9EA363ABB5D9EC12F19E671
150 | 31610135FC40A8AAE0F6F9E9401F3B7E3A8072D8F7511DFFEED7E41949513C7C
151 | F7D421FBBE0421E00B375FCEE03B5C1A38DB367792BF2C80C2EC65DF75F4ED0D
152 | 29F6805C3CB03423298A947191D4347A676465A544F3F84333E8EA7151DDD089
153 | D3A5939E14454C649F9BF5EFE21ACA6B3B385FDDCE8D93E2488C8BE0573F5C48
154 | 6B87137B5C380E9771B068425A0CDF7F3097B64E273999633C77397617560DEA
155 | 8AFDE59FA7C9488A222B259AF937DAA9A80DAC08A26C669EF8CA2CDA3A1D6426
156 | 477BAE81151DA9A7ACC638E73ACD1E496AA25F7E3D08F6403F992015F756A3C6
157 | F9B9895EDF0F1D6F646F710DED5D4E6CE1667232FB6E49C6445A686AE9E12F3B
158 | 4EF3A7BFF569B9ADBBCFD0DCBFF56CE166AC16959FBD52C2B1B3C6EC735D5317
159 | 568BCAE239292427D89012DE3D50CDEBEF1826F978E072EBBCB0F5285D3D7DAE
160 | E07D774C64EAF8B186751D4E9DE6D61EE64C1B47CA381B9A26D973A89A3FBC71
161 | 2260FFF9B97E19AB00084D7B030678203585CF1E92307B60A59676078FFF7C3F
162 | 9AE66FA547DB2CC44459B09A555A3B1C5C68F52711CC2685D4C4481445505ED3
163 | 1E5496C3D8182BE3C646507FA19BD6616AD540F8EA9D53583C2785B64E27DFD9
164 | F83EAA22888DB6D2D5E31E3461545505BFFCC142A32CD883A9F94FE6C1005F58
165 | C2267C04181B6D65416E12EF7FE47F87A3BDCB3924CBE172EB01B746205C6C73
166 | 707190033D14D07469F883FB62E1CC64C3146229D974E9B3476D99A4793306DA
167 | 78D9A28C6002659F3A2842B07C61865151AF49638BA7DEA50FF6053F6C44F227
168 | DFDAC90936F26E48F47D7C5DA1B0A48E3FFDED145B779D09BA4DDE8D89C6DE87
169 | 907F4CBAE9490FC3E16538994CDAF380DFA1B06A49F6A8A48F5D2D9CAE6865CF
170 | A16A0A4A82BBDB126E35B1EA0EBF7C7200B749D17F36F0819700ED794F950978
171 | CDB7D5D89830EE5C3C7E1853BEBE71E7E22C62A30DAF4F6CF1BDD9EE67BABB35
172 | F1140667E192FCF421198B4F033293A3B8637E9A51518F2AC4E059FA00198B56
173 | 9F97523EE7FB5C5505DF5E357D506AE97A479845E5D1FBA61BFABD203624CD5F
174 | 5DEEFBD4D87914E1CF01E77D1F27C645F0B5BB827797AE377CE5CE29241973A1
175 | E75C0EC7F3460586024CCB7FBC4791E251C0CFEFCA9B9EE8A1EB3F4D58BE2883
176 | FC5CBB51912E84F866D6E2B586866340FA2279C1EAB7859086525F79C7446E9A
177 | 953CB2997E02313FD7CE7DB74F342E946C4C99BFFADD406D07E57FEACCF14F81
178 | 3F532384E0AB774EF68A5F5CAF9839399E47564C0D74F5BF20C5E9FC9FC1DA0F
179 | E963D4163C93A10BE500E0674D6B9ACECBDB4F5ED5BBC3A1C4C299493C7CD714
180 | 43A521A05EE84A5EF2C2FF0E1CD122C8974ED416AD9FA549B1C7E85D31524A5E
181 | DD7D969DFB2B829EF82701CB176570DFED130D579E847605714B4AFEEA8F87EA
182 | 27682FB7AA68C32D42CA5D0478EDC9A1E30DBCBCEDE4901906D71AE156135FF9
183 | C264E61B2B0C00A750E4E752E6AD792798FE86451354153DBB4248361340880D
184 | CD3DBCB0F5C8A0D1AD6B89CCE428BEB572FA60ACB8430A1E489BFFE49BC1F639
185 | FC573FED5FBF18456C03628CCA2FBDFAE98D77CFF527905F7B582D2ACB1666F0
186 | 859BB3BC5E9FE2834E458A7B02BD1B2110464454D5146E9829916F61A0582EA1
187 | A5DDC1D6DD67F8E048FD357DF9D8FC1BEDAC5A923DE8AB0104D4835816CC9967
188 | D07664A8DDBF315D57E496A15E7F5777A19B9DFBCAD95F5267C86C8F065455B0
189 | 704612CB176506CCB218800245571E184ADB06C21551A572CF5A536D98F91929
190 | C51343F5D5D2EEA0F0701D0525F5A3F6EA80347B24F9B949E4E7DA03B12903A1
191 | 837C2EC5E17A5A2C5E3B62CD1712AEB9B660C3EDBA90BF0382E2BCAAEA3B395C
192 | 7A8193652D9456B48E382336CCA2929D31862959B1CCC889378E9E19E39C10E2
193 | 9B837918C12264647DFF9BC99F9052FE0808FAFAB8A6E9543776517FA19BBA0B
194 | 5D3434F7D0E370E3706A1E932822ACEF8E70B8D5843D3E027B5C04F6F8085213
195 | 23BD02FD41A007C40697C3F17C20DF76B80879B4A362DF86F12645FEAF14ACE4
196 | 0A5288430C37B04515E269234AEA4A306AE1A2BAA20D993AF23129F93AC35891
197 | 218603784D2ADABAB4794F051F101906463DDE565FF0FC3817AE5542F0203077
198 | B4C7EBC74129D964D2D8323000341AB8AA01CBEA03CF4E42175F44CAC5C07C60
199 | E84499E0D00D1421780F85D743FDB6F2C170CD22BEC78FAFB5C47684CDD5352D
200 | 0FC1241093E8BBB73714D1580B94822C15883342E7404BACF3C0B4696B47EF2E
201 | C320F87FB16A50F15804A8860000000049454E44AE426082
202 | }
203 | end
204 | end
205 | object LinksBox: TPanel
206 | Left = 0
207 | Height = 1
208 | Top = 96
209 | Width = 360
210 | Align = alTop
211 | AutoSize = True
212 | BevelOuter = bvNone
213 | ChildSizing.EnlargeHorizontal = crsHomogenousSpaceResize
214 | ChildSizing.EnlargeVertical = crsHomogenousSpaceResize
215 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
216 | ChildSizing.ControlsPerLine = 1
217 | Color = clForm
218 | ParentColor = False
219 | TabOrder = 1
220 | end
221 | end
222 |
--------------------------------------------------------------------------------
/uabout.pas:
--------------------------------------------------------------------------------
1 | unit uabout;
2 | { FaSubrip: autodetects and converts encoding of farsi (persian) subrip files.
3 | with additional functionalities.
4 |
5 | Copyright (C) 2016-2021 Mohammadreza Bahrami m.audio91@gmail.com
6 |
7 | This program is free software: you can redistribute it and/or modify
8 | it under the terms of the GNU General Public License as published by
9 | the Free Software Foundation, either version 3 of the License, or
10 | (at your option) any later version.
11 |
12 | This program is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see .
19 | }
20 |
21 | {$mode objfpc}{$H+}
22 |
23 | interface
24 |
25 | uses
26 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
27 | uUrlLabel, CommonGUIUtils;
28 |
29 | type
30 |
31 | { TFaSubripAbout }
32 |
33 | TFaSubripAbout = class(TForm)
34 | Header: TPanel;
35 | Logo: TImage;
36 | LinksBox: TPanel;
37 | procedure FormCreate(Sender: TObject);
38 | procedure FormShow(Sender: TObject);
39 | private
40 | MailUrlL: TUrlLabelEx;
41 | ContactUrlL: TUrlLabelEx;
42 | IssuesUrlL: TUrlLabelEx;
43 | UpdatesUrlL: TUrlLabelEx;
44 | end;
45 |
46 | var
47 | FaSubripAbout: TFaSubripAbout;
48 |
49 | implementation
50 |
51 | {$R *.lfm}
52 |
53 | const
54 | MailUrl = 'mailto:maudio91@gmail.com';
55 | ContactUrl = 'http://mohammadrezab.blogsky.com';
56 | IssuesUrl = 'https://github.com/m-audio91/FaSubrip/issues';
57 | UpdatesUrl = 'https://github.com/m-audio91/FaSubrip/releases/latest';
58 |
59 | resourcestring
60 | rsMail = 'ایمیل';
61 | rsBlog = 'بلاگ';
62 | rsIssueReporting = 'گزارش خطا در گیت هاب';
63 | rsUpdatesCaption = 'دریافت نسخه جدید';
64 |
65 | { TFaSubripAbout }
66 |
67 | procedure TFaSubripAbout.FormCreate(Sender: TObject);
68 | begin
69 | UpdatesUrlL := TUrlLabelEx.Create(Self);
70 | with UpdatesUrlL do
71 | begin
72 | Parent := LinksBox;
73 | Alignment := taCenter;
74 | Caption := rsUpdatesCaption;
75 | URL := UpdatesUrl;
76 | ShowHint := True;
77 | HighlightColor := clHighlight;
78 | end;
79 | IssuesUrlL := TUrlLabelEx.Create(Self);
80 | with IssuesUrlL do
81 | begin
82 | Parent := LinksBox;
83 | Alignment := taCenter;
84 | Caption := rsIssueReporting;
85 | URL := IssuesUrl;
86 | HighlightColor := clHighlight;
87 | end;
88 | MailUrlL := TUrlLabelEx.Create(Self);
89 | with MailUrlL do
90 | begin
91 | Parent := LinksBox;
92 | Alignment := taCenter;
93 | Caption := rsMail;
94 | URL := MailUrl;
95 | HighlightColor := clHighlight;
96 | end;
97 | ContactUrlL := TUrlLabelEx.Create(Self);
98 | with ContactUrlL do
99 | begin
100 | Parent := LinksBox;
101 | Alignment := taCenter;
102 | Caption := rsBlog;
103 | URL := ContactUrl;
104 | HighlightColor := clHighlight;
105 | end;
106 | end;
107 |
108 | procedure TFaSubripAbout.FormShow(Sender: TObject);
109 | begin
110 | CheckDisplayInScreen(Self);
111 | end;
112 |
113 |
114 | end.
115 |
116 |
--------------------------------------------------------------------------------
/umain.lfm:
--------------------------------------------------------------------------------
1 | object FaSubripMain: TFaSubripMain
2 | Left = 500
3 | Height = 414
4 | Top = 218
5 | Width = 582
6 | AllowDropFiles = True
7 | BorderIcons = [biSystemMenu, biMinimize]
8 | BorderStyle = bsSingle
9 | Caption = 'FaSubrip v1.2.4'
10 | ClientHeight = 414
11 | ClientWidth = 582
12 | DefaultMonitor = dmPrimary
13 | OnActivate = FormActivate
14 | OnCreate = FormCreate
15 | OnDropFiles = FormDropFiles
16 | OnShow = FormShow
17 | ParentFont = True
18 | SessionProperties = 'AppendEncodingToFileName.State;ArabicCharsToFarsi.State;CensorshipLevel.ItemIndex;EndingPunctuations.ItemIndex;Left;OpenDlg.InitialDir;OutFileEncoding.ItemIndex;PhrasesCensorship.State;PhrasesCensorshipFile.Text;ReplaceSourceFile.State;StripHTMLFontTags.State;StripHTMLStyleTags.State;Top;EnglishNumbers.State'
19 | object Header: TPanel
20 | Left = 0
21 | Height = 30
22 | Top = 0
23 | Width = 582
24 | Align = alTop
25 | AutoSize = True
26 | BevelOuter = bvNone
27 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
28 | ChildSizing.EnlargeVertical = crsHomogenousChildResize
29 | ChildSizing.ShrinkHorizontal = crsHomogenousChildResize
30 | ChildSizing.ShrinkVertical = crsHomogenousChildResize
31 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
32 | ChildSizing.ControlsPerLine = 1
33 | ClientHeight = 30
34 | ClientWidth = 582
35 | Color = 4342338
36 | Font.Color = clWhite
37 | ParentBidiMode = False
38 | ParentColor = False
39 | ParentFont = False
40 | TabOrder = 3
41 | object Description: TLabel
42 | Left = 8
43 | Height = 17
44 | Top = 4
45 | Width = 566
46 | BidiMode = bdRightToLeft
47 | BorderSpacing.Left = 8
48 | BorderSpacing.Top = 4
49 | BorderSpacing.Right = 8
50 | Caption = 'نرم افزاری رایگان برای حل مشکل نمایش بصورت حروف پرت در زیرنویس های SRT فارسی'
51 | Font.Color = clWhite
52 | ParentBidiMode = False
53 | ParentColor = False
54 | ParentFont = False
55 | end
56 | object HeaderLinks: TPanel
57 | Left = 8
58 | Height = 1
59 | Top = 25
60 | Width = 566
61 | BorderSpacing.Left = 8
62 | BorderSpacing.Top = 4
63 | BorderSpacing.Right = 8
64 | BorderSpacing.Bottom = 4
65 | BevelOuter = bvNone
66 | Font.Color = clWhite
67 | ParentFont = False
68 | TabOrder = 0
69 | end
70 | end
71 | object OpenSubsContainer: TPanel
72 | Left = 8
73 | Height = 27
74 | Top = 33
75 | Width = 566
76 | Align = alTop
77 | Alignment = taRightJustify
78 | AutoSize = True
79 | BorderSpacing.Left = 8
80 | BorderSpacing.Top = 3
81 | BorderSpacing.Right = 8
82 | BevelOuter = bvNone
83 | BidiMode = bdRightToLeft
84 | ChildSizing.EnlargeHorizontal = crsHomogenousSpaceResize
85 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
86 | ChildSizing.ControlsPerLine = 1
87 | ClientHeight = 27
88 | ClientWidth = 566
89 | Color = clForm
90 | Font.Color = 4342338
91 | ParentBidiMode = False
92 | ParentColor = False
93 | ParentFont = False
94 | TabOrder = 0
95 | object OpenSubs: TButton
96 | Left = 220
97 | Height = 27
98 | Hint = 'با این دکمه زیرنویس (های) خود را باز کنید.'#13#10'همچنین می توانید از فایل اکسپلورر بکشید (شان) و روی صفحه فاسابریپ رها کنید'#13#10'بعلاوه می توانید بدون باز کردن فاسابریپ، از فایل اکسپلورر بکشید (شان) و روی آیکون فاسابریپ رها کنید اما این مورد تنها مخصوص سیستم عامل ویندوز می باشد'#13#10'توجه: User Account Control در سیستم عامل ویندوز ممکن است مانع کشیدن و رها کردن بشود!'#10'بعلاوه می توانید از طریق خط فرمان یا ترمینال بصورت زیر زیرنویس خود را پردازش کنید:'#10'fasubrip SUBTITLE'
99 | Top = 0
100 | Width = 127
101 | AutoSize = True
102 | Caption = 'بازکنید زیرنویس ها را'
103 | OnClick = OpenSubsClick
104 | ParentFont = False
105 | ParentShowHint = False
106 | TabOrder = 0
107 | end
108 | object DragNotifierL: TLabel
109 | Left = 0
110 | Height = 27
111 | Top = 0
112 | Width = 131
113 | Align = alLeft
114 | Caption = 'یا بکشید و اینجا رها کنید'
115 | Font.Color = 4342338
116 | Layout = tlCenter
117 | ParentColor = False
118 | ParentFont = False
119 | end
120 | end
121 | object OptionalSettings: TDividerBevel
122 | Left = 16
123 | Height = 17
124 | Top = 60
125 | Width = 550
126 | Align = alTop
127 | BorderSpacing.Left = 16
128 | BorderSpacing.Right = 16
129 | Font.Style = [fsBold]
130 | ParentFont = False
131 | end
132 | object SettingsNotifier: TPanel
133 | Left = 8
134 | Height = 17
135 | Top = 77
136 | Width = 566
137 | Align = alTop
138 | AutoSize = True
139 | BorderSpacing.Left = 8
140 | BorderSpacing.Right = 8
141 | BorderSpacing.Bottom = 8
142 | BevelOuter = bvNone
143 | ClientHeight = 17
144 | ClientWidth = 566
145 | Color = clForm
146 | Font.Color = 4342338
147 | ParentColor = False
148 | ParentFont = False
149 | TabOrder = 1
150 | object SettingsNotifierL: TLabel
151 | Left = 518
152 | Height = 17
153 | Top = 0
154 | Width = 48
155 | Align = alRight
156 | Alignment = taCenter
157 | Caption = 'تنظیمات'
158 | Font.Color = 4342338
159 | Layout = tlCenter
160 | ParentColor = False
161 | ParentFont = False
162 | end
163 | object SettingsShow: TSpeedButton
164 | Left = 502
165 | Height = 17
166 | Hint = 'نمایش/مخفی کردن تنظیمات'
167 | Top = 0
168 | Width = 16
169 | Align = alRight
170 | AutoSize = True
171 | Flat = True
172 | Font.Color = 4342338
173 | Images = Imgs
174 | ImageIndex = 0
175 | OnClick = SettingsShowClick
176 | ParentFont = False
177 | end
178 | object SettingsHelps: TSpeedButton
179 | Left = 486
180 | Height = 17
181 | Hint = 'راهنمای تنظیمات فاسابریپ'
182 | Top = 0
183 | Width = 16
184 | Align = alRight
185 | AutoSize = True
186 | Flat = True
187 | Font.Color = 4342338
188 | Images = Imgs
189 | ImageIndex = 2
190 | OnClick = SettingsHelpsClick
191 | ParentFont = False
192 | end
193 | end
194 | object SettingContainersGrid: TPanel
195 | Left = 8
196 | Height = 251
197 | Top = 102
198 | Width = 566
199 | Align = alTop
200 | Alignment = taRightJustify
201 | AutoSize = True
202 | BorderSpacing.Left = 8
203 | BorderSpacing.Top = 3
204 | BorderSpacing.Right = 8
205 | BevelOuter = bvNone
206 | BidiMode = bdRightToLeft
207 | ChildSizing.EnlargeHorizontal = crsHomogenousSpaceResize
208 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
209 | ChildSizing.ControlsPerLine = 1
210 | ClientHeight = 251
211 | ClientWidth = 566
212 | Color = clForm
213 | ParentBidiMode = False
214 | ParentColor = False
215 | TabOrder = 4
216 | object Container1: TPanel
217 | Left = 0
218 | Height = 84
219 | Top = 0
220 | Width = 566
221 | Align = alTop
222 | AutoSize = True
223 | BevelOuter = bvNone
224 | ClientHeight = 84
225 | ClientWidth = 566
226 | TabOrder = 0
227 | object SubContainer1: TPanel
228 | Left = 307
229 | Height = 84
230 | Hint = 'object EnglishNumbers: TCheckBox'#10' Left = 260'#10' Height = 21'#10' Top = 0'#10' Width = 21'#10' TabOrder = 0'#10'end'#10
231 | Top = 0
232 | Width = 259
233 | Align = alRight
234 | AutoSize = True
235 | BevelOuter = bvNone
236 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
237 | ChildSizing.ControlsPerLine = 2
238 | ClientHeight = 84
239 | ClientWidth = 259
240 | TabOrder = 0
241 | object StripHTMLFontTags: TCheckBox
242 | Left = 238
243 | Height = 21
244 | Top = 0
245 | Width = 21
246 | TabOrder = 0
247 | end
248 | object StripHTMLFontTagsL: TLabel
249 | Left = 0
250 | Height = 21
251 | Hint = 'فعال کردن این گزینه منجر به حذف تگ های و می شود. این تگ ها در اکثر پلیرهای کامپیوتری عمل می کنند اما پخش کننده های سخت افزاری (تلوزیون و بلوری و..) و گوشی یا مستقیما خود تگ را نشان می دهند یا در بهترین حالت فقط نشان نمی دهند. پس در نتیجه حذفشان ضرری ایجاد نمی کند.'
252 | Top = 0
253 | Width = 238
254 | Caption = 'حذف برچسب های HTML رنگ و اندازه قلم'
255 | ParentColor = False
256 | end
257 | object StripHTMLStyleTags: TCheckBox
258 | Left = 238
259 | Height = 21
260 | Top = 21
261 | Width = 21
262 | TabOrder = 1
263 | end
264 | object StripHTMLStyleTagsL: TLabel
265 | Left = 0
266 | Height = 21
267 | Hint = 'فعال کردن این گزینه منجر به حذف تگ های Italic ،Bold و Underline مانند و غیره می شود. این تگ ها در اکثر پلیرهای کامپیوتری عمل می کنند اما پخش کننده های سخت افزاری و گوشی یا مستقیما خود تگ را نشان می دهند یا در بهترین حالت فقط نشان نمی دهند. پس در نتیجه حذفشان ضرری ایجاد نمی کند.'
268 | Top = 21
269 | Width = 238
270 | Caption = 'حذف برچسب های HTML حالات متن'
271 | ParentColor = False
272 | end
273 | object ArabicCharsToFarsi: TCheckBox
274 | Left = 238
275 | Height = 21
276 | Top = 42
277 | Width = 21
278 | TabOrder = 2
279 | end
280 | object ArabicCharsToFarsiL: TLabel
281 | Left = 0
282 | Height = 21
283 | Hint = 'با فعال کردن این گزینه حروف ''ك'' و ''ي'' عربی در صورت موجود بودن با نسخه فارسی خودشان جایگزین خواهند شد و در صورت غیرفعال بودن عربی خواهند ماند.'#13#10'اگر مشاهده کردید در نرم افزار پخش کننده تان این دو حرف در زیرنویس خروجی بصورت علامت سوال یا مربع و امثال آن دیده می شوند موقعیت این گزینه را تغییر داده و مجددا امتحان کنید. همچنین برخی فونت ها از حالت فارسی این دو حرف پشتیبانی نمی کنند.'#10'هنگامی که با کدگذاری ANSI WINDOWS-1256 خروجی می گیرید این گزینه بطور اجباری غیر فعال می گردد زیرا نسخه فارسی این دو حرف در این کدگذاری تعریف نشده اند.'
284 | Top = 42
285 | Width = 238
286 | Caption = 'ی و ک فارسی'
287 | ParentColor = False
288 | end
289 | object EnglishNumbers: TCheckBox
290 | Left = 238
291 | Height = 21
292 | Top = 63
293 | Width = 21
294 | TabOrder = 3
295 | end
296 | object EnglishNumbersL: TLabel
297 | Left = 0
298 | Height = 21
299 | Hint = 'اعداد در رایانه ممکنه به دو شکل فارسی باشند. یا انگلیسی هستند و فقط فارسی نمایش داده می شوند (بنا به تنظیمات سیستم عامل یا فونت نمایش). یا واقعا فارسی تایپ و ذخیره شده اند. با توجه به اینکه استفاده از اعداد فارسی در زیرنویس های فارسی فیلم های روز مرسوم شده اما این اعداد فقط در کدگذاری یونیکد تعریف شده هستند لذا با این گزینه می توان این اعداد را در صورت وجود با انگلیسی جایگزین کرد (اگر مشکل علامت سوال شدن اعداد را دارید). این عمل برای خروجی ANSI بطور اجباری توسط فاسابریپ اتفاق خواهد افتاد!'
300 | Top = 63
301 | Width = 238
302 | Caption = 'اعداد انگلیسی'
303 | ParentColor = False
304 | end
305 | end
306 | end
307 | object Container2: TPanel
308 | Left = 0
309 | Height = 52
310 | Top = 84
311 | Width = 566
312 | Align = alTop
313 | AutoSize = True
314 | BevelOuter = bvNone
315 | ClientHeight = 52
316 | ClientWidth = 566
317 | TabOrder = 1
318 | object SubContainer2: TPanel
319 | Left = 162
320 | Height = 52
321 | Top = 0
322 | Width = 404
323 | Align = alRight
324 | AutoSize = True
325 | BevelOuter = bvNone
326 | ChildSizing.HorizontalSpacing = 2
327 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
328 | ChildSizing.ControlsPerLine = 2
329 | ClientHeight = 52
330 | ClientWidth = 404
331 | TabOrder = 0
332 | object SubtitleDelayL: TLabel
333 | Left = 202
334 | Height = 27
335 | Hint = 'با استفاده از این دکمه می توانید زمان پخش زیرنویس خود را عقب بکشید یا جلو ببرید تا با فیلمتان هماهنگ شود. عدد منفی یعنی جلو می کشید (زودتر پخش می شود). عدد مثبت یعنی عقب می اندازید (دیرتر پخش می شود) . این تنظیم یکبار مصرف است. یعنی برای جلوگیری از اشتباهات سهوی این عدد پس از هر بار خروجی گرفتن صفر می شود و باید مجددا (بسته به نیاز زیرنویس های بعدی) تنظیم شود. البته برای تبدیل های گروهی روی کل گروه اعمال می شود بعد صفر می شود.'
336 | Top = 0
337 | Width = 202
338 | Caption = 'جلو عقب کردن زمان پخش'
339 | ParentColor = False
340 | end
341 | object SubtitleDelay: TBitBtn
342 | Left = 0
343 | Height = 27
344 | Top = 0
345 | Width = 200
346 | AutoSize = True
347 | Caption = ': 0'
348 | Images = Imgs
349 | ImageIndex = 4
350 | OnClick = SubtitleDelayClick
351 | ParentBidiMode = False
352 | TabOrder = 0
353 | end
354 | object EndingPunctuationsL: TLabel
355 | Left = 202
356 | Height = 25
357 | Hint = 'یکی از مشکلات شایع برخی نرم افزارها با زبان فارسی مشکل نمایش کامل راست به چپ هست که حتی اگر متن به درستی نمایش داده شود باز علایمی مانند نقطه و علامت سوال و غیره که در انتهای خط تایپ شده اند در هنگام نمایش در ابتدای خط نمایش داده می شوند. کاری که این گزینه می کند این است که فقط علایم انتهای خطوط را به ابتدای خط منتقل می کند یا بلعکس تا شاید در زمان نمایش در پخش کننده های مذکور در جایی که باید نمایش داده بشوند. همچنین امکان حذف جدا یا همه علایم ابتدایی و انتهایی نیز گنجانده شده.'#10'تذکر: '#10'این عملیات قابلیت برگشت ندارد لذا درصورت لزوم یک نسخه کپی از زیرنویس اصلی نگه دارید. این گزینه عمدتا برای خروجی های ویندوز-۱۲۵۶ و دو یونیکدی که در نامشان no Right-To-Left Mark دارند قرار داده شده.'
358 | Top = 27
359 | Width = 202
360 | Caption = 'علایم نگارشی ابتدا و انتهای سطور را'
361 | Layout = tlCenter
362 | ParentColor = False
363 | end
364 | object EndingPunctuations: TComboBox
365 | Left = 0
366 | Height = 25
367 | Top = 27
368 | Width = 200
369 | Constraints.MinWidth = 200
370 | ItemHeight = 0
371 | ItemIndex = 0
372 | Items.Strings = (
373 | 'تغییر نده'
374 | 'منتقل کن به ابتدای سطر'
375 | 'منتقل کن به انتهای سطر'
376 | 'تنها از ابتدای سطر حذف کن'
377 | 'تنها از انتهای سطر حذف کن'
378 | 'حذف کن'
379 | )
380 | ParentBidiMode = False
381 | ParentColor = True
382 | Style = csDropDownList
383 | TabOrder = 1
384 | Text = 'تغییر نده'
385 | end
386 | end
387 | end
388 | object Container3: TPanel
389 | Left = 0
390 | Height = 21
391 | Top = 136
392 | Width = 566
393 | Align = alTop
394 | AutoSize = True
395 | BevelOuter = bvNone
396 | ClientHeight = 21
397 | ClientWidth = 566
398 | TabOrder = 2
399 | object SubContainer3: TPanel
400 | Left = 407
401 | Height = 21
402 | Top = 0
403 | Width = 159
404 | Align = alRight
405 | AutoSize = True
406 | BevelOuter = bvNone
407 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
408 | ChildSizing.ControlsPerLine = 2
409 | ClientHeight = 21
410 | ClientWidth = 159
411 | TabOrder = 0
412 | object PhrasesCensorship: TCheckBox
413 | Left = 138
414 | Height = 21
415 | Top = 0
416 | Width = 21
417 | TabOrder = 0
418 | end
419 | object PhrasesCensorshipL: TLabel
420 | Left = 0
421 | Height = 21
422 | Hint = 'با فعال کردن این گزینه فاسابریپ دسته ای از کلمات و عبارات ناشایست عامیانه فارسی (تقریبا اکثر آنها) را که بطور داخلی برایش تعریف شده سانسور می کند. به این معنی که با چند ستاره ***** جایگزین می کند. گزینه [حساس] حاوی عبارات معمولی تری می باشد و شامل تمام عبارات گزینه [در حد متعارف] که عبارت ناشایست و دشنام ها را پوشش می دهد هم می شود. چنانچه نیاز داشته باشید امکان اضافه کردن فایل حاوی عبارات شحصی قرار داده شده که می توانید شخصا اقدام به تعریف عبارت مدنظر خود کنید.'#10'طریقه تهیه:'#13#10'مثلا تو سیستم عامل ویندوز'#13#10'نت پد رو باز کنید'#13#10'File > Save As'#13#10'رو بزنید و پائین دیالوگ باز شده'#13#10'Encoding > UTF-8'#13#10'رو انتخاب کنید و در مسیر دلخواه ذخیره کنید'#13#10'بعد عبارات مدنظر خودتون رو هر کدام "در یک خط جدید" وارد کنید و ذخیره کنید و وارد فاسابریپ کنید'#10'و گزینه [شخصی - طبق فایل روبرو] رو هم انتخاب کنید.'#13#10'مثال:'#13#10'عبارت1'#13#10'عبارت2'#13#10'عبارت3'#13#10#13#10'توی سیستم عامل های دیگه ویرایشگر متن رو خودتون پیدا کنید ولی دقت کنید که فایل رو بدون پسوند ذخیره نکنید چون نمی تونید با فاسابریپ بازش کنید همچنین با فرمت فایل متنی ساده باشه نه فایل آفیس و...'#13#10#13#10'جایگزینی بجای سانسور:'#13#10'اگر می خواهید عبارتی که دستی اضافه می کنید بجای سانسور شدن با عبارت دیگری مثلا شکل دیگری از آن عبارت جایگزین بشود کافیست آن را نوشته سپس یک مساوی = نوشته و بعد عبارت جایگزین را بنویسید.'#13#10'مثال:'#13#10'filth=fi**h'#13#10'کثافت=چرک'#13#10'نکته: هر لغتی که اول نوشتید با لغتی که بعد از تایپ مساوی نوشتید جایگزین می شود. نگران نمایش راست به چپ عبارات فارسی نباشید. در مثال بالا کلمه filth با fi**h جایگزین می شود و کثافت با چرک. همچنین اگر تنها یک مساوی = بگذارید و بعد از آن دیگر هیچ چیزی تایپ نکنید مثل'#10'filth='#10'عبارت مد نظرتان در صورت یافته شدن فقط حذف می شود. یعنی هرچی filth هست حذف می شود.'#10#10'درصورت نیاز فایل عبارات داخلی فاسابریپ نیز از آدرس زیر قابل دانلود هست'#10'(فایل متنی badphrases.dat):'#10'https://github.com/m-audio91/FaSubrip'
423 | Top = 0
424 | Width = 138
425 | Caption = 'سانسور عبارات نامناسب'
426 | ParentColor = False
427 | end
428 | end
429 | end
430 | object Container4: TPanel
431 | Left = 0
432 | Height = 26
433 | Top = 157
434 | Width = 566
435 | Align = alTop
436 | AutoSize = True
437 | BevelOuter = bvNone
438 | ClientHeight = 26
439 | ClientWidth = 566
440 | TabOrder = 3
441 | object SubContainer4: TPanel
442 | Left = 186
443 | Height = 26
444 | Top = 0
445 | Width = 380
446 | Align = alRight
447 | AutoSize = True
448 | BevelOuter = bvNone
449 | ChildSizing.HorizontalSpacing = 2
450 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
451 | ChildSizing.ControlsPerLine = 2
452 | ClientHeight = 26
453 | ClientWidth = 380
454 | TabOrder = 0
455 | object CensorshipLevel: TComboBox
456 | Left = 180
457 | Height = 26
458 | Top = 0
459 | Width = 200
460 | Constraints.MinWidth = 200
461 | ItemHeight = 0
462 | ItemIndex = 0
463 | Items.Strings = (
464 | 'در حد متعارف'
465 | 'حساس'
466 | 'شخصی - طبق فایل روبرو'
467 | )
468 | ParentBidiMode = False
469 | ParentColor = True
470 | Style = csDropDownList
471 | TabOrder = 0
472 | Text = 'در حد متعارف'
473 | end
474 | object PhrasesCensorshipFile: TFileNameEdit
475 | Left = 0
476 | Height = 26
477 | Hint = 'فایل حاوی عبارات اضافی برای حذف یا جایگزینی'
478 | Top = 0
479 | Width = 178
480 | DialogOptions = [ofReadOnly, ofFileMustExist, ofEnableSizing, ofViewDetail]
481 | Filter = 'فایل متنی ساده حاوی عبارات|*.txt;*.dat'
482 | FilterIndex = 0
483 | DefaultExt = 'txt'
484 | HideDirectories = False
485 | ButtonWidth = 23
486 | Constraints.MinWidth = 178
487 | NumGlyphs = 1
488 | Images = Imgs
489 | ImageIndex = 3
490 | Flat = True
491 | Color = clForm
492 | MaxLength = 0
493 | ParentBidiMode = False
494 | TabOrder = 1
495 | OnKeyDown = PhrasesCensorshipFileKeyDown
496 | end
497 | end
498 | end
499 | object Container5: TPanel
500 | Left = 0
501 | Height = 25
502 | Top = 184
503 | Width = 566
504 | Align = alTop
505 | AutoSize = True
506 | BorderSpacing.Top = 1
507 | BevelOuter = bvNone
508 | ClientHeight = 25
509 | ClientWidth = 566
510 | TabOrder = 4
511 | object SubContainer5: TPanel
512 | Left = 207
513 | Height = 25
514 | Top = 0
515 | Width = 359
516 | Align = alRight
517 | AutoSize = True
518 | BevelOuter = bvNone
519 | ChildSizing.HorizontalSpacing = 2
520 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
521 | ChildSizing.ControlsPerLine = 2
522 | ClientHeight = 25
523 | ClientWidth = 359
524 | TabOrder = 0
525 | object OutFileEncodingL: TLabel
526 | Left = 202
527 | Height = 25
528 | Hint = 'با توجه به اینکه اصل فاسابریپ تبدیل زیرنویس به UTF-8 هست تا نیازی به تغییر System Locale نباشد دلیل خاصی برای تغییر این گزینه وجود ندارد مگر اینکه خواسته باشید زیرنویس خروجی را در نرم افزاری یا پخش کننده سخت افزاری باز کنید که مثلا تنها از ANSI پشتیبانی می کند.که برای آن منظور این گزینه قرار داده شده. دو مورد از این نرم افزار ها که به ذهنم می رسد TxtToVobSub و نرم افزار Subtitle Creator هستند. در مورد UTF-16 هم به همین صورت.'
529 | Top = 0
530 | Width = 157
531 | Caption = 'کدگذاری حروف فایل خروجی'
532 | Layout = tlCenter
533 | ParentColor = False
534 | end
535 | object OutFileEncoding: TComboBox
536 | Left = 0
537 | Height = 25
538 | Top = 0
539 | Width = 200
540 | Constraints.MinWidth = 200
541 | ItemHeight = 0
542 | ItemIndex = 0
543 | Items.Strings = (
544 | 'UTF-8'
545 | 'UTF-8 - no Right-To-Left mark'
546 | 'ANSI WINDOWS-1256'
547 | 'Unicode (UTF-16 LE)'
548 | 'Unicode (UTF-16 LE) - no Right-To-Left mark'
549 | )
550 | ParentBidiMode = False
551 | ParentColor = True
552 | Style = csDropDownList
553 | TabOrder = 0
554 | Text = 'UTF-8'
555 | end
556 | end
557 | end
558 | object Container6: TPanel
559 | Left = 0
560 | Height = 42
561 | Top = 209
562 | Width = 566
563 | Align = alTop
564 | AutoSize = True
565 | BevelOuter = bvNone
566 | ClientHeight = 42
567 | ClientWidth = 566
568 | TabOrder = 5
569 | object SubContainer6: TPanel
570 | Left = 285
571 | Height = 42
572 | Top = 0
573 | Width = 281
574 | Align = alRight
575 | AutoSize = True
576 | BevelOuter = bvNone
577 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
578 | ChildSizing.ControlsPerLine = 2
579 | ClientHeight = 42
580 | ClientWidth = 281
581 | TabOrder = 0
582 | object AppendEncodingToFileName: TCheckBox
583 | Left = 260
584 | Height = 21
585 | Top = 0
586 | Width = 21
587 | Checked = True
588 | State = cbChecked
589 | TabOrder = 0
590 | end
591 | object AppendEncodingToFileNameL: TLabel
592 | Left = 0
593 | Height = 21
594 | Hint = 'فعال کردن این گزینه صرفا برای شناسایی کدگذاری از نام فایل بعدا توسط خودتان مفید می باشد'#13#10'مثلا خروجی'#13#10'test.srt'#13#10'در حالت عادی'#13#10'test_FaSubrip.srt'#13#10'می باشد که با فعال کردن این گزینه و یو تی اف 8 بودن کدگذاری انتخابی خروجی می شود'#13#10'test_UTF-8.srt'
595 | Top = 0
596 | Width = 260
597 | Caption = 'افزودن نام کدگذاری انتخابی به نام فایل خروجی'
598 | ParentColor = False
599 | end
600 | object ReplaceSourceFile: TCheckBox
601 | Left = 260
602 | Height = 21
603 | Top = 21
604 | Width = 21
605 | TabOrder = 1
606 | end
607 | object ReplaceSourceFileL: TLabel
608 | Left = 0
609 | Height = 21
610 | Hint = 'در صورت فعال بودن این گزینه فایل جدیدی برای خروجی ایجاد نمی گردد. فایل خروجی روی فایل ورودی بازنویسی می گردد.'
611 | Top = 21
612 | Width = 260
613 | Caption = 'ذخیره مستقیم روی فایل اصلی'
614 | ParentColor = False
615 | end
616 | end
617 | end
618 | end
619 | object Footer: TPanel
620 | Left = 8
621 | Height = 1
622 | Top = 357
623 | Width = 566
624 | Align = alTop
625 | AutoSize = True
626 | BorderSpacing.Left = 8
627 | BorderSpacing.Top = 4
628 | BorderSpacing.Right = 8
629 | BorderSpacing.Bottom = 4
630 | BevelOuter = bvNone
631 | Color = clForm
632 | Font.Color = clGrayText
633 | ParentColor = False
634 | ParentFont = False
635 | TabOrder = 2
636 | end
637 | object SaveDlg: TSaveDialog
638 | Title = 'محل و نام زیرنویس خروجی را انتخاب کنید'
639 | DefaultExt = '.srt'
640 | Filter = 'زیرنویس های Subrip|*.srt'
641 | FilterIndex = 0
642 | Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
643 | Left = 24
644 | Top = 72
645 | end
646 | object IniProps: TIniPropStorage
647 | StoredValues = <>
648 | OnRestoringProperties = IniPropsRestoringProperties
649 | Left = 80
650 | Top = 72
651 | end
652 | object SaveDirDlg: TSelectDirectoryDialog
653 | Title = 'پوشه ای که حاوی فایل های خروجی خواهد شد'
654 | Options = [ofPathMustExist, ofEnableSizing, ofViewDetail]
655 | Left = 136
656 | Top = 72
657 | end
658 | object OpenDlg: TOpenDialog
659 | Title = 'زیرنویس (های) خود را انتخاب کنید'
660 | DefaultExt = '.srt'
661 | Filter = 'زیرنویس های Subrip|*.srt'
662 | Options = [ofReadOnly, ofAllowMultiSelect, ofFileMustExist, ofEnableSizing, ofViewDetail]
663 | Left = 192
664 | Top = 72
665 | end
666 | object Imgs: TImageList
667 | Height = 12
668 | Scaled = True
669 | Width = 12
670 | Left = 256
671 | Top = 72
672 | Bitmap = {
673 | 4C7A050000000C0000000C000000BE0200000000000078DA6360200D383A3A6E
674 | 737272FA4F0C86AABD47AC7A905A7D7DFD0062D51B1A1A0681DCE4ECECBC8E90
675 | 5AA09ACD303F181818C800C53EE151FF455656560ED9DF40BBF2F0B8A3083D9C
676 | 040505998072A7B0A83F272020C0822D6C1515158D80F27F90D4FE55525232C5
677 | 171F8181817D30F57676769308C51FD06E1EA0DAAB407C0DC8E62526CE454545
678 | C19858408A7AA87BAE11EB1E52FC4B4A78921A5FA4A40752D31B29E9D9C8C8C8
679 | 9794FC426A7E04E2ADA4E477063201308CD9817EC9059A7312883F43F149A058
680 | 21306E38D0D482C2F3A2877FD0FF94D629FF0BE66C00E3A4C6FEFF6E5E3E20B7
681 | 5C04A981C62B3B58AD5FE0FFFA1D57FEB71D7B82826B369F05EAF106E9B904D4
682 | C306B40F1CAF8975DD7035C94D13FF67F6CD87F3634A1BC1FE85BA179C663C7C
683 | 03FEA7B64DFD1F57D90A964BA8E984AB8F2EAE8385D109A8BF50C20DA2F63158
684 | 6DD98AFDFF5DDCDC61729FD1D5876514C2CD2D9CB7F9BFABBB07B2599FA0E107
685 | 1703D9DD72F8C1FFEA8DA791CD85BB07E65F18F6F0F5FF1F915BFEDF3F3A115B
686 | FAC901C513907D0126963D7131D82DCD07EEA0ABBF080C7B36E4F802892735F4
687 | 81D557AE3B86ACF6022CBE90E218141739D030FB04C527806E2804B901A60E28
688 | 7614DD9DC07CEF802B9DE148BB0748548F2BFD1F2145FD28A6093E42427C1D46
689 | 4B6FE0F2C72734EA8B7748C41758F90394432F7FA4617920A6A4019E1F63CB9A
690 | C0E67A06863C00A981956BC8F925B979125C3DA8BC4072CF79507E41CF8F78D4
691 | 83F2632ED00F2789550FCA3F7E91715F70A9AFDF71F97F647E155CCE373CFA0B
692 | 282C90D527D6766394A1D9939640D5C77E462F7F40383CABF87FF5A6D370F559
693 | 1316C1E48E43C31C236E5C5CDDFE27D6F7FE2F5EBCE3BF3BB04C028901EB5150
694 | F9C306AA938988DFF3FCFCFC6C48F1751E9F5A587CC100502F2B307CB34061E6
695 | 1316FDD93B38FC33B4FCC987990B0200208BE4EE
696 | }
697 | BitmapAdv = {
698 | 4C69030000004C7A050000000F0000000F000000820400000000000078DAED58
699 | 6F4C556518472FB52BE323F7725D9B01F17F8D2E5C56492DFE9CFB4F22491450
700 | 2E48FE997A5311212A35F012918E0FDAB215CB9CD5565BA1E20C19D30ACBCC72
701 | ADB1B9B91229403FA4AD4F2514654FBFE778CEF1DCC3817BEEA18F9EEDD939E7
702 | 3DEFEFBEEFFB3CBFE7F93DBB3131E62FA7D3B93C3737B71F36188D01B7A2A4A4
703 | E457189930C60D9AC40EA6A7A73F8CFB78B4D88C8C8C47F8CC2E97AB06EFB70C
704 | E2FE1504619FECAFF8F8F8588C7D63107B21313171A1DADFC5C5C54F60FCB748
705 | D89C9C1CB7C562098B556C6CECFC828282AE08D801CCB3E8C51A7BB1E0FBD00C
706 | B88B29292919B371253B3BBB14F3FED1E06E61BC3C12CFE2E2E2D86FA734D84F
707 | 317E8F119E1615153D84F923724C3233335D46390E3FCE47CC6B81BB09EBE2F7
708 | 68F3242929691EFC6A2AC7CC62D3D2D20A7C3EDF407E7E7E201ADC5C7C85F50E
709 | 32468E11F87AC808CE2C37E6C249E4C2333A6B2A6B63EF07F47073C941AFD77B
710 | D448EE638D5EABD51A2FE3F2F2F25699A9395959592EBC8F9AA975B8BF1BC59A
711 | 6A7B7F2EB51D676FC5FD8F68B1C0B5C5FC4F97CD665B20E57CBFA4157FC1AEF3
712 | 3BC6EB17E2D2C3391C8EFB0B0B0B8F71ADF0F897D0D3ABD753F5B3CD54B13648
713 | 6EAF8FF73989D85CC0BC451ADC227C1BE6736CEC7A9B3ACE8CD0AB5F5F53ACFD
714 | B31F696D683F79973CC9BF319C9A9AFAB8C4FF053837AF47959BB653E7576361
715 | 38D95EF972946A5B42B2AFAEE17C569CA30ECF133CF662CF59656EC39B1FD18A
716 | 0D0DB4ED60AF32F6D289EF143FA39EC87E11DFCB036B682B30BC6F5F593979FC
717 | A5B4E5C0870A76D7F16FD5713A09BBAA8E9BE0F188C6CF1BF6BC85BDFE2CE23A
718 | CF8E51FDCE3D6A2CC7E14F6DDCBDA56514DC775859AFE38B9FC4B34AFE966D12
719 | 76438BADDCD4482F7F3EAC60EB77ED2541706BB9F58BB4EFB0F1E5EB37536BFF
720 | 107C3E4E8DEF1C27C1EDD1E3649FDACFB2C9DCA85813147DA6C767F449B5E085
721 | 1DBF11D62F049A77D3EE818B143A7589B61F3AA1879D043D6DCC0FDC155E89FE
722 | DDDB7DC74F67AE6871C3D08CC7B41A22C7AB726323854E5F425C46C538A9D703
723 | 1F17CFC3A5934756892FECBF31297E9C477D38DF6A9CCFA1A9AD47F0ED6F9D33
724 | BD11296767C0B1FD0E3F38226067AC2BD8676F72727248CFA0CDC526EB1C7363
725 | D42CF6AEDDB508DCEA99251F66C37DACCD5FB50EA2064CA1AE72FE9E445E73FE
726 | EAEA20D71DF491DCEBDC2CAB0A5043F711DA79EC3CB57C709A9EAAAEBDAD831E
727 | CFD0030F3A9D5A1CBE5D96F753D3D44A9DE7AE2A354BA561B20E2E96F51ABA1B
728 | D65B059ADAC234B0AEA55D7BDE71BBDD6ED5ABCF06B0627D86BFFAB5E346B05C
729 | FFB43AA8876DE8EE818E79A7ED7BE5D617A67C654BC3B1CD6DD374BFB5EF7B5A
730 | D7FE1AB93DB77F63E596E7A7DC3EFF8D124108C3566F7E0EBA39320DCFFD046B
731 | 94A8593EFF753D1D64F32F5D46EB3A5E479FF2C31D7D19BC228E4B733E917460
732 | 6226EE716F13DCFF1EED387A8E566DDBA1F673807510CFE767E32EEB7D694595
733 | D24BF05AE88F6C527F759F9A5711EC3274EF51352F996706FE3398609C9E0E26
734 | 2424DC8B1EBE468AFB5855B049CC23EE0F70BE3AECD3AE9EFF1FE8BC1F684C7A
735 | 050000001200000012000000A80500000000000078DAED587B4C53671467832C
736 | 732151B205045D26092660B2FDE104C444A0AD055A5A29A5201B20E3517C803A
737 | B1A0E29487AF654B349BC9B2E8101435EA1C3E321F30D85C26986D7F2C7B80DB
738 | 04876E59962CD9144BB6B98DB3DFB9BBB75CCBBDB4D0BB7F166F72D2AFF77EE7
739 | D773CE771EBFDEA0206DAE3973E63C1D1D1DED82D4431A2629ACE302C6333A9D
740 | AE4BAFD7DF83D014E51E30BAF1391400862443292929B5F8FC3D008C3F60CFC6
741 | 59B3663D85756700385DB367CF8EE6582356467CFF6E0A18B7A09B219D595858
742 | D8238B162DDA3D591CE8BC0ADD47E5E7EF7038C22719F31FE3E2E2662AE5527C
743 | 7CBC1DCF6FFB8171272121215F2D2761E3E30683E120F6FD3901C65F90C33366
744 | CC78420D2724242408B62661DFF509706EC4C6C62663EF43BE6A65FEFCF92BB0
745 | FF6F058C513CABF2B7E6222323A741E78A02CED5A8A8A8D0C9D4AFD3E9CC84DE
746 | CF328C5F929292B226DB07424343A7416F1BF4EFB260DD807B8F4DA5A7E04C22
747 | 513BAB58B08E0AA43F415F90402F2D70D817D1AFD553F54BAB386B71EE5AE561
748 | A075A1559D6AD537B4E8635AF455ADFABC1673E7495CC8FB8B81CE419C8F0BEB
749 | DF029DCB5AF104B68B3103E42D5D228FDA10288F0AFA0F2EAE19E47B786262A2
750 | 09B6B6C2E67EC8B028BC6E451E67226722B1F761351CD49F0E7B4FB29EC16824
751 | B33D97B20A4A0431D91C6458B284E3E1C6199F462EEB9430E6CE9D9BCAB5CCBD
752 | C156ECA417DF3A4B9BDFE9A197CE7D2AC8E6533DB4E68D1364C97D4EE81F90C1
753 | 98989814B92FC0668C4183318D0A6B9BA8B1EB6BDAD5FB83A2D45FFA82F2AB6A
754 | 24DB6E4057CF18F03502769EE2DFB02E2B800DBD5E7A5F527DC757F7DDDB70F8
755 | 1299B31D925D2739A6889B598C23D95F5841DB3FBCE1D95FDD7A9EECA5AB6859
756 | A58BB69CFDC473BFA1B39F6C456552FE0C2F5CB8D0045B0E49399566B65069E3
757 | 5EAA39D64DEB9BCF0AF1E5FBB6A272AA6BBF3A86D3D147B6C232792EB640AE79
758 | E7A831C34C6926B3B036DBF304BB76F57C2F60ECC4E7BAFDED94B1345BAED327
759 | F9A424D6658554DDF2EE7DB1D9DCDE4BD9C515A43718EEEB8F6A381C4717E229
760 | E9EFFCE826D51C7D0F76D8947EF336F2B65F09279B637E79D083E36AEB204B5E
761 | 815AADB25FAD4ACF2CC881DAE3976907ECD87AFE33CA5BBDC1DB178FC09666D4
762 | 9259C937C312A310636B7E91F0C9DF556C195EB0604106722802EBB7C59C1AF3
763 | 6BB9936A8E7452DD998F85BCCB295DAD84318ABC39C17928AF0BF99EE2BADD63
764 | 31BE728B4A1BF628CED679F3E6E9E4B3956B4EC412EC7A7EFD164F9C9BDEFF56
765 | A83BB91D9001D4768A52CD8B7671DFB8936ECDA2E59B7650F98E7DB47CE37632
766 | 65D9250C3784FB46AAAF3EC6F522E67A9F986377C4F541C4D4CCFCD39B27E0CC
767 | F6E2F988CA599C81CE4C7F7AE904182CBF228E363F717CCD958B1AE1F8921131
768 | 3681E2705D8C6881F3401EC8FF5046B4A82F1F7DCC5F8C3D6AFC509C8FFD98E5
769 | 6E7014B7C80F5BD073A5BEAACA0F657D7E383DD34A85AE06AA7CED08A48D8A6A
770 | 1B293D73E9BF7DDE6038F7EC62BD43851F26CBE78E0D73B0B1FB1BCF0C6BFAE0
771 | BA30F3057F309FD32D593F6156252BF143B9DF76CCCF9D22E791C4E15CE31D9F
772 | 01E8268BF188409CC6CD653F71782E8FE38753C0F1F00491B75300382C078173
773 | CD5F1CE6A0CCB19578546EC55A37F31BEF673965C0F1E2E0CCCF2B5F6F23AB8C
774 | 97F17F077BC94A37CED26DB2E58CB7A76425B8D89022A767BC82EAAD1E3E0BDB
775 | 87D5F821F38B8A97DF14389D1256D5BEA3DEFCB045AD768CE91994555842EB0E
776 | 9C0697BAE9C160CE9FBF76937C6FB3C8518627AA45E686B915EBA8FAD005DA76
777 | E1735AF1CA7E81FB4BDC59E487E1624D8DFAAA6DD402E59457C939F4686A6AEA
778 | F1E9D3A74BFC70B18F772C6A32C0EF5E828383E5FC90EB74C01FBB64FC70B1CA
779 | FFCA649CDF31F93B17FE3F926E592AC7B8CBF5C83EA8F51FB68FDFEB70DC38D7
780 | F93C73CA2AEFA287F0BBB63EE6ED7866423C22E4BEF0F50F476BC31E4C7A0500
781 | 000018000000180000006C0500000000000078DAED5ADB6F1455186F343E1913
782 | 5F7CD07AFD0B7CA831314D935E764B6F946EDB6D17DA024A59DBBD175A5AA9F4
783 | 422F3411D30851AE221A794008909816BCA5C152E4C5881865B109972EF1CDC4
784 | 82A40F2D1CBF6F73B6CC9C3933E7CC740E51B3937CE9EECE99DF9CF9EEDF6F9A
785 | 93F3DF3E0A0B0B5F2B2E2EBE02F20084B82488F50BC5FED9455C5610FB4F85F8
786 | 88BD5B21FEEEFCFCFCA7E06FCA6DEC9292923F40FF4FA38DE1BBCF6DFCA2A2A2
787 | 3AAD1FC1FDCEB8883FC9FAA9D7EB7D0E7EFFCB05EC7BA5A5A5AFF06201CE255C
788 | D0FB56B3581B1818780CD65C5A89BFE7E5E53D6115CF60975761DDA203ECFBB0
789 | F737647206AC1D7780BF473627817D9E84F5379CF8BAEC017AAA70EAEBB2075C
790 | 7BDA89AFCB1E123161EAEB369E21E1C4D7650F8B9810FABA0D5BE73131B104F2
791 | BA9B7514EE1104CC3B207741DA54D46ABFDFFF384A4EF678E4FA419B52DBFEED
792 | B67D55FAA7EAF852991F54E73795F959657D515D1F55D67795FD89EAFE4A657F
793 | A8BABF95F47547FDB91D5FB71B13767DDD6E4CA89EEF1EC17C7A5921FE655A9B
794 | 70CEBEAF821FF83FF7231E8FE745D05F0C7CED1C3C6F92F60E2849FA5B14D738
795 | E06C9E87EB0FD03E41983741BE90AD931877748F993821550D4D2410DD46D677
796 | 0FA5A531DC452A6A1BD8FB606FE4B3C206AC2D5A9EA9B96B90BCFBE58F64F4E2
797 | 6DAE741F3F4FEA5B233ABF81FD7598E4669FD64743E39F9AE2EA64264536F68E
798 | B1F76860EAED0B5A9D3475F6CB616BEE51FB661BABAB5CCDDE3FD1EA7BC7C44F
799 | 068C91E95B64EBD149D2F9F9D76404F0D8F3894367D8FC7938E383AC9F0C7E77
800 | 4D8F3D3347EADE6A5F3EDFF6FE11033EEE89B1F712EA05F61B677D6E5DA2970C
801 | 7CF3DBF2B59B473FD49D0FEEDA67C0EF33E2A344689CF0F237A9A86B2455FEB5
802 | BADFEB3747C9F0F7370CF8E1BDC7B8750C6456366FAD8DF590E1E99B06ECC16F
803 | 93A412F6C2B926496D2DC4DED0BB2BED27066CB015E33BAC1FDD95D937CF2FD1
804 | A6AB1B9BADAE9D07F95D84BFFDF42503F6F6533F90B26A9FE8B9AF829F9EB55C
805 | 03761EB9704B878D3630D1372B13986345EB5A87F792FEAF7E4DC7D5F0F9EB60
806 | 8B31D91E25C48B2F976409F33CCD9B1F5BDA37DA4D62FB4E90F8C15324BCE798
807 | C8A61939A8AD27667E54591F30F825DA5B807D07FB5926F7D7F07A088C57D677
808 | 307EAD7A07C0AA37A95D1DEC7B0CDF86A0011F739345AD4C0866239F4E57E09F
809 | F10327977D74686A96B46CDBC9D509EC6F8DE4FC954BEBFBA26C7D0779C96E1F
810 | 41EB5A84E6C1AB9A7C829F27610FE18C0F5AF40B95B0F6B6689F1027850E67F4
811 | 94642C4E39C4978E4927CF6073E69952896F53522AE63AE679E754E267252B59
812 | C94A56FED59252595F680D4B29AA5DE522FE07E78F0CFFD318EA5CF0BF1D5FD0
813 | F03F11ECC11CD4FC5C1EFFE30FC659BE64B93F843EEE65196CDAA7EB6681B6F7
814 | 0EC3CCF57006C35E37347E54771F6F59F98396EE9D8302EC386F06188299CBC0
815 | 77CCCCC18CEF619EA504F51EB3D83797A3D4EE5D2B1EAF97DB4FC33DAA59BECD
816 | 6ACEB6896F988FE0FB112B5F73808F72C88CFF71093F3D9FA23D44B1E2101F39
817 | 9EB0901F58013EE507669DE2B7430C945654595D9B6CEEEC5B08C07C6E85CFE3
818 | F3B4B32A72AE6C2C04225DC8C32EA0404EB1C41FBD981272943D27A649F99ADA
819 | 87F8B0E740B4E71E7CBE26D2CF3B272F48F1A0C1B1FDF6F91F0DC7D1C7E145B5
820 | B2D1C8DB4CD0F956EE9D10F80B723F38C3B3D8FD67AF10CFAA32F69A763A43DB
821 | E27F50CFD18F8EEBECCEF191C5CCEC8D5CAE931A55B3BE35CDE5AEEBE8E5D5AF
822 | FDDA7A42FF77C5ADFA385F5050F02C53B3CA5DE2C930C7AF36E122622B7C4F85
823 | D746057C47B5435DCD433EAB92A9C1A0BB6760ED072CFF53B729446A5A36F1F6
824 | FC19AB6F1BEF91C219FEA769CB8E743EA1FCCF04F29B22FEE71FF8EE94D8
825 | }
826 | end
827 | object ImgsLight: TImageList
828 | Height = 12
829 | Scaled = True
830 | Width = 12
831 | Left = 304
832 | Top = 72
833 | Bitmap = {
834 | 4C7A050000000C0000000C000000B20200000000000078DA6360200DB41D7BB2
835 | 0D88FF1389B7B51D7F728F68F540B5A953D60610AB3E79F2AA20909BDA8F3D59
836 | 47D8ECA79B617E702CAC94018A7DC2A3FE8B7B4A8E1CB2BF53A7ACCEC3A53E65
837 | CAEA22F4705232B16202CA9DC2A2FE9C82BE390BB6B075492A3402CAFF4152FB
838 | D729A5D8145F7CB45E7DDD0753DF7DE2DE2442F1A76864C903547B1518D6D714
839 | 0D2D788989732D2D0730261690A21EEC1EA05B88750F29FE25253C498D2F52D2
840 | 03A9E98D94F49C367D8D2F29F985D4FC08B4672B29F99D814C008C7BB6D4296B
841 | 7281769E049AF319829F9E4C99B6BA50D1D092034DAD3450EE0250CDF3D4A9AB
842 | EB9C938B0281382865EAEA36A0D87BA09BCF83D480E3D5C8921DA616688E24BA
843 | BD891B77AA02E53E80F42881DD008957A0B91520790707078696D30F9A975E79
844 | 9D032F038F3F9D03550373EFFFD6634F37274FDE540ED3DF7AF4713F3CCD1E7F
845 | B6001A6727A07E4309B7D62BAFFB5574CD18C1E96AEA2A2BA0D877A8DC272CEA
846 | B7C2CC4D990A8EFBAF48729F406186ACBE79F1A652905AA7820A4E20FF1BAA59
847 | 4F4F00C33717CDFC13C0F4B70A84D1DD09F46F0E289E807E3E071303867B2452
848 | DD809C76CE2B1A58B0C1E30B18BE78D4C3E30B1EC70696AC40FBB2406E848603
849 | C86F278062F93073A1661C457727D00E073CF517B6747E8024F5B8F11112D58F
850 | 62EA6352E2E030BCFC079613E0BC0BC9CFE780F40568F9930B4AF338CA9FFF1D
851 | C79FCC5333366654D07760ECDFFF7A16349F632B7FC0764E3879A309660E309D
852 | D62295E7D0F2670D4ABD82533DACFC39F6E424B1EAA1E5CF715CEA81E5A34CFB
853 | B1672B90CA87D3407C16597DC7B127F330EAC2A9AB534072ED60B7A0963FE0F2
854 | EDF8D38D8E2925EAF0726BDAEA0C68BE3B8EA5FC81E19F4BAEBCEE02FAC115C8
855 | 7E85ABFCC15377612D7F70608CF2071C17E0F00586D9F1A76780E65D82963F39
856 | C8E50F002094EBCE
857 | }
858 | BitmapAdv = {
859 | 4C69030000004C7A050000000F0000000F000000520400000000000078DA6360
860 | 201F244F59159C3275F53620DE4F0A06EA0B693BF6E43510FF2703BF6E3FFE64
861 | 3F397A41FA822A7ACC80EC47A4EA0D28EF3207F93975CAAA2820FF2F91FAFEB5
862 | 1D7FD6070B2F49152D16A0D80922F59ED275F1974409EF459BEC80E26F09E9CD
863 | 9CB6D48593870725AE3878F898CA379CEEC2AFF7E90EA03A666C71ADEBE2C30C
864 | 54730187DECBAEE915EAF8D24A48759F1750DD1F347D7F836BFAFD09A5335139
865 | 6550B8ED42D3BB47445E859598741A356B997EDBF1A777617192D435D598D834
866 | CEC6C9C594397B530C50DF5760FAE902F149CD270E0E098C1C1C3C64E53172F5
867 | FA143458F5EF7FBD236BF6E66852F45112566DA79FCF06A779587E3BF6782E31
868 | FAC84D1B94A4C9B20D2713B0D809B7BBF5C893C958CB3C0AF260DBA9676B892A
869 | A78E3D5E2F282103D70C2C7322C9297382AB7B8C81FC07E49475ED279E2E20C1
870 | 4E64BCA8ED389965FB7150D9FEB416C8FE42AADED6A38FEB18A804B41DBD38D2
871 | A76F8801BA671BB04C04D5153FDB8F3D7909646F4D9BB93ECEC82B4C129B3EA0
872 | B85CE381BBA038FE0AF5C3A9D6634F3603E98340FC1D829F9E04AA9345D70794
873 | BB05F2474CC7DC122D3B776E6479205FB0E5C6DB76A0DE4F2075DE058D96E0F4
874 | EFE8CDD904B10F14069B8165130B3677591516B1B75C7A35175AC63FD27500F9
875 | 6F7D2C90FF0D94966DA3D25540EA6C6C6C18BA0F9E8F0695B5EB6EBC0D86A7BF
876 | A96BD460E19C31633D285CB642F9CF5B8F3DAD0B289F181154D11D0AF5C3E796
877 | A38F93E0F965DA5A6D44FC3EDD020D4FE4B8FB05C41F4079B1FBC0C32A3D471F
878 | 0E903E550B07D6DA5DD72623A97B040D43F4B8FF1052DD9FA3E0E0000D2B0FAE
879 | B6A38F417EFD81A406A4EF1516BDDB140D2DF8606EADDF776B227A99008B7774
880 | BD150B364D94909000EB2BD97F5E18EA0FF4FA740B30BDC440C31959EE0E10EF
881 | 47C218E91918CED1865EA16240F67164F184BE25358A8696A2308C45EF3723CF
882 | 105148BA0A9586A52B100EA9E92F40298F50F3DE2DAF82460B6479503A83C517
883 | 1EBDDFBCF31B2C98989919D1D39D8EBD0F5BC6CCF551A07000AA7B088D135078
884 | 6E01FA2F16E84E313433D700F16F2CE5C21482750F367D10FC19180E1204F4E2
885 | 2C5780EDD5F5CEC9450D5871529123996DD8FFE494CBA3781413858F3E598D27
886 | 3FE0C3AB50DA57C0FA055C4F20EAC10D90740BAE076340E513AE7AB0E920B85E
887 | FA06D47B63E2A9EB11C0B24ABF74FD4307A0DE6BD0F2F038BE7A1084BB8F3F58
888 | A46A64062F574AE6EC9F87E4565CF52018F79EBCBD50CDD818AE17587ECD412B
889 | 9BA1F5E08658F4F299B05E683D780C142EA8E2C4E8C5510F62D31B83568F41EB
890 | C1A74B81F80DB2387A5881804B72B172D9BA93ADA0F60BD4CFCB81F8019676DD
891 | 5160FC6094913C42A2A07ED761683D781F5B3D082D9F5FE42CDADD18503B4518
892 | A6D72E3E9B17D43E80CA6FC6510F22E38F5BEFBCCF0496D58685CB0F2E27540F
893 | 62C1DFA165EA2F42F520813628DE7A100FC6590F82D21924BD40EBC1E34FD741
894 | F311A81E8C86B9130600518A4D264C7A05000000120000001200000065050000
895 | 0000000078DAED587B4C1B751C2F335B60B0C964F250CC4A136286D115E6228F
896 | 8004DC044AA25B01B73F4C9C2D2C2C83F1F6313649585B16B444338CCB644089
897 | 33E33575D1AD85A9649496B1A93159358A738E1EE0A6DBBA41145FF8F95DAFE5
898 | 68EEFAE0CE7FCC9A7CB28EFB7D3F77DFF7A7279188F3C97AB1F2D16C55550DF0
899 | 1AD01020884D0D381ED38ED807813F80F92582D89E05AE08E070E14AD3C8541D
900 | FEFD5D00C7DCC1E18997D28A8AD7E1BB4900CF604AA12A8EC43A5B55B919FFFF
901 | 31700EEA2AE29CE3CA992C3179455D9F5517284F4D9FB5599A941ACCCEFFCE8F
902 | 4D9101C67C72EF3BC7A2B96AA9BCDDB80DD76FF9E18FA3ACC3B49DAF26651B53
903 | 2274A3D4319CFDD30BCF5F9AE10983549EBC968F2778D56A49417D4B0ACE7EEF
904 | 85E7B2F2557D4670E8AA205FBD527CB87B17CEFFCDC1F18FBAB5778FBF3DB731
905 | B7300436C31C3C9644C5736181F46FE3E48C0276D7591C37DE1CFDE69940E740
906 | 4CFC232175FDA307607F87A0B6DFD2101D9FB0722933252E3125A6B1EBEB5202
907 | 7C7F40C87C924AE534847EC4E021BE307EED5EAA5F62C5598CBC8B558742FB42
908 | AC3E156B6E8831C7C498AB62CD7931F64EDA76F543F8DB69A17BB0696CB206DF
909 | 7F13BA97C5D2095A0B4574CB9C40DD3298ADAE263AAA5AA88E92FC079FE0B0D5
910 | 41985791E51D03B91A8BBD0379B5E1996F3B41D9742354FB9E2E531E99DB38BB
911 | 8C8F4759DF92A919B17733B6C4EF9F802F19D8496F013388E949F4F3935C1C8A
912 | BD0D19B8E70F643600D6B24EE356DC570E3CCC20A9CC607C1ED7BE739EA1C689
913 | 0DDB177067321C73E88F2331F109117CCF5C6A1E8BD57C317DD2F96CD4386C33
914 | 987844E92CF61EFA1E16BBED2955953BF6D24D9B82B28A2B62B7EDAE8DCECCCC
915 | A4FF162E954A545D1F6DC1F9ABC44687383031CD63E2310F5F3AD7C4C4DE43CE
916 | CBE57289C1FC558EC63A31A41F9DFC105CEB17FAB13A12311A637AEC76B9C194
917 | E3CC8BB3A610E3138DE76EE6A71496A6A615A95271AF5EE6DA79768D64A96BA2
918 | 3516EAC2821D997D746E17CD6066D7905C3948CDBFF2FE709E74C313749EC363
919 | 6297A95B7B0A6137EDB6B1D82F3167F9E6820DFB27FF41D97AF72C2E6B3FB301
920 | 76568F3DE0F0C24366CB66973D9E6379996180D4D734C75907875F345A2F4E7D
921 | BEB3F2E550568EB2F01CDF72DE137E915AE79C99EF0DF44A614FEFF9C7535768
922 | 2F4C35F1ECB47970B4A15F725D79F700D9C99758B8C6E3BFA3DC60CC894B4C26
923 | 7BA29BC993FB7A6D9FF528E293E042716BCF61AEFDAA354F9C201CA4A695F5FA
924 | 74CF1D8ADC6AD9FD40660D473EC7614BF785479F8EBB9ECB070F3933AEA86848
925 | E7EA41D273E03A0EDC825FE7D8B30FBC9F311C77E04B8F729F3EDDC71C5B4BFA
926 | 454BD7BABB4E1D4C6EDB10D35CC4238AED0BF9A0AE5A706E96A72E3E006FB43F
927 | B39497C3899B05F5FA67FDE4F1B5574E8BC4E30BB35A331D9B7951B8C4E1B98B
928 | BBF8BF6156C45E15C2358B59A8E798AB5144CBB0F4A11173F12C4B1FE6BAF60C
929 | DF2C22BA8CD154642FDE68B65E6E2BAA7FBD44B9EFAD5D07CDD78F82EB57E65A
930 | B7D23F7D38DF048DB8637FF37D21616192E0D070C90B15EFDEFBC6D035F3C2DE
931 | F1AA0FDD7EE35986F24B4A16695BEC9E41CF3DE8D287B224963E0C98875B1F2E
932 | 81C7AD0FF1BD832B9FFEF3F0EA436F3C8738DFE962D7A286FAB97E8371F1409F
933 | DF7F6864AA049A97ADCBA047A94F803380DD9387E47D8BAA6A0D578D24298A22
934 | 0E986C9DAEDF7088F5293EBF481DC20F5D96BA5AC6F9EEA2B547E58F3E74F78E
935 | 85BAA87ABBAF40AED8B1DCC591985FB472FF80AD9BC5E34D1FB241DE5318CF4F
936 | CE3C8D5A5987DAAB65BD77F0AA0F7940B4E7A788C5CFFEEA433FDF03F8D4873E
937 | E0531FEA681F2976BCA6805F16FD06802F7EE8C3C845FAD0429D423E0659FA30
938 | 876B8EFD0B181952A24C7A050000001800000018000000B50400000000000078
939 | DAED5949681441148DBB228A220AEE513C8A1EDCF026DE5C71C1A3170FE2AEE8
940 | 453C059C254171C945A251505061625010A3283A62A6BB27A26014F783C954F5
941 | 242001333107CDD2FE3FDD893DD5CB54F57489CA347CD2A4BB5EF5FC7A7FA957
942 | 1515FFF615496596C754FA1A6C10CC08C910EB8D85DD1A222E6B88DD2511BF2B
943 | AED1D3B2F011BB26F57512DC1309F8D9AAE49729B8C671956C0DFDDB15B2DDCE
944 | A3A84AEE8486ADD22696A735A9CC2C78F62D04FCDE932D9D0BDC62019E1D2915
945 | 3FAAD0635EB156651823E19D74297CAF7BF1628C5F3C5737D3A5F05E5F00EC81
946 | 984257F3E40C78F7AC30BEA2D7F2E6A453AD9D1361CC97205CE7BD6229B23E28
947 | D7B9E750C9ED205CE7BD3862C293EBFCBFC13B26FCB8CE7BF9C44451AEF35EF1
948 | 7476191313FD1195AC0CB38EC23AEE06DC1C580FE4F53D326A7522618C42AB28
949 | 5F7FDC3FB8A6B8B660DFC35E5F99FC941D5F32F383ECFC26333FCBAC2FB2EBA3
950 | CCFA2EB33F91DD5FC9EC0F65F7B73C5C0FDA9F8B705D342602705D282664EFEF
951 | 64EF4F631A7D250D1FB0ADDAD49A8F3F09FAC0FFDC8F54A7B2F3A21A391853F5
952 | 0710331FB077C8F70FF97BFC9F7E20F25C9F2BACD9A8647654A575D82770E54D
953 | 9526E25A47255FEECF6EB1FA9CE1B5B2BEBD11E734E7CDE79236669E5C4CD337
954 | FB61475572B89047A43EAE92459EDFA29155F0DEE3C21A400EF97CF7802D47ED
955 | E6EE8F34FD7CC11CCCEFA849D339853E21F5A23D18E4FD66BBAF30DFDBFC72D9
956 | 3E3FCEE7C078FB762C70695D5CA16B0DC318E1E2AB6D857546BF34C44186272A
957 | 3B16F120D69FFCAEE54E1F237F98F5EEC7EF34F96D9B572577224A767E55D218
958 | 3D3C56C9AC60F2CA09161F6B96A356AAFA7E8893FB1EBCEEB3EAC253586BC5F6
959 | FF4790D7C73BB9A7EF72C96FF7A0A7F82890B712B54D9FC7397CDF42A7B9D528
960 | 2B6E72BCFD13F2C4E1F7E6F6A9F03CE5312EC7899F70DFD37454423CBFF31997
961 | E3F14F54C92C76F83B4D96C0B3CE227DC4079FF51D8AB56E96EFE82718FB89A3
962 | 7EDDC31C5BE4BD76179F2FE4EB51F47D98BF39F3B0A8F50DE501CC373EEFBD04
963 | 5FEC60AD989E8F79DC5E4F7C7874D7A3171EF45BB3E8B3B699057C80DCE5E127
964 | 51FC8188A66F721D0379CBA54F11C11FC07CE65B1FA13630BEE2C427DDF07723
965 | 570D7ED631DDAA497D9CF5FD1AEB6FAEFD35E66FC8B1D8CF03C67BABC6F5E4EF
966 | 317680DF6EB5A8605D15BA01DEA7C57B61B226A0BEC07B36920C882FD0CF8BFF
967 | 06C1984F4AC6173122635F5758F368462A7ED9CA56B6B295ED6F3622B5BE9835
968 | 8CC8C0C69E564CFF2137A21ABD55AAFE63F66D79CDA09FF9A6878C5E6298EF90
969 | 7AECF103EA3FB88F3A6AD7C5716F6FEECD4BD57F4C3BA392096E67792EFB056E
970 | FDC76E5E9A3E3CFBE9DA4F17D57F4AC277E83FE0DF2B7E5C0B80EFA7FF84823F
971 | A4FF587B2E43027E31FDA7647C5EFDC7131FE2C2EFCC06E31CF6D917E0BE2108
972 | 7EFEFC43E99C017CBCE8B2868DE09BEB96F9FAC82DBE3CCEA075DBB806F8FEAB
973 | 9CFAD811CEF3D6E3E2FA8FC505C89BC5CE7A01EF5C00FDC76E3F70DF5D95EE9A
974 | ECD0DC4D9DA797C1DF1B50FFD1C1AF3BEDBA960B4778F51F3F6B31E313391258
975 | FF096042FA8FF039B0A0FE23841D40FFE1F609AFFE83B501F3B78BBF9260CF59
976 | 9EE4CF65C2D07F30CF68F4A688FEF30B375AAED7
977 | }
978 | end
979 | end
980 |
--------------------------------------------------------------------------------
/umain.pas:
--------------------------------------------------------------------------------
1 | unit umain;
2 | { FaSubrip: autodetects and converts encoding of farsi (persian) subrip files.
3 | with additional functionalities.
4 |
5 | Copyright (C) 2016-2021 Mohammadreza Bahrami m.audio91@gmail.com
6 |
7 | This program is free software: you can redistribute it and/or modify
8 | it under the terms of the GNU General Public License as published by
9 | the Free Software Foundation, either version 3 of the License, or
10 | (at your option) any later version.
11 |
12 | This program is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see .
19 | }
20 |
21 | {$mode objfpc}{$H+}{$modeswitch arrayoperators+}
22 |
23 | interface
24 |
25 | uses
26 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
27 | LCLType, StdCtrls, IniPropStorage, ExtCtrls, Buttons, ComCtrls,
28 | LazUTF8, LConvEncoding, uUrlLabel, LazFileUtils, DividerBevel, uabout,
29 | CommonGUIUtils, CommonStrUtils, CommonFileUtils, uSimpleHelp, uNumeditFloat,
30 | uTimeSlice, uSubripFile;
31 |
32 | type
33 |
34 | { TFaSubripMain }
35 |
36 | TFaSubripMain = class(TForm)
37 | AppendEncodingToFileName: TCheckBox;
38 | EndingPunctuationsL: TLabel;
39 | EndingPunctuations: TComboBox;
40 | CensorshipLevel: TComboBox;
41 | ArabicCharsToFarsiL: TLabel;
42 | AppendEncodingToFileNameL: TLabel;
43 | Container1: TPanel;
44 | EnglishNumbers: TCheckBox;
45 | EnglishNumbersL: TLabel;
46 | ImgsLight: TImageList;
47 | SubContainer5: TPanel;
48 | Container6: TPanel;
49 | SubContainer6: TPanel;
50 | SubContainer1: TPanel;
51 | Container2: TPanel;
52 | SubContainer2: TPanel;
53 | Container3: TPanel;
54 | SubContainer3: TPanel;
55 | Container4: TPanel;
56 | SubContainer4: TPanel;
57 | Container5: TPanel;
58 | SettingContainersGrid: TPanel;
59 | ReplaceSourceFileL: TLabel;
60 | PhrasesCensorshipL: TLabel;
61 | StripHTMLFontTagsL: TLabel;
62 | StripHTMLStyleTagsL: TLabel;
63 | Imgs: TImageList;
64 | SettingsNotifierL: TLabel;
65 | SettingsNotifier: TPanel;
66 | ReplaceSourceFile: TCheckBox;
67 | OutFileEncodingL: TLabel;
68 | OutFileEncoding: TComboBox;
69 | OpenSubs: TButton;
70 | PhrasesCensorship: TCheckBox;
71 | Description: TLabel;
72 | OpenDlg: TOpenDialog;
73 | OpenSubsContainer: TPanel;
74 | SaveDirDlg: TSelectDirectoryDialog;
75 | ArabicCharsToFarsi: TCheckBox;
76 | Header: TPanel;
77 | SettingsShow: TSpeedButton;
78 | SettingsHelps: TSpeedButton;
79 | StripHTMLStyleTags: TCheckBox;
80 | StripHTMLFontTags: TCheckBox;
81 | IniProps: TIniPropStorage;
82 | PhrasesCensorshipFile: TFileNameEdit;
83 | SaveDlg: TSaveDialog;
84 | Footer: TPanel;
85 | DragNotifierL: TLabel;
86 | HeaderLinks: TPanel;
87 | OptionalSettings: TDividerBevel;
88 | SubtitleDelay: TBitBtn;
89 | SubtitleDelayL: TLabel;
90 | procedure FormActivate(Sender: TObject);
91 | procedure IniPropsRestoringProperties(Sender: TObject);
92 | procedure PhrasesCensorshipFileKeyDown(Sender: TObject; var Key: Word;
93 | Shift: TShiftState);
94 | procedure FormCreate(Sender: TObject);
95 | procedure FormShow(Sender: TObject);
96 | procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
97 | procedure OpenSubsClick(Sender: TObject);
98 | procedure SettingsHelpsClick(Sender: TObject);
99 | procedure SettingsShowClick(Sender: TObject);
100 | procedure SubtitleDelayClick(Sender: TObject);
101 | private
102 | FHelpWindow: TSimpleHelp;
103 | FSrt: String;
104 | FDelay: Double;
105 | FBatchMode: Boolean;
106 | FBatchOutDir: String;
107 | FInputFile: String;
108 | FMaxHeight: Integer;
109 | FMinHeight: Integer;
110 | FCollapsed: Boolean;
111 | function OutputEncoding: String;
112 | function OutputSuffix: String;
113 | function OutputDirValid(const Dir: String): Boolean;
114 | procedure DoRun;
115 | procedure ProcessSubtitle;
116 | function TryReadSubtitle: Boolean;
117 | procedure ClearUnicodeSpecificChars(var S: String);
118 | procedure SwapArabicChars(var S: String);
119 | procedure ReplaceFarsiNums(var S: String);
120 | procedure ApplyDelay(var S: String);
121 | procedure StripHTMLTags(var S: String);
122 | procedure CensorPhrases(var S: String);
123 | procedure CorrectEndingPunctuations(var S: String);
124 | procedure PromptExport;
125 | procedure ExportSubtitle(const Subtitle: String);
126 | procedure SupportUrlClick(Sender: TObject);
127 | public
128 | SupportUrlL: TCustomUrlLabel;
129 | LicenseUrlL: TUrlLabelEx;
130 | FInputFiles: array of String;
131 | FAutoRun: Boolean;
132 | published
133 | property Collapsed: Boolean read FCollapsed write FCollapsed;
134 | end;
135 |
136 | TIntegerDict = record
137 | s,
138 | e: Integer;
139 | end;
140 |
141 | TIntegerDictArray = array of TIntegerDict;
142 |
143 | var
144 | FaSubripMain: TFaSubripMain;
145 |
146 | implementation
147 |
148 | {$R *.lfm}
149 | {$R badphrases.res}
150 |
151 | const
152 | LicenseUrl = 'https://www.gnu.org/licenses/gpl-3.0.en.html';
153 | SourceUrl = 'https://github.com/m-audio91/FaSubrip';
154 | LicenseCaption = 'GNU GPL 3.0';
155 | HTMLTags: array[0..11] of String = ('', '', '{i}', '{/i}', '',
156 | '', '{b}', '{/b}', '', '', '{u}', '{/u}');
157 | HTMLFontTagOpen = ' 0 then
380 | begin
381 | FBatchMode := True;
382 | if ReplaceSourceFile.State = cbChecked then
383 | FBatchOutDir := IncludeTrailingPathDelimiter(OpenDlg.InitialDir)
384 | else
385 | begin
386 | ShowMessage(rsSelectOutDir);
387 | SaveDirDlg.InitialDir := OpenDlg.InitialDir;
388 | if not SaveDirDlg.Execute then
389 | begin
390 | FBatchMode := False;
391 | Exit;
392 | end;
393 | FBatchOutDir := SaveDirDlg.FileName;
394 | end;
395 | if not OutputDirValid(FBatchOutDir) then Exit;
396 | for AFile in FInputFiles do
397 | begin
398 | FInputFile := AFile;
399 | ProcessSubtitle;
400 | end;
401 | ShowMessage(rsAllDone);
402 | FBatchMode := False;
403 | end
404 | else
405 | begin
406 | FBatchMode := False;
407 | FInputFile := FInputFiles[0];
408 | if OutputDirValid(OpenDlg.InitialDir) then
409 | ProcessSubtitle;
410 | end;
411 | FDelay := 0;
412 | SubtitleDelay.Caption := ': '+FDelay.ToString;
413 | end;
414 |
415 | procedure TFaSubripMain.ProcessSubtitle;
416 | begin
417 | if not LowerCase(ExtractFileExt(FInputFile)).Equals(extSrt) then Exit;
418 | if not TryReadSubtitle then Exit;
419 | ClearUnicodeSpecificChars(FSrt);
420 | SwapArabicChars(FSrt);
421 | ReplaceFarsiNums(FSrt);
422 | ApplyDelay(FSrt);
423 | StripHTMLTags(FSrt);
424 | CensorPhrases(FSrt);
425 | CorrectEndingPunctuations(FSrt);
426 | if FBatchMode then
427 | ExportSubtitle(GenFileName(FInputFile, EmptyStr, extSrt, True, FBatchOutDir, true))
428 | else
429 | PromptExport;
430 | end;
431 |
432 | function TFaSubripMain.TryReadSubtitle: Boolean;
433 | var
434 | bs: TBytesStream;
435 | Enc: TEncoding;
436 | sl: TStringList;
437 | SrtEnc: String;
438 | begin
439 | Result := False;
440 | Enc := Default(TEncoding);
441 | bs := TBytesStream.Create;
442 | sl := TStringList.Create;
443 | try
444 | bs.LoadFromFile(FInputFile);
445 | bs.Position := 0;
446 | SrtEnc := GuessEncoding(PChar(bs.Bytes));
447 | if SrtEnc = 'ucs2be' then
448 | begin
449 | sl.DefaultEncoding := Enc.BigEndianUnicode;
450 | sl.LoadFromStream(bs, Enc.BigEndianUnicode);
451 | FSrt := sl.Text;
452 | end
453 | else if SrtEnc = 'ucs2le' then
454 | FSrt := UTF16ToUTF8(PWideChar(bs.Bytes), bs.Size div SizeOf(WideChar))
455 | else if (' cp1252 cp1256 ISO-8859-1 ').Contains(SrtEnc) then
456 | FSrt := ConvertEncoding(PChar(bs.Bytes), EncodingCP1256, EncodingUTF8)
457 | else
458 | begin
459 | sl.DefaultEncoding := Enc.UTF8;
460 | sl.LoadFromStream(bs, Enc.UTF8);
461 | FSrt := sl.Text;
462 | end;
463 | finally
464 | bs.Free;
465 | sl.Free;
466 | end;
467 | Result := not IsEmptyStr(FSrt);
468 | end;
469 |
470 | procedure TFaSubripMain.ClearUnicodeSpecificChars(var S: String);
471 | var
472 | c: String;
473 | begin
474 | for c in UnicodeBOMs do
475 | DeleteAllOccurrences(c, S);
476 | if OutputSuffix.Contains('noRTL')
477 | or OutputSuffix.Contains('ANSI') then
478 | for c in UnicodeDirectionControllers do
479 | DeleteAllOccurrences(c, S);
480 | end;
481 |
482 | procedure TFaSubripMain.SwapArabicChars(var S: String);
483 | begin
484 | if OutputEncoding.Equals('ANSI') then
485 | ArabicCharsToFarsi.State := cbUnchecked;
486 | if ArabicCharsToFarsi.State <> cbChecked then
487 | S := ReplaceStrings(S, FarsiChars, ArabicChars)
488 | else
489 | S := ReplaceStrings(S, ArabicChars, FarsiChars);
490 | end;
491 |
492 | procedure TFaSubripMain.ReplaceFarsiNums(var S: String);
493 | begin
494 | if OutputEncoding.Equals('ANSI') then
495 | EnglishNumbers.State := cbChecked;
496 | if EnglishNumbers.State = cbChecked then
497 | S := ReplaceStrings(s, FarsiNums, EnglishNums);
498 | end;
499 |
500 | procedure TFaSubripMain.ApplyDelay(var S: String);
501 | var
502 | sa: TStringArray;
503 | ts: TTimeSlice;
504 | i,j: Integer;
505 | begin
506 | if FDelay=0 then Exit;
507 | ts.Initialize(DefaultSubripTimeSliceFormat);
508 | sa := S.Split(LineEndings);
509 | j := 0;
510 | repeat
511 | i := FindInArray(sa, ts.TimeSliceFormat.SliceSep, j);
512 | if i>=0 then
513 | begin
514 | ts.ValueAsString := sa[i];
515 | if ts.Valid then
516 | begin
517 | ts.Delay := FDelay;
518 | ts.Value := ts.ValueWithDelay;
519 | sa[i] := ts.ValueAsString;
520 | end;
521 | end;
522 | j := i+1;
523 | until i<0;
524 | S := S.Join(LineEnding,sa);
525 | end;
526 |
527 | procedure TFaSubripMain.StripHTMLTags(var S: String);
528 | var
529 | ATag: String;
530 | begin
531 | if StripHTMLStyleTags.State = cbChecked then
532 | begin
533 | for ATag in HTMLTags do
534 | DeleteAllOccurrences(ATag, S);
535 | end;
536 | if StripHTMLFontTags.State = cbChecked then
537 | begin
538 | DeleteAllOccurrencesVL(HTMLFontTagOpen, HTMLTagEnd, S);
539 | DeleteAllOccurrences(HTMLFontTagClose, S);
540 | end;
541 | end;
542 |
543 | procedure TFaSubripMain.CensorPhrases(var S: String);
544 | var
545 | rs: TResourceStream;
546 | sl: TStringList;
547 | sa: TStringArray;
548 | i,j: Cardinal;
549 | Enc: TEncoding;
550 | begin
551 | if PhrasesCensorship.State <> cbChecked then Exit;
552 | i := CensorshipLevel.ItemIndex;
553 | if i = 2 then
554 | begin
555 | if IsEmptyStr(PhrasesCensorshipFile.Text) then Exit;
556 | if not FileExists(PhrasesCensorshipFile.Text) then Exit;
557 | if not FileIsText(PhrasesCensorshipFile.Text) then Exit;
558 | end;
559 | Enc := Default(TEncoding);
560 | sl := TStringList.Create;
561 | sa := nil;
562 | try
563 | case i of
564 | 0..1: begin
565 | rs := TResourceStream.Create(HInstance, BadPhrasesResName, RT_RCDATA);
566 | sl.LoadFromStream(rs, Enc.UTF8);
567 | rs.Free;
568 | for j := sl.IndexOf(BadPhrasesStartMarker)+1
569 | to sl.IndexOf(BadPhrasesEndMarker)-1 do
570 | sa := sa+[sl.Strings[j]];
571 | if i = 1 then
572 | begin
573 | for j := sl.IndexOf(MoreBadPhrasesStartMarker)+1
574 | to sl.IndexOf(MoreBadPhrasesEndMarker)-1 do
575 | sa := sa+[sl.Strings[j]];
576 | end;
577 | end;
578 | 2: begin
579 | sl.LoadFromFile(PhrasesCensorshipFile.Text, Enc.UTF8);
580 | sa := StringListToArray(sl);
581 | end;
582 | end;
583 | sl.AddStrings(sa,True);
584 | sl.Duplicates := TDuplicates.dupIgnore;
585 | for i := 0 to High(sa) do
586 | begin
587 | sl.Add(ReplaceStrings(sa[i], ArabicChars, FarsiChars));
588 | sl.Add(ReplaceStrings(sa[i], FarsiChars, ArabicChars));
589 | end;
590 | s := NoChainedSpaces(s);
591 | for i := 0 to sl.Count-1 do
592 | begin
593 | if (sl.Values[sl.Names[i]] <> EmptyStr) then
594 | S := S.Replace(sl.Names[i], sl.Values[sl.Names[i]])
595 | else if sl[i].EndsWith('=') then
596 | S := S.Replace(sl[i].Remove(sl[i].Length-1), EmptyStr)
597 | else
598 | DeleteAllOccurrences(sl[i], S, CensorMask);
599 | end;
600 | finally
601 | sl.Free;
602 | end;
603 | end;
604 |
605 | procedure TFaSubripMain.CorrectEndingPunctuations(var S: String);
606 | var
607 | sa: TStringArray;
608 | i,j,sCount,eCount: Integer;
609 | r: String;
610 | d: TIntegerDictArray;
611 | begin
612 | if EndingPunctuations.ItemIndex < 1 then Exit;
613 | sa := S.Split(LineEndings);
614 | SetLength(d, Length(sa));
615 | for j := Low(sa) to High(sa) do
616 | begin
617 | sCount := 0;
618 | repeat
619 | i := UTF8Copy(sa[j],sCount+1,1).IndexOfAny(CommonPunctuations);
620 | if i>-1 then
621 | Inc(sCount);
622 | until i<0;
623 | d[j].s := sCount;
624 | r := UTF8ReverseString(sa[j]);
625 | eCount := 0;
626 | repeat
627 | i := UTF8Copy(r,eCount+1,1).IndexOfAny(CommonPunctuations);
628 | if i>-1 then
629 | Inc(eCount);
630 | until i<0;
631 | d[j].e := eCount;
632 | end;
633 | for i := Low(sa) to High(sa) do
634 | begin
635 | j := UTF8Length(sa[i]);
636 | case EndingPunctuations.ItemIndex of
637 | 1: sa[i] := UTF8RightStr(sa[i],d[i].e)
638 | +UTF8LeftStr(sa[i],j-d[i].e);
639 | 2: sa[i] := UTF8RightStr(sa[i],j-d[i].s)
640 | +UTF8LeftStr(sa[i],d[i].s);
641 | 3: sa[i] := UTF8RightStr(sa[i],j-d[i].s);
642 | 4: sa[i] := UTF8LeftStr(sa[i],j-d[i].e);
643 | 5: sa[i] := UTF8Copy(sa[i],d[i].s+1,j-(d[i].s+d[i].e));
644 | end;
645 | end;
646 | S := S.Join(LineEnding,sa);
647 | end;
648 |
649 | procedure TFaSubripMain.PromptExport;
650 | begin
651 | if ReplaceSourceFile.State <> cbChecked then
652 | begin
653 | with SaveDlg do
654 | begin
655 | InitialDir := OpenDlg.InitialDir;
656 | if AppendEncodingToFileName.State = cbChecked then
657 | FileName :=
658 | GenFileName(FInputFile, '_'+OutputSuffix, extSrt, False)
659 | else
660 | FileName := GenFileName(FInputFile, wFaSubed, extSrt, False);
661 | if Execute then
662 | begin
663 | if not LowerCase(ExtractFileExt(FileName)).Equals(extSrt) then
664 | FileName := FileName + extSrt;
665 | if OutputDirValid(ExtractFilePath(FileName)) then
666 | ExportSubtitle(FileName);
667 | end;
668 | end;
669 | end
670 | else
671 | begin
672 | if OutputDirValid(OpenDlg.InitialDir) then
673 | ExportSubtitle(FInputFile);
674 | end;
675 | end;
676 |
677 | procedure TFaSubripMain.ExportSubtitle(const Subtitle: String);
678 | var
679 | sl: TStringList;
680 | Enc: TEncoding;
681 | Sub: String;
682 | begin
683 | Sub := Subtitle;
684 | if FInputFile.Equals(Sub) and FileExists(Sub) then
685 | DeleteFile(Sub);
686 | if AppendEncodingToFileName.State = cbChecked then
687 | begin
688 | if not Sub.EndsWith(OutputSuffix+extSrt) then
689 | Sub := GenFileName(Sub, '_'+OutputSuffix);
690 | end;
691 | Enc := Default(TEncoding);
692 | sl := TStringList.Create;
693 | try
694 | case OutputEncoding of
695 | 'UTF-8':begin
696 | sl.DefaultEncoding := Enc.UTF8;
697 | sl.Text := FSrt;
698 | sl.TextLineBreakStyle := DefaultTextLineBreakStyle;
699 | sl.SaveToFile(Sub, Enc.UTF8);
700 | end;
701 | 'ANSI':begin
702 | sl.DefaultEncoding := Enc.ANSI;
703 | sl.Text := ConvertEncoding(FSrt, EncodingUTF8, EncodingCP1256);
704 | sl.TextLineBreakStyle := tlbsCRLF;
705 | sl.SaveToFile(Sub,True);
706 | end;
707 | 'UTF-16':begin
708 | sl.DefaultEncoding := Enc.Unicode;
709 | sl.Text := FSrt;
710 | sl.TextLineBreakStyle := DefaultTextLineBreakStyle;
711 | sl.SaveToFile(Sub, Enc.Unicode);
712 | end;
713 | end;
714 | finally
715 | sl.Free;
716 | end;
717 | end;
718 |
719 | procedure TFaSubripMain.SupportUrlClick(Sender: TObject);
720 | begin
721 | FaSubripAbout.ShowModal;
722 | end;
723 |
724 | procedure TFaSubripMain.SettingsHelpsClick(Sender: TObject);
725 | begin
726 | if not Assigned(FHelpWindow) then
727 | begin
728 | FHelpWindow := TSimpleHelp.Create(Self);
729 | with FHelpWindow do
730 | begin
731 | BiDiModeContents := bdRightToLeft;
732 | Title := SettingsHelps.Hint;
733 | MaxLineLength := 120;
734 | AddSection('');
735 | AddCollapsible(OpenSubs.Caption,OpenSubs.Hint);
736 | AddSection(rsProcessSettings);
737 | AddCollapsible(StripHTMLFontTagsL.Caption,StripHTMLFontTagsL.Hint);
738 | AddCollapsible(StripHTMLStyleTagsL.Caption,StripHTMLStyleTagsL.Hint);
739 | AddCollapsible(ArabicCharsToFarsiL.Caption,ArabicCharsToFarsiL.Hint);
740 | AddCollapsible(EnglishNumbersL.Caption,EnglishNumbersL.Hint);
741 | AddCollapsible(SubtitleDelayL.Caption,SubtitleDelayL.Hint);
742 | AddCollapsible(EndingPunctuationsL.Caption,EndingPunctuationsL.Hint);
743 | AddCollapsible(PhrasesCensorshipL.Caption,PhrasesCensorshipL.Hint);
744 | AddSection(rsOutputFileSettings);
745 | AddCollapsible(OutFileEncodingL.Caption,OutFileEncodingL.Hint);
746 | AddCollapsible(AppendEncodingToFileNameL.Caption,AppendEncodingToFileNameL.Hint);
747 | AddCollapsible(ReplaceSourceFileL.Caption,ReplaceSourceFileL.Hint);
748 | end;
749 | end;
750 | FHelpWindow.Show;
751 | end;
752 |
753 | end.
754 |
755 |
--------------------------------------------------------------------------------