class MainWindow
Attributes
study_table_models[R]
ui[R]
Public Class Methods
new(parent = nil)
click to toggle source
Calls superclass method
# File lib/tmis/interface/mainwindow.rb, line 149 def initialize(parent = nil) super(parent) @ui = Ui::MainWindow.new @ui.setup_ui self @ui.exportMenu.enabled = false @study_table_views = [@ui.studiesTableView, @ui.studiesTableView2, @ui.studiesTableView3, @ui.studiesTableView4, @ui.studiesTableView5, @ui.studiesTableView6] @table_views = [[Cabinet, CabinetTableModel, @ui.cabinetsTableView], [Course, CourseTableModel, @ui.coursesTableView], [Group, GroupTableModel, @ui.groupsTableView], [Lecturer, LecturerTableModel, @ui.lecturersTableView], [Semester, SemesterTableModel, @ui.semestersTableView], [Speciality, SpecialityTableModel, @ui.specialitiesTableView], [SpecialitySubject, SpecialitySubjectTableModel, @ui.specialitySubjectsTableView], [Subgroup, SubgroupTableModel, @ui.subgroupsTableView], [Subject, SubjectTableModel, @ui.subjectsTableView]] # Следующие два атрибута используются для обхода бага связанного с работой GC # http://stackoverflow.com/questions/9715548/cant-display-more-than-one-table-model-inheriting-from-the-same-class-on-differ @table_models = @study_table_models = [] @tables_views_to_hide = @study_table_views + [@ui.cabinetsTableView, @ui.coursesTableView, @ui.groupsTableView, @ui.lecturersTableView, @ui.semestersTableView, @ui.specialitySubjectsTableView, @ui.specialitiesTableView, @ui.subgroupsTableView, @ui.subjectsTableView, @ui.dateDateEdit, @ui.dayLabel, @ui.dayLabel2, @ui.dayLabel3, @ui.dayLabel4, @ui.dayLabel5, @ui.dayLabel6, @ui.subjectsListView, @ui.lecturersListView, @ui.cabinetsListView, @ui.tarificationCheckBox, @ui.addCabinetPushButton, @ui.addCoursePushButton, @ui.addGroupPushButton, @ui.addSubgroupPushButton, @ui.addLecturerPushButton, @ui.addSemesterPushButton, @ui.addSpecialityPushButton, @ui.addSpecialitySubjectPushButton, @ui.addSubjectPushButton, @ui.removeCabinetPushButton, @ui.removeCoursePushButton, @ui.removeGroupPushButton, @ui.removeSubgroupPushButton, @ui.removeLecturerPushButton, @ui.removeSemesterPushButton, @ui.removeSpecialityPushButton, @ui.removeSpecialitySubjectPushButton, @ui.removeSubjectPushButton] @widgets_to_disable = [@ui.findMenu, @ui.exportMenu, @ui.verifyMenu, @ui.saveAsAction, @ui.expandChangesAction] @tables_views_to_hide.each(&:hide) @widgets_to_disable.each{ |x| x.enabled = false } modeActionGroup = Qt::ActionGroup.new(self) modeActionGroup.setExclusive(true) modeActionGroup.addAction(@ui.weeklyViewAction) modeActionGroup.addAction(@ui.dailyViewAction) @temp = ->(){ "#{Dir.mktmpdir('tmis')}/temp.sqlite" } connect(@ui.aboutQtAction, SIGNAL('triggered()')){ Qt::Application.aboutQt } connect(@ui.aboutProgramAction, SIGNAL('triggered()')){ AboutDialog.new.exec } connect(@ui.exportGeneralAction, SIGNAL('triggered()')) do ExportGeneralTimetableDialog.new(Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate))).exec end connect(@ui.exportForLecturersAction, SIGNAL('triggered()')) do ExportLecturerTimetableDialog.new(Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate))).exec end connect(@ui.exportForGroupsAction, SIGNAL('triggered()')) do ExportGroupTimetableDialog.new(Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate))).exec end connect(@ui.settingsAction, SIGNAL('triggered()')){ SettingsDialog.new.exec } connect(@ui.expandChangesAction, SIGNAL('triggered()')){ ExpandChangesDialog.new(self).exec } @clear_recent_action = Qt::Action.new('Очистить', self) @clear_recent_action.setData Qt::Variant.new('clear') connect(@clear_recent_action, SIGNAL('triggered()'), self, SLOT('clear_recent_files()')) @ui.dateDateEdit.setDate(Qt::Date.fromString(Date.today.to_s, Qt::ISODate)) setup_dateEdit(Date.today) @ui.recentMenu.clear @ui.recentMenu.addActions([@clear_recent_action] + Settings[:recent, :files].split.map{ |path| create_recent_action(path) }) #Settings[:app, :first_run] = '' Settings.set_defaults_if_first_run @console = ConsoleDialog.new self connect(@console, SIGNAL('dialogClosed()')){ @study_table_models.each(&:cancelColoring) } $TARIFICATION_MODE = false end
Public Instance Methods
clear_recent_files()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 793 def clear_recent_files @ui.recentMenu.clear @ui.recentMenu.addAction @clear_recent_action end
create_recent_action(path)
click to toggle source
Contract String => Qt::Action
# File lib/tmis/interface/mainwindow.rb, line 776 def create_recent_action(path) action = Qt::Action.new(path[path.size-10..path.size], self) connect(action, SIGNAL('triggered()'), self, SLOT('open_file()')) action.setData Qt::Variant.new(path); action end
create_stubs()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 217 def create_stubs Lecturer.create(surname: Settings[:stubs, :lecturer], stub: true) Cabinet.create(title: Settings[:stubs, :cabinet], stub: true) Subject.create(title: Settings[:stubs, :subject], stub: true) end
filterListViews(study64)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 705 def filterListViews(study64) if study.subject end if study.lecturer end end
on_addCabinetPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 827 def on_addCabinetPushButton_clicked @ui.cabinetsTableView.model.insert_new end
on_addCoursePushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 835 def on_addCoursePushButton_clicked @ui.coursesTableView.model.insert_new end
on_addGroupPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 843 def on_addGroupPushButton_clicked @ui.groupsTableView.model.insert_new end
on_addLecturerPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 851 def on_addLecturerPushButton_clicked @ui.lecturersTableView.model.insert_new end
on_addSemesterPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 859 def on_addSemesterPushButton_clicked @ui.semestersTableView.model.insert_new end
on_addSpecialityPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 875 def on_addSpecialityPushButton_clicked @ui.specialitiesTableView.model.insert_new end
on_addSpecialitySubjectPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 867 def on_addSpecialitySubjectPushButton_clicked @ui.specialitySubjectsTableView.model.insert_new end
on_addSubgroupPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 883 def on_addSubgroupPushButton_clicked @ui.subgroupsTableView.model.insert_new end
on_addSubjectPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 891 def on_addSubjectPushButton_clicked @ui.subjectsTableView.model.insert_new end
on_allAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 295 def on_allAction_triggered begin @console.browser.clear @console.show @console.browser.append verifyLecturers @console.browser.append verifyCabinets @console.browser.append showComputerCabinets @console.browser.append showLecturerStubs @console.browser.append showCabinetStubs @console.browser.append showSubjectsStubs @console.browser.append showPreferredDays rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_allCoincidenceAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 311 def on_allCoincidenceAction_triggered begin @console.browser.clear @console.show @console.browser.append verifyLecturers @console.browser.append verifyCabinets rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_allNotAssignedAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 322 def on_allNotAssignedAction_triggered begin @console.browser.clear @console.show @console.browser.append showLecturerStubs @console.browser.append showCabinetStubs @console.browser.append showSubjectsStubs rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_closeAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 281 def on_closeAction_triggered @tables_views_to_hide.each(&:hide) @widgets_to_disable.each{ |x| x.enabled = false } Database.instance.disconnect unless $TESTING end
on_dataTabWidget_currentChanged(index)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 899 def on_dataTabWidget_currentChanged(index) if Database.instance.connected? @table_views.each do |c, m, view| model = view.model model.refresh proxy_model = model view.model = proxy_model end end end
on_dateDateEdit_dateChanged()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 798 def on_dateDateEdit_dateChanged setup_dateEdit(Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate))) setup_study_table_views if Database.instance.connected? end
on_debugConsoleAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 931 def on_debugConsoleAction_triggered DebugConsoleDialog.new(self).show end
on_findByCabinetAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 927 def on_findByCabinetAction_triggered FindDialog.new(:cabinet, self).show end
on_findByLecturerAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 919 def on_findByLecturerAction_triggered FindDialog.new(:lecturer, self).show end
on_findBySubjectAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 923 def on_findBySubjectAction_triggered FindDialog.new(:subject, self).show end
on_importAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 245 def on_importAction_triggered please_wait do if (filename = Qt::FileDialog::getOpenFileName(self, 'Open File', Dir.home, 'Spreadsheets(*.xls *.xlsx *.ods *.csv)')) filename = filename.force_encoding('UTF-8') if Database.instance.connected? (id = ImportDialog.new(Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)))).exec else (id = ImportDialog.new(Date.today)).exec end unless id.params.empty? begin sheet = SpreadsheetCreater.create filename reader = TimetableReader.new(sheet, id.params[:sheet]) monday = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)).monday if Database.instance.connected? Database.instance.transaction do Study.where(date: (monday..(monday + 6))).each(&:delete) end else Database.instance.connect_to(@temp.()) create_stubs end TimetableManager.new(reader, id.params[:date]).save_to_db show_tables rescue => e show_message "При импорте произошли ошибки,\nтаблица не была импортирована.\nПроверьте структуру таблицы." end end end end end
on_newAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 210 def on_newAction_triggered Database.instance.connect_to(@temp.()) create_stubs Group.create(title: 'New') show_tables end
on_openAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 223 def on_openAction_triggered if (filename = Qt::FileDialog::getOpenFileName(self, 'Open File', Dir.home, 'TMIS databases (SQLite3)(*.sqlite)')) filename = filename.force_encoding("UTF-8") Database.instance.connect_to filename update_recent filename show_tables end end
on_quitAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 287 def on_quitAction_triggered on_closeAction_triggered recent = @ui.recentMenu.actions Settings[:recent, :files] = recent[1..recent.size-1].map{ |a| a.data.value.to_s }.join(' ') puts 'Sayonara!' Qt::Application.quit end
on_removeCabinetPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 831 def on_removeCabinetPushButton_clicked @ui.cabinetsTableView.model.remove_current end
on_removeCoursePushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 839 def on_removeCoursePushButton_clicked @ui.coursesTableView.model.remove_current end
on_removeGroupPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 847 def on_removeGroupPushButton_clicked @ui.groupsTableView.model.remove_current end
on_removeLecturerPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 855 def on_removeLecturerPushButton_clicked @ui.lecturersTableView.model.remove_current end
on_removeSemesterPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 863 def on_removeSemesterPushButton_clicked @ui.semestersTableView.model.remove_current end
on_removeSpecialityPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 879 def on_removeSpecialityPushButton_clicked @ui.specialitiesTableView.model.remove_current end
on_removeSpecialitySubjectPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 871 def on_removeSpecialitySubjectPushButton_clicked @ui.specialitySubjectsTableView.model.remove_current end
on_removeSubgroupPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 887 def on_removeSubgroupPushButton_clicked @ui.subgroupsTableView.model.remove_current end
on_removeSubjectPushButton_clicked()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 895 def on_removeSubjectPushButton_clicked @ui.subjectsTableView.model.remove_current end
on_saveAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 232 def on_saveAction_triggered end
on_saveAsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 235 def on_saveAsAction_triggered if (filename = Qt::FileDialog::getSaveFileName(self, 'Save File', "#{Dir.home}/NewTimetable.sqlite", 'TMIS databases (SQLite3)(*.sqlite)')) filename.force_encoding('UTF-8') FileUtils.cp(Database.instance.path, filename) unless Database.instance.path == filename Database.instance.connect_to filename update_recent filename show_tables end end
on_showCabinetStubsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 429 def on_showCabinetStubsAction_triggered begin @console.browser.clear @console.show @console.browser.append showCabinetStubs rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_showLecturerStubsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 406 def on_showLecturerStubsAction_triggered begin @console.browser.clear @console.show @console.browser.append showLecturerStubs rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_showManualAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 814 def on_showManualAction_triggered # binding doesn't include QHelpEngine #helpEngine Qt::HelpEngineCore('test.qhc') #links = helpEngine.linksForIdentifier('MyDialog::ChangeButton') #if links.count # helpData = helpEngine.fileData links.constBegin.value # if !helpData.isEmpty # displayHelp helpData # end #end Qt::DesktopServices::openUrl(Qt::Url.new('https://github.com/Noein/TMIS/wiki')) end
on_showSubjectsStubsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 452 def on_showSubjectsStubsAction_triggered begin @console.browser.clear @console.show @console.browser.append showSubjectsStubs rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_tabWidget_currentChanged(index)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 910 def on_tabWidget_currentChanged(index) if Database.instance.connected? if index == 0 @study_table_models.each(&:refresh) [@ui.subjectsListView, @ui.lecturersListView, @ui.cabinetsListView].each{|view| view.model.refresh } end end end
on_tarificationCheckBox_toggled(checked)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 610 def on_tarificationCheckBox_toggled(checked) if checked $TARIFICATION_MODE = true model = EntityItemModel.new(->(){ [] }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ [] }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show else $TARIFICATION_MODE = false model = EntityItemModel.new(->(){ Subject.all }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ Lecturer.all }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show end end
on_verifyCabinetsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 383 def on_verifyCabinetsAction_triggered begin @console.browser.clear @console.show @console.browser.append verifyCabinets rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_verifyComputerCabinetsAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 475 def on_verifyComputerCabinetsAction_triggered begin @console.browser.clear @console.show @console.browser.append showComputerCabinets rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_verifyLecturersAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 355 def on_verifyLecturersAction_triggered begin @console.browser.clear @console.show @console.browser.append verifyLecturers rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
on_verifyPreferredDaysAction_triggered()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 498 def on_verifyPreferredDaysAction_triggered begin @console.browser.clear @console.show @console.browser.append showPreferredDays rescue show_message "При проверке произошли ошибки.\nПроверьте таблицы данных и расписание" end end
open_file()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 766 def open_file filename = sender.data.value.to_s if File.exist? filename Database.instance.connect_to filename update_recent filename show_tables end end
please_wait() { |block| ... }
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 808 def please_wait(&block) @ui.statusbar.showMessage 'Please, wait...' yield block @ui.statusbar.clearMessage end
refreshTableViewModel(date_variant)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 737 def refreshTableViewModel(date_variant) @study_table_models[date_variant.value.dayOfWeek - 1].refresh end
setupListViews(index)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 630 def setupListViews(index) return false unless $TARIFICATION_MODE string = index.model.data(index, Qt::UserRole).toString if string.nil? || string.empty? model = EntityItemModel.new(->(){ [] }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ [] }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show else entity = Marshal.load(Base64.decode64(string)) p entity if entity.class == Study group = entity.groupable.get_group course = group.course if course.nil? model = EntityItemModel.new(->(){ [] }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ [] }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show else semester = course.current_semester get_subjects = ->() do if entity.lecturer && entity.subject.stub SpecialitySubject.where(lecturer_id: entity.lecturer, speciality_id: group.speciality, semester_id: semester).map(&:subject) else SpecialitySubject.where(speciality_id: group.speciality, semester_id: semester).map(&:subject) end end get_lecturers = ->() do if entity.subject && entity.lecturer.stub SpecialitySubject.where(subject_id: entity.subject, speciality_id: group.speciality, semester_id: semester).map(&:lecturer) else SpecialitySubject.where(speciality_id: group.speciality, semester_id: semester).map(&:lecturer) end end model = EntityItemModel.new(get_subjects, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(get_lecturers, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show end elsif entity.class == Group group = entity course = group.course if course.nil? model = EntityItemModel.new(->(){ [] }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ [] }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show else semester = course.current_semester get_subjects = ->() do SpecialitySubject.where(speciality_id: group.speciality, semester_id: semester).map(&:subject) end get_lecturers = ->() do SpecialitySubject.where(speciality_id: group.speciality, semester_id: semester).map(&:lecturer) end model = EntityItemModel.new(get_subjects, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(get_lecturers, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show end end end end
setup_dateEdit(date)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 803 def setup_dateEdit(date) type = date.cweek.even? ? "Чётная" : "Нечётная" @ui.dateDateEdit.displayFormat = "Неделя №#{date.cweek} (#{type}) dddd - d MMMM yy" end
setup_study_table_view(view, date)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 741 def setup_study_table_view(view, date) model = StudyTableModel.new(date, view) view = setup_table_view2(view, model, Qt::HeaderView::Interactive) model.columnCount.times{ |i| i.odd? ? view.setColumnWidth(i, 50) : view.setColumnWidth(i, 150) } model.rowCount.times{ |i| view.setRowHeight(i, 50) } model end
setup_study_table_views()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 714 def setup_study_table_views @ui.deleteAction.disconnect(SIGNAL('triggered()')) monday = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)).monday @study_table_models = @study_table_views.each_with_index.map do |view, index| model = setup_study_table_view(view, monday + index) model.disconnect(SIGNAL('studySaved(QVariant)')) view.disconnect(SIGNAL('doubleClicked(QModelIndex)')) view.disconnect(SIGNAL('customContextMenuRequested(QPoint)')) view.disconnect(SIGNAL('clicked(QModelIndex)')) model.disconnect(SIGNAL('refreshTarification(QModelIndex)')) connect(view, SIGNAL('customContextMenuRequested(QPoint)'), model, SLOT('displayMenu(QPoint)')) connect(view, SIGNAL('clicked(QModelIndex)')){ |index| setupListViews(index) } connect(model, SIGNAL('refreshTarification(QModelIndex)')){ |index| setupListViews(index) } connect(view, SIGNAL('doubleClicked(QModelIndex)'), model, SLOT('editStudy(QModelIndex)')) #connect(model, SIGNAL('studySaved(QString)')){|study64| filterListViews(study64) } connect(model, SIGNAL('studySaved(QVariant)'), self, SLOT('refreshTableViewModel(QVariant)')) connect(@ui.deleteAction, SIGNAL('triggered()'), model, SLOT('removeData()')) connect(@ui.cancelVerifyingAction, SIGNAL('triggered()'), model, SLOT('cancelColoring()')) view.setContextMenuPolicy(Qt::CustomContextMenu) model end end
setup_table_view(table_view, table_model, resize_mode)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 758 def setup_table_view(table_view, table_model, resize_mode) table_view.setModel(table_model) table_view.horizontalHeader.setResizeMode(resize_mode) table_view.verticalHeader.setResizeMode(Qt::HeaderView::ResizeToContents) table_view.show table_view end
setup_table_view2(table_view, table_model, resize_mode)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 749 def setup_table_view2(table_view, table_model, resize_mode) table_view.setModel(table_model) table_view.horizontalHeader.setResizeMode(resize_mode) table_view.verticalHeader.setResizeMode(resize_mode) table_view.show table_view end
showCabinetStubs()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 416 def showCabinetStubs date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:cabinet_stubs).map do |date, studies| studies.map do |study| @study_table_models[date.cwday - 1].setColorCabinet(study.id, Qt::green) "#{date} | Не назначен кабинет! Группа: #{study.get_group.title} Номер пары: #{study.number}" end.join("\n") end res = res.compact.join("\n") end
showComputerCabinets()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 462 def showComputerCabinets date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:computer_cabinets).map do |date, studies| studies.map do |study| @study_table_models[date.cwday - 1].setColorCabinet(study.id, Qt::yellow) "#{date} | Занятие подгруппы проходит не в компьютерном кабинете! Группа: #{study.get_group.title} Номер пары: #{study.number}" end.join("\n") end res = res.compact.join("\n") end
showLecturerStubs()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 393 def showLecturerStubs date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:lecturer_stubs).map do |date, studies| studies.map do |study| @study_table_models[date.cwday - 1].setColor(study.id, Qt::green) "#{date} | Не назначен преподаватель! Группа: #{study.get_group.title} Номер пары: #{study.number}" end.join("\n") end res = res.compact.join("\n") end
showPreferredDays()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 485 def showPreferredDays date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:preferred_days).map do |date, studies| studies.map do |study| @study_table_models[date.cwday - 1].setColorCabinet(study.id, Qt::yellow) "#{date} | #{study.lecturer.to_s} предпочитает вести занятия в другой день! Группа: #{study.get_group.title} Номер пары: #{study.number}" end.join("\n") end res = res.compact.join("\n") end
showSubjectsStubs()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 439 def showSubjectsStubs date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:subject_stubs).map do |date, studies| studies.map do |study| @study_table_models[date.cwday - 1].setColor(study.id, Qt::green) "#{date} | Не назначен предмет! Группа: #{study.get_group.title} Номер пары: #{study.number}" end.join("\n") end res = res.compact.join("\n") end
show_message(text)
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 275 def show_message(text) box = Qt::MessageBox.new box.setText text box.exec end
show_tables()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 587 def show_tables @table_models = @table_views.map do |entity, table_model, table_view| model = table_model.new(entity.all, table_view) proxy_model = model setup_table_view(table_view, proxy_model, Qt::HeaderView::Stretch) model end setup_study_table_views @ui.dateDateEdit.show @tables_views_to_hide.each(&:show) @widgets_to_disable.each{ |x| x.enabled = true } #@ui.studiesTableView.setSpan(0, 0, 1, 3) model = EntityItemModel.new(->(){ Subject.all }, self) @ui.subjectsListView.setModel model @ui.subjectsListView.show model = EntityItemModel.new(->(){ Lecturer.all }, self) @ui.lecturersListView.setModel model @ui.lecturersListView.show model = EntityItemModel.new(->(){ Cabinet.all }, self) @ui.cabinetsListView.setModel model @ui.cabinetsListView.show end
update_recent(filename)
click to toggle source
Contract String => Any
# File lib/tmis/interface/mainwindow.rb, line 783 def update_recent(filename) actions = @ui.recentMenu.actions if actions.size > 5 @ui.recentMenu.clear @ui.recentMenu.addActions([@clear_recent_action] + actions[1..actions.size-1]) else @ui.recentMenu.addAction create_recent_action(filename) end end
verifyCabinets()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 365 def verifyCabinets date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:cabinet_studies).map do |k, v| date = k[0] cabinet= Cabinet.where(id: k[1]).first number = k[2] if cabinet.stub nil else v.each{ |study| @study_table_models[date.cwday - 1].setColorCabinet(study.id, Qt::blue) } "#{date} | В #{cabinet.title} проходит несколько пар одновременно! Номер пары: #{number}" end end res = res.compact.join("\n") end
verifyLecturers()
click to toggle source
# File lib/tmis/interface/mainwindow.rb, line 334 def verifyLecturers date = Date.parse(@ui.dateDateEdit.date.toString(Qt::ISODate)) dates = date.monday..date.monday + 6 v = Verificator.new(dates) res = v.verify(:lecturer_studies).map do |k, v| date = k[0] lecturer = Lecturer.where(id: k[1]).first number = k[2] if lecturer.stub nil else v.each do |study| tst = @study_table_models[date.cwday - 1] tst.setColor(study.id, Qt::red) end "#{date} | #{lecturer} ведёт несколько пар одновременно! Номер пары: #{number}" end end res = res.compact.join("\n") end