aboutsummaryrefslogtreecommitdiffstats
path: root/deskutils/fusenshi
diff options
context:
space:
mode:
Diffstat (limited to 'deskutils/fusenshi')
-rw-r--r--deskutils/fusenshi/Makefile5
-rw-r--r--deskutils/fusenshi/distinfo4
-rw-r--r--deskutils/fusenshi/files/patch-aa2852
-rw-r--r--deskutils/fusenshi/pkg-plist1
4 files changed, 5 insertions, 2857 deletions
diff --git a/deskutils/fusenshi/Makefile b/deskutils/fusenshi/Makefile
index 776ffc92bd97..6e43b455bea2 100644
--- a/deskutils/fusenshi/Makefile
+++ b/deskutils/fusenshi/Makefile
@@ -6,8 +6,7 @@
#
PORTNAME= fusenshi
-PORTVERSION= 0.7.0
-PORTREVISION= 2
+PORTVERSION= 0.7.1
CATEGORIES= deskutils
MASTER_SITES= http://www.ongs.co.jp/projects/fusenshi/
DISTNAME= ${PORTNAME}-${PORTVERSION}
@@ -18,7 +17,7 @@ COMMENT= A Post-it(R) like application with network support
USE_XLIB= yes
USE_GNOME= libxml2
-LIB_DEPENDS= gtkmm-2.0:${PORTSDIR}/x11-toolkits/gtk--2
+LIB_DEPENDS= gtkmm-2.4:${PORTSDIR}/x11-toolkits/gtkmm24
post-install:
@${STRIP_CMD} ${PREFIX}/bin/fusenshi
diff --git a/deskutils/fusenshi/distinfo b/deskutils/fusenshi/distinfo
index 0cbb8f909f86..02bd33a196b7 100644
--- a/deskutils/fusenshi/distinfo
+++ b/deskutils/fusenshi/distinfo
@@ -1,2 +1,2 @@
-MD5 (fusenshi-0.7.0.tgz) = 1738f3c713559d7569c33aed24249e1c
-SIZE (fusenshi-0.7.0.tgz) = 51007
+MD5 (fusenshi-0.7.1.tgz) = eac47dfa8915c91df6cd9a10bd66a8da
+SIZE (fusenshi-0.7.1.tgz) = 60565
diff --git a/deskutils/fusenshi/files/patch-aa b/deskutils/fusenshi/files/patch-aa
deleted file mode 100644
index 43012defe165..000000000000
--- a/deskutils/fusenshi/files/patch-aa
+++ /dev/null
@@ -1,2852 +0,0 @@
-diff -urN po/ja.po po/ja.po
---- po/ja.po Thu Apr 1 17:51:53 2004
-+++ po/ja.po Fri Nov 5 17:38:51 2004
-@@ -7,7 +7,7 @@
- msgstr ""
- "Project-Id-Version: 0.7\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2004-03-31 17:41+0900\n"
-+"POT-Creation-Date: 2004-11-05 17:38+0900\n"
- "PO-Revision-Date: 2004-03-07 15:34+JST\n"
- "Last-Translator: Masanori OZAWA <ozawa@ongs.co.jp>\n"
- "Language-Team: japanese <info@ongs.co.jp>\n"
-@@ -15,176 +15,197 @@
- "Content-Type: text/plain; charset=EUC-JP\n"
- "Content-Transfer-Encoding: 8bit\n"
-
--#: ../src/fio/fioservice.cpp:472
-+#: ../src/fio/fioservice.cpp:444
- msgid "Can't create print file."
- msgstr "印刷用の一時ファイルが構築できません。"
-
--#: ../src/fio/fioservice.cpp:476
-+#: ../src/fio/fioservice.cpp:448
- msgid "Can't write print file."
- msgstr "印刷用の一時ファイルに書き込めません。"
-
--#: ../src/wnd/fusenshieditdialog.cpp:49
-+#: ../src/wnd/fusenshieditdialog.cpp:52
- msgid "Fusenshi - Edit"
- msgstr "付箋紙 - 編集"
-
--#: ../src/wnd/fusenshieditdialog.cpp:70
-+#: ../src/wnd/fusenshieditdialog.cpp:73
- msgid "Text"
- msgstr "テキスト"
-
--#: ../src/wnd/fusenshieditdialog.cpp:72 ../src/wnd/fusenshimainwnd.cpp:120
-+#: ../src/wnd/fusenshieditdialog.cpp:75 ../src/wnd/fusenshimainwnd.cpp:165
- msgid "Property"
- msgstr "プロパティ"
-
--#: ../src/wnd/fusenshieditdialog.cpp:87 ../src/wnd/fusenshieditdialog.cpp:264
--#: ../src/wnd/propertydialog.cpp:154 ../src/wnd/propertydialog.cpp:356
-+#: ../src/wnd/fusenshieditdialog.cpp:90 ../src/wnd/fusenshieditdialog.cpp:258
-+#: ../src/wnd/propertydialog.cpp:151 ../src/wnd/propertydialog.cpp:370
- msgid "Background Color:"
- msgstr "背景色:"
-
--#: ../src/wnd/fusenshieditdialog.cpp:92 ../src/wnd/fusenshieditdialog.cpp:292
--#: ../src/wnd/propertydialog.cpp:159 ../src/wnd/propertydialog.cpp:384
-+#: ../src/wnd/fusenshieditdialog.cpp:95 ../src/wnd/fusenshieditdialog.cpp:282
-+#: ../src/wnd/propertydialog.cpp:156 ../src/wnd/propertydialog.cpp:394
- msgid "Foreground Color:"
- msgstr "前景色:"
-
--#: ../src/wnd/fusenshieditdialog.cpp:97 ../src/wnd/fusenshieditdialog.cpp:320
--#: ../src/wnd/propertydialog.cpp:164 ../src/wnd/propertydialog.cpp:412
-+#: ../src/wnd/fusenshieditdialog.cpp:100 ../src/wnd/fusenshieditdialog.cpp:306
-+#: ../src/wnd/propertydialog.cpp:161 ../src/wnd/propertydialog.cpp:418
- msgid "Font:"
- msgstr "フォント:"
-
--#: ../src/wnd/fusenshieditdialog.cpp:102 ../src/wnd/fusenshieditdialog.cpp:106
--#: ../src/wnd/fusenshieditdialog.cpp:110 ../src/wnd/propertydialog.cpp:179
--#: ../src/wnd/propertydialog.cpp:183 ../src/wnd/propertydialog.cpp:187
-+#: ../src/wnd/fusenshieditdialog.cpp:105 ../src/wnd/fusenshieditdialog.cpp:109
-+#: ../src/wnd/fusenshieditdialog.cpp:113 ../src/wnd/propertydialog.cpp:176
-+#: ../src/wnd/propertydialog.cpp:180 ../src/wnd/propertydialog.cpp:184
- msgid "Select..."
- msgstr "選択..."
-
--#: ../src/wnd/fusenshieditdialog.cpp:234 ../src/wnd/propertydialog.cpp:315
-+#: ../src/wnd/fusenshieditdialog.cpp:228 ../src/wnd/propertydialog.cpp:328
- msgid "Can't parse background color."
- msgstr "背景色を取得できません。"
-
--#: ../src/wnd/fusenshieditdialog.cpp:241 ../src/wnd/propertydialog.cpp:322
-+#: ../src/wnd/fusenshieditdialog.cpp:235 ../src/wnd/propertydialog.cpp:335
- msgid "Can't parse foreground color."
- msgstr "前景色を取得できません。"
-
--#: ../src/wnd/fusenshimainwnd.cpp:49
-+#: ../src/wnd/fusenshimainwnd.cpp:54
- msgid "Fusenshi Main Window"
- msgstr "付箋紙 メインウィンドウ"
-
--#: ../src/wnd/fusenshimainwnd.cpp:121
-+#: ../src/wnd/fusenshimainwnd.cpp:164
-+msgid "Raise windows"
-+msgstr "最前面に表示"
-+
-+#: ../src/wnd/fusenshimainwnd.cpp:166
- msgid "Quit"
- msgstr "閉じる"
-
--#: ../src/wnd/fusenshiwnd.cpp:71
-+#: ../src/wnd/fusenshiwnd.cpp:74
- msgid "Fusenshi"
- msgstr "付箋紙"
-
--#: ../src/wnd/fusenshiwnd.cpp:303
-+#: ../src/wnd/fusenshiwnd.cpp:318
- msgid "May I delete this note?"
- msgstr "付箋紙を削除してよろしいですか?"
-
--#: ../src/wnd/fusenshiwnd.cpp:392
-+#: ../src/wnd/fusenshiwnd.cpp:407
- msgid "Transmission of the sticky note went wrong.\n"
- msgstr "付箋紙の送信に失敗しました。\n"
-
--#: ../src/wnd/fusenshiwnd.cpp:407
-+#: ../src/wnd/fusenshiwnd.cpp:422
- msgid "Fusenshi - Print"
- msgstr "付箋紙 - 印刷"
-
--#: ../src/wnd/fusenshiwnd.cpp:410 ../src/wnd/propertydialog.cpp:169
-+#: ../src/wnd/fusenshiwnd.cpp:425 ../src/wnd/propertydialog.cpp:166
- msgid "Print command:"
- msgstr "印刷コマンド:"
-
--#: ../src/wnd/fusenshiwnd.cpp:411 ../src/wnd/propertydialog.cpp:174
-+#: ../src/wnd/fusenshiwnd.cpp:426 ../src/wnd/propertydialog.cpp:171
- msgid " %1: Exchange to print file."
- msgstr " %1: 印刷ファイル名へ変換します。"
-
--#: ../src/wnd/fusenshiwnd.cpp:440
-+#: ../src/wnd/fusenshiwnd.cpp:455
- msgid "Edit"
- msgstr "編集"
-
--#: ../src/wnd/fusenshiwnd.cpp:441
-+#: ../src/wnd/fusenshiwnd.cpp:456
- msgid "Send"
- msgstr "送信"
-
--#: ../src/wnd/fusenshiwnd.cpp:442
-+#: ../src/wnd/fusenshiwnd.cpp:457
- msgid "Print"
- msgstr "印刷"
-
--#: ../src/wnd/fusenshiwnd.cpp:443
-+#: ../src/wnd/fusenshiwnd.cpp:458
- msgid "Maximize"
- msgstr "最大化"
-
--#: ../src/wnd/fusenshiwnd.cpp:444
-+#: ../src/wnd/fusenshiwnd.cpp:459
- msgid "Minimize"
- msgstr "最小化"
-
--#: ../src/wnd/fusenshiwnd.cpp:445
-+#: ../src/wnd/fusenshiwnd.cpp:460
- msgid "Delete"
- msgstr "削除"
-
--#: ../src/wnd/propertydialog.cpp:48
-+#: ../src/wnd/fusenshiwnd.cpp:478
-+msgid "Unmaximize"
-+msgstr "最大化解除"
-+
-+#: ../src/wnd/fusenshiwnd.cpp:481
-+msgid "Unminimize"
-+msgstr "最小化解除"
-+
-+#: ../src/wnd/propertydialog.cpp:51
- msgid "Fusenshi - Property"
- msgstr "付箋紙 - プロパティ"
-
--#: ../src/wnd/propertydialog.cpp:127
-+#: ../src/wnd/propertydialog.cpp:124
- msgid "Base"
- msgstr "基本"
-
--#: ../src/wnd/propertydialog.cpp:149
-+#: ../src/wnd/propertydialog.cpp:146
- msgid "Nickname:"
--msgstr "ニックネーム"
-+msgstr "ニックネーム:"
-
--#: ../src/wnd/propertydialog.cpp:208
-+#: ../src/wnd/propertydialog.cpp:205
- msgid "Network"
- msgstr "ネットワーク"
-
--#: ../src/wnd/propertydialog.cpp:216
-+#: ../src/wnd/propertydialog.cpp:213
- msgid "Broadcast Address"
- msgstr "ブロードキャストアドレス"
-
--#: ../src/wnd/propertydialog.cpp:221
-+#: ../src/wnd/propertydialog.cpp:218
- msgid "Enable networking."
- msgstr "ネットワーク機能を有効にします。"
-
--#: ../src/wnd/propertydialog.cpp:224
-+#: ../src/wnd/propertydialog.cpp:221
- msgid "Broadcast address list:"
- msgstr "ブロードキャストアドレスの一覧:"
-
--#: ../src/wnd/propertydialog.cpp:238
-+#: ../src/wnd/propertydialog.cpp:235
- msgid "Add"
- msgstr "追加"
-
--#: ../src/wnd/propertydialog.cpp:242
-+#: ../src/wnd/propertydialog.cpp:239
- msgid "Remove"
- msgstr "削除"
-
--#: ../src/wnd/propertydialog.cpp:436
-+#: ../src/wnd/propertydialog.cpp:258
-+msgid "Window"
-+msgstr "ウィンドウ"
-+
-+#: ../src/wnd/propertydialog.cpp:262
-+msgid "Show on all desktops"
-+msgstr "常にデスクトップに貼り付け"
-+
-+#: ../src/wnd/propertydialog.cpp:442
- msgid "'' is not broadcast address."
- msgstr "'' はブロードキャストアドレスではありません。"
-
--#: ../src/wnd/senddialog.cpp:44
-+#: ../src/wnd/senddialog.cpp:47
- msgid "Fusenshi - Send"
- msgstr "付箋紙 - 送信"
-
--#: ../src/wnd/senddialog.cpp:56
-+#: ../src/wnd/senddialog.cpp:59
- msgid "UserName"
- msgstr "ユーザ名"
-
--#: ../src/wnd/senddialog.cpp:57
-+#: ../src/wnd/senddialog.cpp:60
- msgid "HostName"
- msgstr "ホスト名"
-
--#: ../src/wnd/senddialog.cpp:58
-+#: ../src/wnd/senddialog.cpp:61
- msgid "IPAddress"
- msgstr "IPアドレス"
-
--#: ../src/wnd/senddialog.cpp:64
-+#: ../src/wnd/senddialog.cpp:67
- msgid "Send To:"
- msgstr "送信先:"
-
--#: ../src/wnd/senddialog.cpp:89
-+#: ../src/wnd/senddialog.cpp:92
- msgid "Update"
- msgstr "更新"
-
--#: ../src/wnd/wndservice.cpp:520
-+#: ../src/wnd/wndservice.cpp:538
-+#, c-format
- msgid ""
- "I recieved note from follow:\n"
- "Username: %s\n"
-diff -urN src/Makefile src/Makefile
---- src/Makefile Thu Apr 1 17:52:08 2004
-+++ src/Makefile Mon Nov 22 15:06:02 2004
-@@ -1,9 +1,9 @@
--# $Id: Makefile,v 1.1 2004/04/01 08:52:08 daichi Exp $
-+# $Id: Makefile,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- #
- # Copyright 2003- ONGS Inc. All rights reserved.
- #
- # author: Masanori OZAWA (ozawa@ongs.co.jp)
--# version: $Revision: 1.1 $
-+# version: $Revision: 1.2 $
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions
-@@ -47,6 +47,8 @@
-
- .ifndef DEBUG
- CPPOPT += -O2
-+.else
-+CPPOPT += -g
- .endif
-
- .ifndef WITHOUT_NLS
-diff -urN src/fio/fioservice.cpp src/fio/fioservice.cpp
---- src/fio/fioservice.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/fioservice.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fioservice.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: fioservice.cpp,v 1.3 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -49,11 +49,6 @@
- FioService* FioService::m_pInstance = NULL;
-
- /**
-- * 付箋紙の設定
-- */
--PropertyData FioService::m_cProperty;
--
--/**
- * コンストラクタ
- */
- FioService::FioService(int inFD, int outFD)
-@@ -294,48 +289,18 @@
- }
-
- /**
-- * 付箋紙の設定を取得します。
-- *
-- * @return 付箋紙の設定
-+ * プロパティの変更をウィンドウプロセスへ通知します。
- */
--PropertyData FioService::getProperty()
-+void FioService::noticeProperty()
- {
-- static bool bLoad = false;
--
-- if (!bLoad) {
-- try {
-- FioService::m_cProperty = PropertyData::loadProperty();
-- }
-- catch (...) {
-- fprintf(stderr, "%s: Can't load property file.", APP_NAME);
-- }
--
-- bLoad = true;
-- }
--
-- return FioService::m_cProperty;
--}
--
--/**
-- * 付箋紙の設定を設定し、直ちに保管します。
-- *
-- * @param property 付箋紙の設定
-- */
--void FioService::setProperty(const PropertyData& property)
--{
-- if (!PropertyData::saveProperty(property)) {
-- fprintf(stderr, "%s: Can't save property file.", APP_NAME);
-+ // 設定の変更を通知する
-+ GString* pStrData = PropertyData::toSerializedString(PropertyData::get());
-+
-+ if (pStrData) {
-+ m_pCommand->addCommand(PROPERTY_CHANGED, 0, pStrData);
- }
- else {
-- // 変更を保持
-- FioService::m_cProperty = property;
--
-- // 設定の変更を反映
-- FioService::updateProperty();
--
-- // 設定の変更を通知する
-- FioService *pInstance = FioService::getInstance();
-- pInstance->m_pCommand->addCommand(PROPERTY_CHANGED, 0, NULL);
-+ throw "Out of Memory Error!";
- }
- }
-
-@@ -344,7 +309,7 @@
- */
- void FioService::updateProperty()
- {
-- PropertyData property = FioService::getProperty();
-+ const PropertyData& property = PropertyData::get();
-
- #ifndef WITHOUT_NETWORK
- // ネットワークの有効/無効の調整
-@@ -375,14 +340,15 @@
- FileManager& fm = FileManager::getInstance();
-
- const char* pFileName = NULL;
-- GString* lpStrData = NULL;
-+ GString* pString = NULL;
-+ PropertyData property;
-
- switch (lpCommand->nCommandID) {
- case SAVE_FUSENSHI:
- pFileName = fm.getFileName(lpCommand->nFileID);
-- lpStrData = (GString*)lpCommand->pData;
-- if (pFileName && lpStrData) {
-- FusenshiSaver::saveFusenshiData(pFileName, lpStrData);
-+ pString = (GString*)lpCommand->pData;
-+ if (pFileName && pString) {
-+ FusenshiSaver::saveFusenshiData(pFileName, pString);
- }
- break;
- case CREATE_NEW_FUSENSHI:
-@@ -396,13 +362,16 @@
- fm.removeFile(lpCommand->nFileID);
- break;
- case PRINT_FUSENSHI:
-- lpStrData = (GString*)lpCommand->pData;
-- if (lpStrData) {
-- printFusenshi(lpCommand->nFileID, lpStrData->str);
-+ pString = (GString*)lpCommand->pData;
-+ if (pString) {
-+ printFusenshi(lpCommand->nFileID, pString->str);
- }
- break;
- case PROPERTY_CHANGED:
-- FioService::m_cProperty = PropertyData::loadProperty();
-+ pString = (GString*)lpCommand->pData;
-+ property = PropertyData::buildObject(pString);
-+ // 保存と更新
-+ PropertyData::set(property, true);
- FioService::updateProperty();
- break;
- case EXIT_APP:
-@@ -422,7 +391,7 @@
- FusenshiServer* FioService::getServer()
- {
- #ifndef WITHOUT_NETWORK
-- PropertyData property = FioService::getProperty();
-+ const PropertyData& property = PropertyData::get();
-
- if (property.isEnableNetwork()) {
- return FusenshiServer::getInstance();
-diff -urN src/fio/fioservice.h src/fio/fioservice.h
---- src/fio/fioservice.h Thu Apr 1 17:52:24 2004
-+++ src/fio/fioservice.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fioservice.h,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: fioservice.h,v 1.3 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -89,20 +89,6 @@
- */
- static FioService* getInstance(int inFD, int outFD);
-
-- /**
-- * 付箋紙の設定を取得します。
-- *
-- * @return 付箋紙の設定
-- */
-- static PropertyData getProperty();
--
-- /**
-- * 付箋紙の設定を設定し、直ちに保管します。
-- *
-- * @param property 付箋紙の設定
-- */
-- static void setProperty(const PropertyData& property);
--
- public:
- /**
- * デストラクタ
-@@ -138,11 +124,15 @@
- */
- void printFusenshi(guint nFileID, const char* pCommand);
-
--private:
-+ /**
-+ * プロパティの変更をウィンドウプロセスへ通知します。
-+ */
-+ void noticeProperty();
-+
- /**
- * プロパティの変更後に必要な処理を実行します。
- */
-- static void updateProperty();
-+ void updateProperty();
-
- private:
- /**
-@@ -150,11 +140,7 @@
- */
- static FioService* m_pInstance;
-
-- /**
-- * 付箋紙の設定
-- */
-- static PropertyData m_cProperty;
--
-+private:
- /**
- * 入力側パイプ
- */
-diff -urN src/fio/fusenshidata.cpp src/fio/fusenshidata.cpp
---- src/fio/fusenshidata.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/fusenshidata.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshidata.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: fusenshidata.cpp,v 1.3 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -47,8 +47,8 @@
- {
- const int sx = gdk_screen_width();
- const int sy = gdk_screen_height();
-- PropertyData property = FioService::getProperty();
--
-+ const PropertyData& property = PropertyData::get();
-+
- // メンバ変数の初期化
- m_nMajorVersion = FUSENSHIDATA_MAJOR_VERSION;
- m_nMinorVersion = FUSENSHIDATA_MINOR_VERSION;
-@@ -69,6 +69,14 @@
- }
-
- /**
-+ * コピーコンストラクタ
-+ */
-+FusenshiData::FusenshiData(const FusenshiData& data)
-+{
-+ this->operator=(data);
-+}
-+
-+/**
- * デストラクタ
- */
- FusenshiData::~FusenshiData()
-@@ -367,11 +375,11 @@
- /**
- * 付箋紙データオブジェクトをシリアライズします。
- *
-- * @param pData 付箋紙データオブジェクト
-+ * @param data 付箋紙データオブジェクト
- * @return シリアライズ後のバイト列。
- * 不要になった段階で破棄する必要があります。
- */
--GString* FusenshiData::toSerializedString(const FusenshiData* pData)
-+GString* FusenshiData::toSerializedString(const FusenshiData& data)
- {
- GString *result = g_string_sized_new(1024);
- Glib::ustring szBuffer;
-@@ -382,45 +390,45 @@
-
- // バージョン
- g_string_append_printf(result, TYPE_VERSION ": %d.%d.%d\r\n",
-- pData->getMajorVersion(),
-- pData->getMinorVersion(),
-- pData->getMicroVersion());
-+ data.getMajorVersion(),
-+ data.getMinorVersion(),
-+ data.getMicroVersion());
-
- // 背景色
-- toString(pData->getBackground(), szBuffer);
-+ color2string(data.getBackground(), szBuffer);
- g_string_append_printf
- (result, TYPE_BG_COLOR ": %s\r\n", szBuffer.c_str());
-
- // 前景色
-- toString(pData->getForeground(), szBuffer);
-+ color2string(data.getForeground(), szBuffer);
- g_string_append_printf
- (result, TYPE_FG_COLOR ": %s\r\n", szBuffer.c_str());
-
- // フォント
- g_string_append_printf(result, TYPE_FONTNAME ": %s\r\n",
-- pData->getFontName().c_str());
-+ data.getFontName().c_str());
-
- // ウィンドウポジション
- g_string_append_printf(result, TYPE_X_POS ": %d\r\n",
-- pData->getXPos());
-+ data.getXPos());
- g_string_append_printf(result, TYPE_Y_POS ": %d\r\n",
-- pData->getYPos());
-+ data.getYPos());
-
- // ウィンドウサイズ
- g_string_append_printf(result, TYPE_WIDTH ": %d\r\n",
-- pData->getWidth());
-+ data.getWidth());
- g_string_append_printf(result, TYPE_HEIGHT ": %d\r\n",
-- pData->getHeight());
-+ data.getHeight());
-
- // ウィンドウスタイル
- g_string_append_printf(result, TYPE_STYLE ": %d\r\n",
-- pData->getStyle());
-+ data.getStyle());
-
- // ヘッダの終端行
- g_string_append(result, "\r\n");
-
- // 本文
-- g_string_append(result, pData->getText().c_str());
-+ g_string_append(result, data.getText().c_str());
-
- return result;
- }
-@@ -602,7 +610,7 @@
- */
- void FusenshiData::parseColorAndSet(GdkColor *pColor, const char *pValue)
- {
-- parseColor(pColor, pValue);
-+ string2color(pColor, pValue);
- }
-
- /**
-diff -urN src/fio/fusenshisaver.cpp src/fio/fusenshisaver.cpp
---- src/fio/fusenshisaver.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/fusenshisaver.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshisaver.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: fusenshisaver.cpp,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -65,7 +65,7 @@
- void FusenshiSaver::saveFusenshiData
- (const char* pFileName, const FusenshiData* pData)
- {
-- GString* lpStrData = FusenshiData::toSerializedString(pData);
-+ GString* lpStrData = FusenshiData::toSerializedString(*pData);
-
- if (lpStrData) {
- saveFusenshiData(pFileName, lpStrData);
-diff -urN src/fio/propertydata.cpp src/fio/propertydata.cpp
---- src/fio/propertydata.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/propertydata.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: propertydata.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: propertydata.cpp,v 1.4 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.4 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -46,6 +46,11 @@
- #define ROOT_NODE (APP_NAME "-config")
-
- /**
-+ * プロパティ
-+ */
-+PropertyData PropertyData::m_cProperty;
-+
-+/**
- * コンストラクタ
- */
- PropertyData::PropertyData()
-@@ -69,6 +74,16 @@
-
- m_bEnableNetwork = true;
- m_cBroadcastList.push_back(IP2STR(INADDR_BROADCAST));
-+
-+ m_bStickWindow = false;
-+}
-+
-+/**
-+ * コピーコンストラクタ
-+ */
-+PropertyData::PropertyData(const PropertyData& data)
-+{
-+ this->operator=(data);
- }
-
- /**
-@@ -171,6 +186,16 @@
- }
-
- /**
-+ * ウィンドウを張り付け状態にするか調べます。
-+ *
-+ * @return 張り付け状態にする場合は true を戻します。
-+ */
-+bool PropertyData::isStickWindow() const
-+{
-+ return m_bStickWindow;
-+}
-+
-+/**
- * ブロードキャストアドレスの一覧を設定します。
- *
- * @param broadcastList ブロードキャストアドレスの一覧
-@@ -252,6 +277,16 @@
- }
-
- /**
-+ * ウィンドウを張り付け状態にするか設定します。
-+ *
-+ * @return 張り付け状態にする場合は true を指定します。
-+ */
-+void PropertyData::setStickWindow(bool bPaste)
-+{
-+ m_bStickWindow = bPaste;
-+}
-+
-+/**
- * 印刷用のコマンドを取得します。
- *
- * @return 印刷用のコマンドを戻します。
-@@ -284,6 +319,9 @@
-
- // ブロードキャストアドレス
- setBroadcastList(data.getBroadcastList());
-+
-+ // ウィンドウの張り付けフラグ
-+ setStickWindow(data.isStickWindow());
-
- return (*this);
- }
-@@ -336,6 +374,9 @@
-
- result &= (iter1 == iter1end && iter2 == iter2end);
-
-+ // ウィンドウの張り付けフラグ
-+ result &= (isStickWindow() == data.isStickWindow());
-+
- return result;
- }
-
-@@ -348,6 +389,41 @@
- }
-
- /**
-+ * プロパティを取得します。
-+ *
-+ * @return プロパティ
-+ */
-+const PropertyData& PropertyData::get()
-+{
-+ static bool bLoad = false;
-+
-+ if (!bLoad) {
-+ PropertyData::m_cProperty = PropertyData::loadProperty();
-+
-+ bLoad = true;
-+ }
-+
-+ return PropertyData::m_cProperty;
-+}
-+
-+/**
-+ * プロパティを設定/保存します。
-+ *
-+ * @param property 新しいプロパティ
-+ * @param save ファイルに保存する場合は true を指定します。
-+ */
-+void PropertyData::set(const PropertyData& property, bool save)
-+{
-+ PropertyData::m_cProperty = property;
-+
-+ if (save) {
-+ if (!PropertyData::saveProperty(property)) {
-+ fprintf(stderr, "%s: Can't save property file.", APP_NAME);
-+ }
-+ }
-+}
-+
-+/**
- * 付箋紙のプロパティを読み込みます。
- *
- * @return ロードした付箋紙のプロパティを戻します。
-@@ -369,12 +445,109 @@
- }
-
- // 解析
-+ if (!PropertyData::loadFromXML(doc, property)) {
-+ PropertyData tmp;
-+ property = tmp; // 初期化
-+ }
-+
-+ xmlFreeDoc(doc);
-+
-+ return property;
-+}
-+
-+/**
-+ * 付箋紙のプロパティを保存します。
-+ *
-+ * @param property 付箋紙プロパティ
-+ * @return 保存に成功した場合は true を戻します。
-+ */
-+bool PropertyData::saveProperty(const PropertyData& property)
-+{
-+ // 付箋紙ファイル名の構築
-+ Glib::ustring szPropFile = getAppDir(APP_NAME);
-+ szPropFile += "/";
-+ szPropFile += PROPERTY_FILENAME;
-+
-+ // 保存用のディレクトリを構築
-+ createFusenshiDir();
-+
-+ // XMLへ変換
-+ xmlDocPtr doc = PropertyData::toXML(property);
-+
-+ // 保存
-+ bool result = (doc ? XMLSaver::save(szPropFile, doc) : false);
-+
-+ if (doc) xmlFreeDoc(doc);
-+
-+ return result;
-+}
-+
-+/**
-+ * シリアライズ化されたプロパティからプロパティオブジェクトを
-+ * 構築します。
-+ *
-+ * @param pBytes シリアライズ後のバイト列
-+ * @return プロパティオブジェクト。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+PropertyData PropertyData::buildObject(const GString* pBytes)
-+{
-+ PropertyData property;
-+
-+ // 読み込み
-+ xmlDocPtr doc = XMLLoader::load(pBytes);
-+
-+ if (!doc) {
-+ throw "Can't load property data.";
-+ }
-+
-+ // 解析
-+ if (!PropertyData::loadFromXML(doc, property)) {
-+ PropertyData tmp;
-+ property = tmp; // 初期化
-+ }
-+
-+ xmlFreeDoc(doc);
-+
-+ return property;
-+}
-+
-+/**
-+ * プロパティオブジェクトをシリアライズします。
-+ *
-+ * @param pData プロパティオブジェクト
-+ * @return シリアライズ後のバイト列。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+GString* PropertyData::toSerializedString(const PropertyData& property)
-+{
-+ // XMLへ変換
-+ xmlDocPtr doc = PropertyData::toXML(property);
-+
-+ // 保存
-+ GString* pBuffer = (doc ? XMLSaver::toString(doc) : NULL);
-+
-+ if (doc) xmlFreeDoc(doc);
-+
-+ return pBuffer;
-+}
-+
-+/**
-+ * 付箋紙のプロパティをXMLから読み込みます。
-+ *
-+ * @param document XML
-+ * @param property プロパティの保存先オブジェクト
-+ * @return ロードに成功した場合はtrueを戻します。
-+ */
-+bool PropertyData::loadFromXML(const xmlDocPtr document, PropertyData& property)
-+{
-+ // 解析
- const char *key = NULL;
-- xmlNodePtr node = xmlDocGetRootElement(doc);
-+ xmlNodePtr node = xmlDocGetRootElement(document);
-
- if (xmlStrcmp(node->name, (const xmlChar *)ROOT_NODE)) {
-- xmlFreeDoc(doc);
-- throw "Property file is broken.";
-+ // XMLが壊れています。
-+ return false;
- }
-
- node = node->xmlChildrenNode;
-@@ -382,15 +555,15 @@
- property.clearBroadcastList();
-
- while (node) {
-- key = (char*)xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
-+ key = (char*)xmlNodeListGetString(document, node->xmlChildrenNode, 1);
- if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_NICKNAME)) {
- property.setNickName(key);
- }
- else if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_BG_COLOR)) {
-- parseColor(&property.m_cBackground, key);
-+ string2color(&property.m_cBackground, key);
- }
- else if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_FG_COLOR)) {
-- parseColor(&property.m_cForeground, key);
-+ string2color(&property.m_cForeground, key);
- }
- else if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_FONTNAME)) {
- property.setFontName(key);
-@@ -405,49 +578,43 @@
- else if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_BROADCAST_ADDR)) {
- property.addBroadcastAddr(key);
- }
-+ else if (!xmlStrcmp(node->name, (const xmlChar *)PTYPE_STICK_WND)) {
-+ property.setStickWindow
-+ (strcasecmp(key, "true") == 0 || strcmp(key, "1") == 0);
-+ }
- xmlFree((xmlChar*)key);
-
- node = node->next;
- }
--
-- xmlFreeDoc(doc);
--
-- return property;
-+
-+ return true;
- }
-
- /**
-- * 付箋紙のプロパティを保存します。
-+ * 付箋紙のプロパティをXMLに変換します。
- *
- * @param property 付箋紙プロパティ
-- * @return 保存に成功した場合は true を戻します。
-+ * @return 変換後のXML
- */
--bool PropertyData::saveProperty(const PropertyData& property)
-+xmlDocPtr PropertyData::toXML(const PropertyData& property)
- {
-- // 付箋紙ファイル名の構築
-- Glib::ustring szPropFile = getAppDir(APP_NAME);
-- szPropFile += "/";
-- szPropFile += PROPERTY_FILENAME;
--
-- // 保存用のディレクトリを構築
-- createFusenshiDir();
--
- // XMLドキュメントの構築
- xmlDocPtr doc = xmlNewDoc((xmlChar*)"1.0");
-
-- Glib::ustring szBuffer;
-+ Glib::ustring buf;
-
- doc->children = xmlNewDocNode(doc, NULL, (xmlChar*)ROOT_NODE, NULL);
-
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_NICKNAME,
- (xmlChar*)property.getNickName().c_str());
-
-- toString(property.getBackground(), szBuffer);
-+ color2string(property.getBackground(), buf);
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_BG_COLOR,
-- (xmlChar*)szBuffer.c_str());
-+ (xmlChar*)buf.c_str());
-
-- toString(property.getForeground(), szBuffer);
-+ color2string(property.getForeground(), buf);
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_FG_COLOR,
-- (xmlChar*)szBuffer.c_str());
-+ (xmlChar*)buf.c_str());
-
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_FONTNAME,
- (xmlChar*)property.getFontName().c_str());
-@@ -458,6 +625,9 @@
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_ENABLE_NETWORK,
- (xmlChar*)(property.isEnableNetwork() ? "true" : "false"));
-
-+ xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_STICK_WND,
-+ (xmlChar*)(property.isStickWindow() ? "true" : "false"));
-+
- BroadcastList& list = (BroadcastList&)property.getBroadcastList();
- BroadcastList::iterator iter = list.begin();
- BroadcastList::iterator iterend = list.end();
-@@ -466,10 +636,6 @@
- xmlNewChild(doc->children, NULL, (xmlChar*)PTYPE_BROADCAST_ADDR,
- (xmlChar*)(*iter).c_str());
- }
--
-- bool result = XMLSaver::save(szPropFile, doc);
--
-- xmlFreeDoc(doc);
--
-- return result;
-+
-+ return doc;
- }
-diff -urN src/fio/xmlloader.cpp src/fio/xmlloader.cpp
---- src/fio/xmlloader.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/xmlloader.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: xmlloader.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: xmlloader.cpp,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -58,4 +58,17 @@
- xmlDocPtr XMLLoader::load(Glib::ustring szFile)
- {
- return xmlParseFile(szFile.c_str());
-+}
-+
-+/**
-+ * XMLをメモリから読み込みます。
-+ *
-+ * @param buffer メモリ(XML文字列)
-+ * @return XMLドキュメント
-+ */
-+xmlDocPtr XMLLoader::load(const GString* buffer)
-+{
-+ if (!buffer) return NULL;
-+
-+ return xmlParseMemory(buffer->str, buffer->len);
- }
-diff -urN src/fio/xmlloader.h src/fio/xmlloader.h
---- src/fio/xmlloader.h Thu Apr 1 17:52:24 2004
-+++ src/fio/xmlloader.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: xmlloader.h,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: xmlloader.h,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -55,12 +55,20 @@
-
- public:
- /**
-- * XMLファイルを読み込みます。
-+ * XMLをファイルから読み込みます。
- *
- * @param szFile ファイル名
- * @return XMLドキュメント
- */
- static xmlDocPtr load(Glib::ustring szFile);
-+
-+ /**
-+ * XMLをメモリから読み込みます。
-+ *
-+ * @param buffer メモリ(XML文字列)
-+ * @return XMLドキュメント
-+ */
-+ static xmlDocPtr load(const GString* buffer);
- };
-
- #endif
-diff -urN src/fio/xmlsaver.cpp src/fio/xmlsaver.cpp
---- src/fio/xmlsaver.cpp Thu Apr 1 17:52:24 2004
-+++ src/fio/xmlsaver.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: xmlsaver.cpp,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: xmlsaver.cpp,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -50,7 +50,7 @@
- }
-
- /**
-- * XMLファイルを読み込みます。
-+ * XMLをファイルに保存します。
- *
- * @param szFile ファイル名
- * @param document XMLドキュメント
-@@ -61,4 +61,31 @@
- int status = xmlSaveFile(szFile.c_str(), document);
-
- return (-1 != status);
-+}
-+
-+/**
-+ * XMLを文字列に変換します。
-+ *
-+ * @param document XMLドキュメント
-+ * @return 変換後の文字列。変換に失敗した場合はNULLを戻す。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+GString* XMLSaver::toString(const xmlDocPtr document)
-+{
-+ GString *result = g_string_sized_new(1024);
-+
-+ if (!result) {
-+ throw "Out of Memory Error!";
-+ }
-+
-+ int size = 0;
-+ xmlChar* pMem = NULL;
-+
-+ xmlDocDumpMemory(document, &pMem, &size);
-+
-+ g_string_append(result, (const char*)pMem);
-+
-+ xmlFree(pMem);
-+
-+ return result;
- }
-diff -urN src/fio/xmlsaver.h src/fio/xmlsaver.h
---- src/fio/xmlsaver.h Thu Apr 1 17:52:24 2004
-+++ src/fio/xmlsaver.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: xmlsaver.h,v 1.1 2004/04/01 08:52:24 daichi Exp $
-+ * $Id: xmlsaver.h,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -55,13 +55,22 @@
-
- public:
- /**
-- * XMLファイルを読み込みます。
-+ * XMLをファイルに保存します。
- *
- * @param szFile ファイル名
- * @param document XMLドキュメント
- * @return 正常に保存した場合は true を戻す。
- */
- static bool save(Glib::ustring szFile, const xmlDocPtr document);
-+
-+ /**
-+ * XMLを文字列に変換します。
-+ *
-+ * @param document XMLドキュメント
-+ * @return 変換後の文字列。変換に失敗した場合はNULLを戻す。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+ static GString* toString(const xmlDocPtr document);
- };
-
- #endif
-diff -urN src/include/fusenshidata.h src/include/fusenshidata.h
---- src/include/fusenshidata.h Thu Apr 1 17:52:40 2004
-+++ src/include/fusenshidata.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshidata.h,v 1.1 2004/04/01 08:52:40 daichi Exp $
-+ * $Id: fusenshidata.h,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -39,6 +39,8 @@
- #include "glib.h"
- #include "gdk/gdk.h"
-
-+#include "propertydata.h"
-+
- #define FUSENSHIDATA_MAJOR_VERSION 0
- #define FUSENSHIDATA_MINOR_VERSION 7
- #define FUSENSHIDATA_MICRO_VERSION 0
-@@ -59,10 +61,17 @@
- public:
- /**
- * コンストラクタ
-+ *
-+ * @param property 付箋紙のプロパティ
- */
- FusenshiData();
-
- /**
-+ * コピーコンストラクタ
-+ */
-+ FusenshiData(const FusenshiData& data);
-+
-+ /**
- * デストラクタ
- */
- virtual ~FusenshiData();
-@@ -249,11 +258,11 @@
- /**
- * 付箋紙データオブジェクトをシリアライズします。
- *
-- * @param pData 付箋紙データオブジェクト
-+ * @param data 付箋紙データオブジェクト
- * @return シリアライズ後のバイト列。
- * 不要になった段階で破棄する必要があります。
- */
-- static GString* toSerializedString(const FusenshiData* pData);
-+ static GString* toSerializedString(const FusenshiData& data);
-
- protected:
- /**
-diff -urN src/include/propertydata.h src/include/propertydata.h
---- src/include/propertydata.h Thu Apr 1 17:52:40 2004
-+++ src/include/propertydata.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: propertydata.h,v 1.1 2004/04/01 08:52:40 daichi Exp $
-+ * $Id: propertydata.h,v 1.3 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -36,7 +36,9 @@
- #ifndef ___PROPERTYDATA_H
- #define ___PROPERTYDATA_H
-
--#include <gtkmm.h>
-+#include "gtkmm.h"
-+#include "libxml/parser.h"
-+#include "libxml/tree.h"
-
- #define PTYPE_NICKNAME "Nickname"
- #define PTYPE_BG_COLOR "Background-Color"
-@@ -45,6 +47,7 @@
- #define PTYPE_PRINT_COMMAND "PrintCommand"
- #define PTYPE_ENABLE_NETWORK "EnableNetwork"
- #define PTYPE_BROADCAST_ADDR "BroadcastAddr"
-+#define PTYPE_STICK_WND "StickWnd"
-
- typedef std::list<Glib::ustring> BroadcastList;
-
-@@ -56,10 +59,16 @@
- PropertyData();
-
- /**
-+ * コピーコンストラクタ
-+ */
-+ PropertyData(const PropertyData& data);
-+
-+ /**
- * デストラクタ
- */
- virtual ~PropertyData();
-
-+public:
- /**
- * ブロードキャストアドレスを追加します。
- *
-@@ -124,6 +133,13 @@
- * @return ネットワーク機能が有効な場合は true を戻します。
- */
- bool isEnableNetwork() const;
-+
-+ /**
-+ * ウィンドウを張り付け状態にするか調べます。
-+ *
-+ * @return 張り付け状態にする場合は true を戻します。
-+ */
-+ bool isStickWindow() const;
-
- /**
- * ブロードキャストアドレスの一覧を設定します。
-@@ -174,6 +190,13 @@
- */
- void setPrintCommand(const Glib::ustring szPrintCommand);
-
-+ /**
-+ * ウィンドウを張り付け状態にするか設定します。
-+ *
-+ * @return 張り付け状態にする場合は true を指定します。
-+ */
-+ void setStickWindow(bool bPaste);
-+
- public:
- /**
- * 複写
-@@ -192,6 +215,42 @@
-
- public:
- /**
-+ * プロパティを取得します。
-+ *
-+ * @return プロパティ
-+ */
-+ static const PropertyData& get();
-+
-+ /**
-+ * プロパティを設定/保存します。
-+ *
-+ * @param property 新しいプロパティ
-+ * @param save ファイルに保存する場合は true を指定します。
-+ */
-+ static void set(const PropertyData& property, bool save = false);
-+
-+public:
-+ /**
-+ * シリアライズ化されたプロパティからプロパティオブジェクトを
-+ * 構築します。
-+ *
-+ * @param pBytes シリアライズ後のバイト列
-+ * @return プロパティオブジェクト。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+ static PropertyData buildObject(const GString* pBytes);
-+
-+ /**
-+ * プロパティオブジェクトをシリアライズします。
-+ *
-+ * @param pData プロパティオブジェクト
-+ * @return シリアライズ後のバイト列。
-+ * 不要になった段階で破棄する必要があります。
-+ */
-+ static GString* toSerializedString(const PropertyData& property);
-+
-+private:
-+ /**
- * 付箋紙のプロパティを読み込みます。
- *
- * @return ロードした付箋紙のプロパティを戻します。
-@@ -208,6 +267,30 @@
-
- private:
- /**
-+ * 付箋紙のプロパティをXMLから読み込みます。
-+ *
-+ * @param document XML
-+ * @param property プロパティの保存先オブジェクト
-+ * @return ロードに成功した場合はtrueを戻します。
-+ */
-+ static bool loadFromXML(const xmlDocPtr document, PropertyData& property);
-+
-+ /**
-+ * 付箋紙のプロパティをXMLに変換します。
-+ *
-+ * @param property 付箋紙プロパティ
-+ * @return 変換後のXML。不要になった時点で解放する必要があります。
-+ */
-+ static xmlDocPtr toXML(const PropertyData& property);
-+
-+private:
-+ /**
-+ * ロード済みのプロパティ
-+ */
-+ static PropertyData m_cProperty;
-+
-+private:
-+ /**
- * ニックネーム
- */
- Glib::ustring m_szNickName;
-@@ -237,6 +320,11 @@
- * ブロードキャストアドレスの一覧
- */
- BroadcastList m_cBroadcastList;
-+
-+ /**
-+ * ウィンドウの貼り付けフラグ
-+ */
-+ bool m_bStickWindow;
- };
-
- #endif
-diff -urN src/main.cpp src/main.cpp
---- src/main.cpp Thu Apr 1 17:52:08 2004
-+++ src/main.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: main.cpp,v 1.1 2004/04/01 08:52:08 daichi Exp $
-+ * $Id: main.cpp,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -47,8 +47,8 @@
- /**
- * メイン処理
- *
-- * @author $Author: daichi $
-- * @version $Revision: 1.1 $
-+ * @author $Author: ozawa $
-+ * @version $Revision: 1.2 $
- */
- int main(int argc, char *argv[])
- {
-@@ -114,7 +114,7 @@
- bool bError = false;
-
- try {
-- PropertyData::loadProperty();
-+ PropertyData::get();
- }
- catch (...) {
- bError = true;
-@@ -123,7 +123,7 @@
- // プロパティファイルの構築
- if (bError) {
- PropertyData property;
-- PropertyData::saveProperty(property);
-+ PropertyData::set(property, true);
- }
- }
-
-diff -urN src/misc/commandcontrol.cpp src/misc/commandcontrol.cpp
---- src/misc/commandcontrol.cpp Thu Apr 1 17:52:58 2004
-+++ src/misc/commandcontrol.cpp Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: commandcontrol.cpp,v 1.1 2004/04/01 08:52:58 daichi Exp $
-+ * $Id: commandcontrol.cpp,v 1.2 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -113,12 +113,12 @@
- case SAVE_FUSENSHI:
- case VERIFY_RECEIVE_DATA:
- case PRINT_FUSENSHI:
-+ case PROPERTY_CHANGED:
- g_string_free((GString*)lpCommand->pData, TRUE);
- break;
- case CREATE_NEW_FUSENSHI:
- case DELETE_FUSENSHI:
- case EXIT_APP:
-- case PROPERTY_CHANGED:
- default:
- break;
- }
-@@ -211,6 +211,7 @@
- case SAVE_FUSENSHI:
- case VERIFY_RECEIVE_DATA:
- case PRINT_FUSENSHI:
-+ case PROPERTY_CHANGED:
- if (!pData) {
- bError = TRUE;
- break;
-@@ -224,7 +225,6 @@
- case CREATE_NEW_FUSENSHI:
- case DELETE_FUSENSHI:
- case EXIT_APP:
-- case PROPERTY_CHANGED:
- default:
- result->pData = NULL;
- break;
-@@ -269,6 +269,7 @@
- case SAVE_FUSENSHI:
- case VERIFY_RECEIVE_DATA:
- case PRINT_FUSENSHI:
-+ case PROPERTY_CHANGED:
- lpString = (GString*)lpCommand->pData;
- nDataLen = lpString->len;
- pData = lpString->str;
-@@ -276,7 +277,6 @@
- case CREATE_NEW_FUSENSHI:
- case DELETE_FUSENSHI:
- case EXIT_APP:
-- case PROPERTY_CHANGED:
- default:
- break;
- }
-diff -urN src/misc/misc.h src/misc/misc.h
---- src/misc/misc.h Thu Apr 1 17:52:58 2004
-+++ src/misc/misc.h Fri Nov 5 02:39:52 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: misc.h,v 1.1 2004/04/01 08:52:58 daichi Exp $
-+ * $Id: misc.h,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -113,7 +113,7 @@
- * @param pValue 色情報を保持する文字列
- * @return 設定に成功した場合は true を戻す。
- */
--extern bool parseColor(GdkColor *pColor, const char *pValue);
-+extern bool string2color(GdkColor *pColor, const char *pValue);
-
- /**
- * 色を表現する文字列を取得します。
-@@ -121,6 +121,6 @@
- * @param pColor GdkColor構造体
- * @param szBuffer 色文字列を格納するバッファ
- */
--extern void toString(const GdkColor *pColor, Glib::ustring& szBuffer);
-+extern void color2string(const GdkColor *pColor, Glib::ustring& szBuffer);
-
- #endif
-diff -urN src/misc/resourceloader.cpp src/misc/resourceloader.cpp
---- src/misc/resourceloader.cpp Thu Apr 1 17:52:58 2004
-+++ src/misc/resourceloader.cpp Fri Nov 5 02:39:52 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: resourceloader.cpp,v 1.1 2004/04/01 08:52:58 daichi Exp $
-+ * $Id: resourceloader.cpp,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -48,7 +48,7 @@
- *
- * @param pWidget ウィジェット
- * @param pFileName Pixmapファイル名
-- * @return 構築したGtkPixmap
-+ * @return 構築したGtkPixmap。不要になった時点で解放(delete)する必要があります。
- */
- Gtk::Image* ResourceLoader::createImage(const char* pFileName)
- {
-@@ -75,18 +75,16 @@
- */
- Glib::RefPtr<Gdk::Pixbuf> ResourceLoader::createPixbuf(const char* pFileName)
- {
-- std::string path;
--
- if (!pFileName || !pFileName[0]) {
- throw "Argument Exception.";
- }
-
-- path = findPixmapFile(pFileName);
-+ Glib::ustring path = findPixmapFile(pFileName);
-
- if (0 >= path.length()) {
- throw "Pixbuf file not found.";
- }
--
-+
- return Gdk::Pixbuf::create_from_file(path);
- }
-
-@@ -96,23 +94,26 @@
- * @param pFileName Pixmapファイル名
- * @return 発見したPixmapファイルのパス
- */
--const char* ResourceLoader::findPixmapFile(const char* pFileName)
-+Glib::ustring ResourceLoader::findPixmapFile(const char* pFileName)
- {
- GList *pList = m_pPixmapDirs;
-- gchar *result = NULL;
-+ Glib::ustring buf;
-
- while (pList) {
-- result = g_strdup_printf("%s%s%s", (gchar*)pList->data,
-- G_DIR_SEPARATOR_S, pFileName);
-- if (g_file_test(result, G_FILE_TEST_EXISTS)) {
-- return result;
-+ buf = (const char*)pList->data;
-+ buf += G_DIR_SEPARATOR_S;
-+ buf += pFileName;
-+
-+ if (g_file_test(buf.c_str(), G_FILE_TEST_EXISTS)) {
-+ return buf;
- }
-- g_free(result);
-
- pList = pList->next;
- }
-+
-+ buf.clear();
-
-- return NULL;
-+ return buf;
- }
-
- /**
-diff -urN src/misc/resourceloader.h src/misc/resourceloader.h
---- src/misc/resourceloader.h Thu Apr 1 17:52:58 2004
-+++ src/misc/resourceloader.h Fri Nov 5 02:39:52 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: resourceloader.h,v 1.1 2004/04/01 08:52:58 daichi Exp $
-+ * $Id: resourceloader.h,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -44,7 +44,7 @@
- * GtkImage を構築します。
- *
- * @param pFileName Pixmapファイル名
-- * @return 構築したGtkImage
-+ * @return 構築したGtkImage。不要になった時点で解放(delete)する必要があります。
- */
- static Gtk::Image* createImage(const char* pFileName);
-
-@@ -71,7 +71,7 @@
- * @param pFileName Pixmapファイル名
- * @return 発見したPixmapファイルのパス
- */
-- static const char* findPixmapFile(const char* pFileName);
-+ static Glib::ustring findPixmapFile(const char* pFileName);
-
- private:
- /**
-diff -urN src/misc/tools.cpp src/misc/tools.cpp
---- src/misc/tools.cpp Thu Apr 1 17:52:58 2004
-+++ src/misc/tools.cpp Fri Nov 5 02:39:52 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: tools.cpp,v 1.1 2004/04/01 08:52:58 daichi Exp $
-+ * $Id: tools.cpp,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -286,33 +286,27 @@
- * @param pValue 色情報を保持する文字列
- * @return 設定に成功した場合は true を戻す。
- */
--bool parseColor(GdkColor *pColor, const char *pValue)
-+bool string2color(GdkColor *pColor, const char *pValue)
- {
-- char *dummy = NULL;
-- long nColor = 0L;
--
- if (!pColor || !pValue) {
- throw "Null Pointer Exception.";
- }
--
-+
-+ bool result = false;
-+
-+ // gtk標準方式の色を解析
- if (gdk_color_parse(pValue, pColor)) {
-- return true;
-+ result = true;
- }
-- else {
-- if (6 == strlen(pValue)) {
-- nColor = strtol(pValue, &dummy, 16);
--
-- if (dummy && '\0' == *dummy) {
-- pColor->red = (nColor & 0xff0000) >> 8;
-- pColor->green = (nColor & 0x00ff00);
-- pColor->blue = (nColor & 0x0000ff) << 8;
--
-- return true;
-- }
-- }
-+ // 従来(0.7.0以前)の方式の色を解析
-+ else if (6 == strlen(pValue)) {
-+ Glib::ustring buf = pValue;
-+ buf.insert(0, "#");
-+
-+ result = gdk_color_parse(buf.c_str(), pColor);
- }
-
-- return false;
-+ return result;
- }
-
- /**
-@@ -321,14 +315,16 @@
- * @param pColor GdkColor構造体
- * @param szBuffer 色文字列を格納するバッファ
- */
--void toString(const GdkColor *pColor, Glib::ustring& szBuffer)
-+void color2string(const GdkColor *pColor, Glib::ustring& szBuffer)
- {
-- char buf[10] = {0};
-+ char buf[32] = {0};
-+
-+ if (!pColor) {
-+ throw "Null Pointer Exception.";
-+ }
-
-- snprintf(buf, sizeof(buf) -1, "%02x%02x%02x",
-- (pColor->red & 0xff00) >> 8,
-- (pColor->green & 0xff00) >> 8,
-- (pColor->blue & 0xff00) >> 8);
-+ snprintf(buf, sizeof(buf) -1, "#%04X%04X%04X",
-+ pColor->red, pColor->green, pColor->blue);
-
- szBuffer = buf;
- }
-diff -urN src/net/fusenshiclient.cpp src/net/fusenshiclient.cpp
---- src/net/fusenshiclient.cpp Thu Apr 1 17:53:12 2004
-+++ src/net/fusenshiclient.cpp Thu Nov 18 16:08:43 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshiclient.cpp,v 1.1 2004/04/01 08:53:12 daichi Exp $
-+ * $Id: fusenshiclient.cpp,v 1.4 2004/11/18 07:08:43 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.4 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -173,7 +173,7 @@
- std::list<Glib::ustring>& ipList = serverList.getIPAddrList();
- std::list<Glib::ustring>::iterator iter;
-
-- GString* pData = FusenshiData::toSerializedString(&data);
-+ GString* pData = FusenshiData::toSerializedString(data);
-
- for (iter = ipList.begin(); iter != ipList.end(); iter++) {
- result &= sendFusenshiData((*iter).c_str(), pData, szNickName);
-diff -urN src/net/fusenshiserver.cpp src/net/fusenshiserver.cpp
---- src/net/fusenshiserver.cpp Thu Apr 1 17:53:12 2004
-+++ src/net/fusenshiserver.cpp Wed Nov 17 22:08:41 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshiserver.cpp,v 1.1 2004/04/01 08:53:12 daichi Exp $
-+ * $Id: fusenshiserver.cpp,v 1.2 2004/11/17 13:08:41 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -228,23 +228,25 @@
-
- // ユーザ、ホスト情報を受信
- if (sizeof(length) != recv(nCSock, &length, sizeof(length), 0)) {
-+ fprintf(stderr, "%s: Server: bad head block received (1).\n", APP_NAME);
- return false;
- }
-
- length = ntohl(length);
- if (2 >= length && MAX_EXT_INFO_LENGTH < length) {
-+ fprintf(stderr, "%s: Server: bad head block received (2).\n", APP_NAME);
- return false;
- }
-
- buf = (gchar*)g_malloc0(length);
-
- if (!buf) {
-- fprintf(stderr, "%s: Out of Memory Error!\n", APP_NAME);
-+ fprintf(stderr, "%s: Server: Out of Memory Error!\n", APP_NAME);
- return false;
- }
-
-- if (length != recv(nCSock, buf, length, 0) ||
-- buf[length] != '\0') {
-+ if (length != recv(nCSock, buf, length, 0) || buf[length -1] != '\0') {
-+ fprintf(stderr, "%s: Server: bad head block received (3).\n", APP_NAME);
- g_free(buf);
- return false;
- }
-@@ -252,6 +254,7 @@
- gchar* pTmp = strchr(buf, '|');
-
- if (!pTmp) {
-+ fprintf(stderr, "%s: Server: bad head block received (4).\n", APP_NAME);
- g_free(buf);
- return false;
- }
-diff -urN src/wnd/fusenshieditdialog.cpp src/wnd/fusenshieditdialog.cpp
---- src/wnd/fusenshieditdialog.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/fusenshieditdialog.cpp Mon Nov 22 17:20:56 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshieditdialog.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: fusenshieditdialog.cpp,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -134,24 +134,15 @@
- (SigC::slot(*this, &FusenshiEditDialog::on_fontname_clicked));
-
- // 既存のデータを設定
-- gchar buf[1024] = {0};
-- const guint bufsize = sizeof(buf) -1;
-+ Glib::ustring buf;
-
-- memset(buf, '\0', sizeof(buf));
--
- // プロパティの設定
- Gdk::Color bgColor((GdkColor*)pData->getBackground());
-- snprintf(buf, bufsize, "#%02X%02X%02X",
-- (int)rint(bgColor.get_red_p() * 0xff),
-- (int)rint(bgColor.get_green_p() * 0xff),
-- (int)rint(bgColor.get_blue_p() * 0xff));
-+ color2string(bgColor.gobj(), buf);
- m_cBackground.set_text(buf);
-
- Gdk::Color fgColor((GdkColor*)pData->getForeground());
-- snprintf(buf, bufsize, "#%02X%02X%02X",
-- (int)rint(fgColor.get_red_p() * 0xff),
-- (int)rint(fgColor.get_green_p() * 0xff),
-- (int)rint(fgColor.get_blue_p() * 0xff));
-+ color2string(fgColor.gobj(), buf);
- m_cForeground.set_text(buf);
-
- m_cFontName.set_text(pData->getFontName());
-@@ -274,13 +265,9 @@
-
- if (Gtk::RESPONSE_OK == colordlg.run()) {
- Gdk::Color newColor = colordlg.get_colorsel()->get_current_color();
-- gchar buf[1024] = {0};
-+ Glib::ustring buf;
-
-- memset(buf, '\0', sizeof(buf));
-- snprintf(buf, sizeof(buf) -1, "#%02X%02X%02X",
-- (int)rint(newColor.get_red_p() * 0xff),
-- (int)rint(newColor.get_green_p() * 0xff),
-- (int)rint(newColor.get_blue_p() * 0xff));
-+ color2string(newColor.gobj(), buf);
- m_cBackground.set_text(buf);
- }
- }
-@@ -302,13 +289,9 @@
-
- if (Gtk::RESPONSE_OK == colordlg.run()) {
- Gdk::Color newColor = colordlg.get_colorsel()->get_current_color();
-- gchar buf[1024] = {0};
-+ Glib::ustring buf;
-
-- memset(buf, '\0', sizeof(buf));
-- snprintf(buf, sizeof(buf) -1, "#%02X%02X%02X",
-- (int)rint(newColor.get_red_p() * 0xff),
-- (int)rint(newColor.get_green_p() * 0xff),
-- (int)rint(newColor.get_blue_p() * 0xff));
-+ color2string(newColor.gobj(), buf);
- m_cForeground.set_text(buf);
- }
- }
-diff -urN src/wnd/fusenshimainwnd.cpp src/wnd/fusenshimainwnd.cpp
---- src/wnd/fusenshimainwnd.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/fusenshimainwnd.cpp Mon Nov 22 17:52:33 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshimainwnd.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: fusenshimainwnd.cpp,v 1.6 2004/11/17 13:08:41 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.6 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -41,6 +41,11 @@
- #include "../misc/resourceloader.h"
-
- /**
-+ * 唯一のインスタンス
-+ */
-+FusenshiMainWnd* FusenshiMainWnd::m_pInstance = NULL;
-+
-+/**
- * コンストラクタ
- */
- FusenshiMainWnd::FusenshiMainWnd()
-@@ -92,6 +97,45 @@
- }
-
- /**
-+ * ウィンドウを終了し、インスタンスを破棄します。
-+ */
-+void FusenshiMainWnd::destroy()
-+{
-+ if (m_pInstance) {
-+ delete m_pInstance;
-+ m_pInstance = NULL;
-+ }
-+}
-+
-+/**
-+ * 必要に応じてインスタンスを作成し、ウィンドウを構築します。
-+ */
-+FusenshiMainWnd* FusenshiMainWnd::getInstance()
-+{
-+ if (!m_pInstance) {
-+ m_pInstance = new FusenshiMainWnd();
-+ }
-+
-+ return m_pInstance;
-+}
-+
-+/**
-+ * プロパティの変更後に必要な処理を実行します。
-+ *
-+ * @param property 新しいプロパティ
-+ */
-+void FusenshiMainWnd::updateProperty(const PropertyData& property)
-+{
-+ // ウィンドウを貼り付ける。
-+ if (property.isStickWindow()) {
-+ stick();
-+ }
-+ else {
-+ unstick();
-+ }
-+}
-+
-+/**
- * ウィンドウ削除
- */
- bool FusenshiMainWnd::on_delete_event(GdkEventAny* pEvent)
-@@ -118,28 +162,41 @@
- int count = 0;
- Gtk::Menu* pMenu = manage(new Gtk::Menu());
-
--#define MENU_NUMBER 2
-- Glib::ustring pMenuLabels[MENU_NUMBER] = {
-- Glib::ustring(_("Property")),
-- Glib::ustring(_("Quit")),
-- };
-- SigC::Slot0<void> slots[MENU_NUMBER] = {
-- SigC::slot(*this, &FusenshiMainWnd::on_menu_property_activate),
-- SigC::slot(*this, &FusenshiMainWnd::on_menu_close_activate),
-- };
-+#define MENU_NUMBER 3
-+ Glib::ustring pMenuLabels[MENU_NUMBER] = {
-+ Glib::ustring(_("Raise windows")),
-+ Glib::ustring(_("Property")),
-+ Glib::ustring(_("Quit")),
-+ };
-+ SigC::Slot0<void> slots[MENU_NUMBER] = {
-+ SigC::slot(*this, &FusenshiMainWnd::on_menu_raise_windows),
-+ SigC::slot(*this, &FusenshiMainWnd::on_menu_property_activate),
-+ SigC::slot(*this, &FusenshiMainWnd::on_menu_close_activate),
-+ };
-+ const int sepPos[] = {
-+ 1, 0 // 降順で指定する
-+ };
-
-- // アイテムを構築
-- Gtk::MenuItem* pMenuItem = NULL;
-- for (count = 0; count < MENU_NUMBER; count++) {
-- pMenuItem = manage(new Gtk::MenuItem(pMenuLabels[count]));
--
-- pMenu->append(*pMenuItem);
--
-- pMenuItem->signal_activate().connect(slots[count]);
-- pMenuItem->show();
-- }
-+ // アイテムを構築
-+ Gtk::MenuItem* pMenuItem = NULL;
-+ for (count = 0; count < MENU_NUMBER; count++) {
-+ pMenuItem = manage(new Gtk::MenuItem(pMenuLabels[count]));
-+
-+ pMenu->append(*pMenuItem);
-+
-+ pMenuItem->signal_activate().connect(slots[count]);
-+ pMenuItem->show();
-+ }
- #undef MENU_NUMBER
-
-+ // セパレータを追加
-+ for (count = 0; 0 < sepPos[count]; count++) {
-+ pMenuItem = manage(new Gtk::MenuItem());
-+
-+ pMenu->insert(*pMenuItem, sepPos[count]);
-+ pMenuItem->show();
-+ }
-+
- pMenu->show();
- pMenu->popup(pEvent->button, pEvent->time);
-
-@@ -150,14 +207,26 @@
- }
-
- /**
-+ * ポップアップメニューの「最前面に表示」の応答処理
-+ */
-+void FusenshiMainWnd::on_menu_raise_windows()
-+{
-+ WndService::getInstance()->raiseFusenshiWndAll();
-+}
-+
-+/**
- * ポップアップメニューの「設定」の応答処理
- */
- void FusenshiMainWnd::on_menu_property_activate()
- {
-- PropertyDialog dlg(WndService::getProperty());
-+ PropertyDialog dlg(PropertyData::get());
-
- if (Gtk::RESPONSE_OK == dlg.doModal()) {
-- WndService::setProperty(dlg.getNewData());
-+ WndService* pInstance = WndService::getInstance();
-+
-+ PropertyData::set(dlg.getNewData()); // 変更を保持
-+ pInstance->noticeProperty(); // I/Oへ通知
-+ pInstance->updateProperty(); // ウィンドウを更新
- }
- }
-
-diff -urN src/wnd/fusenshimainwnd.h src/wnd/fusenshimainwnd.h
---- src/wnd/fusenshimainwnd.h Thu Apr 1 17:53:26 2004
-+++ src/wnd/fusenshimainwnd.h Wed Nov 17 22:08:41 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshimainwnd.h,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: fusenshimainwnd.h,v 1.5 2004/11/17 13:08:41 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.5 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -40,17 +40,37 @@
-
- class FusenshiMainWnd : public Gtk::Window
- {
--public:
-+private:
- /**
- * コンストラクタ
- */
- FusenshiMainWnd();
-
-+public:
- /**
- * デストラクタ
- */
- virtual ~FusenshiMainWnd();
-
-+public:
-+ /**
-+ * プロパティの変更後に必要な処理を実行します。
-+ *
-+ * @param property 新しいプロパティ
-+ */
-+ void updateProperty(const PropertyData& property);
-+
-+public:
-+ /**
-+ * ウィンドウを終了し、インスタンスを破棄します。
-+ */
-+ static void destroy();
-+
-+ /**
-+ * 必要に応じてインスタンスを作成し、ウィンドウを構築します。
-+ */
-+ static FusenshiMainWnd* getInstance();
-+
- protected:
- /**
- * ボタン押下応答処理
-@@ -66,7 +86,12 @@
- * ウィンドウ削除
- */
- virtual bool on_delete_event(GdkEventAny* pEvent);
--
-+
-+ /**
-+ * ポップアップメニューの「最前面に表示」の応答処理
-+ */
-+ virtual void on_menu_raise_windows();
-+
- /**
- * ポップアップメニューの「設定」の応答処理
- */
-@@ -82,6 +107,12 @@
- * ボタン
- */
- Gtk::Button m_cButton;
-+
-+private:
-+ /**
-+ * 唯一の付箋紙メインウィンドウ
-+ */
-+ static FusenshiMainWnd *m_pInstance;
- };
-
- #endif
-diff -urN src/wnd/fusenshiwnd.cpp src/wnd/fusenshiwnd.cpp
---- src/wnd/fusenshiwnd.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/fusenshiwnd.cpp Mon Nov 22 17:52:51 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshiwnd.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: fusenshiwnd.cpp,v 1.6 2004/11/17 13:08:41 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.6 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -244,10 +244,6 @@
- // 最大化する
- maximize();
- }
-- else if (nStyle & GDK_WINDOW_STATE_STICKY) {
-- // 棒状にする(タイトルバーのみにする)
-- stick();
-- }
-
- // テキストを設定
- Glib::RefPtr<Gtk::TextBuffer> textBuffer =
-@@ -271,6 +267,7 @@
- memset(&attributes, 0, sizeof(attributes));
- attributes.map_state = IsUnviewable;
-
-+ gdk_error_trap_push();
- if (XGetWindowAttributes
- (GDK_WINDOW_XDISPLAY(pWindow),
- GDK_WINDOW_XWINDOW(pWindow), &attributes))
-@@ -282,11 +279,28 @@
- result = window->get_state();
- }
- }
-+ gdk_error_trap_pop();
-
- return result;
- }
-
- /**
-+ * プロパティの変更後に必要な処理を実行します。
-+ *
-+ * @param property 新しいプロパティ
-+ */
-+void FusenshiWnd::updateProperty(const PropertyData& property)
-+{
-+ // ウィンドウを貼る
-+ if (property.isStickWindow()) {
-+ stick();
-+ }
-+ else {
-+ unstick();
-+ }
-+}
-+
-+/**
- * 付箋紙ウィンドウの標準タイプを設定します。
- *
- * @param nWndType 付箋紙ウィンドウの標準タイプ
-@@ -303,7 +317,7 @@
- {
- // 付箋紙削除を確認する
- Gtk::MessageDialog dialog
-- (_("May I delete this note?"),
-+ (_("May I delete this note?"),
- Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL, true, false);
-
- if (Gtk::RESPONSE_OK == dialog.run()) {
-@@ -388,7 +402,7 @@
- // 送信
- bool bSend = FusenshiClient::sendFusenshiData
- (senddlg.getServerList(), *m_pData,
-- WndService::getProperty().getNickName());
-+ PropertyData::get().getNickName());
-
- if (!bSend) {
- Gtk::MessageDialog msgDlg
-@@ -408,7 +422,7 @@
- void FusenshiWnd::on_print()
- {
- EntryDialog dlg(_("Fusenshi - Print"));
-- PropertyData property = WndService::getProperty();
-+ const PropertyData& property = PropertyData::get();
-
- dlg.setEntryLabel(_("Print command:"));
- dlg.setMessageLabel(_(" %1: Exchange to print file."));
-@@ -459,6 +473,16 @@
- 5, 3, 0 // 降順で指定する
- };
-
-+ // ウィンドウ状態にあわせてメニューラベルを変更する
-+ int style = getXLibWindowStyle();
-+
-+ if (style & GDK_WINDOW_STATE_MAXIMIZED) { // Maximize
-+ pMenuLabels[3] = _("Unmaximize");
-+ }
-+ else if (style & GDK_WINDOW_STATE_ICONIFIED) { // Minimize
-+ pMenuLabels[4] = _("Unminimize");
-+ }
-+
- // 既存のアイテムを削除
- std::list<Widget*> pList = pMenu->get_children();
- std::list<Widget*>::iterator pIter;
-@@ -469,7 +493,7 @@
-
- // アイテムを構築
- Gtk::MenuItem* pMenuItem = NULL;
-- PropertyData property = WndService::getProperty();
-+ const PropertyData& property = PropertyData::get();
-
- for (count = 0; count < MENU_NUMBER; count++) {
- pMenuItem = manage(new Gtk::MenuItem(pMenuLabels[count]));
-@@ -503,21 +527,27 @@
- // 初期化完了フラグをチェック
- int bInit = (int)get_data(g_cQuarkInitFlag);
-
-- if (bInit && 0 == getXLibWindowStyle()) {
-- int nX, nY, nWidth, nHeight;
--
-- // ウィンドウポジション取得
-- get_position(nX, nY);
--
-- // ウィンドウサイズ取得
-- get_size(nWidth, nHeight);
--
-- // 保存を要求する
-- m_pData->setXPos(nX);
-- m_pData->setYPos(nY);
-- m_pData->setWidth(nWidth);
-- m_pData->setHeight(nHeight);
-- WndService::getInstance()->saveFusenshi(m_nFileID, m_pData);
-+ if (bInit) {
-+ /*
-+ * ウィンドウが通常状態の場合のみ、位置とサイズを保存する。
-+ * ただし、貼り付け状態は位置/サイズに影響しないため無視する。
-+ */
-+ if (0 == (getXLibWindowStyle() & ~Gdk::WINDOW_STATE_STICKY)) {
-+ int nX, nY, nWidth, nHeight;
-+
-+ // ウィンドウポジション取得
-+ get_position(nX, nY);
-+
-+ // ウィンドウサイズ取得
-+ get_size(nWidth, nHeight);
-+
-+ // 保存を要求する
-+ m_pData->setXPos(nX);
-+ m_pData->setYPos(nY);
-+ m_pData->setWidth(nWidth);
-+ m_pData->setHeight(nHeight);
-+ WndService::getInstance()->saveFusenshi(m_nFileID, m_pData);
-+ }
- }
-
- // ウィンドウの形状を調整
-diff -urN src/wnd/fusenshiwnd.h src/wnd/fusenshiwnd.h
---- src/wnd/fusenshiwnd.h Thu Apr 1 20:55:30 2004
-+++ src/wnd/fusenshiwnd.h Fri Nov 5 17:08:30 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: fusenshiwnd.h,v 1.2 2004/04/01 11:55:30 daichi Exp $
-+ * $Id: fusenshiwnd.h,v 1.4 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.2 $
-+ * version: $Revision: 1.4 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -55,12 +55,20 @@
-
- public:
- /**
-+ * プロパティの変更後に必要な処理を実行します。
-+ *
-+ * @param property 新しいプロパティ
-+ */
-+ void updateProperty(const PropertyData& property);
-+
-+public:
-+ /**
- * 付箋紙ウィンドウの標準タイプを設定します。
- *
- * @param pWndProp 付箋紙ウィンドウの標準タイプ
- */
- static void setDefaultWindowType(WND_TYPE nWndType);
--
-+
- protected:
- /**
- * ウィンドウの削除要求を処理します。
-diff -urN src/wnd/propertydialog.cpp src/wnd/propertydialog.cpp
---- src/wnd/propertydialog.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/propertydialog.cpp Mon Nov 22 17:23:37 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: propertydialog.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: propertydialog.cpp,v 1.3 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -59,6 +59,7 @@
-
- createBasePage(*pNotebook);
- createNetworkPage(*pNotebook);
-+ createWindowPage(*pNotebook);
-
- get_action_area()->set_layout(Gtk::BUTTONBOX_END);
-
-@@ -73,26 +74,17 @@
- set_default_response(Gtk::RESPONSE_OK);
-
- // 既存のデータを設定
-- gchar buf[1024] = {0};
-- const guint bufsize = sizeof(buf) -1;
--
-- memset(buf, '\0', sizeof(buf));
-+ Glib::ustring buf;
-
- // プロパティの設定
- m_cNickName.set_text(m_cData.getNickName());
-
- Gdk::Color bgColor((GdkColor*)m_cData.getBackground());
-- snprintf(buf, bufsize, "#%02X%02X%02X",
-- (int)rint(bgColor.get_red_p() * 0xff),
-- (int)rint(bgColor.get_green_p() * 0xff),
-- (int)rint(bgColor.get_blue_p() * 0xff));
-+ color2string(bgColor.gobj(), buf);
- m_cBackground.set_text(buf);
-
- Gdk::Color fgColor((GdkColor*)m_cData.getForeground());
-- snprintf(buf, bufsize, "#%02X%02X%02X",
-- (int)rint(fgColor.get_red_p() * 0xff),
-- (int)rint(fgColor.get_green_p() * 0xff),
-- (int)rint(fgColor.get_blue_p() * 0xff));
-+ color2string(fgColor.gobj(), buf);
- m_cForeground.set_text(buf);
-
- m_cFontName.set_text(m_cData.getFontName());
-@@ -109,6 +101,8 @@
- Gtk::TreeIter treeiter = getListStore()->append();
- treeiter->set_value(m_cColumns.BROADCAST_ADDR, *iter);
- }
-+
-+ m_cStickWindow.set_active(m_cData.isStickWindow());
- }
-
- /**
-@@ -253,6 +247,22 @@
- }
-
- /**
-+ * ウィンドウ設定ページを構築します。
-+ */
-+void PropertyDialog::createWindowPage(Gtk::Notebook& notebook)
-+{
-+ Gtk::Fixed* pFixed = manage(new Gtk::Fixed());
-+ notebook.add(*pFixed);
-+
-+ notebook.set_tab_label_text
-+ (*(notebook.get_nth_page(2)), _("Window"));
-+
-+ pFixed->put(m_cStickWindow, 10, 10);
-+ m_cStickWindow.set_size_request(250, 24);
-+ m_cStickWindow.set_label(_("Show on all desktops"));
-+}
-+
-+/**
- * リストモデルを一時的に取得します。
- */
- Glib::RefPtr<Gtk::ListStore> PropertyDialog::getListStore()
-@@ -335,6 +345,7 @@
- m_cData.setFontName(m_cFontName.get_text().c_str());
- m_cData.setEnableNetwork(m_cNetButton.get_active());
- m_cData.setPrintCommand(m_cPrintCommand.get_text().c_str());
-+ m_cData.setStickWindow(m_cStickWindow.get_active());
-
- Gtk::TreeIter iter = getListStore()->children().begin();
- Gtk::TreeIter enditer = getListStore()->children().end();
-@@ -366,13 +377,9 @@
-
- if (Gtk::RESPONSE_OK == colordlg.run()) {
- Gdk::Color newColor = colordlg.get_colorsel()->get_current_color();
-- gchar buf[1024] = {0};
-+ Glib::ustring buf;
-
-- memset(buf, '\0', sizeof(buf));
-- snprintf(buf, sizeof(buf) -1, "#%02X%02X%02X",
-- (int)rint(newColor.get_red_p() * 0xff),
-- (int)rint(newColor.get_green_p() * 0xff),
-- (int)rint(newColor.get_blue_p() * 0xff));
-+ color2string(newColor.gobj(), buf);
- m_cBackground.set_text(buf);
- }
- }
-@@ -394,13 +401,9 @@
-
- if (Gtk::RESPONSE_OK == colordlg.run()) {
- Gdk::Color newColor = colordlg.get_colorsel()->get_current_color();
-- gchar buf[1024] = {0};
-+ Glib::ustring buf;
-
-- memset(buf, '\0', sizeof(buf));
-- snprintf(buf, sizeof(buf) -1, "#%02X%02X%02X",
-- (int)rint(newColor.get_red_p() * 0xff),
-- (int)rint(newColor.get_green_p() * 0xff),
-- (int)rint(newColor.get_blue_p() * 0xff));
-+ color2string(newColor.gobj(), buf);
- m_cForeground.set_text(buf);
- }
- }
-@@ -440,8 +443,7 @@
- msg.insert(1, addr);
-
- Gtk::MessageDialog dialog
-- (msg, Gtk::MESSAGE_ERROR,
-- Gtk::BUTTONS_OK, true, false);
-+ (msg, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true, false);
-
- dialog.set_transient_for(*this);
-
-diff -urN src/wnd/propertydialog.h src/wnd/propertydialog.h
---- src/wnd/propertydialog.h Thu Apr 1 17:53:26 2004
-+++ src/wnd/propertydialog.h Tue Nov 2 19:47:43 2004
-@@ -1,5 +1,5 @@
- /*
-- * $Id: propertydialog.h,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: propertydialog.h,v 1.2 2004/11/02 10:47:43 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
-@@ -122,6 +122,11 @@
- */
- void createNetworkPage(Gtk::Notebook& notebook);
-
-+ /**
-+ * ウィンドウ設定ページを構築します。
-+ */
-+ void createWindowPage(Gtk::Notebook& notebook);
-+
- private:
- /**
- * カラム保持クラス
-@@ -200,6 +205,11 @@
- * ツリービューのリストモデル
- */
- Glib::RefPtr<Gtk::ListStore> m_cListStore;
-+
-+ /**
-+ * ウィンドウの張り付けフラグ
-+ */
-+ Gtk::CheckButton m_cStickWindow;
- };
-
- #endif
-diff -urN src/wnd/senddialog.cpp src/wnd/senddialog.cpp
---- src/wnd/senddialog.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/senddialog.cpp Mon Nov 22 17:58:06 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: senddialog.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: senddialog.cpp,v 1.3 2004/11/05 08:08:30 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.3 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -172,7 +172,7 @@
- m_nClients = 0;
-
- // リクエストを送信
-- FusenshiClient::sendServerInfoRequest(WndService::getProperty());
-+ FusenshiClient::sendServerInfoRequest(PropertyData::get());
- }
-
- /**
-diff -urN src/wnd/senddialog.h src/wnd/senddialog.h
---- src/wnd/senddialog.h Thu Apr 1 17:53:26 2004
-+++ src/wnd/senddialog.h Mon Nov 22 17:58:19 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: senddialog.h,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: senddialog.h,v 1.2 2004/11/04 17:39:52 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-diff -urN src/wnd/wnd.cpp src/wnd/wnd.cpp
---- src/wnd/wnd.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/wnd.cpp Tue Nov 2 19:47:43 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: wnd.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: wnd.cpp,v 1.2 2004/11/02 10:47:43 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.2 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -75,7 +75,7 @@
- FusenshiWnd::setDefaultWindowType(lpWndGlobalProp->wndType);
-
- // トップレベルウィンドウの構築
-- FusenshiMainWnd *pMainWnd = new FusenshiMainWnd();
-+ FusenshiMainWnd *pMainWnd = FusenshiMainWnd::getInstance();
-
- if (!pMainWnd) {
- throw "Can't create top level window.";
-@@ -121,8 +121,7 @@
- g_thread_join(pThread);
-
- // 後始末
-- delete pMainWnd;
--
-+ FusenshiMainWnd::destroy();
- WndService::destroy();
- FusenshiServerInfo::destroy();
- }
-diff -urN src/wnd/wndservice.cpp src/wnd/wndservice.cpp
---- src/wnd/wndservice.cpp Thu Apr 1 17:53:26 2004
-+++ src/wnd/wndservice.cpp Mon Nov 22 18:01:15 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: wndservice.cpp,v 1.1 2004/04/01 08:53:26 daichi Exp $
-- *g
-+ * $Id: wndservice.cpp,v 1.5 2004/11/05 08:41:20 ozawa Exp $
-+ *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.5 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -35,6 +35,7 @@
-
- #include "../include/fusenshi.h"
- #include "wndservice.h"
-+#include "fusenshimainwnd.h"
-
- #include <sys/select.h>
- #include <signal.h>
-@@ -132,6 +133,23 @@
- }
-
- /**
-+ * 付箋紙ウィンドウを全て最前面に表示します。
-+ */
-+void WndService::raiseFusenshiWndAll()
-+{
-+ FusenshiWndList::iterator iter;
-+
-+ g_mutex_lock(m_pMutex);
-+
-+ iter = m_cWndList.begin();
-+ for (; m_cWndList.end() != iter; iter++) {
-+ (*iter)->raise();
-+ }
-+
-+ g_mutex_unlock(m_pMutex);
-+}
-+
-+/**
- * 付箋紙ファイルの更新をファイルI/Oプロセスに要求します。
- *
- * @param nFileID ファイルID
-@@ -139,7 +157,7 @@
- */
- void WndService::saveFusenshi(guint nFileID, const FusenshiData* pData)
- {
-- GString* pStrData = FusenshiData::toSerializedString(pData);
-+ GString* pStrData = FusenshiData::toSerializedString(*pData);
-
- if (pStrData) {
- m_pCommand->addCommand(SAVE_FUSENSHI, nFileID, (gpointer)pStrData);
-@@ -319,48 +337,18 @@
- }
-
- /**
-- * 付箋紙の設定を取得します。
-- *
-- * @return 付箋紙の設定
-- */
--PropertyData WndService::getProperty()
--{
-- static bool bLoad = false;
--
-- if (!bLoad) {
-- try {
-- WndService::m_cProperty = PropertyData::loadProperty();
-- }
-- catch (...) {
-- fprintf(stderr, "%s: Can't load property file.", APP_NAME);
-- }
--
-- bLoad = true;
-- }
--
-- return WndService::m_cProperty;
--}
--
--/**
-- * 付箋紙の設定を設定し、直ちに保管します。
-- *
-- * @param property 付箋紙の設定
-+ * プロパティの変更をファイルI/Oプロセスへ通知します。
- */
--void WndService::setProperty(const PropertyData& property)
-+void WndService::noticeProperty()
- {
-- if (!PropertyData::saveProperty(property)) {
-- fprintf(stderr, "%s: Can't save property file.", APP_NAME);
-+ // 設定の変更を通知する
-+ GString* pStrData = PropertyData::toSerializedString(PropertyData::get());
-+
-+ if (pStrData) {
-+ m_pCommand->addCommand(PROPERTY_CHANGED, 0, pStrData);
- }
- else {
-- // 設定を保持
-- WndService::m_cProperty = property;
--
-- // 設定の変更を反映
-- WndService::updateProperty();
--
-- // 設定の変更を通知する
-- WndService *pInstance = WndService::getInstance();
-- pInstance->m_pCommand->addCommand(PROPERTY_CHANGED, 0, NULL);
-+ throw "Out of Memory Error!";
- }
- }
-
-@@ -369,7 +357,7 @@
- */
- void WndService::updateProperty()
- {
-- PropertyData property = WndService::getProperty();
-+ const PropertyData& property = PropertyData::get();
-
- #ifndef WITHOUT_NETWORK
- // ネットワークの有効/無効の調整
-@@ -390,6 +378,25 @@
- FusenshiServerInfo::destroy();
- }
- #endif
-+
-+ // 付箋紙メインウィンドウの状態を変更
-+ FusenshiMainWnd *pMainWnd = FusenshiMainWnd::getInstance();
-+
-+ if (pMainWnd) {
-+ pMainWnd->updateProperty(property);
-+ }
-+
-+ // 付箋紙ウィンドウの状態を変更
-+ FusenshiWndList::iterator iter;
-+
-+ g_mutex_lock(m_pMutex);
-+
-+ iter = m_cWndList.begin();
-+ for (; m_cWndList.end() != iter; iter++) {
-+ (*iter)->updateProperty(property);
-+ }
-+
-+ g_mutex_unlock(m_pMutex);
- }
-
- /**
-@@ -401,6 +408,7 @@
- {
- GString* pString = NULL;
- NetworkFusenshiData* pData = NULL;
-+ PropertyData property;
-
- switch (lpCommand->nCommandID) {
- case CREATE_NEW_FUSENSHI_WINDOW:
-@@ -422,8 +430,11 @@
- }
- break;
- case PROPERTY_CHANGED:
-- WndService::m_cProperty = PropertyData::loadProperty();
-- WndService::updateProperty();
-+ pString = (GString*)lpCommand->pData;
-+ property = PropertyData::buildObject(pString);
-+ // 保持と更新
-+ PropertyData::set(property); // 保存はI/O側で行う
-+ updateProperty();
- break;
- default:
- break;
-@@ -448,6 +459,10 @@
- throw "Out of Memory Error.";
- }
-
-+ // プロパティの設定
-+ const PropertyData& property = PropertyData::get();
-+ pWnd->updateProperty(property);
-+
- // 表示
- pWnd->show();
-
-@@ -531,9 +546,7 @@
-
- // 受信の確認
- Gtk::MessageDialog dialog
-- (buf,
-- Gtk::MESSAGE_QUESTION,
-- Gtk::BUTTONS_OK_CANCEL, true, false);
-+ (buf, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL, true, false);
-
- dialog.set_position(Gtk::WIN_POS_CENTER);
- dialog.set_default_response(Gtk::RESPONSE_OK);
-diff -urN src/wnd/wndservice.h src/wnd/wndservice.h
---- src/wnd/wndservice.h Thu Apr 1 17:53:26 2004
-+++ src/wnd/wndservice.h Fri Nov 5 17:41:20 2004
-@@ -1,10 +1,10 @@
- /*
-- * $Id: wndservice.h,v 1.1 2004/04/01 08:53:26 daichi Exp $
-+ * $Id: wndservice.h,v 1.4 2004/11/05 08:41:20 ozawa Exp $
- *
- * Copyright 2003- ONGS Inc. All rights reserved.
- *
- * author: Masanori OZAWA (ozawa@ongs.co.jp)
-- * version: $Revision: 1.1 $
-+ * version: $Revision: 1.4 $
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
-@@ -80,6 +80,11 @@
- * @param szCommand 印刷コマンド
- */
- void printFusenshi(guint nFileID, Glib::ustring& szCommand);
-+
-+ /**
-+ * 付箋紙ウィンドウを全て最前面に表示します。
-+ */
-+ void raiseFusenshiWndAll();
-
- /**
- * 付箋紙ファイルの更新をファイルI/Oプロセスに要求します。
-@@ -104,6 +109,16 @@
- */
- void waitFor();
-
-+ /**
-+ * プロパティの変更をファイルI/Oプロセスへ通知します。
-+ */
-+ void noticeProperty();
-+
-+ /**
-+ * プロパティの変更後に必要な処理を実行します。
-+ */
-+ void updateProperty();
-+
- public:
- /**
- * インスタンスを破棄し、アプリケーションの終了準備を
-@@ -128,20 +143,6 @@
- */
- static WndService* getInstance(int inFD, int outFD);
-
-- /**
-- * 付箋紙の設定を取得します。
-- *
-- * @return 付箋紙の設定
-- */
-- static PropertyData getProperty();
--
-- /**
-- * 付箋紙の設定を設定し、直ちに保管します。
-- *
-- * @param property 付箋紙の設定
-- */
-- static void setProperty(const PropertyData& property);
--
- public:
- /**
- * デストラクタ
-@@ -182,12 +183,6 @@
- * @return 開いても良い場合は Gtk::RESPONSE_OK を戻します。
- */
- gint verifyReceive(const NetworkFusenshiData* pData);
--
--private:
-- /**
-- * プロパティの変更後に必要な処理を実行します。
-- */
-- static void updateProperty();
-
- private:
- /**
diff --git a/deskutils/fusenshi/pkg-plist b/deskutils/fusenshi/pkg-plist
index f40f8e8ac907..5476afea876e 100644
--- a/deskutils/fusenshi/pkg-plist
+++ b/deskutils/fusenshi/pkg-plist
@@ -1,5 +1,6 @@
bin/fusenshi
share/fusenshi/pixmaps/fusenshi.xpm
+share/fusenshi/pixmaps/fusenshi_small.xpm
share/locale/ja/LC_MESSAGES/fusenshi.mo
@dirrm share/fusenshi/pixmaps
@dirrm share/fusenshi