應用程式視窗 (The Application Window)¶
每個畫面外面都圍著同一個框架:頂端橫著一條選單列,中間是目前的頁面,底部橫著一條頁尾。框架只建立一次,整個工作階段都保持掛載,所以本頁描述的每樣東西在每個頁面上都在。專案變更是唯一會伸進框架裡、把中間所持有的內容重建的事件。
下圖是開著示範專案時位於 /execution 的整個框架。亮著的執行切換鈕指出了這一頁;右側那一組裡,只有欄快速切換鈕與連線標記是因為底下那一頁才出現的——標誌、三個下拉選單與頁面切換鈕不論開著哪一頁都在列上,而登出按鈕的有無取決於是否要求登入,而不是取決於頁面。最底下那一條是頁尾,寫著就緒,因為還沒有任何東西被回報。

選單列¶
從左邊數起:品牌標誌、版本標記、「檔案」、「偏好設定」與「說明」三個下拉選單,以及頁面切換鈕。版本標記寫著 v 加上執行中的版本,取自服務對自身的回覆,而不是來自專案裡的任何東西,所以專案還沒開啟它就已經帶著版本號;回報不出版本的服務會讓這個位置留白。在已安裝的 HiNC 上,它同時也是更新標記:它的顏色與圖示跟著更新狀態走——還沒檢查過、連不上更新伺服器,以及下載失敗正等著重試時是灰色;已是最新版本時是綠色並帶勾號;有較新的版本可用、正在下載、等著套用,或正在重新啟動為新版本時是橘色;執行中的版本已被撤回時是紅色——而它的工具提示會說明是哪一種。不論在哪種狀態,點一下都會打開軟體更新;在 Windows 上更新 HiNC逐步說明這個對話框。網頁服務單獨執行時——例如在伺服器上——這個標記就只標出版本:灰色外框,沒有其他狀態,也沒有工具提示,點一下也沒有任何作用。登入畫面上完全不畫這條列——登入卡改在它的標誌底下帶著一個版本標記。
「說明」收著服務自己提供的兩份參考資料,以及分隔線下方的日誌檢視器——網頁服務單獨執行時,它就是選單的最後一個項目;已安裝的 HiNC 則在它後面再加上檢查更新…,這一項打開的是和版本標記同一個軟體更新對話框。每份參考資料都在新的瀏覽器分頁開啟,所以眼前的頁面保有它的狀態:說明文件是本指南所對應的英文文件網站,位於 /HiAPI-docsite/;API 參考(Swagger)則是服務 REST 介面的 Swagger 頁面,位於 /swagger/index.html——見透過 HTTP 驅動網頁服務(英文,未鏡像)。兩者都來自視窗正在交談的同一個服務,也都不要求登入。日誌檢視器在這兩點上都不同:它是應用程式的一個頁面,讀的是服務自己當天的日誌檔——它是支援用的工具,不是現場作業用的,所以放在這裡而不放在列上——因此它在原處開啟,位於 /preference/log,並且和其他每個畫面一樣在同一道登入之後。見訊息與日誌。
頁面切換鈕是由四個按鈕組成的一個分段控制項——刀具庫、設備與執行依一件工作使用它們的順序排列,接著是檔案總管——畫面上那一頁的切換鈕是亮著的。按下亮著的切換鈕什麼也不做。其他幾個是連結,所以按滑鼠中鍵或 Ctrl 點擊,會在新分頁開啟那一頁。每一個通往這四頁之一的網址都會點亮它的切換鈕——?tree= 選取、瀏覽中的資料夾,以及重新導向進某棵樹的舊網址都算在內——而在沒有切換鈕的日誌檢視器上,沒有任何一個亮著;列上也沒有任何東西指出那一頁,它的標題在它自己的標題列裡。
列的其餘部分推到右側,依下列順序呈現,連線標記與登出按鈕之前各有一道分隔線:
- 欄快速切換鈕 — 目前頁面實際有幾欄,就有幾個按鈕,出現在三個樹頁面上:執行頁四個(停靠欄、畫布與訊息欄、時序圖欄、步資訊欄),設備頁四個(控制樹、編輯器、畫布、拓樸),刀具庫也是四個(刀具清單、控制樹、編輯器、刀具畫布)。每個圖示都是一幅頁面的小地圖,把自己那一欄塗滿;每個工具提示都寫出它所切換的欄。
- 連線標記 — 只在執行頁上。見下文。
- 登出按鈕 — 以已登入的使用者名稱作為標籤,服務沒有名稱可給時則寫作登出。只有在服務要求登入、且這個瀏覽器已通過登入時它才會在。
頁面區¶
兩條列之間的一切就是目前的頁面,而工作階段中到過的每一頁都保持建好的狀態:沒有上限,也沒有任何頁面被排除在外。回到某一頁時,它的元件狀態、改到一半的編輯,以及已建立的渲染連線,都和離開時一模一樣。
有兩樣東西不會帶過去。面板內的捲動位置不會被還原:回到某一頁時,它的面板會捲到全新掛載時的位置。而瀏覽器重新整理不是一次導覽——它會重建整個應用程式並清空快取;能撐過去的是活在頁面區之外的東西:網址(包括其中的 ?tree= 選取)、瀏覽器替自己保存的版面配置,以及服務所持有的偏好設定——語言、顯示物理選項,以及執行頁的哪些圖表、它的工作階段訊息面板與步屬性面板是開著的。
欄按鈕是逐頁記住的——三個樹頁面各自保有自己的選擇——而只要兩頁有同一種欄,寬度就是共用的。樹的寬度是三頁共用的一個設定:執行頁的左側停靠欄,以及設備頁與刀具庫的控制樹欄,所以在執行頁把停靠欄拉寬,另外兩頁的樹欄也跟著變寬。編輯器欄的寬度是設備頁與刀具庫共用的一個設定,刀具清單則有它自己的寬度。從沒拖曳過的瀏覽器,開出來的刀具清單是 300 px、樹是 240、編輯器是 420。已展開的樹節點清單也是單一設定,三頁共用同一份清單。
F5 到 F8 屬於執行頁。 它們驅動該頁的傳輸列——F5 開始或繼續,F6 暫停,F7 執行一行 NC,F8 執行一個加工步——而且只在該頁是螢幕上那一頁時才綁定,所以在其他每個畫面上,F5 就是瀏覽器自己的重新整理。當下對應按鈕不可用的按鍵,或是焦點在文字欄位裡時按下的按鍵,會轉交回瀏覽器。這對 F5 影響最大:執行進行中時開始鈕不可用,所以這個鍵會重新整理頁面,工作階段建好的那些畫面也隨之消失。
專案變更會做什麼¶
新增、選了另一個專案的載入、重新載入、存到與目前開啟位置不同之處的另存新檔,以及關閉專案,都會捨棄工作階段建好的每一頁,並依變更之後的專案是什麼來重建——關閉專案之後,就是什麼都沒有。這就是為什麼畫面不會繼續顯示已經不再開啟的專案的數值,也是為什麼從未儲存的頁內狀態撐不過專案變更。
決定要不要重建的是路徑有沒有變,而不是動作本身。單純的儲存從不重建。另存新檔存回目前已開啟的路徑,行為和儲存完全一樣,什麼都不重建;而另存新檔存到別的位置,則把視窗移到那個路徑上,一切重建。同理,在載入開啟的檔案瀏覽器裡挑到已經開啟的那個專案也不重建——檔案在服務端會再讀一次,但各畫面保留原本顯示的內容。要做這件事該用的項目是重新載入,它是永遠會重建的那一個。
同樣的重建在啟動時也會跑一次,不需要任何人做任何事:瀏覽器連上一個已經開著專案的服務時,會把那個路徑當成自己的第一次專案變更收下,並在其上建構。
新增、載入、重新載入、儲存、另存新檔與關閉專案一次只跑一個。第一個還在跑時發起的第二個會被拒絕,而不是排隊;拒絕以一則警告送達,寫著另一項專案操作正在進行中,請稍後再試。 什麼都不重建,也什麼都不會丟失。這一輪在整個操作期間都被佔著,所以載入還在讀取時要求的關閉會被同樣拒絕,關閉還在拆除專案時要求的載入也一樣。
頁尾¶
一條 29 像素高的橫條,容納三個區域,各自獨立於另外兩個。
左——最新回報的一行,後面跟著最近的那些。 文字是應用程式最近一次發出的訊息,還沒有任何訊息之前則是就緒;它的工具提示帶著完整內容,連同它附帶的副標 (caption)。前方的圖示標示嚴重性:一般狀態行是灰色的資訊符號,成功是綠色勾號,警告是琥珀色三角形,失敗是紅色符號。旁邊的時鐘按鈕打開最近訊息——最新的在前,上限一百則,每一列以左緣的一道色條重述其嚴重性,並帶著它送達的時間。這份清單屬於這個瀏覽器與這個工作階段:清除會清空它並讓前面那一行回到就緒,重新整理會清空它,而且它不會被寫到任何地方。
中——工作階段條。 只有在執行已產出東西時才畫出來,專案變更會把它清空,其餘時間這個位置就是空的。每一行由一個圖示開頭——游標更新是定位符號,其他則是訊息自己的嚴重性符號——只要該筆項目帶有錨點,後面就以等寬字前綴接上錨點:游標行帶著 Sn 與它所在的語句索引,訊息行則帶著訊息自己提供的錨點。滑鼠停在上面會打開它背後的最近活動——最新的在前,上限三十則,連續的一串游標更新會摺疊成其中最新的那一筆;點一下會把那份清單釘住不收。
右——背景作業區。 只在「檔案」選單的某項操作進行中時出現——關閉專案也算——寫出該操作與它正在處理的路徑,操作結束就消失。
切換語言會立刻、不經導覽地以新語言重新呈現整個介面:選單、頁面切換鈕與瀏覽器分頁標題全都會變。兩個訊息區域不跟著變。最近訊息清單與工作階段條裡的每一行都保留它發出時的語言,所以切換語言之後讀到的頁尾是語言混雜的,這是刻意的設計。
連線標記¶
選單列上的這個標記只屬於執行頁;其他畫布在自己的面板裡帶著自己的標記。它把該頁的渲染連線和各面板背後的服務連線彙總起來,只有集合裡每一條連線都通時才顯示綠色的已連線——只要有任何一條正在連線或重新連線就是橘色,而只有在沒有任何一條在連線、卻仍有一條斷著時才是紅色。
這個集合不是固定的。在那一頁上,渲染連線永遠被納入,但服務連線只在真的有東西在用它時才加入——一個開著的面板,或框架本身。沒有任何東西在消費的連線會被排除在外,而不是被強迫連線。ExecutionStatus 在整個工作階段都有消費者,因此永遠在集合裡;其餘的來來去去,這就是為什麼展開與收合面板會改變標記所回報的內容。綠色標記的意思是使用中的每一條連線都健康,而不是存在的每一條連線都健康。
只有兩種問題狀態帶有工具提示——全部連上時沒什麼好解釋,也就不出現。工具提示為每條連線列出一列,Rendering、Shell、NcDiag 等等,這些名稱是識別字而不是介面文字:在翻譯過的工作階段裡,只有每個名稱旁邊的狀態會換語言。