int i = w6_i_CHECKBOX_Some_checkbox(); //Элемент чекбокс. Буква i после префикса означает что тип возвращаемого/устанавливаемого значения int.
double d = w6_d_S_EDIT_Spin_the_value(); //Элемент поле ввода с кнопками. Буква d после префикса означает что тип возвращаемого/устанавливаемого значения double.
string s = w7_s_EDIT_Comment_1(); //Элемент текстовоеполе ввода. Буква s означает что тип возвращаемого/устанавливаемого значения string.
int i = w6_i_CHECKBOX_Some_checkbox(0/1/2/3); //Элемент чекбокс. Передача нуля,единицы, двойки или тройки для смены между нейтральным, активированным, нетр.блокир. и актив. блокир. состояниями элемента.
//Тот же метод работает для всех кнопок.double d = w6_d_S_EDIT_Spin_the_value(653.89); //Элемент поле ввода с кнопками. Передача значения параметра в функцию для установки его в элемент.string s = w7_s_EDIT_Comment_1("Any text"); //Элемент текстовое поле ввода. Передача текста для установки в поле ввода.
int i = w6_i_BUTTON_Start(get_i,_A_COLOR); //Элемент Кнопка. Возврат значения цвета из свойства _A_COLOR. Может быть указано другое значение или другое свойство из списка доступных свойств.//Однако, данных тип функции принимает значения только типа int, но может приводить их к другим родственным типам (uint, short, bool...).
//Значение первого параметра get_i говорит функции что не нужно принимать значение первого параметра в расчет, а лишь вернуть значение свойства _A_COLOR.
inti = w6_i_BUTTON_Start(C'255,0,0',_A_COLOR); //Элемент Кнопка. Передача и установка польз. значения цвета в свойство _A_COLOR. Может быть указано другое значение или другое свойство из списка доступных свойств.
//Однако, тип функции этого элемента принимает значения только типа int, но может приводить их к другим родственным типам (uint, short, bool...).
switch(Element)
{
//=====================================================================================================================//WINDOW: Settings example 1 | #: 6 | PFX: w_6 | GET/SET: int w_6_Settings_example_1(int value = get_i, int Property = 0)//---------------------------------------------------------------------------------------------------------------------//ELEMENT: BUTTON//NAME: Start//PARAMETER: int//INIT STATE: OFF//LOCATION: Location: Window's Main Frame//---------------------------------------------------------------------------------------------------------------------//GET/SET: int w6_i_BUTTON_Start(int value = none, int Property = 0) | PFX: w6//=====================================================================================================================case Settings_example_1___Start:
//------------------------------------------------------------------------------------------------------//What to do when button pressed or released?//------------------------------------------------------------------------------------------------------switch((int)action)
{
case pressed: Alert("BUTTON Start pressed!"); break;
case released: Alert("BUTTON Start released!"); break;
}
//------------------------------------------------------------------------------------------------------//Your comment://------------------------------------------------------------------------------------------------------break;
//=====================================================================================================================//WINDOW: Settings example 1 | #: 6 | PFX: w_6 | GET/SET: int w_6_Settings_example_1(int value = get_i, int Property = 0)//---------------------------------------------------------------------------------------------------------------------//ELEMENT: CHECKBOX//NAME: Set an option//PARAMETER: int//INIT STATE: OFF//LOCATION: Location: Window's Main Frame//---------------------------------------------------------------------------------------------------------------------//GET/SET: int w6_i_CHECKBOX_Set_an_option(int value = none, int Property = 0) | PFX: w6//=====================================================================================================================case Settings_example_1___Set_an_option:
//------------------------------------------------------------------------------------------------------//What to do when checkbox checked or unchecked?//------------------------------------------------------------------------------------------------------switch((int)action)
{
case checked: Alert("CHECKBOX Set_an_option pressed!"); break;
case unchecked: Alert("CHECKBOX Set_an_option released!"); break;
}
//------------------------------------------------------------------------------------------------------//Your comment://------------------------------------------------------------------------------------------------------break;
//=====================================================================================================================//WINDOW: Settings example 1 | #: 6 | PFX: w_6 | GET/SET: int w_6_Settings_example_1(int value = get_i, int Property = 0)//---------------------------------------------------------------------------------------------------------------------//ELEMENT: CHECKBOX//NAME: Set another option//PARAMETER: int//INIT STATE: OFF//LOCATION: Location: Window's Main Frame//---------------------------------------------------------------------------------------------------------------------//GET/SET: int w6_i_CHECKBOX_Set_another_option(int value = none, int Property = 0) | PFX: w6//=====================================================================================================================case Settings_example_1___Set_another_option:
//------------------------------------------------------------------------------------------------------//What to do when checkbox checked or unchecked?//------------------------------------------------------------------------------------------------------switch((int)action)
{
case checked: Alert("CHECKBOX Set_another_option pressed!"); break;
case unchecked: Alert("CHECKBOX Set_another_option released!"); break;
}
//------------------------------------------------------------------------------------------------------//Your comment://------------------------------------------------------------------------------------------------------break;
//=====================================================================================================================//WINDOW: Settings example 1 | #: 6 | PFX: w_6 | GET/SET: int w_6_Settings_example_1(int value = get_i, int Property = 0)//---------------------------------------------------------------------------------------------------------------------//ELEMENT: D_LIST//NAME: D_LIST 1//PARAMETER: string//INIT OPTION: L_ITEM 1//LOCATION: Location: Window's Main Frame//---------------------------------------------------------------------------------------------------------------------//GET/SET: string w6_s_D_LIST_D_LIST_1(string value = get_s, int Property = 0) | PFX: w6//=====================================================================================================================
皆さん、こんにちは、
最近の議論を踏まえて、ピーター・コナウのプロジェクトの 成果と進捗状況をフォーラムではなく「コードベース」に記録することを提案したいと思います。フォーラムは議論や即時のフィードバックには優れていますが、プロジェクトの全体像や一貫した方針を示すのに必要な構造や一貫性に欠けています。
Codebaseを使用することで、すべての関連情報が整理され、簡単にアクセスでき、プロジェクトの状況を明確に把握することができます。これは、明瞭さを保つだけでなく、チームメンバーや利害関係者全員のより良い協力と理解を促進する上でも役立ちます。
この提案をご検討いただければ幸いです。
Codebase」を使うことで、すべての関連情報が整理され、簡単にアクセスでき、プロジェクトの状況を明確に示すことができます。これは、明確性を維持するのに役立つだけでなく、すべてのチームメンバーや利害関係者間のより良い協力と理解を促進する。
この提案をご検討いただければ幸いです。
とても合理的な提案です、ありがとうございます。間違いなく、コードベースはアップデートの公開やユーザーとのコミュニケーションに便利です。プロジェクトの発展に大いに貢献しています。これまでコードベースはほとんど利用したことがありませんでしたが、規約を検討し、要件に適合させることに現実的な意味があることがわかりました。このプラットフォームの可能性と限界を知るために、私はコミュニティの有名なメンバーのプロジェクトを探すつもりだ。彼らの例を参考にしながら、私はコードベースのプロジェクトを有益で有能な方法で実施することができるだろう。
今日リリースを予定している。
しかし、フォーラムのメンバーの親切なアドバイスに従って、コードベースで新バージョンを公開することにした。それを正しく行うには、同じような出版物の例を研究し、フォーラムとそこでのプロジェクトを並行して実行する計画を立てるのに数日必要だ。また、モデレーションも必要だ。
今回のリリースについて少し:
1.ユーザープログラムとそのグラフィカル・インターフェースの 間のプログラム的インタラクションのシステムを構想し、実装した。
詳細はこちら:
1.1.空括弧で呼び出された場合、関数は要素パラメータの値を3つの型のうちの1つで返します: int、double、string 要素の型に応じて、int型、double型、string型のいずれかを返します。
2.括弧内に1つの値を指定して呼び出された場合、関数は渡された値を要素パラメータに設定した後、再描画します(値は要素のタイプに応じて、int、double、stringの いずれかに設定されます)。
3. 第 1 パラメータのデフォルト値とプロパティ番号(利用可能なプロパティから)を指定して呼び出された場合、関数は要素のこのプロパティの値を返します(プロパティ番号はすべてint 型で、プロパティパラメータに 渡されます)。
4 . valueと プロパティ値を括弧で 囲んで 呼び出すと、関数は渡された値を要素の利用可能なプロパティに設定 します。プロパティ番号は property パラメータに、 プロパティ 値は value パラメータに 渡されます。
関数名の構造: w6_i_BUTTON_Start();
1.wは 全ての ラッパー関数の頭文字です。windowの 省略形である。
2.6(または他の数字) - 要素を含むウィンドウのシーケンス番号。
3. i (dまたはs) - 要素のパラメータの戻り値/設定値の型を意味します。
4.BUTTON- ラッパー機能が属する要素タイプの名前です。他の要素でも構いません。
5.Start - 特定の エレメントの名前です。
//----------------------------------------------------------------------------------------------------
インテリセンスシステムのスマートなアプリケーション:
ウィンドウやエレメントの必要な関数・ラッパーを素早く検索して見つけることができるように、特別な接頭辞システムを使用することにしました。以下はその例です:
すべてのウィンドウとエレメントのラッパー関数の先頭にはw が付いています。しかし、w:_ の後にダッシュを付けると、すべてのUIウィンドウ関数の名前のリストが表示されたインテリセンスウィンドウが 開きます 。次に、リストの中から探している名前のウィンドウを見つけ、その番号(関数名に印刷されています)を見て、ダッシュを消し、この番号をwの後に置きます。ウィンドウに含まれる要素の関数名を含むインテリセンスのリストが一度に表示されます。これがその方法である:
これは、エレメントのラッパー関数のリストを素早くナビゲートする簡単な方法 です。表示する必要もありません。
//----------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
また、APIファイルの変更と追加が行われました。エレメントやウィンドウに関するより多くの情報が利用できるようになりました:
近いうちにこれらの機能を試してみたい。
GUIと プログラム的に相互作用するエンジンのバージョンを紹介する。
多くのことをやった。伝えるべきこと、見せるべきことがある。
公開テストが終わったら、コードベースにアップロードするつもりだ。
興味深いことが判明した...。
詳細はまた明日。
少し先になるが、ユーザーにとって非常に便利なソリューションを見つけた。このソリューションによって、ユーザーは要素やプロパティの名前を覚える必要がなくなり、簡単に見つけて操作できるようになります。同時に、各要素は、その要素と「関連する」要素でのみ利用可能な取得/設定プロパティのリストを持っています。要素の関数名に接頭辞が埋め込まれているため、ユーザーはその関数を呼び出し、その要素が持っていないプロパティを返したり設定しようとするミスを犯すことはありません。
ラッパー関数は、自分でも驚くほど多機能で使いやすいことがわかりました。括弧が空であればパラメータの値を返し、値が1であれば設定し、最初のパラメータが空でプロパティのインデックスが2番目のパラメータにあれば、リストからプロパティの値を返す。最初のパラメータに値があり、2番目のパラメータにプロパティのインデックスがある場合、プロパティに値を設定します。また、成功した場合は1、エラー(値またはプロパティが無効)の場合は-1として結果通知を返します。関数は要素そのものを再描画します。この処理を行う必要はありません。
ラッパー関数でできること
1.要素パラメーターの値を取得する。
2.要素パラメーターの値を設定する。
3.要素プロパティの値を、その要素タイプに属するプロパティの個別リストから取得する(関数名に書かれた接頭辞で呼び出される)。
4.同じリストから要素プロパティの値を設定する。
5.エレメントの状態を設定する:ニュートラル、アクティブ、(オン/オフ)、ブロックされたニュートラル、ブロックされたアクティブ。
6.要素の現在の状態を返す。
最初の場合、関数はパラメータの値を返します。
2番目のケースでは、成功またはエラーという結果を返します。エラーはログに出力されます。
3番目のケースでは、プロパティの値を返します。
4番目の場合 - 結果:プロパティ設定の成功またはエラー。
5番目は、1または-1を返します。
6番目は、要素の状態インデックスを返します(詳細は後述します)。
すべては、自動的に出力される1つのラッパー関数によって行われます。w_とタイプすると、インテリセンスのリストが開き、ウィンドウの名前が表示される。その中に探している要素がある。どのウィンドウにあるか、大まかに覚えておく必要がある。そして、悪魔を消してウィンドウの番号を入力し、アイテムのリストから必要なものを選択する。暗記は不要。
要素の特性も覚える必要はない。機能名を見て、個々のプロパティのリストを開くための接頭辞を見てください。それを入力して開き、プロパティを選択する。何も覚える必要はありません。タイピングも必要ありません。インテリセンスがすべてやってくれる。
Windowsにも独自のラッパーがある。開いたり閉じたりできる。残りの機能はまだ実装されていない。
APIファイルを大幅にアップグレードした。エレメントに関する有用な情報が大幅に増えた。すなわち、接頭辞、個々のプロパティ、エレメントのラッパー関数と そのウィンドウのプロトタイプ、エレメントの正確な位置(もしあれば、エレメントが属するテーブル、キャンバス、タブ)、パラメータのタイプ(int、double、string...)、パラメータのプロパティ(min.value、max.value、step、小数点以下の桁数)が表示されます。初期値または選択されたオプション(要素による)が表示されます。すべてが非常に読みやすく、理解しやすく設計されています。
新しい機能を部分的にテストしましたが、満足しています。すべてが意図したとおりに動いている。
明日、実際に使ってみようと思う。