gui/window.rb in RUIC-0.4.6 vs gui/window.rb in RUIC-0.5.0

- old
+ new

@@ -1,90 +1,90 @@ -#encoding: utf-8 -require_relative 'window_qrc' -require_relative '../lib/ruic' - -class UIC::GUI < Qt::MainWindow - NVGREEN = Qt::Color.fromRgb(115,185,0) - slots :open, :saveAll - - def initialize(parent=nil, &block) - super(parent) - @ui = Ui_MainWin.new - setup_interface! - connect_menus! - # instance_exec(&block) if block - end - - def setup_interface! - @ui.setupUi(self) - @ui.inspector.vertical_header.resize_mode = Qt::HeaderView::Fixed - @ui.inspector.vertical_header.default_section_size = 18 - end - - def connect_menus! - connect @ui.actionOpen, SIGNAL(:triggered), SLOT(:open) - connect @ui.actionSaveAll, SIGNAL(:triggered), SLOT(:saveAll) - connect @ui.actionQuit, SIGNAL(:triggered), SLOT(:close) - end - - def open - recent = $prefs.value('RecentProjects').value - recent = recent ? recent.last : Dir.pwd - # TODO: ensure that the file/directory exists - path = Qt::FileDialog.get_open_file_name( - self, tr("Open an Application"), recent, "UIC Application (*.uia)" - ) - unless path.nil? - add_recent(path) - load_file path - end - end - - def saveAll - warn "SAVE ALL NOT IMPLEMENTED" - end - - def load_file( path ) - @ruic = RUIC.new - @ruic.metadata( 'MetaData.xml' ) unless File.exist?(RUIC::DEFAULTMETADATA) - @uia = @ruic.uia(path) - dir = File.basename(File.dirname(path)) - self.window_title = File.join(dir,File.basename(path)) - reload_interface - end - - def reload_interface - reload_hierarchy - end - - def reload_hierarchy - @ui.elements.model = AppElementsModel.new(self,@uia) - changed = SIGNAL('currentChanged(const QModelIndex &, const QModelIndex &)') - @ui.elements.selectionModel.connect( changed, &method(:element_selected) ) - end - - def element_selected(current,previous) - @ui.slideList.remove_item(1) until @ui.slideList.count==1 - if current.valid? - el = current.internal_pointer.el - master, *nonmaster = el.slides - nonmaster.each{ |s| @ui.slideList.addItem "#{s.index}: #{s.name}" } - @ui.inspector.model = AppAttributesModel.new(self,el) - @ui.inspector.horizontal_header.stretch_last_section = true - end - end - - def add_recent(path) - recent = $prefs.value("RecentProjects").value || [] - recent.delete(path) - recent << path - begin - $prefs.set_value("RecentProjects",Qt::Variant.new(recent)) - rescue Exception=>e - p e - end - end -end - -require_relative 'window_ui' -require_relative 'appelementsmodel' -require_relative 'appattributesmodel' +#encoding: utf-8 +require_relative 'window_qrc' +require_relative '../lib/ruic' + +class UIC::GUI < Qt::MainWindow + NVGREEN = Qt::Color.fromRgb(115,185,0) + slots :open, :saveAll + + def initialize(parent=nil, &block) + super(parent) + @ui = Ui_MainWin.new + setup_interface! + connect_menus! + # instance_exec(&block) if block + end + + def setup_interface! + @ui.setupUi(self) + @ui.inspector.vertical_header.resize_mode = Qt::HeaderView::Fixed + @ui.inspector.vertical_header.default_section_size = 18 + end + + def connect_menus! + connect @ui.actionOpen, SIGNAL(:triggered), SLOT(:open) + connect @ui.actionSaveAll, SIGNAL(:triggered), SLOT(:saveAll) + connect @ui.actionQuit, SIGNAL(:triggered), SLOT(:close) + end + + def open + recent = $prefs.value('RecentProjects').value + recent = recent ? recent.last : Dir.pwd + # TODO: ensure that the file/directory exists + path = Qt::FileDialog.get_open_file_name( + self, tr("Open an Application"), recent, "UIC Application (*.uia)" + ) + unless path.nil? + add_recent(path) + load_file path + end + end + + def saveAll + warn "SAVE ALL NOT IMPLEMENTED" + end + + def load_file( path ) + @ruic = RUIC.new + @ruic.metadata( 'MetaData.xml' ) unless File.exist?(RUIC::DEFAULTMETADATA) + @uia = @ruic.uia(path) + dir = File.basename(File.dirname(path)) + self.window_title = File.join(dir,File.basename(path)) + reload_interface + end + + def reload_interface + reload_hierarchy + end + + def reload_hierarchy + @ui.elements.model = AppElementsModel.new(self,@uia) + changed = SIGNAL('currentChanged(const QModelIndex &, const QModelIndex &)') + @ui.elements.selectionModel.connect( changed, &method(:element_selected) ) + end + + def element_selected(current,previous) + @ui.slideList.remove_item(1) until @ui.slideList.count==1 + if current.valid? + el = current.internal_pointer.el + master, *nonmaster = el.slides + nonmaster.each{ |s| @ui.slideList.addItem "#{s.index}: #{s.name}" } + @ui.inspector.model = AppAttributesModel.new(self,el) + @ui.inspector.horizontal_header.stretch_last_section = true + end + end + + def add_recent(path) + recent = $prefs.value("RecentProjects").value || [] + recent.delete(path) + recent << path + begin + $prefs.set_value("RecentProjects",Qt::Variant.new(recent)) + rescue Exception=>e + p e + end + end +end + +require_relative 'window_ui' +require_relative 'appelementsmodel' +require_relative 'appattributesmodel'