Class Webgen::GUI::NewWebsiteDialog
In: lib/webgen/gui/new_website_dlg.rb
Parent: Qt::Dialog
RuntimeError PluginParamNotFound PluginNotFound ConfigurationFileInvalid CmdParse::CommandParser CommandParser DirectoryInfo GalleryStyle WebSiteStyle WebSiteTemplate SipttraStyle Test::Unit::TestCase TestCase PluginTestCase TagTestCase CmdParse::Command ShowCommand CheckCommand UseCommand CreateCommand TSort DependencyHash Hash Comparable Language ::Logger Logger Logger DEFAULT_WRAPPER_MODULE WebSite Qt::MainWindow MainWindow Qt::Dialog NewWebsiteDialog Qt::TextEdit LogWidget ::Rake::TaskLib WebgenTask ConfigurationFile Website PluginManager PluginLoader PluginParamValueNotFound Dummy Color CliUtils PluginDefs lib/webgen/languages.rb lib/webgen/website.rb lib/webgen/gui/common.rb lib/webgen/plugin.rb lib/webgen/test.rb lib/webgen/cli.rb ClassMethods PluginDefs LanguageManager lib/webgen/gui/new_website_dlg.rb lib/webgen/gui/main.rb GUI lib/webgen/rake/webgentask.rb Rake Webgen dot/m_60_1.png

Methods

Public Class methods

[Source]

    # File lib/webgen/gui/new_website_dlg.rb, line 8
 8:     def initialize( parent )
 9:       super( parent )
10:       setCaption( "Create new website..." )
11:       setup_window
12:     end

Public Instance methods

[Source]

    # File lib/webgen/gui/new_website_dlg.rb, line 78
78:     def check_input
79:       valid = true
80: 
81:       #check website parent dir
82:       if File.directory?( @directory.text )
83:         @directory.unsetPalette()
84:       else
85:         valid = false
86:         @directory.setPalette( Webgen::GUI::ERROR_PALETTE )
87:       end
88: 
89:       # check website name
90:       if @website.text.empty? || File.exists?( File.join( @directory.text, @website.text ) )
91:         valid = false
92:         @website.setPalette( Webgen::GUI::ERROR_PALETTE )
93:       else
94:         @website.unsetPalette()
95:       end
96: 
97:       emit input_valid( valid )
98:     end

[Source]

    # File lib/webgen/gui/new_website_dlg.rb, line 73
73:     def choose_dir
74:       newdir = Qt::FileDialog.getExistingDirectory( @directory.text, self, nil, "Select website base directory" )
75:       @directory.setText( newdir ) unless newdir.nil?
76:     end

[Source]

    # File lib/webgen/gui/new_website_dlg.rb, line 14
14:     def setup_window
15:       layout = Qt::VBoxLayout.new( self, 10, 10 )
16: 
17:       mainLayout = Qt::GridLayout.new( 5, 2, 3 )
18: 
19:       mainLayout.addWidget( Qt::Label.new( "Directory:", self ), 0, 0 )
20:       box = Qt::HBoxLayout.new( 3 )
21:       @directory = Qt::LineEdit.new( self )
22:       @directory.setText( Dir.pwd )
23:       connect( @directory, SIGNAL('textChanged(const QString&)'), self, SLOT('check_input()') )
24:       dirChooser = Qt::PushButton.new( "...", self )
25:       connect( dirChooser, SIGNAL('clicked()'), self, SLOT('choose_dir()') )
26:       box.addWidget( @directory )
27:       box.addWidget( dirChooser )
28:       mainLayout.addLayout( box, 0, 1 )
29: 
30:       mainLayout.addWidget( Qt::Label.new( "Website name:", self ), 1, 0 )
31:       @website = Qt::LineEdit.new( self )
32:       @website.setFocus()
33:       connect( @website, SIGNAL('textChanged(const QString&)'), self, SLOT('check_input()') )
34:       mainLayout.addWidget( @website, 1, 1 )
35: 
36:       mainLayout.addWidget( Qt::Label.new( "Website template:", self ), 2, 0 )
37:       @template = Qt::ComboBox.new( self )
38:       @template.insertStringList( Webgen::Website.templates.sort )
39:       @template.setCurrentText( 'default' )
40:       mainLayout.addWidget( @template, 2, 1 )
41: 
42:       mainLayout.addWidget( Qt::Label.new( "Website style:", self ), 3, 0 )
43:       @style = Qt::ComboBox.new( self )
44:       @style.insertStringList( Webgen::Website.styles.sort )
45:       @style.setCurrentText( 'default' )
46:       mainLayout.addWidget( @style, 3, 1 )
47: 
48:       mainLayout.addWidget( Qt::Label.new( "Main language:", self ), 4, 0 )
49:       @language = Qt::ComboBox.new( self )
50:       @language.insertStringList( Webgen::Website.languages.collect {|l| l[1]}.sort )
51:       @language.setCurrentText( 'English' )
52:       mainLayout.addWidget( @language, 4, 1 )
53: 
54:       box = Qt::HBoxLayout.new( 3 )
55:       box.addStretch( 1 )
56:       @cancel = Qt::PushButton.new( "Cancel", self )
57:       connect( @cancel, SIGNAL('clicked()'), self, SLOT('reject()') )
58:       box.addWidget( @cancel )
59:       @create = Qt::PushButton.new( "Create", self )
60:       @create.setEnabled( false )
61:       connect( @create, SIGNAL('clicked()'), self, SLOT('create_website()') )
62:       connect( self, SIGNAL('input_valid(bool)'), @create, SLOT('setEnabled(bool)') )
63:       @create.setDefault( true )
64:       box.addWidget( @create )
65: 
66:       layout.addLayout( mainLayout )
67:       layout.addLayout( box )
68:       layout.setResizeMode( Qt::Layout::Fixed )
69: 
70:       check_input
71:     end

[Source]

     # File lib/webgen/gui/new_website_dlg.rb, line 100
100:     def website_directory
101:       File.join( @directory.text, @website.text )
102:     end

Private Instance methods

[Source]

     # File lib/webgen/gui/new_website_dlg.rb, line 108
108:     def create_website
109:       template = @template.currentText
110:       style = @style.currentText
111:       lang = Webgen::Website.languages.rassoc( @language.currentText )[0]
112:       begin
113:         Webgen.create_website( website_directory, template, style )
114:         File.open( File.join( website_directory, 'config.yaml' ), 'a+' ) {|f| f.write( "Configuration:\n  lang: #{lang}" ) }
115:       rescue RuntimeError, SystemCallError => e
116:         Qt::MessageBox.critical( self, "Creation error", "Could not create website: \n#{e.message}",
117:                                  Qt::MessageBox::Ok, Qt::MessageBox::NoButton, Qt::MessageBox::NoButton )
118:         return
119:       end
120:       accept
121:     end

[Validate]