Programming」カテゴリーアーカイブ

Visual Studio 2010 Beta 01

ところで何故 Visual Studio 2010 ベータをインストールかというと
私は WPF 製アプリを自分で作った SeeMe 以外に見たことがないからである。

SeeMe はエフェクト等を完全無視している。
しかしやっと Windows にやってきたレイアウタによるコンテンツ優先の配置。
ListView と ObservableCollection によるバインディング。
を行っているが他のアプリはどうなんだろうと。
(Visual Studio 2010 の UI は WPF)

とにかく昨日のリンク先から iso をダウンロード。

VS2010Beta1JPN_VSTS_2PartsTotal.part1.exe
VS2010Beta1JPN_VSTS_2PartsTotal.part2.rar

の2つをダウンロードして exe を実行。
てか rar で圧縮分割なの?独占禁止法対策なのかな。

WinRAR は何も言わないが Vista は正しくインストールされなかった可能性がどうたらと。
もちろん何も問題無い iso ができあがった、Vista さん、このメッセージおかしいだろ…

DVD-R に焼いて普通にインストール。

vs2010_1

まあ普通だ、次へをクリック。

vs2010_2

何かイッパイインストールされるけど毎度のことだ、次へ。

vs2010_3

当然フルサポートしてくれよ、ということで両方にチェックして開始。
この後インストールさせるものがズラッと表示されるけどそれはお楽しみで。

.NET Framework 4 Beta をインストールした後に一端再起動を促される。
んで一時間以上掛かってインストール完了、相変わらず長すぎる…

とにかく起動。
やはり初回起動は恐ろしく遅い、Vista なので後で勝手に早くなるからいいけど。

スタートページで目に付くのはアイコンがマウスオーバーで大きくなることくらい。
もうちょっとエフェクトを付けてもいいんでないの?という感じ。
ニュースの取得を勝手に行わず選択できるようになったのは嬉しいかな。

んで新規プロジェクトを作って最初に気になること。
WPF なので標準フォントの MS ゴシックが太字になる…

DATA.Blog – WPFと日本語フォント

ClearType フォントに変更する以外に手は無いみたい。
HGゴシックM というのが ClearType なのでいいかも、9pt だとイマイチだから 10pt に。
検索したら MS Office 付属フォントらしい、MS Office をインストールしていないんだが…
Excel Viewer だろうか?一太郎だろうか?それとも Visual Studio かな?

でも私は VL ゴシック(Ubuntu Fedora のデフォルトフォント)をあえて使う。
9pt で下画像のようになりますので参考に。

vl_font

そういえば Visual Studio 2008 はどうなった?

vs2010_4

Visual Studio が3つになった…
2008 はレイアウトがリセットされるけど普通に使えるみたい。
画像は(1680×1050)なので注意。

vs2010_2008

細かい使い勝手は次回。

MonoDevelop と Visual Studio

MonoDevelop Python ? dronelabs

あれ、MonoDevelop で Python 開発ができるの?
IronPython とは書いていないどころか PyGtk や Django がテンプレートにある。
Gtk# 製 IDE 上で PyGtk の開発かよ、何か笑える。

生き残るために必死なのだろうか?迷走したかつてのボーリャンドのように。
というのは勝手な妄想だが、まあ気が向いたら。
実際 Ubuntu というか Linux ではもう C# をやるつもりは無い。

それより次期 Visual Studio のほうが気になる。

Visual Studio Editor Blog : Visual Studio 2010 UI Unveiled

こちらの画像を見ると WPF デザイナ表示時にコードが表示できるようになったらしい。
それは嬉しいんだけどエディタ部が狭くなってしまう…使ってみなきゃなんともいえん。
他は WPF 化したわりに変化が見た目だけのような、まだ使っていないけど。

Microsoft Visual Studio 2010 – 将来のバージョン

誰でも使えるようだしせっかくなので beta を落としてみます。
インストールしたら Visual Studio 2008 は残るのだろうか?影響は???
まあそろそろ Vista 自体の再インストールで HDD を綺麗にしたいしイイかなと。

.NET アプリでバージョン情報の統一

SeeMe for Windows のバージョン情報が滅茶苦茶なのでなんとかせねば。

まず Explorer から本体のプロパティ。

explorer_prop

これは Visual Studio でプロジェクトのプロパティから「アセンブリ情報(I)…」ボタンを押して

assy_prop

で変更するんだがよく忘れるんだコレが。
最近は公開直後に即バージョンをインクリメントという対策をしているんだけど…
Visual Studio というより Windows が久々なので忘れていたわい。

ぱぇぽぃ2 ? Blog Archive ? SeeMe for Windows v4.0.1

のとおりダイアログのバージョンを書き換えるのを忘れていたし。
というか毎回ダイアログ文字列を変更ではおかしいので本体からバージョンを取得したい。

デルヒャァで作っていた頃はやっていたんですけどね。

procedure TAboutDlg1.FormShow(Sender: TObject);
var
  BuffSize, Ignore: Cardinal;
  P: Pointer;
  FileDescription: PChar;
begin
  BuffSize := GetFileVersionInfoSize(PChar(Application.ExeName), Ignore);
  P := AllocMem(BuffSize);
  GetFileVersionInfo(PChar(Application.ExeName), Ignore, BuffSize, P);

  VerQueryValue(P, PChar('\StringFileInfo\041103A4\FileVersion'),
                Pointer(FileDescription), Ignore);
  Label1.Caption := 'Y901 v' + FileDescription;

  FreeMem(P);
end;

こんな感じで、我ながら Object Pascal が懐かしい…
これを .NET Framework で同じようにするには

自分自身のバージョン情報を取得する: .NET Tips: C#, VB.NET, Visual Studio

やはり Windows で C# なら日本語でアッサリ見つかるなぁ…
日本語で GTK+ だと UNIX 臭さ全開かサル以前かの両極端しか無いのだが。

var version = System.Diagnostics.FileVersionInfo.GetVersionInfo(
    System.Reflection.Assembly.GetExecutingAssembly().Location);
v[0].Inlines.Add(new Bold(new Run("SeeMe for Windows " + version.FileVersion + "\n")));

と前回のコードを書き換えればオケのようで。
これであらかじめ本体のバージョン情報を更新しておけば追従してくれる。

cpanel_prop

インストーラのバージョンと本体のバージョンが合わない。
そう思って Version プロパティを弄くったら複数インストール可能になって困ったし。
それとアップデート毎に前バージョンの削除をさせるのも考え物だ。
実は前バージョンを削除してインストールする方法が解らなかっただけなんだが。

セットアッププロジェクトにて前のバージョンを削除してから新バージョンをインストールする(VisualStudio, Setup, msi) – いろいろ備忘録日記

うっ!それだけだったのかというか Version プロパティってそういうことか。
リンク先が無くなってしまったら困るので簡易で覚え書き。

セットアッププロジェクトのプロパティ
DetectNewerInstalledVersion = true
RemovePreviousVersion = true
Version をインクリメントすると ProductCode 変更ダイアログが出るので「はい」

を試してみたらアッサリと、プロジェクトのプロパティだけでイケたのね。
これでインストーラのバージョンと実行ファイルのバージョンを合わせることができた。

それと ToolBarTray を IsLocked=”True” にして動くように見えていたのをなんとかして。
ToolBar OverflowMode=”Never” にしてもオーバーフローボタンは消せないのね…
正直 WPF を使うには Visual Studio でないと厳しいと感じてきた。
そうそう、インストーラの名前に beta の意味な b が入っているのを消さなきゃ。

ということで修正のみだけど SeeMe for Windows v4.0.2 公開。

おまけ

2009-08-19 – 当面C#と.NETな記録 Visual Studio で一行だけコピーや削除するときには行を選択しなくてもよかった件について

マジだぁ!
トリプルクリックで一行選択してくれないけど、秀丸も EmEditor も Gedit さえもできるのに。
Visual Studio はトリプルクリックする必要すら無かった。

てゆーか空白やインデントがおかしいコードも貼り付けで勝手に整形してくれるぞ!

url.Click +=new RoutedEventHandler(url_Click);
// をコピーして貼り付けると同じソースコード中でも下のように
url.Click += new RoutedEventHandler(url_Click);

へたに手書きするよりコピペのほうが綺麗なコードになるとはね。

MediaElement is WMP

どうやら WPF の MediaElement について勘違いしていたようだ。

[WPF]MediaElementの罠

Vista で MediaElement が WMV しか再生できなかった理由はコレだったか。
だって WMP なんて使ったことが無い、ffdshow の有効に追加したのは私は当然 Cinema のみ。
Windows 7 用 WMP なら H.264 に標準対応だから最初から H.264 が再生できたというわけだ。

つまりは MediaElement で WPF アプリや Silverlight サイトを作ってとなると…
Vista で他形式を再生させるために WMP 用レジストリを弄くって codec 入れてもらって…
自分のマシンでしか使わないならそれでいいけど…これじゃ配れない。

WPF になっても WMP ActiveX コントロールに縛られるのと同じ結果なんだね。
Webbrouser も当然 IE コンポと同じなんだしそういうものか。

正直 Windows 用アプリはもう作る気が…

と思っていたたけど SeeMe のダウンロード数が Windows 版と Linux 版で百倍以上差がある…
Y901x なんて百に届かない、Windows 用プレイヤーを作っていた頃から考えるとありえない。
それさえも半数以上が Windows ユーザーが興味で落としたのだろう、これが現実だよ
解っていたけど Linux 用 GUI アプリをやってみたかっただけだ。

当分は Windows のオンラインソフト作者と二足のわらじを続けるしかなさそう。
Windows 自体をあまり使わなくなったけど何か新しいアプリでも考えとかなきゃ。
実は MediaElement で Y901w を作ってみようかと思っていたとかいないとか。
少なくともレイアウタが無い GUI 部品はもう使う気が起こらないんですけど。

SeeMe for Linux v1.0.2

SeeMe をまだ Delphi 5 という化石で作っていた頃の v2 画像が何故か出てきた。

seeme200

ナンジャコリャ…今になって見ると我ながら UI が古すぎる!
よくこんなのを恥ずかしげもなく公開していたものだ、信じられない。

XP のデザイン自体も古いけどウィジェットの絶対値配置ってマジ化石だな。
Vista や GNOME 環境を使っていると絶対値配置の奇妙なウイジェット位置に違和感出まくり。

PyGtk で GtkFixed コンテナを使っている初心者を最近見て死ぬほどガッカリしたんだが…
二年前の私はたいして変わらないな。

ということで今日の Python コード。

SeeMe for Linux で直接編集の指定部分。
何も書かれていなければ関連付け起動、でなければそのエディタで。
んでエディタを別プロセスで起動させたならそのまま SeeMe は終了。
というふうにしたかった、てか Windows 版がそうしている。

エディタ指定をしたならその実効ファイル名の引数に渡せばいいので普通なら下記…

os.system("%s %s" % (exe, self.sset.custome_path) )

これだと値が戻ってくるまで待機してしまう、つまり SeeMe はフリーズ状態に。
これでは使えない、ということで探したら os モジュールに spawn* というのがあるらしい。

16.1. os ? 雑多なオペレーティングシステムインタフェース ? Python v2.6.0 documentation

肝心な引数の書き方が可変個引数でよく解らない、検索してみたけどバラバラだし。
自分で色々試して二番目と三番目引数に実効ファイル名、四番目を開きたいファイルのフルパス

def on_textedit(self, widget, event=None):
    exe = self.deditor.edit_editor.get_text()
    if exe == "":
        os.system("xdg-open %s" % self.sset.custome_path)
        self.close()
    else:
        os.spawnlp(os.P_NOWAIT, exe , exe, self.sset.custome_path)
        self.close()

を入れてなんとか成功、イマイチ納得できないけどこれで動くからイイや!
ということで、Python で GUI アプリを作るのは難しい…
アトリビュート変数名の中身は本体スクリプトで、既に千行近くになっているけど…

ということで SeeMe for Linux v1.0.2 の公開。

追記

os.system("%s %s &" % (exe, self.sset.custome_path) )

こんな方法があった…出した直後に見つけるなよ俺。