問題タブ [motif]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 実現クラス プロシージャが定義されていません
エラーの解決策を見つけた方法を共有したいだけです
実現クラス プロシージャが定義されていません
X/Motif C アプリケーションの実行時。オンラインで検索したときにこの問題への参照が 1 つしか見つからず、解決策が含まれていなかったため、これを投稿しています。
私はなんとか問題を解決し、この問題に再び遭遇した場合は私の発見を共有したいと思いました (注意:私の解決策が常にこの種のエラーを解決すると言っているわけではありません)。
問題
この問題は、Motif および X Intrinsics ツールキットを使用する単純な C プログラムを実行しているときに見つかりました。
C ソース コードは次のとおりです。
python - fasta ファイルを解析するための while ループ
プログラミング経験のないプロジェクトを任されました。while ループ、インクリメンタル、および boo を使用してモチーフ ファインダーを作成するように求められます。私は正しい方向に進んでいると信じていますが、プログラミングの経験がないため、非常に不確実です. 私の間違いを見つけて、それを正すために何をする必要があるかを教えてくれる人はいますか?繰り返しますが、私はこれを引き受けるように頼まれた生物学者です。
助けが必要です。
c++ - Qt MenuBar は、モチーフ スタイルの境界線を強調表示します
モチーフ スタイル (Qt 5.3) を使用した 2 つのサブ メニューを持つ QMenuBar があります。このシナリオに従うと、QMenuBar の周りに黒い境界線が表示されます (以下のコード例)。
- サブメニュー「Foo1」をクリック
- サブメニュー「Bar1」をクリック
「Bar1」をクリックすると境界線が表示されます。これはハイライトまたはフォーカス境界のようです。マウスでウィンドウを移動している間は境界線が消えますが、移動が終わると元に戻ります。
menubar1 の黒い境界線のイメージ:
スタイルシートを使用するとモチーフスタイルがクリアされるため、可能であればスタイルシートを使用せずにこの境界線を取り除く方法を知りたいです。
コード例は次のとおりです。
c - XmMULTIBYTE_TEXT または XmWIDECHAR_TEXT モードでの XmStringGenerate()
XmLabel
サーバー側の XLFD フォント ( )を使用して、Unicode (実際にはキリル文字) を表示しようとしています-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1
。工場として使用XmStringCreate()
するときはいつでも、結果は私の期待に応えます。XmStringCreateLtoR()
XmString
XmStringGenerate()
ただし、ファクトリを使用しようとするとXmMULTIBYTE_TEXT
、マルチバイトの Unicode 文字列またはXmWIDECHAR_TEXT
ワイド文字列のいずれかを渡すと、使用するフォントに関係なく、ガベージが画面にレンダリングされます (UTF-8
サーバー側で 1 バイトのキリル文字と 1 バイトのキリル文字の両方を試しました)。フォント)。
結果を以下に示します (最初の 2 行は問題ありませんが、2 番目から 6 番目のラベルは で作成されておりXmStringGenerate()
、明らかに問題があります)。
完全なコード (Motif 2.1+ および C99 準拠のコンパイラが必要) はこちらです。
(だけでなく) UnicodeXmStringGenerate()
文字を表示するのに適した実用的な例を誰かが提案できますか?ISO-8859-1
c++ - XWindow が自身の属性をリッスンしない/ウィンドウ マネージャー
問題: Linux システムの Window Manager C++ ファイルで、XWindows によって制御される Java ウィンドウがあります。HCI をおよそ 7 ~ 35 回連続して (そしてすばやく) 開くと、通常、ウィンドウが設定した場所 (430, 300 )。失敗した後、HCI を閉じて再度開くと、バグが発生する前と同じように、正しい場所で開かれます。属性は最初に XMoveResizeWindow で設定されます。
(XTranslateAttributes と XGetWindowAttributes を介して) HCI の場所を確認し、X と Y を設定された場所と比較し、一致しない場合は属性をリセットするループを追加しました。
ただし、属性を印刷すると、ウィンドウが実際に (0,0) で開いていても (430, 300) と表示されます。
具体的な質問: これは XWindows のバグですか? 属性が 1 つのものを読み取ることは意味がありますが、実際の場所とは一致しません (つまり、これらの属性は要求ではなく提案である可能性があります)。HCI のより正確な位置を返す別の方法はありますか?
更新:ループを変更して、XMoveWindow を介して場所を 15 回続けて移動しようとしました。修正されたようです(まだテストは行われていません)。しかし、力ずくよりも良い方法があるはずです。
c++ - ダイアログ ウィンドウの境界線の色を設定する
ここでの根本的な問題は次のとおりです。ウィンドウ (より具体的には、ダイアログ ウィンドウ) の境界線の色を設定するにはどうすればよいですか?
警告を表示するダイアログ ウィンドウがあります。アラートの重大な安全性のため、ダイアログのウィンドウ境界を含むウィンドウの一部を赤くする必要があります。この要件を取り入れたとき、それは良い考えだと思いました。合理的で十分に単純に思えます。
アプリケーションは、グラフィックに X/motif を使用します。承認ボタンなど、他のリクエストされた部分を赤くすることから始めました。グラフィックス コンテキストとカラー リソースを変更するだけで、他のすべてを簡単に行うことができます。
ただし、ダイアログの境界線は苦労しました。XmNborderColor リソースがあるので、それを変更してみました。うまくいかなかったようです。最終的に、さまざまなウィジェット(フレームとその祖先)に設定しようとした後、必死になって次のことを行いました。
ボタンからルートまで、そしてその間のすべてに設定するだけでした。
さらに調査を行った後、代わりに via などのウィンドウ属性を変更する必要がある可能性があることに気付きましたXChangeWindowAttributes(display, window, mask, values)
。値の構造には が含まれておりborder_pixel
、これは境界線の色であると想定していますが、それに関する確認は見つかりません。ドキュメントには、「境界線ピクセル」を設定するためのものと書かれています。さいわい、値構造体全体を渡す必要がないように、境界ピクセルのみを設定するための便利な関数があります。境界ピクセルのみを変更する便利な関数はXSetWindowBorder(display, window, border_pixel)
.
だからやってみたかったんです。私は今持っています:
shell
次の関数で別の場所に設定されます。
コードの別の場所から見ると、ルート ウィンドウへの参照のように見えますが、それがwindow
問題なのでしょうか?
これに関する情報が不足していることと、直接的な答えを見つけるのがいかに困難であったかに驚いています。
境界線の色を設定するにはどうすればよいですか? を使用する必要がある場合XSetWindowBorder()
、何が間違っていますか? 私のwindow
変数が正しいウィンドウを参照していない可能性があるためである場合、シェルと含まれているウィジェットを知っている正しいウィンドウへの参照を取得するにはどうすればよいですか)?
c - ロケール固有の XFontSet 拡張
私の Motif アプリケーション (ソース コードはここにあります。Motif 2.1 + ( -lXm -lXt -lX11
) と C99 準拠のコンパイラが必要です。Cygwin では、さらにとリンクする必要があります) で、エンコーディングに依存しないXLFD (のような)から変換されたインスタンス-liconv
を取得しようとしています。現在のロケールに一致する複数の個々のエントリ ( 、、など)に正しく展開されます。XFontSet
-monotype-arial-medium-r-normal--*-90-*-*-p-0-*-*
XFontStruct
...-iso8859-1
...-iso8859-5
...-iso10646-1
一部のロケール ( en_US.UTF-8
、ru_RU.ISO-8859-5
) ではXFontSet
拡張が完全に機能し、他のロケール ( ru_RU.UTF-8
、 )ru_RU
では機能しない (フォントセット内の不適切な個々のフォント) ことがわかりました。その結果、平面の文字以外の文字がLatin-1
正しくレンダリングされません。
質問:
- Motif または X11 クライアント ライブラリ (
libXt
、libX11
) を主な容疑者として除外するにはどうすればよいですか? - 特に、(どのように) Motif に依存せずに (理想的には Athena ウィジェット セットを使用して)
XFontSet
通常のフォント ( ) ではなくフォント セット ( ) を使用してテキスト ラベルを表示できますか?XFontStruct
- プレーンな API といえば、XmbDrawString() および XwcDrawString()ファミリの関数
libX11
を試す必要があるという私の理解は正しいですか?
追加のコメントがある場合は、登録してください。上記の質問に直接答えることはありませんが、問題を追跡するのに役立つコード - それらは大歓迎です。
TL;DR バージョン
現在のロケールに関係なく、キリル文字を適切に表示することに特に関心があります。
- ロケールが X11 でサポートされている。
- キリル文字は、ロケールの文字セットで表現できます。
これにより、次のロケールのリストが残ります。
ru_RU
;ru_RU.ISO-8859-5
(これは ru_RU と同じはずですが、そうではありません。以下を参照してください);ru_RU.KOI8-R
;ru_RU.CP1251
;ru_RU.UTF-8
;en_US.UTF-8
と同様にxx_YY.UTF-8
。
ru_RU
、一般性を失うことなく、uk_UA
、be_BY
またはに簡単に置き換えることができますbg_BG
。
私のテスト コードでは、異なる/ファクトリ メソッドXmLabel
によって生成されたラベルを持つインスタンスを作成しています。XmStringCreate*()
XmStringGenerate()
Motif 2.3.4は、いくつかの例外 (または Motif 2.1に関する回帰) を除いて、一般的にキリル文字に対応していることが示されています。リグレッションが Motif 自体 ( ) に起因するのか、libXm
X11 クライアント ライブラリ ( libXt
、libX11
) に起因するのかはわかりません。X11 フォント パスはすべてのテストで同じだったので、特定の X サーバーまたは X フォント サーバーのせいではありません。
基本的に、Motif 2.3.4の使用時に 2 つの問題が見つかりました。
ru_RU
ロケールのサポート
ru_RU.ISO-8859-5
ロケールで取得した参照レンダリング:
ご覧のように、XmString
使用されている工場に関係なく、完全なロシア語のアルファベットが正しく表示されます。
3 つのケースのそれぞれで、アプリケーションはXFontSet
インスタンスの内容を stdout に出力します。
これで、同じアプリケーションがru_RU
ロケールで起動されました。モチーフ2.2 :
何らかの理由で、フォントではなくフォントXFontSet
のみが含まれています。KOI8-R
ISO-8859-5
モチーフ2.3 :
この場合、XFontSet
実際に必要以上のフォントが含まれている間、何もレンダリングされません。
これは、Motif 2.1.0と比較したリグレッションです(バージョン2.1.30以降が影響を受けます)。
ru_RU.UTF-8
ロケールのサポート
en_US.UTF-8
ロケールで取得した参照レンダリング:
XmString
8 ビット モードでテストされた 3 つの工場に加えて、XmStringGenerate(XmMULTIBYTE_TEXT)
追加でテストされます。XFontSet
次のエントリが含まれています (実際にはXFontStruct
、Monotype Arial フォントの可能なすべてのエントリ)。
今、ru_RU.UTF-8
ロケールで同じ:
インスタンスに必要なすべてのエントリが含まれているXFontStruct
にもかかわらず、間違ったものが使用されているようです。XFontSet
XFontStruct
更新:ru_RU.UTF-8
ロケールでは、LANG
環境変数が原因であることがわかります (空のLANG
orをLANG=C
使用してLANG=en_US.UTF-8
、キリル文字が正しく表示されますLC_ALL
) ru_RU.UTF-8
。
これは、Motif 2.2と比較したリグレッションです(バージョン2.3.0以降が影響を受けます)。
c - ScrolledWindow 内で RowColumn ウィジェットを使用する際の Motif 1.2 X11
私は Motif クライアントを持っています (Linux で実行しています)。クライアントは、ボタンの配列を表形式でユーザーに表示します。明らかな選択は、RowColumn ウィジェットです。ボタンの配列の周りにスクロールバーが必要なので、ScrolledWidget を作成し、RowColumn ウィジェットを内部に配置しました。また、Row 列ウィジェットの周りに Frame ウィジェットを配置して、目立つようにします。
さて、問題です。Quit のウィジェットの配列の外側にボタンを配置したいと思います。問題は、ボタンが表示されないことです。これは実行可能ですか?
これを行うためのサンプルコードは大歓迎です。
java - JSplitPane LookAndFeel Motif ボタンまたはサムの削減
私はこの質問を見る前に尋ねた:
JSplitPane setOneTouchExpandable(true) は表示されません
コードをテストしましたが、LookAndFeel が Motif の場合、JSplitPane をドラッグできません。
私はテストしていましたが、私の画像があります:
Linux:
マック:
質問:
JSplitPaneの両方(左右)の「三角形」のサイズを小さくするにはどうすればよいですか?
なぜJButtonがpreferredSiseを保持しないのですか?