| Class | Webgen::GUI::MainWindow |
| In: |
lib/webgen/gui/main.rb
|
| Parent: | Qt::MainWindow |
# File lib/webgen/gui/main.rb, line 78
78: def initialize
79: super
80: setCaption( 'webgen GUI' )
81: setup_window
82: setup_menus
83: @website = Webgen::Website.new( '/home/thomas/work/projects/trunk/webgen/DIR' )
84: end
# File lib/webgen/gui/main.rb, line 118
118: def filter_files
119: # set_file_list
120: # set status text
121: end
# File lib/webgen/gui/main.rb, line 86
86: def new
87: dlg = NewWebsiteDialog.new( self )
88: if dlg.exec == Qt::Dialog::Accepted
89: @website = Webgen::Website.new( dlg.website_directory )
90: #TODO init website
91: end
92: end
# File lib/webgen/gui/main.rb, line 94
94: def open
95: #TODO save files in existing dir if necessary
96: dir = Qt::FileDialog.getExistingDirectory( @website.directory, self, nil, "Select website directory" )
97: unless dir.nil?
98: @website = Webgen::Website.new( dir )
99: #TODO init website
100: end
101: end
# File lib/webgen/gui/main.rb, line 107
107: def preview_page
108: @old = @pageEditor.text
109: @pageEditor.setTextFormat( Qt::RichText )
110: @pageEditor.setText( RedCloth.new( @old ).to_html )
111: end
# File lib/webgen/gui/main.rb, line 113
113: def preview_text
114: @pageEditor.setTextFormat( Qt::PlainText )
115: @pageEditor.setText( @old )
116: end
# File lib/webgen/gui/main.rb, line 123
123: def run_webgen
124: @log.clear
125: before = Time.now
126: Webgen.run_webgen( @website.directory )
127: # call external command
128: diff = Time.now - before
129: puts diff
130: end
# File lib/webgen/gui/main.rb, line 174
174: def setup_file_list( mainWidget )
175: button = Qt::PushButton.new( 'Clear', mainWidget )
176: @filter = Qt::LineEdit.new( mainWidget )
177: @filter.setMinimumWidth( 200 )
178:
179: connect( button, SIGNAL('clicked()'), @filter, SLOT('clear()') )
180: connect( @filter, SIGNAL('textChanged(const QString&)'), self, SLOT('filter_files()') )
181:
182: @fileList = Qt::ListBox.new( mainWidget )
183:
184: @fileStatusText = Qt::Label.new( mainWidget )
185: @fileStatusText.setText( 'something' )
186:
187: filterLayout = Qt::HBoxLayout.new
188: filterLayout.addWidget( @filter )
189: filterLayout.addWidget( button )
190:
191: layout = Qt::VBoxLayout.new( mainWidget )
192: layout.setSpacing( 3 )
193: layout.addLayout( filterLayout )
194: layout.addWidget( @fileList )
195: layout.addWidget( @fileStatusText )
196: end
# File lib/webgen/gui/main.rb, line 198
198: def setup_file_view( mainWidget )
199: @fileView = Qt::WidgetStack.new( mainWidget )
200: @fileView.setMinimumSize( 300, 300 )
201:
202: main = Qt::Widget.new( @fileView )
203: @pageEditor = Qt::TextEdit.new( main )
204: @pageEditor.setTextFormat( Qt::PlainText )
205: button = Qt::PushButton.new( "Preview", main )
206: connect( button, SIGNAL('pressed()'), self, SLOT('preview_page()') )
207: connect( button, SIGNAL('released()'), self, SLOT('preview_text()') )
208: layout = Qt::VBoxLayout.new( main )
209: layout.setSpacing( 3 )
210: layout.addWidget( @pageEditor )
211: layout.addWidget( button )
212:
213:
214: @imageViewer = Qt::Label.new( @fileView )
215: end
# File lib/webgen/gui/main.rb, line 136
136: def setup_menus
137: filemenu = Qt::PopupMenu.new( self )
138: filemenu.insertItem( "&Create website dir...", self, SLOT("new()"), Qt::KeySequence.new( CTRL+Key_N ) )
139: filemenu.insertItem( "&Open website dir...", self, SLOT("open()"), Qt::KeySequence.new( CTRL+Key_O ) )
140: filemenu.insertItem( "&Save website", self, SLOT("save()"), Qt::KeySequence.new( CTRL+Key_S ) )
141: filemenu.insertSeparator
142: filemenu.insertItem( "&Quit", $app, SLOT("quit()"), Qt::KeySequence.new( CTRL+Key_Q ) )
143:
144: toolsmenu = Qt::PopupMenu.new( self )
145: toolsmenu.insertItem( "&Run webgen...", self, SLOT("run_webgen()"), Qt::KeySequence.new( CTRL+Key_R ) )
146: toolsmenu.insertItem( "Toogle &log window", @log, SLOT('toggleShown()'), Qt::KeySequence.new( CTRL+Key_L) )
147:
148: self.menuBar.insertItem( "&File", filemenu )
149: self.menuBar.insertItem( "&Tools", toolsmenu )
150: end
# File lib/webgen/gui/main.rb, line 152
152: def setup_window
153: mainWidget = Qt::Splitter.new( Qt::Vertical, self )
154: mainWidget.setOpaqueResize( true )
155:
156: upperWidget = Qt::Widget.new( mainWidget )
157:
158: left = Qt::Widget.new( upperWidget )
159: setup_file_list( left )
160: setup_file_view( upperWidget )
161:
162: mainLayout = Qt::HBoxLayout.new( upperWidget )
163: mainLayout.setSpacing( 3 )
164: mainLayout.setMargin( 3 )
165: mainLayout.addWidget( left )
166: mainLayout.addWidget( @fileView, 1 )
167:
168: @log = LogWidget.new( mainWidget )
169: @log.hide
170:
171: setCentralWidget( mainWidget )
172: end