아래 뜨는 Download 나 PC App Store는 모두의 프린터와 상관없는 광고입니다!!
특히 PC App Store는 악성 소프트웨어이니 절대 클릭하지 마세요!!
모두의 프린터는 어떠한 경우에도 본인인증, 회원가입, 카드결제를 요구하지 않습니다.
다운로드를 유도하는 애드센스 광고를 피로곰이 배포하는 프로그램들의 다운로드 링크로 착각하지 않도록 주의하시기 바랍니다. 피로곰이 배포하는 모든 프로그램은 본인인증, 회원가입, 이용료 결제 없이 무료로 사용가능합니다.
많이 찾는 글들...
  1. PC App Store 제거 방법
  2. Ghostscript/GhostPCL 설치 안내
  3. 파일 다운로드가 차단되는 경우
  4. 내 컴퓨터의 32비트,64비트 여부 아는법
  5. 'Windows의 PC 보호' 문제
  6. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  7. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  8. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  9. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  10. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  11. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  12. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  13. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  14. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  15. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  16. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  17. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제

[Go언어 윈도 GUI] walkmgr에 링크 라벨(Link Label) 추가

walkmgr 에 Link Label 을 추가 하였습니다. 쉽게 말해서 URL 링크를 포함하는 텍스트 라벨을 사용할 수 있도록 추가 하였습니다.

walkmgr 에 link_label.go 파일이 추가 되었구요.

Go
/**
*	LinkLabel
**/
func (wm *WalkUI) LinkLabel(text string, at ...AlignType) *walk.LinkLabel {
	ne, _ := walk.NewLinkLabel(wm.Parent())

	ne.SetText(text)

	if len(at) == 0 {
		ne.SetAlignment(walk.AlignHVDefault)
	} else {
		switch at[0] {
		case ALIGN_LEFT:
			ne.SetAlignment(walk.AlignHNearVCenter)
		case ALIGN_CENTER:
			ne.SetAlignment(walk.AlignHCenterVCenter)
		case ALIGN_RIGHT:
			ne.SetAlignment(walk.AlignHFarVCenter)
		default:
			ne.SetAlignment(walk.AlignHVDefault)
		}
	}
	wm.Append(ne)

	ne.LinkActivated().Attach(func(link *walk.LinkLabelLink) {
		exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", link.URL()).Start()
	})

	return ne
}

링크 라벨은 기본적으로 lxn/walk 에서 제공하던 기능을 walkmgr 체계에 낑가 넣고 텍스트 정렬과 관련된 부분만 기존의 다른 walkmgr 메소드들과 통일해두고 링크 클릭시에 웹 브라우져를 호출해주는 이벤트 핸들링 코드를 추가한 정도 입니다.

walkmgr_example 패키지에 linklabel_test.go 파일을 참고하시면 되겠구요..

간단한 설명을 시작해 봅니다.

GUI 프로그래밍을 하다보면 URL 링크를 걸고 싶을때가 있습니다. 물론 버튼을 추가해놓고 클릭하면 홈페이지를 호출하는 등의 형태로 사용해도 되겠습니다만.

때론 텍스트 내용중 특정 문자에 URL 링크를 걸고 싶을때도 있는 법이지요..그런때 사용하시면 되겠습니다.

Go
func TestLinkLabel(t *testing.T) {
	wm := walkmgr.NewWin("Link Label", 640, 480)

	wm.LinkLabel(`<a href="https://modu-print.tistory.com">피로곰's 모두의 프린터</a>`, walkmgr.ALIGN_LEFT)
	wm.LinkLabel(`<a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">피로곰's 모두의 PDF</a>`, walkmgr.ALIGN_LEFT)

	wm.Start()
}

제 블로그와 모두의 PDF 카테고리 2가지 Link Label을 추가해 봤습니다.

LinkLabel 메소드에 HTML 의 A 태그를 포함한 문자열을 첫번째 인자에 전달하시면 되겠습니다. 두번째 인자는 텍스트의 정렬에 관한 옵션입니다.

주의 하실점은 HTML A 태그를 작성할때 href 에 “를 사용해야 하기 때문에 LinkLabel 의 첫번째 인자에 직접 문자열을 전달하시는 경우에는 “,” 이 아닌 `,`를 사용하셔야 합니다.

HTML 태그를 사용하는 부분에서 눈치를 채셨을수 있지만 .. 라벨 텍스트중 특정 문자들에만 링크를 걸 수 있습니다.

Go
func TestLinkLabel2(t *testing.T) {
	wm := walkmgr.NewWin("Link Label", 640, 480)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_LEFT)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_LEFT)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_RIGHT)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_RIGHT)

	wm.Start()
}

위와 같이 LinkLabel 의 첫번째 인자에 전달된 문자열중 A 태그로 감싼 문자열에만 링크가 걸리고 해당 문자를 클릭 하면 href 에 지정된 URL을 웹브라우져로 오픈합니다.

첫번째 예제 함수와 달리 TestLnkeLabel2 에서는 LinkLabel 메소드에 walkmgr.ALIGN_LEFT, RIGHT 등의 텍스트 정렬 값을 지정 가능하도록 하였습니다. 두번째 인자는 가변인자로 구성한터라 기본값인 가운데 정렬로 사용하시는 경우에는 첫번째 인자만 입력하셔도 되겠습니다.

텍스트 정렬은 수직방향은 중앙으로 고정이라 위 스샷 같이 전체적으로 공간이 뜨게 되는데요 .. VSpacer 등을 적정히 섞어 쓰시면..

Go
func TestLinkLabel3(t *testing.T) {
	wm := walkmgr.NewWin("Link Label", 640, 480)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_LEFT)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_LEFT)

	wm.LinkLabel(`모두의 프린터를 다운로드 받으시려면 <a href="https://modu-print.tistory.com">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_RIGHT)
	wm.LinkLabel(`피로곰이 만든 PDF편집기 '모두의 PDF'를 다운로드 받으시려면 <a href="https://modu-print.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%20PDF">여기</a>를 클릭하십시요.`, walkmgr.ALIGN_RIGHT)

	wm.VSpacer()

	wm.Start()
}

위나 아래쪽으로 바싹(?) 붙이실 수도 있습니다.

About 라던가 라이선스 관련 화면등의 구성에 요긴하게 사용할 수 있을것 같습니다.

이상입니다.

많이 찾는 글들...
  1. PC App Store 제거 방법
  2. Ghostscript/GhostPCL 설치 안내
  3. 파일 다운로드가 차단되는 경우
  4. 내 컴퓨터의 32비트,64비트 여부 아는법
  5. 'Windows의 PC 보호' 문제
  6. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  7. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  8. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  9. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  10. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  11. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  12. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  13. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  14. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  15. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  16. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  17. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제

모두의프린터에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기