跳轉到內容

Oberon/ETH Oberon/教程/Columbus

來自華夏公益教科書

這些教程頁面由 André Fischer (afi) 編寫,Hannes Marais 提供編輯協助,託管在 ETHZ 並保留在 ETH 許可證 下。相關內容透過 Book.Tool 在系統中找到。擴充套件內容也可在 紙質 上獲取。一些教程頁面在 WayBack 存檔 中。

Columbus 使用者指南

學習如何獲取物件和庫資訊,以及如何使用檢查工具 Columbus 自定義物件和操作公共庫的內容。典型活動包括:檢查和修改元件屬性以及新增新屬性。Columbus 不僅包含目前 Inspector 和 DetailInspector 提供的所有功能,而且遠遠超出了這些功能。因此,後者的工具將在中期逐步淘汰。

在你開始閱讀本教程之前,你應該熟悉 Gadgets 系統及其元件,並且應該瞭解屬性的概念。要了解更多關於 Gadgets 的資訊,請參考 使用 Gadgets。一個非常重要的需要了解的是 RefGadgets 的使用。關於元件及其使用的描述位於 定義檔案 RefGadgets.Def 的末尾。

在你開始操作公共庫之前,你應該熟悉 Oberon System 3 中使用的庫的概念。

預計時間:30 分鐘。

介紹 Columbus

[編輯 | 編輯原始碼]

歡迎來到 酷炫的 Oberon 物件

Columbus 是一種非常通用的工具,可以應用於任何元件(視覺或模型)來檢查其身份、屬性、連結和屬性。當應用於特定元件時,該工具會立即調整其形狀,以表示該元件的屬性形式。但是,請注意,此形式是由程式建立的文件。該工具還可以用於管理公共庫及其內容。

在實踐中,Columbus 以兩種不同的“可變幾何”文件形式呈現(它們始終適合系統軌道)。其中之一用於檢查和配置物件的狀態,稱為“Objects.Panel”。另一個稱為“Libraries2.Panel”,用於操作公共庫。“Libraries2.Panel”的部分內容已整合到物件檢查器中。“Objects.Panel”可以直接從庫編輯器開啟。

使用物件檢查器

[編輯 | 編輯原始碼]

首先,按 Esc 鍵,確保刪除所有標記和選擇。檢查器面板透過命令 Columbus.Inspect ~ 開啟。

該命令在這裡沒有引數,但稍後你會了解到,也可以在命令之後指定物件的名稱。該命令嘗試查詢要檢查的元件:它可以是標記 (*) 或選定的視覺元件。如果找不到元件,就像現在一樣,會開啟一個最小的空白麵板文件“Objects.Panel”。

An image of the Oberon Gadget produced by the command Columbus.Inspect ~ with nothing selected.

它只包含 Columbus 徽標和一個帶有放大鏡的按鈕。此按鈕是檢查按鈕,用於檢查物件。我們將將其稱為 [檢查] 按鈕。

將面板移動到顯示器的系統軌道或桌面的一側,具體取決於你的操作模式。現在,選擇該面板 -> 酷炫的 Oberon 物件 然後單擊檢查按鈕。現在你看到的是正在檢查的面板的屬性檢視;這是透過按鈕中紅色的小 LED 燈來證實的。但是,可以使用同一行中的其他按鈕訪問其他幾個檢視。它們將在後續章節中介紹和描述。obj1 面板的屬性與其值一起呈現。

選擇此按鈕 -> 帶有標題“按鈕”的按鈕。 然後再次單擊檢查按鈕。如你所見,一個新的按鈕 帶有指向左邊的“後退”箭頭的按鈕。 出現在檢查按鈕的右側。此按鈕用於在面板的歷史記錄中後退一步。單擊該按鈕,你將返回到先前選擇的面板的資訊。

在右上角,你可以看到一個視覺參考,它代表了當前檢查的物件。

現在將介紹該元件的特徵和功能。

視覺參考元件

[編輯 | 編輯原始碼]

視覺參考元件儲存對型別為 Objects.Object 的任何物件的引用。此框架可以有三種不同的表示形式

視覺參考元件未引用任何物件。 - 當它沒有引用任何物件時,
視覺參考元件引用了一個視覺元件。 - 當它引用一個視覺元件時,
視覺參考元件未引用任何模型元件。 - 當它引用一個模型元件時。

該元件的實際優勢在於,無論其型別(視覺元件或模型)和大小如何,引用都表示一個物件。它可以像它所代表的物件一樣輕鬆地拖放到另一個上下文或複製到另一個上下文。

視覺參考可以透過將視覺元件拖放到其框架中或複製選定的視覺元件來更改。或者,來自另一個引用的引用可以以相同的效果拖放或複製過去。當引用因這種使用者互動而更改時,它將執行消耗命令(如果指定了)。要刪除(或清除)引用,請在引用內使用從右到左的中間點選。像大多數其他視覺元件一樣,引用在點選時可能會執行命令。

我們現在可以進行一些練習,以驗證剛才介紹的內容。

要清除 Columbus 面板,請在當前物件引用內使用從右到左的中間點選。面板將恢復到最小尺寸。按 [後退] 按鈕返回到“obj1”。現在,透過將元件拖放到引用中來設定新引用。用滑鼠中鍵和右鍵點選你想要檢查的任何元件的邊框。滑鼠指標將變為平坦的手形。在引用上釋放滑鼠按鈕。Columbus 面板現在將顯示有關拖放元件的資訊。設定新物件的另一種方法是將選定的元件複製到引用中(左鍵單擊和中鍵點選)。現在,關閉 Columbus 面板,然後單擊以下命令。

總之,此視覺參考可以用於清除面板或設定要檢查的新物件。

Columbus.Inspect Columbus.Playground ~

一個新的 Columbus 面板再次開啟(將其移動到螢幕的右側)。被檢查的物件是一個名為“Playground”的公共物件,它來自“Columbus.Lib”。現在,開啟一個新的 文字,並將它的視覺參考拖放到文件面板中(在引用中使用滑鼠中鍵和左鍵點選,將滑鼠拖到文件上,然後釋放滑鼠按鈕)。將插入的面板放在文件的左上角。選擇元件並按下檢查按鈕。

請注意,根據物件的不同,此可用檢視列表可能會有所不同。再次選中此複選框 -> The Oberon checkbox gadget. 並使用檢查按鈕檢查物件,或將其拖放到參考中。可以選擇更少的檢視。按下 Button with left pointing "back" arrow. 按鈕返回到 "Playground" 物件。

現在我們將詳細描述物件的各種可能的檢視。

物件檢視

[edit | edit source]

當前檢視始終可以透過按鈕中的紅色 LED 識別。

[Attr] - 屬性檢視
此檢視在 Attributes 部分顯示被檢查物件的屬性及其值。這是首選檢視,在檢查新物件時始終首先顯示(但對於庫,庫檢視始終首先顯示)。您可以更改屬性值,並透過單擊檢查器面板右側的 [Apply] 按鈕將它們應用於物件。

試試看: 將屬性 'Color' 更改為 1,然後按下 [Apply] 按鈕。文件中先前插入的面板將顏色更改為紅色。

New Attribute 部分用於向當前物件新增屬性。它有兩個文字欄位:在第一個欄位中輸入新屬性的名稱,在第二個欄位中輸入其值。要新增屬性,請單擊 [Add] 按鈕。新增的屬性可以透過單擊 [Del] 按鈕刪除。在 Attr. Name 欄位中輸入要刪除的屬性的名稱。

試試看: 輸入一個名稱(例如 'New1')和一個值(例如 'Value1'),然後按下 [Add] 按鈕。該屬性將立即新增到物件的屬性列表中。再試一次,使用 'Name2' 和值 'Yes'。

此檢視是當前物件檢查之旅的起點,幷包含到其他相關物件或庫的遊覽。每一步都記錄在一個歷史堆疊中,透過單擊 Button with left pointing "back" arrow. 按鈕,可以逐步回退。但是,如果呈現任何其他檢視(在下面描述的檢視中),單擊右上角的 Current Object 參考將重新投影此檢視。

[Link] - 連結檢視
此檢視在 Links 部分顯示被檢查物件的連結。您可以更改物件連結,並透過單擊檢查器面板右側的 [Apply] 按鈕將它們應用於物件。

New Link 部分用於向當前物件新增連結。它包含一個用於指定新連結名稱的文字欄位,以及一個用於放置要連結物件的空可視參考。要新增連結,請單擊 [Add] 按鈕。新增的連結可以透過單擊 [Del] 按鈕刪除。在 Link Name 欄位中輸入要刪除的連結的名稱。

要檢查其工作原理,請將此參考 -> Cool Oberon Object 的物件拖放到檢查器面板上的 'Picture' 連結(使用滑鼠中鍵右擊)。按下 [Apply] 按鈕,檢視文字中的面板(不錯吧?)。

[Coords] - 座標檢視
此按鈕在檢查可視工具時存在。此檢視顯示可視工具的座標。此檢視不適用於模型(請參見帶有 'Columbus.Background' 的面板)。

試試看: 將 'W' 更改為 190,將 'H' 更改為 130,然後按下 [Apply] 按鈕。隨意使用面板及其內容,但不要忘記返回此處繼續接下來的操作。

[Comp] - 元件檢視
此按鈕僅在檢查容器工具時存在。此檢視列出了容器工具及其生成器過程和可視參考的元件。您可以使用滑鼠中鍵檢查每個參考,但不能更改它們。檢查其中一些,但在繼續之前,請確保您已返回到此檢視(後退按鈕)。

The Watson button used in the Columbus panel. - 呼叫 Watson
Columbus 使您可以檢視被檢查物件的附加描述。這些是教程、定義檔案或模組檔案。此按鈕使用物件的生成器名稱作為引數呼叫 Watson.ShowObj。單擊該按鈕,將開啟文字 'Panels.Def'(如果存在,則為 'Panels.Mod')。

[Lib] - 庫檢視
此按鈕僅在檢查的物件繫結到公共私有庫時存在。顯然,當檢查庫時,庫檢視是首選檢視,始終首先顯示。檢視列出了庫中包含的物件。每個物件都顯示其生成器過程、參考號,以及在公共庫的情況下,索引中的名稱,以及可視參考(參見上面的元件檢視)。使用參考檢查庫中的特定物件。被檢查的公共庫的名稱顯示在右上角。在私有庫的情況下,文字 simply "(Private)"。當呼叫庫檢視時,正在被檢查的物件很容易識別:尋找藍色的文字行。如果沒有當前物件,則沒有行突出顯示。

試試看: Columbus.Inspect Watson - 庫檢視立即顯示。現在,檢查 "ModFile" 文字欄位(Ref # 4),然後再次訪問庫檢視(不要單擊 Button with left pointing "back" arrow. 按鈕!)。

[Editor] - 庫編輯器
此按鈕在檢查的物件繫結到公共庫時存在。庫編輯器與下一節中描述的庫面板大致相同。透過它,您可以從記憶體中刪除庫、將庫儲存到磁碟、檢索物件、釋放物件或將物件安裝到庫中。

您已到達此次操作的末尾。關閉您在此過程中開啟的所有面板和文字,然後進入關於庫面板的下一節。

使用庫檢查器

[edit | edit source]

使用命令 Desktops.OpenDoc Libraries2.Panel ~ 開啟庫面板。

該面板分為三個部分。頂部包含按鈕 [Directory]、兩個複選框和一個列表。該列表顯示庫名稱。您可以選擇要檢視的庫型別。要檢視儲存在磁碟上的庫列表,請選擇 "Disk"。要檢視當前載入到記憶體中的庫列表,請選擇 "Memory"。單擊按鈕 [Directory] 以檢視您選擇檢視的列表。

單擊選擇列表中的一個庫。Library 文字欄位將更新:它顯示將成為中間部分按鈕控制的庫管理操作目標的庫。

  • [Unload] - 從記憶體中刪除庫。
  • [Store] - 將庫儲存到磁碟(庫仍快取在記憶體中)。
  • [Cleanup] - 收集未使用的物件並將庫儲存到磁碟。

同時,還會顯示庫中包含的物件列表。可以透過單擊右側的可視參考檢查每個物件。

單擊 Name 按鈕選擇列表中的一個物件。Object 文字欄位將更新:它顯示將成為底部部分按鈕控制的操作目標的物件。

  • [Retrieve] - 將物件插入到插入點,或將其作為文件開啟(如果它是文件工具)。右側的三個複選框指示從庫檢索是否應涉及無副本、深層副本或淺層副本(深層副本為預設)。
  • [Rename] - 使用指定的名稱重新命名物件。對物件所做的所有更改將立即反映到物件的客戶端。右側的文字欄位用於指定新名稱。
  • [Install] - 使用指定的名稱將物件插入庫中。具有此名稱的物件將被覆蓋。右側的文字欄位用於指定名稱。空的參考工具用於指定要安裝的物件。
  • [Free] - 從庫中釋放所選物件。

Columbus 命令

[編輯 | 編輯原始碼]

檢查命令 - Columbus.Inspect

[編輯 | 編輯原始碼]

Columbus.Inspect 命令可以採用不同的形式,但在每種情況下它都會開啟一個名為 "Objects.Panel" 的面板文件。

Columbus.Inspect ~ (不帶引數!) 嘗試定位一個標記 (*) 或一個選定 (最近選定的那個) 視覺 小工具,或最近選定物件的引用物件。後一種情況優先於其他情況,在下面描述。如果成功,將顯示小工具的屬性 檢視。否則,將開啟一個最小面板。星形 (*) 標記允許更細粒度的物件選擇。正如你可能猜到的,此命令隱藏在 [Inspect] 按鈕的Cmd 屬性中。

要檢視區別,請嘗試以兩種方式檢查標題 "obj1" 一個標題為 "obj1" 的小面板。 。如果選擇面板,你必須訪問元件檢視並單擊 TextsFields.NewCaption 引用以到達與設定標記相同的檢視。

Columbus.Inspect LibName [.ObjName] | [^] ~ 根據以下規則,顯示有關命名公共庫或公共庫中物件的檢查資訊

  • 如果引數中的名稱代表一個庫,例如 Watson,則 "Objects.Panel" 面板將包含列出庫中所有物件的 檢視。
  • 如果引數中的限定名稱代表庫中的一個物件,例如 Watson.Order,則將顯示物件的屬性 檢視。
  • 如果庫中找不到該物件,例如 Watson.Disorder,則也會顯示庫中所有物件的列舉。
  • 最後,如果第一個名稱部分不是庫的名稱(庫未找到),例如 What.Order 或 NotaLib,則將顯示一個最小的 檢視(空庫)。

嘗試所有示例: Columbus.Inspect ^

[編輯 | 編輯原始碼]

Columbus.InspectLink LinkName 開啟一個名為 "Objects.Panel" 的面板文件。要檢查的物件取自執行小工具的連結 "LinkName" 。如果連結不存在或沒有物件,則將開啟一個最小的 'Objects.Panel' 文件。(此命令可以用作 RefGadget 的 Cmd 或 ConsumeCmd。)

顯示庫中的物件 - Columbus.ShowObjs

[編輯 | 編輯原始碼]

Columbus.ShowObjs LibName 開啟一個名為 "Columbus.ShowObjs" 的文字文件,其中列出了命名庫匯出的物件。名稱必須具有 ".Lib" 副檔名。提供的資訊是 Columbus.Inspect LibName 獲得資訊的子集,並且更簡陋。

嘗試此操作: Columbus.ShowObjs Watson.Lib 並與之前獲得的結果進行比較。

從庫中檢索物件 - Columbus.GetObj

[編輯 | 編輯原始碼]

Columbus.GetObj LibName.ObjName 從庫 "LibName.Lib" 中檢索物件 "ObjName" 。如果物件是文件小工具,則會開啟文件的副本到顯示器上。一個小工具框架將插入到插入點的位置。根據名為 "copy style" 的物件的價值進行復制。如果在當前上下文中找不到此物件,則假定複製樣式為深層。將所有選定框架設定為 "Model" 連結。(模型不做複製)。

從庫中刪除物件 - Columbus.FreeObj

[編輯 | 編輯原始碼]

Columbus.FreeObj LibName.ObjName 從庫 "LibName.Lib" 中刪除物件 "ObjName" 。被釋放物件包含的物件不會被刪除(參見 Columbus.CleanupLib)。

將物件新增到庫 - Columbus.AddObj

[編輯 | 編輯原始碼]

Columbus.AddObj LibName.ObjName 將一個名為 "ObjName" 的新物件插入到庫 "LibName.Lib" 中。如果庫中已經存在同名物件,則用新物件替換該物件。新物件取自當前上下文中名為 "value" 的視覺引用。

重新命名庫中的物件 - Columbus.RenameObj

[編輯 | 編輯原始碼]

Columbus.RenameObj LibName.OldName NewName 將庫 "LibName.Lib" 的索引中的名稱 "OldName" 替換為 "NewName" 。

管理庫的命令

[編輯 | 編輯原始碼]

Columbus.ShowLibs [ObjName] 將當前載入到記憶體快取中的庫的名稱插入到當前上下文中的命名列表中。如果找不到列表,則改為開啟一個名為 "Columbus.ShowLibs" 的文字文件。例如, "Libraries2.Panel" 中的 [Directory] 按鈕使用此命令。此命令與命令 System.ShowLibraries 密切相關,不同之處在於不列出字型庫。

Columbus.StoreLib ({LibName} | ^) 將命名庫儲存在當前目錄中的磁碟上。名稱必須具有 ".Lib" 副檔名。

Columbus.UnloadLib ({LibName} | ^) 從記憶體中刪除命名庫。名稱必須具有 ".Lib" 副檔名。

Columbus.CleanupLib ({LibName} | ^) 從命名庫中釋放未引用的物件。清理後的庫將儲存在磁碟上並重新載入到記憶體中。名稱必須具有 ".Lib" 副檔名。

C

Columbus.AddObj
Columbus.FreeObj
Columbus.GetObj
Columbus.Inspect
Columbus.InspectLink
Columbus.RenameObj
Columbus.ShowObjs
Columbus

L

庫檢查器

O

物件檢查器

V

視覺引用小工具


修訂,afi 1996年8月16日
安裝於 1997年5月30日

華夏公益教科書