Hatena::Groupruby

RubyCocoaでなにかつくる

2008-05-05

日記アプリ途中経過

| 22:18

f:id:asagi29:20080505221051p:image

ただいま、ちょっとした日記アプリ『Murmurous』を作成中です。

現在実装済みの機能としては

  • カレンダー選択→選択日付の記事を表示
  • 記事編集、保存(出力先ファイルは/User/ログインユーザ名/murmurous/YYYY/YYYY-MM-DD.rtf)

ソースコードは以下の通りです。

require 'osx/cocoa'
require 'kconv'
include OSX

class Murmurous < NSObject

	ib_outlet :window, :calendar, :textField
	
	def initialize
	
		#出力先ホームディレクトリ
		@homeDir = File.expand_path("~" + OSX.NSUserName.to_s) + "/murmurous/"
	
	end
	
	#初回起動時の挙動
	def awakeFromNib
	
		today = NSDate.date.description
		
		#カレンダーに現在日付をセット
		@calendar.setDateValue(NSDate.dateWithString(today))
		
		#今日付のファイルがあったら、その内容を@textField(NSTextView)にセット
		todayFile = getFilePath(today)

		if File.exist?(todayFile) then
			@textField.readRTFDFromFile(todayFile)
		end

	end
	
	#カレンダーで日付選択時のファイル読み込み
	ib_action :read do |sender|
			
		selectedDateFile = getFilePath(sender.dateValue.description)
		
		#該当日付のファイルがあったら、その内容をセット
		if File.exist?(selectedDateFile) then
			@textField.readRTFDFromFile(selectedDateFile)
		else
			#空の文字列をセット
			@textField.setString(NSString.init.string)
		end

	end

	#保存
	ib_action :save do |sender|
	
		#入力内容が空っぽでない時
		if @textField.string != NSString.init.string
		
			editedDateFile = getFilePath(@calendar.dateValue.description)

			#出力先ファイルの存在確認
			unless File.exist?(editedDateFile) then

				#出力先ホームディレクトリ作成(TODO サブディレクトリまで一気に作成できるはずなので要検討)
				unless File.exist?(@homeDir) then
					Dir::mkdir(@homeDir)
				end

				#出力先西暦ディレクトリ作成
				Dir::mkdir(File::dirname(editedDateFile))

			end
			
			#出力
			@textField.RTFFromRange(NSMakeRange(0, @textField.string.length)).writeToFile_atomically(editedDateFile, true)
		
		end

	end
	
	#日付文字列から出力先ファイルパスを取得
	def getFilePath(dateString)
		#dateString(NSDate.description)のフォーマット -> YYYY-MM-DD HH:MM:SS ±HHMM
		return @homeDir + dateString.to_s[0..3] + "/" + dateString.to_s[0..9] + ".rtf"
	end

end

今後、機能を少しずつ追加してゆく予定です。

GimenaGimena 2013/11/10 19:42 This is way more helpful than anitnyhg else I've looked at.

YesaYesa 2013/11/12 12:03 Your post has <a href="http://elvfgbeuqsa.com">lietfd</a> the level of debate

LucieLucie 2013/11/13 20:49 I went to tons of links before this, what was I thniknig? http://zqyxnpdfl.com [url=http://kqkvaaluyn.com]kqkvaaluyn[/url] [link=http://rvqfobzlrq.com]rvqfobzlrq[/link]

MaricarmenMaricarmen 2013/11/15 16:37 A few years ago I'd have to pay someone for this <a href="http://ogvjxkz.com">intmroafion.</a>

LuanLuan 2013/11/17 14:09 This info is the cat's pajmaas! http://mcvotcfi.com [url=http://wjgmkvpyerd.com]wjgmkvpyerd[/url] [link=http://hplayhs.com]hplayhs[/link]

ゲスト



トラックバック - http://ruby.g.hatena.ne.jp/asagi29/20080505