diff --git a/archives/Accelerated_kde_for_KNOPPIX.php b/archives/Accelerated_kde_for_KNOPPIX.php index efdd14d..b023ff1 100644 --- a/archives/Accelerated_kde_for_KNOPPIX.php +++ b/archives/Accelerated_kde_for_KNOPPIX.php @@ -1,87 +1,87 @@
CDブートのKNOPPIXを前提として、KDE起動の最適化方法を考察する。
まず、結論として、knoppix起動用のstartkde-knoppixのようなものを用意し、
そちらを起動時に使用するようにするのが最適だと思われる。
以下では、スクリプト内部の解析を行う。
startkdeスクリプトで行われている最初の処理
# Check if a KDE session already is running if dcop kdesktop >/dev/null 2>&1; then echo "KDE seems to be already running on this display." xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null exit 1 fi
は、既にKDEが起動されているかどうかをテストしているので、KNOPPIXでは必要ない処理だと思われる。
念のためカットできないと思われる。また、バックグラウンドでの実行もできないだろう。
次の
if test -z "$XDM_MANAGED" || echo "$XDM_MANAGED" | grep ",auto" > /dev/null; then xsetroot -solid "#C0C0C0" fi
もカットできないし、おそらくすぐ実行が終わるので、カットする必要がない。
ブートシーケンスの始めで、kdehomeの設定処理があるが、$HOME/.kdeに決めうちに変更して問題ないだろう。
その後、フォントディレクトリの初期化処理が走る。
# Activate the kde font directories. # # There are 4 directories that may be used for supplying fonts for KDE. ... (中略)... # Only do usr_fdir and usr_odir if they are *not* listed in fontpaths test -d "$sys_odir" && xset +fp "$sys_odir" test $do_usr_odir -eq 1 && test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") test $do_usr_fdir -eq 1 && test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") test -d "$sys_fdir" && xset fp+ "$sys_fdir" ... (中略)... # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap if test -n "$GS_LIB" ; then GS_LIB=$usr_fdir:$GS_LIB export GS_LIB else GS_LIB=$usr_fdir export GS_LIB fi
ここは、おそらくKNOPPIXの場合は環境特有の値を使って処理を簡素化できるだろう。
今後USBメモリからのブートような形で環境を変更できるようになる場合には、
ブートオプションの対応で良いと思う(フォントを追加する人は少ないだろう)。
その少し後にある、以下のkpersonilzerの実行処理は、削っても問題ないだろう。
# run KPersonalizer before the session, if this is the first login if kreadconfig --file kpersonalizerrc --group General --key FirstLogin --default true --type bool; then # start only dcopserver, don't start whole kdeinit (takes too long) echo 'startkde: Running kpersonalizer...' 1>&2 dcopserver kwin --lock & kpersonalizer --before-session # handle kpersonalizer restarts (language change) while test $? -eq 1; do kpersonalizer --r --before-session done dcopserver_shutdown # shutdown will also make kwin quit, give it time to do so sleep 1 fi
ここでカットできる部分は、ざっと見た限り存在しない。
簡素化するためには、kdeinit等のソースに手を入れる必要がある。
周辺機器の設定をしているところを並列にするなどできれば、 それだけで速くなるとは思うが……。
KDEで日本語を入力することができません。
どのようにすれば解決できるでしょうか?
日本語を入力する場合には、kinput2などのXIMサーバが起動されている必要があります。
また、環境変数 $LANGを"ja_JP.utf8"(古い環境では"ja_JP.eucJP")にセットし、環境変数 $XMODIFIERSを
"@im=kinput2"(kinput2を使用する場合)にセットする必要があります。
これらの環境変数の設定は、ホームディレクトリにある".bashrc"(bashの場合)や
".cshrc"(tcshの場合)で行うようにすると楽です。
(bashの例) LANG=ja_JP.eucJP export LANG XMODIFIERS="@im=kinput2" export XMODIFIERS
kinput2などが起動していて、環境変数もセットされているのに
日本語の入力ができない場合、qtconfigを起動して、「Interface」という
タブを開き、一番下の「XIM Input Style」をOn The Spot(またはOver The Spot)にすると
ちゃんと入力できるようになるはずです。
ドメインを構築している環境にてKDE 3.0 と 3.5 と異なるコンピュータでデスクトップを共有しているのですがゴミ箱の共有がうまくいきません。両方の環境にて同じゴミ箱を使用するのにはどうしたらいいのでしょうか。
RH7.1(seawolf)AlphaでのKdevelop1.4から4へのバージョンアップはできますか?
インストール直後のrootパスワードが、わかりません。 Admin mode に入れません。
ウィンドウを動かそうとするとKDEがフリーズしてしまいます。
KDEコントロールセンターを起動し、「ウィンドウの挙動」の「移動」タブをクリックし、
「移動中のウィンドウの内容を表示」と「サイズ変更中のウィンドウの内容を表示」
にチェックを入れることで、この問題は解消できます。
KDE-3.1.4では直っているはずです:-)
http://bugs.kde.org/show_bug.cgi?id=44881#c13 http://google.co.jp/
Netscape、Emacs、xmmsなどの一部のアプリケーションのメニューが
文字化けしてしまって、読むことができません。
まず、KDEコントロールセンターから「色」という設定項目を探し、
「非KDEアプリケーションにも色設定を適用」のチェックを外してみて下さい。
また、ホームディレクトリに"gtkrc-kde"というファイルがある場合は、
削除、または、リネームしてみてください。
それでも解消されない場合は、ホームディレクトリに".gtkrc"というファイルを
style "gtk-default-ja" { fontset = "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1,? -ricoh-ms mincho-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,? -misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,? *-r-*" } class "GtkWidget" style "gtk-default-ja"
という内容で作成することで解消されるはずです。
Konsoleを使っていると画面にごみが残ってしまいます。
現状では解決の見込みが少ないです。 kterm, krxvt, mlterm等を使うのが賢明です。
是非解決を訴えましょう。 voteをお願いします。 http://bugs.kde.org/show_bug.cgi?id=41744
これも関係していると思います。
http://bugs.kde.org/show_bug.cgi?id=59162
3.1.3では直っているはずですが。Gentooではまだでてないので、未確認です。(Ken)
3.1.3になって横スクロールバーが不必要な時に出るのですが。
バグとして報告されており、対処するためのパッチが出ています。
また、CVSでは解決されています。
http://bugs.kde.org/show_bug.cgi?id=61730
googleで検索を行うと、検索結果の上の方に表示される "ウェブ"、"イメージ"、"グループ"、"ディレクトリ"の表示が つぶれた感じに表示されてしまう。
bus.kde.orgに報告されていて、CVSでは直っています。
<table width="1%"><tr><td>日本語</td></tr></table>
などのときに、テーブル内の文字の幅がゼロになっているのが原因らしいです。
CSSを設定することによってこの現象を回避できます。(対症療法ですが・・・)
body > table > tr > td > center { display: inline; }
このような内容のCSSファイルを用意して、Konqueror設定パネルで
上記のファイルをユーザ定義スタイルシートとして指定します。
http://forums.gentoo.org/viewtopic.php?p=346652#346652
KDE3.1.1 の環境なのですが、googleの検索ページhttp://www.google.co.jp を表示させた直後にSHIFT+Space で日本語入力のモードになりません。英数字の入力を1文字でも行えば、日本語入力モードになります。なぜでしょうか?
ちなみに、Excite, yahoo等ではおこりません。
入力そのものができないのは、入力スタイルがOn The Spotとなっているためでしょう。Over The Spotに変更すれば、入力ができるようになるはずです。ただ、その場合も確定前の文字列(preedit)が表示されないため、まともに使うためには英数字を入力する必要があります。
Mozillaなどの他のブラウザで問題がないことから、このような挙動となっているのは、KDE側の問題ではないかと思われます。具体的には、KDEのHTMLレンダリングエンジンであるKHTMLか、Konqueror自体の問題ではないかと考えられます。関連するバグがすでにレポートされています(Bug52685)。
なお、入力スタイルの変更は、FAQ/1を参考にしてください。
MS社のVisualStudio?では、メモリ領域のダンプが出来ますが、 KDevelopで同じことは出来ますか?
WEBサイトのファイルを保存しようとすると、保存はしますが、そのファイルがどこに保存されたかが解りません。しかもなぜかファイル名も変わっているみたいなので検索する名前もわかりません。どなたか回答していただければ幸いです。
このPukiWikiでは、QtおよびKDEのインストールについての情報、様々なアプリケーションについての説明、FAQ、Tipsや、開発に関するドキュメントなどを扱っています。
各ページの編集・新規ページの追加とも、自由に行ってください。 ただし、初めて"新規ページの作成"を行う際には、一度こちらをご覧ください。 なお、このJKUG Wikiの運営についてはこちらをご覧下さい。
KBabel は古いアプリケーションです。Lokalize を使用してください。
kdesdk?
本家ページ : http://i18n.kde.org/tools/kbabel/ …はもうリンク切れのようです…。
ここではKBabelの最低限の設定と使用法について説明します。
Debianユーザの方は、こちらも参考にしてください。
KBabelはKDEの翻訳チームが使用している翻訳補助ツールです。検索機能、使い勝手、UTF8エンコーディング、エラーチェック機能などの面において、強力な機能を持っています。KDEだけでなく他の翻訳プロジェクトの人にも有用なツールでしょう。
ここではKBabel-1.0.2(KDE3.1.xに含まれているもの)を対象として説明します。KBabelはkdesdkに含まれていますので、通常は、ディストリビュータで配布されているパッケージをインストールするのが良いでしょう。もし自分でコンパイルしてインストール場合には、libdb-4.xなどが必要になります。
コンパイル手順は以下の通りです。 ./configure --prefix=$KDEDIR make su make install
KBabelを立ち上げると魚のスプラッシュスクリーンの後にKBabelが立ち上がります。
初回立ち上げ時は、下の画像のような設定の入力を求めるダイアログが出て来ます。
「OK」を押すと次の画面になります。
ここには自分の名前とメールアドレスを入力して下さい。「ローカルな名前」もローマ字のままで問題ないでしょう。
そのほかの情報は上の画面を参考にして下さい。
個人情報の他の設定項目としては「編集」、「保存」、「スペルチェック」、「差異表示(Diff)」、「ソース」、「その他」があります。
そのうち「編集」、「スペルチェック」、「差異表示(Diff)」、「ソース」、「その他」に関しては特に変更する必要はないでしょう。
次に「保存」の設定です。ここでは、「一般」についての設定をします。
その他の「ヘッダ」と「著作権表示」については、変更する必要はないでしょう。
ここで重要なのはエンコーディングです。これは必ずUTF8にして下さい。KDE3.xではほとんどの文字を
内部でUTF8で扱っています。メッセージカタログもja.poは全てUTF8になっています。KBabelで
メッセージカタログを扱う分にはほとんど意識しないで済むので、ここは必ずUTF8にして下さい。
次に「検索」の設定を行います。
検索は、翻訳中にデータベース(3種類ありますがこれの設定は後で説明します)の中から検索してきて
操作画面の右下部に表示してくれるという機能です。「自動的に検索を開始」にチェックを入れておくと、
次のメッセージに移動したときに自動的に検索を開始して表示してくれます。
ちなみに3種類というのは以下の通りです。
相当遅いマシンならともかく、普通のマシンなら数分でインデックスを作成できるので
翻訳データベースを使用するのがよいでしょう。
設定については、辞書の設定のところで説明します。
以上で本体の設定は終了です。なおこれらはメニューバーの「設定」→「KBabelの設定」から再設定できます。
まず、メニューバーの「ツール」→「カタログマネージャ」で、カタログマネージャを起動します。
すると、カタログマネージャの起動とともに、下のようなダイアログが出てきます。
「OK」を押し、カタログマネージャのメニューバーから「設定」→「カタログマネージャの設定」を選ぶと、次の画面になります。
まずテンプレートと日本語メッセージファイルをここからダウンロードします。
基本的に、最新のものを選んでくればOKです。
(ダウンロードするものは、「kde-i18n-ja」と「kde-i18n-templates」です。)
そして展開したディレクトリをそれぞれ上に指定します。
例えば/usr/local/extend/kde-i18nというディレクトリでこれらのファイルを
展開した場合は上の画面のようにします。
そして「OK」をクリックすると、指定したディレクトリが存在すれば下の画面のように、
翻訳の進捗状況の情報が生成されます。
続いては、辞書の設定です。
辞書の設定はメニューバーの「設定」→「辞書の設定」で行います。
・翻訳データベースの設定
「辞書の設定」から「翻訳データベース」を選択すると設定ダイアログが現れます。
オリジナル : http://developer.kde.org/documentation/library/kdeqt/kde3arch/resources.html
標準リソースディレクトリへのアクセス
KDEは、データが実際どこにあるのかということを気にしないで、アプリケーションがインストールしたファイルにアクセスするためのいくつかの方法を提供しています。
またKDEはユーザー(ほとんどの場合は管理者ですが)が適切と思う場所にファイルを移動するのを許可する為に、異なるサーチパスが割り当てられている異なるリソースタイプのリストを提供しています。
実行ファイルを探すためのPATH環境変数やman pageを探すためのMANPATH環境変数の事を訊いたことが有るでしょう。
でもmanにPATHの中でmanpageを探すようには期待しないでしょう。
この概念に似たような感じで、KDEは、特定のリソースのためにパスを加えることをシンプルにするために、サーチパスを区別しています。
これによって他のリソースを探して不必要に遅くなったり、すべてのものをひとつのディレクトリに入れる必要が無くなります。
KDEが提供しているリソースのタイプは、
KDEのための開発ツール(例えばKDevelop)によって作られたconfigureが生成したMakefileのaliasにもこれらすべてが存在しています。
KStandardDirs?
基本的なサービスを提供するので、このクラスはkdelibsの中でも最も中心的なクラスです。
このクラスはユーザーのハードディスクのどこにファイルが有るのかを分かっています。ユーザとアプリケーションの両者に対して出来る限り実際のファイルのありかをtransparentにするためです。
これによってアプリケーションからの全ての情報をカプセル化し、またアプリケーションは常にリソースタイプ(例:apps)やファイルネーム(例:Home.desktop)でファイルにアクセスします。
理想的なのは、アプリケーションが、ファイルがどこにあるのかを配慮せず、この能力を用いるために作業をKStandardDirs?::findResource("apps", "Home.desktop")に任せることです。
KStandartDir?の主要な考えは、ファイルの前につくプレフィックスはいくつかあるということです。
プレフィックスとは、例えばユーザーがkdelibsをインストールした場所であったり、アプリケーションがインストールされた場所であったり、$HOME/.kdeであったりします。実際にはもっとあるでしょう。
こういったプレフィックスの後には、特定のリソースタイプがみつかるであろうサフィックスがよく定義されます。
例えばツールバーアイコンならば share/toolbarやshare/apps/<appname>/picsでしょう。
だから、ファイルを探すためのアルゴリズムは基本的には指定されたサフィックスにプレフィックスをつなげて、ファイルがあるかどうかを調べるということです。
複雑な事を言うと、前述のステップを踏むことなくKStandardDir?が調べるための絶対パスも登録できます。
これはユーザーが例えば$HOME/.kde以外のディレクトリにアイコンを置く等、特定のディレクトリにファイルをおきたい場合に有功です。
On the usage of locate and locateLocal
locateとlocateLocalは、両方ともKStandartDir?を出来る限りシンプルに活用するために便利な機能です。
もちろんこれを使わずにKStandartDir?のパワーを充分に用いることもできます。
通常のKDEアプリケーションは次の3つの内、どれか1つの方法を用いてリソースファイルをしようします。
1
この場合、リソースファイルは読み込み専用です。
システムではデフォルトの設定を提供しますが、ユーザーは.kdeディレクトリでこのデフォルトを上書きできます。
// Code example myFile = locate("appdata", "groups.lst") myData = myReadGroups(myFile);
2
この場合リソースファイルは読み込みも書き込みもできます。
ユーザーが指定しない場合、システムのデフォルトが用いられます。
この時、リソースファイルは常に.kdeディレクトリに書き込まれます。
// Code example myFile = locate("appdata", "groups.lst") myData = myReadGroups(myFile); ... doSomething(myData); ... myFile = locateLocal("appdata", "groups.lst"); myWriteGroups(myFile, myData);
3 上と同じですが、システムのデフォルトは使われません。
// Code example myFile = locateLocal("appdata", "groups.lst"); myData = myReadGroups(myFile); ... doSomething(myData); ... myFile = locateLocal("appdata", "groups.lst"); myWriteGroups(myFile, myData);diff --git a/archives/KDE%203.0%20%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3%2F%B3%AB%C8%AF%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF%2F%A5%E9%A5%A4%A.php b/archives/KDE%203.0%20%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3%2F%B3%AB%C8%AF%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF%2F%A5%E9%A5%A4%A.php index 8741a40..884dbab 100644 --- a/archives/KDE%203.0%20%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3%2F%B3%AB%C8%AF%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF%2F%A5%E9%A5%A4%A.php +++ b/archives/KDE%203.0%20%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3%2F%B3%AB%C8%AF%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF%2F%A5%E9%A5%A4%A.php @@ -1,52 +1,52 @@
オリジナル : http://techbase.kde.org/Development/Architecture/KDE3/Library_Structure
KDEライブラリ構造の概観
グループ化されたクラス
オリジナル : http://developer.kde.org/documentation/library/kdeqt/kde3arch/khtml/index.html *1
※古すぎるのであまり参考にはならないかと思われます。
KHTML - KDE's HTML library
概観
KHTMLはDOM,Java,JavaScript?,Cascading Style Sheets(CSS)に対応したXML/HTML4準拠のHTMLライブラリです。
現在のKHTMLができることについての概観をここで得られます。
Small example
KHTMLをプログラム中で使うのは非常に簡単です。
下の例はすでにwebブラウズが可能なアプリケーションを示しています。
#コード例が古かったのでコチラを見て下さい。
この例はすでにwebにアクセスできる機能的なブラウザを示しています。(リモートファイルにアクセスするためのkio_httpが必要ですが)
testkhtmlでhttp://kde.orgを試して見て下さい。ウィジットにはKDEのホームページが表示されるでしょう。
Document Object Model (DOM)
KHTMLはほとんど完璧なDom Level1, Level2の実装を提供しています。
DOMは文書のデータを保持するために使われる内部的なクラスです。
DOMにアクセスするクラスはデータ保持の為にrefcounting schemeを用います。
よってDOMはメモリ管理を行ないます。
使う方は、文書のパーツにアクセスするためには、DOM header fileに定義されているクラスを使用するだけでよいのです。
ポインタを使わない限り、メモリリークが起きることはないでしょう。(ライブラリのバグを覗いてはね。。。;-)
表示されている文書には KHTMLWidget::document() 関数を用いて文書のどの部分にでも簡単にアクセスできます。
Java
有難い事にRichard Mooreによって、KHTMLはJava appletを表示できるようになりました。
Javaは標準では有効になっていませんが、メソッドを使って有効にできます。
CLASSPATHは以下のように設定して下さい。
CLASSPATH=$KDEDIR/share/apps/kjava/kjava-classes.zip:$JDK_DIR/lib
JDKをインストールすることが必要です。JDK-1.1.7では試しましたが、Kaffeや他のバージョンのJDKで動くかはわかりません。
JavaScript? (ECMA-Script)
JavaScript?サポートはECMAScript Language specification ECMA-262 3rd edition準拠です。
これはJavaScript1.5相当です。
Cascading Style Sheets (CSS)
Cascading style sheets 2.1 はほとんどサポートされています。
オリジナル:KDE 3.0 architecture
開発フレームワーク
デスクトップフレームワーク
マルチメディアフレームワーク
コンポーネントアーキテクチャ
KOfficeアーキテクチャ
プロトコル
開発ツール
Development HOWTOs
元ネタ : http://kde.ground.cz/tiki-index.php?page=Environment+Variables
KDEに関連するURLを張りつけるページです。
void startJob() { SomeJob* job = KIO::operation(url); QObject::connect(job, SIGNAL(result(KIO::Job *)), this, SLOT(slotJobFinished(KIO::Job *))); } void slotJobFinished(KIO::Job *job) { if( job->error() ){ job->showErrorDialog(); return; } }
KIO::operationの箇所には自分の行いたい処理を記述します。API参照
#ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename)
簡単にコードの解説を。
kiosample::kiosample() : KMainWindow( 0, "kiosample" ) { // set the shell's ui resource file setXMLFile("kiosampleui.rc"); setupGUI(); isDownloading = false; } kiosample::~kiosample() { }
コンストラクタ、デストラクタです。 デストラクタで何の処理も行っていないのは、下でnewするオブジェクト(QBuffer* downloadDateは除く)はすべてQOBjectを継承したクラスで、親を持っているので終了時にQtの機能としていもづる式にdeleteするためです。 参照:Qt/KDEでのdeleteの挙動
void kiosample::setupGUI() { QVBox* mainVBox = new QVBox(this); QHBox* srcHBox = new QHBox(mainVBox); QLabel* srcLabel = new QLabel("Source URL", srcHBox); srcEdit = new KLineEdit(srcHBox); QHBox* targetHBox = new QHBox(mainVBox); QLabel* targetLabel = new QLabel("Target URL", targetHBox); targetEdit = new KURLRequester(targetHBox); startGetButton = new KPushButton("Start Getting!", mainVBox); QObject::connect(startGetButton, SIGNAL(clicked()), this, SLOT(slotGetStart()) ); setCentralWidget(mainVBox); }
このメソッドでは各種のGUI部品を作っています。 レイアウトに関しては、LabelとEditを横にならべ(QHBox)、そしてそれらを縦に並べる(QVBox)という構成になっています。 またボタンがクリックされるとslotGetStart?()を呼び出すようにSignal&Slotを設定します。
void kiosample::slotGetStart() { if (srcEdit->text().isEmpty() || targetEdit->url().isEmpty()) return; if (isDownloading) return; //ダウンロード中 kdDebug() << "kiosample : slotGetStart()" << endl; downloadData = new QBuffer; downloadData->open(IO_WriteOnly); /* ダウンロード開始 */ KIO::TransferJob* job = KIO::get(KURL(srcEdit->text()), false, false); QObject::connect(job, SIGNAL(data(KIO::Job *, const QByteArray &)), this, SLOT(slotData(KIO::Job *, const QByteArray &))); QObject::connect(job, SIGNAL(result(KIO::Job *)), this, SLOT(slotJobFinished(KIO::Job *))); isDownloading = true; }
ここが肝心のKIO::getを呼び出しているところです。 まずAPIを参照してTransferJob?を作り、そのjobが発信するsignalと下で説明するslotを接続しています。 また、job->addMetaData?("UserAgent?", "kiosample")等とすることによってjobに付加情報も与えることができます。
void kiosample::slotData(KIO::Job *job, const QByteArray& data) { if(data.isEmpty()) return; /* *データをバッファに一時保存 *slotDataは複数回呼ばれる可能性が有ります */ downloadData->writeBlock(data.data(), data.size()); }
KIO::getが他のoperationと違う点は、データを受け取って来るという点です。 そしてそのデータを受け取っている部分がここです。 slotDataは先程jobのdataシグナルと結びつけました。 また、この部分は複数回呼ばれる可能性があるため、QBufferオブジェクトに一時的に受け取ったデータを書き込んでいます。
void kiosample::slotJobFinished(KIO::Job *job) { if( job->error() ){ job->showErrorDialog(); isDownloading = false; return; } //ファイルに書き込み QFile file(targetEdit->url()); file.open(IO_WriteOnly); file.writeBlock(downloadData->buffer()); //一時データを削除 delete downloadData; downloadData = 0; isDownloading = false; KMessageBox::information(this, "Download Finished!"); }
jobが処理を終了したというシグナルを発するとこのスロットが呼ばれます。(上で呼ばれるようにしました) まずはエラーが起きていないかどうかをチェックし、それから先程受け取ったデータをファイルに書き込みます。 また、一時データをnewしたことを忘れないで下さい。newしたものは必ずdeleteしなければいけません。QObjectの子クラス以外は。
元記事:"Kastle 2003: What to expect from Qt 4"
間違いを見つけたら、どんどん修正しちゃってください。
また、直接編集しにくい場合には、一番下のコメント投稿機能を利用してみてください。
日曜日の午後、Qtの開発ディレクターであるMatthias Ettrich氏は、Nové Hradyで開催されたKDE Developers' Conference 2003において、企業(Trolltech)のプレゼンテーションとは別に、the KDE/FreeQt FoundationとQtの開発におけるのこれまでとQt4に対する展望について話をする機会を与えられた。Qt4は、2004年にリリースされる予定であり、スタートアップや実行時におけるパフォーマンスの向上、より高い柔軟性と生産性、そして、学習プロセスの簡素化のための変更などが提供されるはずです。Matthias氏の自作のプレゼンテーションプログラムを使って表示されたスライドショーからのより多くの引用を読んで下さい。
Qt4は、大概は、検索や置換や「互換モード」といったコンパイルスイッチをほとんど使うことなく、ソースコード互換性が維持されるように試みられています。より多くのポーティングは、メタオブジェクトシステムを直接使うようなスタイルとコードにとって必須でしょう。
シンボルの削減、データの読み書きを減らし、静的な初期化をより僅かにすることで、スタートアップのパフォーマンスの向上が達成されるでしょう。また、mallocの回数の低下、より速くそしてさらに最適化されたツールクラス、メモリ消費の減少によって実行時のパフォーマンスが向上し、今日のデスクトップコンピュータよりも遅く、少ないメモリしか積んでないような組み込みデバイス上でもQt4が動作することが可能になるでしょう。
これらの発言を確固としたものにするために、Matthias氏は、Qt4でコンパイルするために必要なだけの変更をし、ポーティングしたQtデザイナーについて、いくつかの数字を提供しました。その内容は次の通りです。libqtのサイズは5%減少し、Qtデザイナーのリロケーションの数は30%減少し、mallocの回数は51%減少し、メモリの使用量は15%減少しました。また、正確に計ったQtデザイナーの起動時間は、18%減少しました。
Qt4は、1つのライブラリにはならず、より細かい粒度を可能とするよう、複数のライブラリによって構成されるようになります。例えば、以下の通り。
Qt4の新機能で、現時点で公開されているものの一部としては、以下のものがあります。
軽くて安全で使いやすい値ベースのコンテナ・ツールのクラスの、一貫した新しいセットをQt4は提供するでしょう。また、このコンテナ・ツールのクラスは、明示的に分けられ、スピードとメモリの使い方双方の点で高度に最適化されているでしょう。これを使うことは、Qt3.xやSTLの場合と比較されるようなわずかなコードまで拡大されていくでしょう。STLは、よりQtと共に使える状態になっているでしょう。
QStringとQByteArray?は、APIの改善の他に、パフォーマンスとメモリ使用の点について最適化されています。(そのAPIの改善における)重要な変更は、isNull()が無くなり、互換モードでのみ用意されます。latin1()のような関数は、常に妥当な値を返し、nullポインタを返すことは無くなるでしょう。この変更は、KDE開発者の間での議論となり反感をかいましたが、Matthias氏は、isEmpty()関数と演算子"!()"が存在していることを指摘しました。
Qt4は、来年中に最終リリース前の短いパブリックベータの期間を経て、1年以内に利用できるでしょう。これに加えて、Matthias氏がKDE開発者に対して質問をしました。その内容は、「KDEはQt4に移行するのか? 移行するとすればいつか?」、「KDEが移行するとき誰がどこで最初のポーティングを行うのか?」、「KDEのアーキテクチャのいくつかを書き直す機会としても使いますか?」といったものでした。多くのKDE開発者からの返答としては、hackfest週間において、KDEに必要とされていて長期間見あたらないと分かっているような追加されたクラスや機能について、Trolltech開発者にたずねるというものでしょう。
直接編集しにくい場合には、こちらからコメントを投稿してください。
コメントのリスト
投稿者 | サマリ | 投稿日 |
---|---|---|
Daisuke Kameda | コメント投稿のテスト | 2003-08-31 (日) 16:11:53 |
kdebase?
本家サイト : http://www.konqueror.org/
ファイルマネージャとしてもブラウザとしても動作します。
silent機能を持っており、常にバックグラウンドで待機させることができます。これによって起動時間が格段に速くなります。
また待機させる数はKControlで設定することができます。(もちろん切ることもできます)
検索URI http://www2.alc.co.jp/ejr/index.php?word_in=\{@}&word_in2=&word_in3=*
#!/bin/sh kfmclient openURL $@というシェルスクリプトを作ってコマンドパスに加えると便利です。
Konstruct-JPはKonstructに日本語パッチを付属して配布するものです。
現在、KDE/Qt関連のパッチが非常に散乱した状態に有る上、パッチを当ててまで問題を直そうとするユーザーは少ないと思われます。
そこでインストールする段階から組込んでおけば有る程度はパッチを作った人達の努力も報われるのではと思った次第です。
御意見やこのパッチも加えたらいいんじゃねえの等有りましたら是非寄せて頂きたいと思います。
対象パッケージ | パッチ名 | 内容 |
今(3.2.1リリース)は特に当てるべきパッチが存在しません。 もし有りましたらコメント下さい。
3つの作業をするだけです。
また、パッチは↓の様に、 work/packagename-versinon/path/to/file という様に編集する必要が有ります。
--- work/kdelibs-3.2.0/khtml/rendering/bidi.cpp 2004-02-05 13:44:14.000000000 +0900 +++ tmp/kdelibs-3.2.0.new/khtml/rendering/bidi.cpp 2004-02-05 13:48:49.000000000 +0900
KonstructはGARを用いたKDEのビルド補助ツールです。
cd meta/kde;make installというコマンドだけでKDE全体をインストールできます。
現在のversionは次の通りです。
stable版 | 3.3.2 |
cd meta/kde;make install cd i18n/kde-i18n-ja;make install
export KDEDIR=~/kde$version export QTDIR=~/kde$version export LD_LIBRARY_PATH=~/kde$version/lib export PATH=~/kde$version/bin:$PATH
make installを実行するとringサーバーや他の場所からtar玉、そしてpatchのダウンロードが始まり、自動的にビルドが始まります。
他に入れたい物があればディレクトリを探索しましょう。一番下にも一部のせています。 以上。楽でしょう?
(注)kde$versionとなっている所はkde3.1等と任意に解釈して下さい。
"Konstruct"はKDEとその関連アプリケーションのインストールを補助するビルドシステムです。
ソースのtarballをダウンロードし、状態をチェックし、解凍し、パッチをあて、configureを実行し、ビルドを行ない、そしてインストールします。
KDEを完全にインストールするには、"cd meta/kde;make install"とするだけという簡単さです。
オプションとしてKOffice?やKDevelopそしてQuanta?といったソフトウェアも例えばkofficeの場合"cd apps/koffice; make install"と打つだけでインストールすることができます。
デフォルトではKonstcurtは"~/kde$version"ディレクトリにソフトウェアをインストールします。
これは、インストールするのにルート権限が必要なく、システムを汚すことも無く、Konstructを用いてインストールされたKDEは他のKDEには影響しないということです。
↓のテーブルは何MBのtarballがダウンロードされるかを示しています:
Directory/Target | Size | Description -------------------+---------+--------------------------------------------- kde/kdebase | 40MB | ブラウザ、エディタ、ターミナル等 meta/kmail-crypto | 48MB | [[kdenetwork]]とcryptoライブラリ meta/kde | 105MB | "KDE $version"に属する全てのパッケージ meta/everything | 177MB | 本体に加えたすべてのアプリケーション。↓の表を見て下さい。
↓のテーブルはmeta/everythingに含まれない物を示しています。
Directory/Target | Reason ------------------------+--------------------------------------------------- apps-unstable/ | Development versions, conflicting with apps/ i18n/ | Nobody needs everything, just pick your language kde/kdebindings | Only needed for developing with non-C++ language
すでにQT3.1をインストールしている場合は、環境変数 HAVE_QT_3_1_INSTALLED("設定"を見て下さい)を設定してください。上記の表からダウンロードすべきMBが12MBずつ引かれます。(falseではなくコメントアウトして下さい。)
母国語にローカライズされたKDEをインストールしたいなら、i18n/ディレクトリを覗き、母国語のディレクトリに入って"make install"としてください。KOfficeをローカライズするには、"i18n/koffice-i18n-<language-code>"パッケージをインストールしてください。
"Konstruct"はStephan Binner(binner@kde.org)によってメンテナンスされています。 またNick Moffitt(http://www.lnx-bbc.org/garchitecture.html)によるGAR portsシステムに依っており、Jeff WaughによるGARNOME(http://www.gnome.org/~jdub/garnome/)に刺激を受けて開発されました。
GNU tool(gcc, GNU make, flex, BSD yacc, gettext, patch etc.)とgzip and bzip2, md5sum, patch, wgetが必要です。
他の基本的なライブラリや、追加機能を可能にするライブラリは"Konstruct"には含まれていません。
http://www.kde.org/info/requirements/3.1.htmlに示されています。 "-dev"や"-devel"に含まれるヘッダファイルをインストールしなければならないことに注意して下さい。
好きなように gar.conf.mk を変更してください。便利なオプションは、:
GARCHIVEDIR すでにソースファイルをダウンロードしている場合はそのディレクトリを指定して下さい。 prefix どこにKDEをインストールするか。デフォルトでは"~/kde$VERSION/"です。 OWN_CFLAGS コンパイラフラグを設定します。 HAVE_QT_3_1_INSTALLED (moc, uic, headerを含む)Qt3.1をインストールしているかどうかを 設定します。Qtのインストールを省くことができます。 BUILD_CLEAN ディスクの空き容量が少ない場合はセットして下さい。
まずインターネットに接続できることが必要です。
次にビルドしたいターゲットを選び、それが定義されたディレクトリに移動して下さい。(例えば kdebase? なら "cd kde/kdebase")
そして次に紹介するコマンドを入力して下さい。通常は"make install"と入力すればよいです。
それぞれのパッケージにGARシステムは7つのMakeターゲットを提供しています。
command | description |
fetch | パッケージをコンパイルするのに必要なすべてのファイルとパッチをダウンロードします。通常はtarball一つだけですが、たまにパッチが伴うことがあります。 |
checksum | md5sumを使用してダウンロードしたファイルがメンテナーのものと適合するかどうかを確かめます。 |
extract | 必要なすべてのソースファイルが作業ディレクトリにあるかどうかを確かめます。 |
patch | パッチ(3rdパーティーのパッチもしくはメンテナーのパッチ)を当てる必要がある場合はパッチを当てます。 |
configure | パッケージをconfigureします。一般的にはautoconfやImake等を実行します。 |
build | 通常のコンパイル過程を行います。 |
install | 適切な場所にファイルを配置し、必要なすべての処理を仕上げます。 |
インストール後はKDEのバイナリとライブラリをシステムに探させるためにいくつかの変数を設定します。Bashの例:
export QTDIR=~/kde$version export KDEDIRS=~/kde$version export LD_LIBRARY_PATH=~/kde$version/lib export PATH=~/kde$version/bin:$PATH
KDEHOMEも設定してください。例えば"export KDEHOME=~/.kdetest"とすると設定をこのディレクトリに保存するようになるので、デフォルトの~/.kdeディレクトリには影響を及ぼしません。
KDEをスタートするには"startkde"を実行します。ほとんどのディストリビューションではこれをWINDOWMANAGER変数にセットするとKDEがスタートします。
KDE 用のマルチメディアプレーヤー。
mplayer を利用しているため、以下のようなフォーマットを再生できる。
(まだまだある…)
当然、このアプリを利用するには mplayer のインストールが必要。
他の KDE 用のマルティメディアプレーヤーには kdemultimedia に標準で入っている noatun、mplayer に加え xine を利用する kmplayer などがある(kmplayer の利用には xine やmplayer に加え kdemultimedia のインストールが必要)。
kplayer ホームページ:http://kplayer.sourceforge.net/
mplayer ホームページ:http://www.MPlayerHQ.hu/homepage/
MPEG 等には特許の問題があるので、そのあたりは自己責任で…
Lokalize ホームページ : http://userbase.kde.org/Lokalize
日本語翻訳の方法 TranslationAssignments
ここではLokalizeの最低限の設定と使用法について説明します。
LokalizeはKDEの翻訳チームが使用しているKDE4向け(KDE3ではKBabelというツールを使用していました)の翻訳補助ツールです。翻訳メモリ(Translation Memory)による類似翻訳検索、編集の面において、強力な機能を持っています。翻訳メモリは共通フォーマットを使用しているため、PO/POTやXLIFFを使用している他の翻訳プロジェクトの人にも有用なツールでしょう。
"設定"→"Lokalizeを設定..."にて設定ダイアログを開きます。 翻訳者と言語の情報を以下のように入力して下さい。(MLはKdeveloper宛にして下さい)
"作成"で新たなTMを作成します。ここでのディレクトリはダウンロードした"trunk/l10n-support/ja/messages"の"messages"があるフォルダを指定します。
ここでもルートフォルダとしてダウンロードした"trunk/l10n-support/ja/messages"の"messages"があるフォルダを指定します。
このようにプロジェクトの設定を行った場合、以下のようにリアルタイムの翻訳状況が確認できるようになります。
以下のショートカットを覚えていくと作業がはかどります。
NetAccess?はKIOを簡単に使うためのインターフェースクラスです。 これを使う事によって一連のネットワーク処理を行う事ができます。 ただし、NetAccess?は同期的です。つまり、ネットワーク処理が終わるまで次の処理が行われません。この点は注意して下さい。
NetAccess?のリファレンス : http://developer.kde.org/documentation/library/cvs-api/kio/html/classKIO_1_1NetAccess.html
if (!NetAccess::download(KURL("http://www.kde.gr.jp/"), "~/index.html", this)) kDebug() << "download failed" << endl;
これは http://techbase.kde.org/Development/FAQs を訳したものです。かなり昔に訳されたものなので、最新版と同期がとれていない可能性があります。内容は近々本家 Wiki にコミットされ、このページ自体は削除される予定です。
新たに書かなければいけない KDE アプリケーションがたくさんあるのは間違いありません。しかし、 あなたの助けを必要とする既存の KDE アプリケーションがたくさんあるのも確かです。
どの分野に助けが必要か知るには、このページをチェックしてください。
新しいアプリケーションを書き始める前に、apps.kde.com や kde-devel@kde.org のメーリングリストで、誰かが似たようなプロジェクトをしていないかどうか確かるのは良いことです。
job list でオープンな仕事をチェックして下さい。あなたができる仕事は必ず1つはあるでしょう。
KOffice や Kdevelop などは高く評価されているにもかかわらず、開発者がとても少ないです。ですからそのあたりをチェックすると良いかも知れません。KDE のプロジェクトを手助けするのに、KDE のコアの開発者になる必要はりません。KDE は非常にうまくモジュール化されているので、全体のシステムがどうなっているか知らなくても、1つの分野を改良することができます。
また、kde-devel メーリングリストで、誰かがアプリケーション上での手助けを必要としているか質問することができます。
最新の KDE を使い必要とされていることを見付けて下さい。テーマジェネレータですか?konsole のスキーマエディタですか?ゲームの改良ですか?いつも小さな特徴が抜けているものです。実装してしまいましょう。
特定の分野に関してくわしかったり、興味があったりしますか?あなたの手助けが役に立つその分野に関連するアプリケーションがないかチェックして下さい。もしくはそのようなアプリを書いて下さい。KDE はおたく向けではないアプリケーションをもっと必要としています。
開発者のスキルを必要としない仕事がたくさんあります。KDE の促進のためにアプリケーションのレビューを書いたり(kde-promo メーリングリストを見て下さい)、ドキュメントチームを手伝ったり(i18n.kde.org/doc を見て下さい)、翻訳を手伝ったり(i18n.kde.orgを見て下さい)、新しく出てくるバグをフィルタリングするのを手伝って下さい(bugs.kde.org を見て下さい)。
ftp://ftp.kde.org/pub/kde/devel/konqi_sdk.tar.bz2 で入手可能です。
オリジナル : http://developer.kde.org/documentation/library/kdeqt/kde3arch/iconloader.html
Loading and installing icons in KDE
1. 初めに
アイコンはどのデスクトップ環境においても重要なユーザーインターフェースの一部です。
ユーザーの設定やビデオハードウェアが原因で、同じアイコンでも、異なったサイズや色深度で表示されます。
これを制御するために、アイコンを保存し、またアクセスする為の標準的な方法が開発されています。
2. Loading icons
アイコンローダーへのアクセス
アイコンはKIconLoader?クラスを用いてロードされます。
どのKDEアプリケーションもグローバルアイコンローダを所持しています。
このオブジェクトには下の様な方法でアクセスできます。
#include <kglobal.h> #include <kiconloader.h> KIconLoader *loader = KGlobal::iconLoader();
loadIconを使ってアイコンをロード
アイコンローダはアイコンをロードし、キャッシュを作り、エフェクトを加えます。 アイコンをロードするには、loadIconメソッドを使います。このように定義されています。
QPixmap loadIcon(QString name, int group, int size=0, int state=KIcon::DefaultState, QString *path_store=0L, bool canReturnNull=false);
上のように、多くの引数を取ります。最初の二つは最も重要です。
name | ロードするアイコンの名前。拡張子なしにiconの名前を指定しなければなりません。 |
group | アイコングループ。下で説明します. |
アイコングループ
アイコングル‐プという考え方はKDEのアイコンの仕組みのなかで重要な概念です。
アイコングループはそのアイコンがスクリーン上のどこで使用されるかを現しています。
KDEユーザーはアイコンのサイズと視覚効果を設定できるので、これは関連性があります。
アイコングループをアイコンローダーに渡すということは、実際にはどのアイコンの実体をロードするのかをローダーに指定するということになります。
グループの引数を取ることによって、アイコンローダーはKDEデスクトップ全体のアイコンの一貫した、そして設定可能な見映えを可能にします。
例 : ユーザーは32ピクセルのアイコンをメインツールバーに設定できます。
利用できるアイコングループは下の通りです。これら全てはKIconクラスで宣言されています。
なので実際にはこれらの前にKIcon::をつけて使用します。
Desktop | デスクトップ上のアイコン。ファイルマネージャーやそれに似た場所で使用されます。 |
Toolbar | 通常のツールバー用 |
MainToolbar? | メインツールバー用のアイコン。アプリケーションはいくつかのツールバーを持ちますが、これはメインツールバー用です。通常は外のツールバーよりも大きなアイコンを持ちます。 |
Small | 例えばポップアップメニューやリストビュー、ツリーリストで用いられるような様々な小アイコン |
User | アプリケーション特化のアイコンをロードするためのグループ。これについてはsection3を見て下さい。 |
Desktopグループで"kfind"アイコンをロードするには以下のようにします。
QPixmap icon; icon = loader->loadIcon("kfind", KIcon::Desktop);
外のパラメータも見てみましょう。
size | 特定のアイコングループに設定されたサイズを上書きします。影響はそのグループのアイコン全体に及びます。 |
state | アイコンの状態を示します。stateはKIcon::DefaultState?、KIcon::ActiveState?、KIcon::DisableState?のうちのどれかです。例えばツールバーのボタンは、マウスが上に有るときはactiveに、有効でない時はdisableに、それ以外のときはdefaultになっています。それぞれの状態は視覚的にも変ります。 |
path_store | アイコンがどこからロードされたか知りたければ、ここにQStringのポインタを渡すとアイコンのパスが保管されます。 |
canReturnNull? | アイコンが見付からなかった場合、結果はこのパラメータに依存します。canReturnNULLがtrueなら、null pixmapが返されます。そうでなければ"unknown"アイコンが返されます。 |
3.アイコンのインストール
アイコンは様々なサイズや色深度になります。これをテーマアイコンと呼ぶことにします。
決まった形で表示されるものをテーマ化されていないアイコンと呼ぶことにします。
デフォルトアイコンサイズ
標準のアイコンのサイズは以下の通りです。
40 Colors: 16x16 pixels 22x22 pixels 32x32 pixels
Truecolor: 22x22 pixels 32x32 pixels 48x48 pixels
それぞれのサイズのアイコンサイズはアイコングループに設定できることを覚えて置いてください。
アイコンコンテクスト
テーマアイコンはディレクトリに階層的に保存されます。それは1.色深度、2.サイズ、3.コンテキストによります。
コンテキストというのはKDEアイコン機構で導入された新しい概念です。
アイコンが意味しているものがコンテキストです。標準のコンテキストには次のようなものがあります。
action | 例えば"Open"や"Save"といったツールバー内のアクションを示します |
application | "kfind"のようなアプリケーションを示します |
device | "floppy"や"mount"といったデバイスに関係の有るものを示します |
filesystem | "directory"や"socket"、"trashcan"といったファイルシステムに関連するものを示します |
mimetype | "text/html"のようなmimetypeを表します |
コンテキストはアイコンを選ぶ際に非常に重要となります。
アプリケーションがユーザーにアイコンを選んでもらう時、例えばツールバーなら、KDEにインストールされたすべてのアイコンを表示するのはユーザーフレンドリーではありません。
-対照的に、ユーザーの為にに"action"アイコンだけを表示するのは非常に良いことです。