<프로그램 설명 포스팅 링크>
이 프로그램에서 'Undo'버튼이 없다면
프로그램 중간에 잘못 추가한 경우엔
프로그램을 처음부터 시작해야 한다.
그래서 잘못 추가한 이미지를 바로
되돌리기 위해 'Undo'버튼이 필요하다.
'Undo'버튼의 역할은 이미지버튼을
통해서 슬롯을 추가한 것과 반대의
역할을 한다고 생각하면 된다.
어떻게 코딩이 되었는지 알아보자.
우선 'Undo'버튼은 빈 슬롯을 제거할
때 창 크기를 줄여야 할 수도 있다.
창 크기를 변경할 땐 시간지연이 생기는데
그렇기 때문에 이전 포스팅과 같이
콜백함수를 실행하는 버튼들을
사용자가 클릭할 수 없도록 해야한다.
'enable'속성은 해당 객체의
작동가능 여부를 결정하는데
'on'인 경우에는 정상 작동되고
'off'인 경우에는 회색으로 바뀌며
클릭이 불가능하게 된다.
'inactive'로 설정한 경우 겉으로는
'on'처럼 보이지만 클릭이 불가능하다.
먼저 전역변수를 불러온 다음
임시변수에 전역변수 값을 옮긴다.
tpro값이 1인 경우, 그러니까
슬롯이 한 개만 채워진 경우이니,
'Undo'버튼을 누르면 프로그램
전체가 초기화되는 것이다.
모든 전역변수를 초기화하고
text들을 0으로 변경한다.
tpro값이 1보다 큰 경우
내부 if문을 통해서 한 줄을 지워야
하는지 판단한다. 한 줄에서 슬롯이
한 개만 남은 경우 창의 크기를
세로로 줄여서 그 줄을 없앤다.
그 전에 현재의 'axes'를 초기화하는
코드를 작성한다. 선언은 이전 포스팅과
같이 sprint와 eval함수를 이용하고,
cla함수로 axes의 이미지를 지운다.
창의 크기를 변경하는 코드이다.
카테고리 #4 포스팅에서 창의 크기를
늘린 코드와 정확히 반대의 코드이다.
창의 크기를 변경했으니
몇몇 객체들의 속성이 초기화된다.
for문을 이용해서 현재 슬롯까지의
text객체들의 'visible' 속성을 'on'한다.
그리고 오른쪽의 설명 글박스에
글이 쓰여있는 경우 줄이 지워지면
그 내용 또한 초기화되어야 한다.
191줄에서 tpro값을 이용해서
현재 지워지는 edittext박스를 찾아
'string'속성을 초기상태로 변경한다.
그리고 바로 위 설명처럼 초기화된
객체의 'visible'속성 또한 'on'한다.
마지막으로 해당 슬롯의 유닛수 정보와
인구수 정보를 0으로 변경하고
슬롯 한개가 지워졌으니 tpro값을 1뺀다.
위의 코드대로 프로그램이
진행되는지 확인해보자.
위와 같이 4개의 슬롯이 차있고
두번째 줄 까지 설명이 작성된 경우,
각 전역변수의 값은
tpro = 4 tnum = [ 5 1 6 2 ---] tppl = [ 5 -1 3 2 --- : 9 0 0 0 ---]
위와 같이 저장된 상태다.
여기서 'Undo'버튼을 누르게 되면
창의 크기가 세로로 줄은 것을
확인할 수 있다. 전역변수 값을 보면
tpro = 3 tnum = [ 5 1 6 0 ---] tppl = [ 5 -1 3 0 --- : 9 0 0 0 ---]
이렇게 tpro값이 1감소되었으며,
tnum과 tppl의 4열 값이 초기화됐다.
여기서 다시 드론을 추가해보면
두번째 줄 오른쪽의 edittext박스 또한
초기화된 것을 확인할 수 있다.
마지막으로 164~168줄에서
'inactive'로 변경했던 'enable'속성을
'on'으로 변경시킨 다음, 사용했던
임시변수의 값을 전역변수에 저장한다.
다음 포스팅에서는 'Save'버튼의 콜백
함수와 글 정렬 선택방법을 알아보자.
프로그램을 다운로드 할 수 있는 링크가 폐쇄되어
현재는 프로그램을 다운로드 받을 수 없다
'Past > Matlab GUI' 카테고리의 다른 글
Matlab GUI로 스타크래프트 빌드메이커 제작 #6/6 - 최종 캡처조건 설정 (0) | 2017.12.17 |
---|---|
Matlab GUI로 스타크래프트 빌드메이커 제작 #4/6 - 이미지버튼 콜백 설정 (0) | 2017.12.15 |
Matlab GUI로 스타크래프트 빌드메이커 제작 #3/6 - Add버튼 콜백 설정 (0) | 2017.12.14 |
Matlab GUI로 스타크래프트 빌드메이커 제작 #2/6 - M파일 초기조건 설정 (0) | 2017.12.12 |
Matlab GUI로 스타크래프트 빌드메이커 제작 #1/6 - Fig파일 설정 (0) | 2017.12.12 |