후처리를 위해 추가한 TextField 대신 Combo Box로 바꾸기로 하였다.
Finder에서 '폴더로 이동'에 보면 최근 사용한 5개의 경로를 최근 사용한 순서대로 보여주는데 이런 구조면 편리하리라 생각했다.
문제점1 - 디센더가 짤린다.
g, j, q 같은 글씨의 아래 부분이 짤리는 문제가 있었다. 타이포그래피에서는 디센더(Descender)라고 부른다.
Size Inspector에서 보니 Height 가 25로 고정이었다. 우선 Control의 Size를 Regular에서 Small 로 바꾸니 글씨가 작아지기는 하는데 짤리는 것은 적어졌다.
글씨가 작아지니 디자인적으로 균형이 맞지 않는 것 같아서 다시 Regular로 복귀하고 속성을 찾아보았다.
Border를 조정하니 괜찮아졌다.
기본적으로 Border는 Bezel로 되어 있는데(세 번째) 두 번째 Line 으로 바꾸니 좀 나아졌다.
아래와 같이 이제 좀 보기가 괜찮아졌다.
기능과 책임
일단 기능은 동일하지만, 다른 내용이 입력되면 최대 5개까지 순서대로 ComboBox 의 아이템(Item)으로 추가를 해야 한다.
또한 추가는 영속 저장이 되어야 프로그램이 종료되고 실행될 때 불러오기(Loading)을 할 수 있을 것이다.
책임을 Controller에 추가할 수도 있지만 이런 기능을 하는 새로운 클래스를 만드는 것이 좋겠다는 생각이 들었다.
이름: PostProcessingHistoryManager (Post Processing 이력 관리자)
기능:
1. 프로그램 로딩시 영속 위치에서 내용을 불러온다. (비어있을 경우 빈 값)
2. Content 버튼을 눌렀을 때 내용의 추가가 가능하다. (기존 이력에 포함되어 있는 내용일 경우 순서를 제일 최근으로 바꾼다.)
3. 프로그램 종료시 영속 저장을 수행한다. (매회 하는 방법도 대안)
배운 것
swift 의 Array
- array의 조작 방법 등
- mutaiting 키워드: 원소를 바꾸는 함수는 앞에 붙여주어야 한다. struct에서만 되고 class로 바꾸면 에러가 난다.
- optional을 안전하게 처리하는 방법 관용구: if let value = optionalValue { ... }\
- 문자열 대소문자 미구분 부분일치 찾기 : How to run a case-insensitive search for one string inside another, compare ver (stack overflow)
ComboBox
- 예제: Swift NSCombobox DataSource Sample Code
-- NSComboBoxDataSource
Defaults 사용법
- 예제: iOS ) 왕초보를 위한 User Defaults사용해보기(switch) - iOS를 예로 들었지만 macOS에도 사용이 가능하다.
결과
아래 그림처럼 ComboBox로 이전에 수행한 post processing 명령에 대해 선택을 할 수 있게 되었다.
해당 코드 수정 PR: https://github.com/namhokim/cocoa_app/pull/12/commits/d19fe3447c583518a321f308705fd7887cebddcd
'Programing > My OSS' 카테고리의 다른 글
[Swift] String test in PlayGround (0) | 2020.10.03 |
---|---|
[Contact] 파일열기 다이얼로그: NSOpenPanel (0) | 2020.10.02 |
[GetTogether] macOS 용 자소교정기 - 발단 (0) | 2020.07.11 |
[Swift] Hours 5 - v1.2.1 : viewDidAppear (0) | 2019.10.16 |
[Windows] 한글 자소 교정기 ver.2 (43) | 2019.02.17 |