전자책 편집 도구용 API 문서

전자책 편집 도구는 책을 HTML + 리소스 파일 모음으로 나타내는 calibre.ebooks.oeb.polish.container.Container 객체와, 그 컨테이너에서 여러 작업을 수행하는 데 사용할 수 있는 다양한 도구로 이루어져 있습니다. 모든 도구는 여러 calibre.ebooks.oeb.polish.* 모듈에 있는 모듈 수준 함수 형태로 제공됩니다.

다음과 같이 경로에 있는 책의 컨테이너 객체를 얻을 수 있습니다:

from calibre.ebooks.oeb.polish.container import get_container
container = get_container('Path to book file', tweak_mode=True)

전자책 편집기용 플러그인을 작성하는 경우, 현재 편집 중인 책의 컨테이너는 다음과 같이 얻습니다:

from calibre.gui2.tweak_book import current_container
container = current_container()
if container is None:
    report_error # No book has been opened yet

Container 객체

class calibre.ebooks.oeb.polish.container.Container(rootpath=None, opfpath=None, log=<calibre.utils.logging.Log object>, clone_data=None)[소스]

컨테이너는 파일이 가득한 폴더와 OPF 파일로 구성된 열린 전자책을 나타냅니다. 여기에는 두 가지 중요한 개념이 있습니다:

  • 루트 폴더. 전자책의 기준 위치입니다. 전자책의 모든 파일은 이 폴더 또는 그 하위 폴더 안에 있습니다.

  • 이름(Name): 루트 폴더를 기준으로 한 책 파일의 경로입니다. 항상 POSIX 구분자를 사용하며 따옴표로 이스케이프되지 않습니다. 책 안의 파일을 식별하는 정규 식별자로 생각하면 됩니다. 컨테이너 객체의 대부분 메서드는 이름을 사용합니다. 이름은 항상 NFC 유니코드 정규화 형식입니다.

  • 복제(Clone): 컨테이너 객체는 디스크 상에서 효율적인 복제를 지원하며, 전자책 편집기의 체크포인트 구현에 사용됩니다. 이를 제대로 동작하게 하려면 파일 시스템의 파일에 직접 접근하면 안 됩니다. 대신 raw_data() 또는 :meth:`open`을 사용해 책 안의 구성 파일을 읽고 쓰십시오.

href와 이름 사이를 변환할 때는 이 클래스에서 제공하는 메서드를 사용하십시오. 이 메서드들은 모든 href가 따옴표로 이스케이프된 것으로 가정합니다.

abspath_to_name(fullpath, root=None)[소스]

:attr:`root`를 기준으로 한 정규 이름으로 절대 경로를 변환합니다.

매개변수:

root – 기준 폴더입니다. 기본값으로 이 컨테이너 객체의 루트가 사용됩니다.

add_file(name, data=b'', media_type=None, spine_index=None, modify_name_if_needed=False, process_manifest_item=None, suggested_id='')[소스]

이 컨테이너에 파일을 추가합니다. 파일에 대한 항목이 OPF manifest와 spine에 자동으로 생성됩니다(파일이 텍스트 문서인 경우).

add_name_to_manifest(name, process_manifest_item=None, suggested_id='')[소스]

지정한 이름의 파일에 대해 manifest 항목을 추가합니다. manifest id를 반환합니다.

add_properties(name, *properties)[소스]

이름으로 식별된 manifest 항목에 지정한 속성을 추가합니다.

apply_unique_properties(name, *properties)[소스]

지정한 속성이 이름으로 식별된 manifest 항목에만 설정되도록 합니다. 이름에 None을 전달하면 모든 항목에서 해당 속성을 제거합니다.

book_type = 'oeb'

책의 형식입니다(EPUB 파일은 epub, AZW3 파일은 azw3).

commit(outpath=None, keep_parsed=False)[소스]

변경된 모든 파싱 객체를 파일 시스템에 기록하고, outpath에 전자책 파일을 출력합니다.

매개변수:
  • output – 저장된 전자책 파일을 기록할 경로입니다. None이면 원본 책 파일의 경로를 사용합니다.

  • keep_parsed – True이면 커밋된 항목의 파싱된 표현이 캐시에 유지됩니다.

commit_item(name, keep_parsed=False)[소스]

파싱된 객체를 디스크에 커밋합니다(직렬화되어 실제 파일에 기록됩니다). ``keep_parsed``가 True이면 파싱된 표현이 캐시에 유지됩니다. 참고: parsed()

dirty(name)[소스]

name에 해당하는 파싱 객체를 dirty 상태로 표시합니다. 참고: parsed().

exists(name)[소스]

정규 이름에 해당하는 파일/폴더가 존재할 때만 True를 반환합니다. 이 함수는 기반 OS 파일 시스템의 한계, 특히 대소문자 구분 여부의 영향을 받습니다. 따라서 대소문자를 구분하지 않는 파일 시스템에서는 name의 대소문자가 실제 파일과 달라도 True를 반환할 수 있습니다. 참고: has_name()

filesize(name)[소스]

지정한 정규 이름이 나타내는 파일의 바이트 단위 크기를 반환합니다. dirty 상태의 파싱 객체도 자동으로 처리합니다. 참고: parsed()

generate_item(name, id_prefix=None, media_type=None, unique_href=True)[소스]

지정한 이름으로부터 href를 파생하여 manifest에 항목을 추가합니다. href와 id의 고유성이 자동으로 보장됩니다. 생성된 항목을 반환합니다.

get_file_path_for_processing(name, allow_modification=True)[소스]

open()과 비슷하지만, 열린 파일 객체 대신 파일 경로를 반환합니다.

property guide_type_map

guide 유형에서 정규 이름으로의 매핑

has_name(name)[소스]

지정한 것과 동일한 정규 이름을 가진 파일이 존재할 때만 True를 반환합니다. :meth:`exists`와 달리 이 메서드는 항상 대소문자를 구분합니다.

href_to_name(href, base=None)[소스]

href(기준은 base)를 이름으로 변환합니다. base는 이름이어야 하며, None이면 self.root를 사용합니다.

insert_into_xml(parent, item, index=None)[소스]

항목을 parent에 삽입합니다(index가 None이면 끝에 추가). 들여쓰기는 자동으로 맞춥니다. 자기 닫힘 항목에서만 동작합니다.

is_dir = False

이 컨테이너가 압축 해제된 책(디렉터리)을 나타내는 경우

name 안의 모든 링크를 반복합니다. get_line_numbers가 True이면 (link, line_number, offset) 형태의 결과를 반환합니다. 여기서 line_number는 링크가 나타나는 줄 번호이고, offset은 해당 줄 시작부터의 문자 수입니다. offset이 0이 아니면 실제로는 여러 줄에 걸칠 수도 있습니다.

make_name_unique(name)[소스]

`name`이 이 책에 이미 존재하지 않도록 합니다. 이미 존재하면 충돌하지 않는 수정된 이름을 반환합니다.

manifest_has_name(name)[소스]

manifest에 name에 해당하는 항목이 있으면 True를 반환합니다.

property manifest_id_map

manifest id에서 정규 이름으로의 매핑

manifest_items_of_type(predicate)[소스]

media-type이 predicate와 일치하는 모든 manifest 항목의 이름입니다. `predicate`는 집합, 리스트, 문자열 또는 단일 인수를 받는 함수가 될 수 있으며, 함수인 경우 media-type을 인수로 호출됩니다.

manifest_items_with_property(property_name)[소스]

지정한 속성을 가진 모든 manifest 항목

property manifest_type_map

manifest media-type에서 해당 media-type의 정규 이름 목록으로의 매핑

property mi

이 책의 메타데이터를 담은 Metadata 객체입니다. 이 객체는 이 속성을 요청할 때마다 즉시 생성되므로 꼭 필요할 때만 사용하십시오.

name_to_abspath(name)[소스]

정규 이름을 OS 종속 절대 경로로 변환합니다.

name_to_href(name, base=None)[소스]

이름을 base 기준 href로 변환합니다. base는 이름이어야 하며, None이면 self.root가 기준으로 사용됩니다.

property names_that_must_not_be_changed

절대 이름을 바꿔서는 안 되는 이름 집합입니다. 전자책 파일 형식에 따라 달라집니다.

property names_that_must_not_be_removed

컨테이너에서 절대 삭제하면 안 되는 이름 집합입니다. 전자책 파일 형식에 따라 달라집니다.

property names_that_need_not_be_manifested

manifest에서 누락되어도 허용되는 이름 집합입니다. 전자책 파일 형식에 따라 달라집니다.

open(name, mode='rb')[소스]

name이 가리키는 파일을 직접 읽기/쓰기로 엽니다. 파일이 dirty 상태이면 커밋되고 파스 캐시에서 제거된다는 점에 유의하십시오. 다시 파싱된 버전에 접근하기 전에 반드시 이 파일 처리를 끝내야 합니다. 그렇지 않으면 문제가 생길 수 있습니다.

property opf

파싱된 OPF 파일

opf_get_or_create(name)[소스]

지정한 이름의 첫 번째 XML 요소를 반환하거나, 없으면 opf:package 요소 아래에 생성한 뒤 반환하는 편의 메서드입니다.

property opf_version

OPF의 <package> 요소에 설정된 버전

property opf_version_parsed

OPF의 <package> 요소에 설정된 버전을 정수 튜플로 나타낸 값

opf_xpath(expr)[소스]

OPF 파일에서 XPath 식을 평가하는 편의 메서드입니다. opf:`와 `dc: 네임스페이스 접두사가 미리 정의되어 있습니다.

parsed(name)[소스]

name으로 지정한 파일의 파싱된 표현을 반환합니다. HTML/XML 파일은 lxml 트리를, CSS 파일은 css_parser 스타일시트를 반환합니다. 성능을 위해 파싱 객체는 캐시된다는 점에 유의하십시오. 파싱 객체를 변경한 경우 컨테이너가 캐시를 갱신할 수 있도록 반드시 dirty`를 호출해야 합니다. 참고: :meth:`replace()

raw_data(name, decode=True, normalize_to_nfc=True)[소스]

지정한 이름의 파일에 해당하는 원시 데이터를 반환합니다.

매개변수:
  • decode – True이고 파일의 MIME 유형이 텍스트 기반이면, 원시 바이트 대신 디코딩된 유니코드 객체를 반환합니다.

  • normalize_to_nfc – True이면 반환된 유니코드 객체가 EPUB 및 AZW3 파일 형식에서 요구되는 NFC 정규화 형식으로 정규화됩니다.

relpath(path, base=None)[소스]

절대 경로(os 구분자 사용)를 base 기준 상대 경로로 변환합니다(base 기본값은 self.root). 이 상대 경로는 *이름*이 아닙니다. 이름으로 변환하려면 :meth:`abspath_to_name`을 사용하십시오.

remove_from_spine(spine_items, remove_if_no_longer_in_spine=True)[소스]

지정한 항목(정규 이름 기준)을 spine에서 제거합니다. ``remove_if_no_longer_in_spine``가 True이면 항목을 spine에서만 빼는 것이 아니라 책에서도 삭제합니다.

remove_from_xml(item)[소스]

parent에서 항목을 제거하고 들여쓰기를 맞춥니다(자기 닫힘 항목에서만 동작).

remove_item(name, remove_from_guide=True)[소스]

이름으로 식별된 항목을 이 컨테이너에서 제거합니다. 이 작업은 OPF manifest, guide, spine에 있는 모든 참조와 내부 캐시의 항목도 함께 제거합니다.

rename(current_name, new_name)[소스]

파일 이름을 current_name에서 new_name으로 바꿉니다. 파일이 들어 있는 폴더가 바뀌면 파일 내부의 모든 링크 기준을 자동으로 다시 맞춥니다. 단, 이 파일을 참조할 수 있는 다른 파일 안의 링크는 갱신되지 않습니다. 성능 때문이며, 이런 갱신은 한 번에 일괄 처리해야 합니다.

replace(name, obj)[소스]

name에 해당하는 파싱 객체를 obj로 교체합니다. obj는 동일한 종류의 객체여야 합니다. 즉, HTML/XML이면 lxml 트리, CSS 파일이면 css_parser 스타일시트여야 합니다.

replace_func를 사용해 name 안의 모든 링크를 교체합니다. replace_func는 URL을 받아 치환된 URL을 반환하는 호출 가능 객체여야 합니다. 또한 실제 치환이 일어나면 True로 설정되는 ‘replaced’ 속성을 가져야 합니다. 이런 호출 객체는 LinkReplacer`와 :class:`LinkRebaser 클래스를 사용하면 편리하게 만들 수 있습니다.

serialize_item(name)[소스]

파싱된 객체(정규 이름으로 식별됨)를 바이트 문자열로 변환합니다. 참고: parsed()

set_spine(spine_items)[소스]

spine을 spine_items로 설정합니다. spine_items는 (name, linear) 형태의 반복 가능 객체여야 합니다. 이름 중 하나라도 manifest에 없으면 오류가 발생합니다.

property spine_items

책의 spine에 있는 각 항목의 경로를 반환하는 반복자입니다. 참고: spine_iter, spine_items

property spine_iter

책의 spine에 있는 각 항목에 대해 item, name, is_linear를 반환하는 반복자입니다. item은 lxml 요소, name은 정규 파일 이름이며, 항목이 linear이면 is_linear는 True입니다. 참고: spine_names, spine_items

property spine_names

책의 spine에 있는 각 항목에 대해 name과 is_linear를 반환하는 반복자입니다. 참고: spine_iter, spine_items

컨테이너 안의 구성 파일 관리

컨테이너 안의 파일을 가리키는 링크를 교체합니다. 컨테이너의 모든 파일을 순회하면서 지정한 링크를 변경합니다.

매개변수:
  • link_map – 이전 정규 이름에서 새 정규 이름으로의 매핑입니다. 예: {'images/old.png': 'images/new.png'}

  • frag_map(name, anchor) 두 인수를 받아 새 anchor를 반환하는 호출 가능 객체입니다. HTML 파일의 anchor를 바꿔야 할 때 유용합니다. 기본값은 아무 작업도 하지 않습니다.

  • replace_in_opf – False이면 OPF 파일의 링크는 교체하지 않습니다.

calibre.ebooks.oeb.polish.replace.rename_files(container, file_map)[소스]

컨테이너 안의 파일 이름을 바꾸고, 해당 파일을 가리키는 모든 링크를 자동으로 갱신합니다.

매개변수:

file_map – 이전 정규 이름에서 새 정규 이름으로의 매핑입니다. 예: {'text/chapter1.html': 'chapter1.html'}

지정한 파일 이름에 대해 권장되는 폴더를 반환합니다. 권장값은 컨테이너 안에서 같은 유형의 파일이 가장 많이 위치한 폴더를 기준으로 합니다. 특정 유형의 파일이 하나도 없으면 OPF 파일이 들어 있는 폴더를 권장 폴더로 간주합니다.

예쁘게 정리하기 및 파싱 오류 자동 수정

calibre.ebooks.oeb.polish.pretty.fix_html(container, raw)[소스]

raw 문자열로 표현된 HTML의 파싱 오류를 수정합니다. 수정은 HTML5 파싱 알고리즘을 사용해 수행됩니다.

calibre.ebooks.oeb.polish.pretty.fix_all_html(container)[소스]

컨테이너 안의 모든 HTML 파일의 파싱 오류를 수정합니다. 수정은 HTML5 파싱 알고리즘을 사용해 수행됩니다.

calibre.ebooks.oeb.polish.pretty.pretty_html(container, name, raw)[소스]

raw 문자열로 표현된 HTML을 보기 좋게 정리합니다.

calibre.ebooks.oeb.polish.pretty.pretty_css(container, name, raw)[소스]

raw 문자열로 표현된 CSS를 보기 좋게 정리합니다.

calibre.ebooks.oeb.polish.pretty.pretty_xml(container, name, raw)[소스]

raw 문자열로 표현된 XML을 보기 좋게 정리합니다. ``name``이 OPF 이름이면 OPF 전용 추가 정리도 수행됩니다.

calibre.ebooks.oeb.polish.pretty.pretty_all(container)[소스]

컨테이너 안의 모든 HTML/CSS/XML 파일을 보기 좋게 정리합니다.

책 재킷 관리

calibre.ebooks.oeb.polish.jacket.remove_jacket(container)[소스]

기존 재킷이 있으면 제거합니다. 기존 재킷이 없으면 False를 반환합니다.

calibre.ebooks.oeb.polish.jacket.add_or_replace_jacket(container)[소스]

책의 메타데이터로 새 재킷을 만들거나 기존 재킷을 교체합니다. 기존 재킷이 교체된 경우 True를 반환합니다.

파일 분할 및 병합

calibre.ebooks.oeb.polish.split.split(container, name, loc_or_xpath, before=True, totals=None)[소스]

name으로 지정한 파일을 loc_or_xpath로 지정한 위치에서 분할합니다. 분할 시 영향받는 파일에 대한 모든 링크와 참조가 자동으로 옮겨집니다.

매개변수:
  • loc_or_xpath//h:div[@id=”split_here”] 같은 XPath 식이어야 합니다. 미리보기 패널에서 분할 기능을 구현하기 위해 내부적으로 사용하는 loc 값도 사용할 수 있습니다.

  • before – True이면 식별된 요소 앞에서 분할하고, 그렇지 않으면 뒤에서 분할합니다.

  • totals – 내부적으로 사용됩니다.

calibre.ebooks.oeb.polish.split.multisplit(container, name, xpath, before=True)[소스]

지정한 파일을 여러 위치(지정한 XPath 식과 일치하는 모든 태그)에서 분할합니다. 참고: split(). 분할 시 영향받는 파일에 대한 모든 링크와 참조가 자동으로 옮겨집니다.

매개변수:

before – True이면 식별된 요소 앞에서 분할이 일어나고, 그렇지 않으면 뒤에서 분할됩니다.

calibre.ebooks.oeb.polish.split.merge(container, category, names, master)[소스]

지정한 파일들을 하나의 파일로 병합하고, 영향받는 파일에 대한 모든 링크와 참조를 자동으로 옮깁니다. 파일은 모두 HTML 파일이거나 모두 CSS 파일이어야 합니다.

매개변수:
  • category – HTML 파일이면 'text', CSS 파일이면 'styles' 이어야 합니다.

  • names – 병합할 파일 목록

  • master – 병합된 파일 가운데 마스터 파일이 될 파일입니다. 즉, 병합 후에도 남아 있을 파일입니다.

표지 관리

calibre.ebooks.oeb.polish.cover.set_cover(container, cover_path, report=None, options=None)[소스]

책의 표지를 cover_path가 가리키는 이미지로 설정합니다.

매개변수:
  • cover_path – 이미지 파일의 절대 경로이거나 책 안에 있는 이미지의 정규 이름입니다. 책 안의 이미지를 사용할 때는 아래 설명처럼 options도 설정해야 합니다.

  • report – 단일 인수를 받는 선택적 호출 가능 객체입니다. 처리 중인 작업에 대한 정보가 이 객체로 전달됩니다.

  • options – 표지 설정 방식을 제어하는 None 또는 사전입니다. 사전에는 다음 항목이 들어갈 수 있습니다. keep_aspect: True 또는 False (EPUB에서 표지의 종횡비 유지) no_svg: True 또는 False (EPUB 제목 페이지에서 SVG 표지 래퍼 사용) existing: True 또는 False (``cover_path``가 책 안의 기존 이미지를 가리킴)

calibre.ebooks.oeb.polish.cover.mark_as_cover(container, name)[소스]

지정한 이미지를 표지 이미지로 표시합니다.

calibre.ebooks.oeb.polish.cover.mark_as_titlepage(container, name, move_to_start=True)[소스]

지정한 HTML 파일을 EPUB의 제목 페이지로 표시합니다.

매개변수:

move_to_start – True이면 해당 HTML 파일을 spine의 시작 위치로 이동합니다.

CSS 다루기

calibre.ebooks.oeb.polish.fonts.change_font(container, old_name, new_name=None)[소스]

글꼴 패밀리를 old_name에서 new_name으로 바꿉니다. 스타일시트, style 태그, style 속성에 있는 해당 글꼴 패밀리의 모든 항목이 변경됩니다. old_name이 내장 글꼴을 가리키면 그 글꼴은 제거됩니다. 글꼴 패밀리를 변경하는 대신 제거하려면 new_name에 None을 지정하면 됩니다.

calibre.ebooks.oeb.polish.css.remove_unused_css(container, report=None, remove_unused_classes=False, merge_rules=False, merge_rules_with_identical_properties=False, remove_unreferenced_sheets=False)[소스]

책에서 사용되지 않는 CSS 규칙을 모두 제거합니다. 사용되지 않는 CSS 규칙은 실제 콘텐츠와 일치하지 않는 규칙입니다.

매개변수:
  • report – 단일 인수를 받는 선택적 호출 가능 객체입니다. 수행 중인 작업에 관한 정보가 이 객체로 전달됩니다.

  • remove_unused_classes – True이면 어떤 CSS 규칙과도 일치하지 않는 HTML의 class 속성도 제거합니다.

  • merge_rules – True이면 동일한 선택자를 가진 규칙을 병합합니다.

  • merge_rules_with_identical_properties – True이면 동일한 속성을 가진 규칙을 병합합니다.

  • remove_unreferenced_sheets – True이면 어떤 콘텐츠에서도 참조되지 않는 스타일시트를 제거합니다.

calibre.ebooks.oeb.polish.css.filter_css(container, properties, names=())[소스]

책의 모든 CSS 규칙에서 지정한 CSS 속성을 제거합니다.

매개변수:
  • properties – 제거할 속성 집합입니다. 예: {'font-family', 'color'}

  • names – 속성을 제거할 파일입니다. 기본값은 책 안의 모든 HTML 및 CSS 파일입니다.

목차 다루기

calibre.ebooks.oeb.polish.toc.from_xpaths(container, xpaths, prefer_title=False)[소스]

XPath 식 목록에서 목차를 생성합니다. 목록의 각 식은 생성되는 목차의 한 수준에 해당합니다. 예를 들어 ['//h:h1', '//h:h2', '//h:h3']<h1>, <h2>, <h3> 태그로 3단계 목차를 생성합니다.

책 안의 링크에서 목차를 생성합니다.

calibre.ebooks.oeb.polish.toc.from_files(container)[소스]

책 안의 파일에서 목차를 생성합니다.

calibre.ebooks.oeb.polish.toc.create_inline_toc(container, title=None)[소스]

기존 NCX 목차로부터 인라인(HTML) 목차를 생성합니다.

매개변수:

title – 이 목차의 제목입니다.

책 편집 도구

class calibre.gui2.tweak_book.plugin.Tool[소스]

기반 클래스: object

Edit Book 플러그인에서 개별 도구의 기본 클래스입니다. 유용한 멤버는 다음과 같습니다:

하위 클래스에서 반드시 재정의해야 하는 메서드:

name = None

고유한 이름으로 설정하십시오. 키로 사용됩니다.

allowed_in_toolbar = True

True이면 사용자가 이 도구를 플러그인 도구 모음에 배치할 수 있습니다.

allowed_in_menu = True

True이면 사용자가 이 도구를 플러그인 메뉴에 배치할 수 있습니다.

toolbar_button_popup_mode = 'delayed'

도구 모음 버튼 메뉴(있는 경우)의 팝업 모드입니다. 가능한 값은 ‘delayed’, ‘instant’, ‘button’입니다.

property boss

사용자 인터페이스를 제어하는 calibre.gui2.tweak_book.boss.Boss 객체입니다.

property gui

사용자 인터페이스의 메인 창

property current_container

현재 편집 중인 책을 나타내는 calibre.ebooks.oeb.polish.container.Container 객체를 반환합니다.

register_shortcut(qaction, unique_name, default_keys=(), short_text=None, description=None, **extra_data)[소스]

지정한 ``qaction``을 실행할 키보드 단축키를 등록합니다. 이 단축키는 편집기 환경설정의 키보드 단축키 섹션에서 사용자가 자동으로 사용자 지정할 수 있게 됩니다.

매개변수:
  • qaction – QAction 객체입니다. 사용자가 설정된 키 조합을 누르면 이 객체가 실행됩니다.

  • unique_name – 이 단축키/동작의 고유 이름입니다. 내부적으로 사용되며, 이 플러그인의 다른 어떤 동작과도 중복되면 안 됩니다.

  • default_keys – 기본 키보드 단축키 목록입니다. 지정하지 않으면 기본 단축키는 설정되지 않습니다. 여기 지정한 단축키가 내장 단축키 또는 사용자 설정/다른 플러그인의 단축키와 충돌하면 무시됩니다. 그런 경우 사용자는 환경설정에서 직접 단축키를 설정해야 합니다. 예: default_keys=('Ctrl+J', 'F9').

  • short_text – 이 동작의 선택적 짧은 설명입니다. 지정하지 않으면 QAction의 텍스트가 사용됩니다.

  • description – 이 동작의 선택적 긴 설명입니다. 이 단축키의 환경설정 항목에 사용됩니다.

create_action(for_toolbar=True)[소스]

for_toolbar 값에 따라 플러그인 도구 모음 또는 플러그인 메뉴에 추가될 QAction을 생성합니다. 예:

def create_action(self, for_toolbar=True):
    ac = QAction(get_icons('myicon.png'), 'Do something')
    if for_toolbar:
        # We want the toolbar button to have a popup menu
        menu = QMenu()
        ac.setMenu(menu)
        menu.addAction('Do something else')
        subaction = menu.addAction('And another')

        # Register a keyboard shortcut for this toolbar action be
        # careful to do this for only one of the toolbar action or
        # the menu action, not both.
        self.register_shortcut(ac, 'some-unique-name', default_keys=('Ctrl+K',))
    return ac

더 보기

메서드 register_shortcut().

편집기 사용자 인터페이스 제어

전자책 편집기의 사용자 인터페이스는 전역 Boss 객체 하나로 제어됩니다. 이 객체에는 플러그인 코드에서 일반 작업을 수행할 때 사용할 수 있는 유용한 메서드가 많이 있습니다.

class calibre.gui2.tweak_book.boss.Boss(parent, notify=None)[소스]
add_savepoint(msg)[소스]

``msg``로 지정한 이름의 복원 체크포인트를 생성합니다.

apply_container_update_to_gui(mark_as_modified=True)[소스]

현재 책 컨테이너의 최신 데이터가 반영되도록 사용자 인터페이스의 모든 구성 요소를 갱신합니다.

매개변수:

mark_as_modified – True이면 책이 수정된 것으로 표시되어, 종료할 때 사용자에게 저장할지 묻습니다.

close_editor(name)[소스]

``name``으로 지정한 파일을 편집 중인 편집기를 닫습니다.

commit_all_editors_to_container()[소스]

편집기에서 열려 있는 파일에 사용자가 가한 변경 사항을 컨테이너에 커밋합니다. 현재 컨테이너에 대해 작업을 수행하기 전에 이 메서드를 호출해야 합니다.

property currently_editing

현재 편집 중인 파일의 이름을 반환합니다. 편집 중인 파일이 없으면 None을 반환합니다.

edit_file(name, syntax=None, use_template=None)[소스]

name으로 지정한 파일을 편집기에서 엽니다.

매개변수:
  • syntax – 파일의 미디어 형식입니다. 예: 'text/html'. 지정하지 않으면 파일 확장자로 추정합니다.

  • use_template – 열린 편집기를 초기화하는 데 사용할 템플릿입니다.

open_book(path=None, edit_file=None, clear_notify_data=True, open_folder=False, search_text=None)[소스]

``path``에 있는 전자책을 편집용으로 엽니다. 전자책 형식이 지원되지 않거나 현재 책에 저장되지 않은 변경 사항이 있으면 오류를 표시합니다.

매개변수:

edit_file – 새로 연 책 안에서 처음 편집을 시작할 파일 이름입니다. 이름 목록을 지정할 수도 있습니다.

rewind_savepoint()[소스]

이전에 만든 복원 체크포인트를 취소합니다. 체크포인트를 만든 뒤 아무 변경 없이 작업을 중단할 때 유용합니다.

save_book()[소스]

책을 저장합니다. 저장은 백그라운드에서 수행됩니다.

set_modified()[소스]

책이 수정된 것으로 표시합니다.

show_current_diff(allow_revert=True, to_container=None)[소스]

마지막 체크포인트 상태와 비교한 책의 변경 내용을 표시합니다.

매개변수:
  • allow_revert – True이면 diff 대화 상자에 모든 변경 내용을 되돌릴 수 있는 버튼이 표시됩니다.

  • to_container – 현재 컨테이너와 비교할 컨테이너 객체입니다. None이면 이전에 체크포인트된 컨테이너를 사용합니다.

show_editor(name)[소스]

``name``으로 지정한 파일을 편집 중인 편집기를 표시합니다.

sync_preview_to_editor()[소스]

미리보기 패널의 위치를 현재 편집기의 현재 커서 위치와 동기화합니다.