def do_edit_cut(self): if self.copy_paste_target_widget != None: if not self.copy_paste_target_widget.hasSelectedText(): return get_app_singleton().clipboard().setText( self.copy_paste_target_widget.selectedText()) self.copy_paste_target_widget.insert("")
def __call__(self): global select_widgets_from_popout_window_funcs global select_widgets_from_project_window_funcs for w in get_app_singleton().windows: if hasattr(w, "content_shown"): # main project window if not w.project == self.project: # .. for another project, skip continue if w.content_shown: for tabview in w.contentwidget.tabs.get_all_tabs(): if not hasattr(tabview, "filename"): continue if tabview.filename == self.filename: wlist = select_widgets_from_project_window_funcs[\ self.widget_type](w, tabview) for widget in wlist: yield widget else: if w.project == self.project and w.filename == self.filename: view = w.current_file_view wlist = select_widgets_from_popout_window_funcs[\ self.widget_type](w, view) for widget in wlist: yield widget return
def show_context_menu(self, pos): """ Since we have our own undo/redo system, we need to reimplement the context menu to use it. """ global ide new_menu = QMenu() undo_a = new_menu.addAction(l("undo_undo_prefix"), self.execute_undo_func) if not self.check_undo_func(): undo_a.setEnabled(0) redo_a = new_menu.addAction(l("undo_redo_prefix"), self.execute_redo_func) if not self.check_redo_func(): redo_a.setEnabled(0) new_menu.addSeparator() copy_a = new_menu.addAction(l("projwin_menu_edit_copy"), self.do_copy) cut_a = new_menu.addAction(l("projwin_menu_edit_cut"), self.do_cut) if not self.hasSelectedText(): copy_a.setEnabled(0) cut_a.setEnabled(0) paste_a = new_menu.addAction(l("projwin_menu_edit_paste"), self.do_paste) if len(get_app_singleton().clipboard().text(QClipboard.Clipboard)) == 0: paste_a.setEnabled(0) new_menu.addSeparator() select_all_a = new_menu.addAction(l("projwin_menu_edit_select_all"), self.do_select_all) if len(self.text()) == 0: select_all_a.setEnabled(0) new_menu.exec_(QCursor.pos())
def closeEvent(self, event): if self.modal_dialog: self.app.close_canceled = True event.ignore() return for window in get_app_singleton().windows: if not hasattr(window, "content_shown"): # this is a popout window. close it if it belongs to us: if window.project == self.project: window.close() event.accept()
def project_change_notify(self): """ This should get called if any file in the project is changed (to make this window display unsaved changes etc.) """ self.update_title() self.update_menu() self.update_undo() if self.content_shown and self.contentwidget != None: self.contentwidget.tabs.update_tab_titles() self.contentwidget.update_file_list() for window in get_app_singleton().windows: if not hasattr(window, "content_shown"): # a popout winodw if window.project == self.project: window.current_file_view.update_toolbar() window.update_title() window.update_toolbar()
def __init__(self, project, filename, view): super(PopOutView, self).__init__() self.setWindowTitle(filename) self.setMinimumSize(350, 300) self.project = project self.filename = filename project_window = [w for w in get_app_singleton()\ .windows if w.project == self.project][0] self.toolbar = ProjectToolbar(project_window) self.toolbar.update_for_file(self.filename) self.current_file_view = view layout = QVBoxLayout() layout.setContentsMargins(1, 1, 1, 1) layout.addWidget(self.toolbar) layout.addWidget(view) self.setLayout(layout) self.update_title()
def update_menu(self): self.update_window_menu() if self.project == None: self.projectmenuactions["save"].setEnabled(0) self.projectmenuactions["saveas"].setEnabled(0) self.projectmenuactions["close"].setEnabled(1) self.filemenu.setEnabled(0) self.editmenu.setEnabled(0) self.runmenu.setEnabled(0) self.projectmenuactions["close"].setText(\ l("projwin_menu_project_closewindow")) else: if self.project.has_unsaved_changes(): self.projectmenuactions["save"].setEnabled(1) else: self.projectmenuactions["save"].setEnabled(0) self.runmenu.setEnabled(1) self.editmenu.setEnabled(1) self.projectmenuactions["saveas"].setEnabled(1) self.projectmenuactions["close"].setEnabled(1) self.projectmenuactions["close"].setText(\ l("projwin_menu_project_close")) self.filemenu.setEnabled(1) if self.is_game_running(): self.runmenuactions["run_in_editor"].setEnabled(0) self.runmenuactions["run_in_editor_from_start"].setEnabled(0) self.runmenuactions["run_external"].setEnabled(0) self.runmenuactions["run_pause"].setEnabled(1) self.runmenuactions["run_stop"].setEnabled(1) else: self.runmenuactions["run_in_editor"].setEnabled(1) self.runmenuactions["run_in_editor_from_start"].setEnabled(1) self.runmenuactions["run_external"].setEnabled(1) self.runmenuactions["run_pause"].setEnabled(0) self.runmenuactions["run_stop"].setEnabled(0) # if file shown: if self.contentwidget != None and \ self.contentwidget.isFileShown(): self.filemenuactions["save"].setEnabled(0) if self.project.changestracker.file_has_changes(\ self.contentwidget.fileshown): self.filemenuactions["save"].setEnabled(1) self.filemenuactions["rename"].setEnabled(1) self.filemenuactions["remove"].setEnabled(1) # if text editable focussed: if self.copy_paste_target_widget != None: if self.copy_paste_target_widget.hasSelectedText(): self.editmenuactions["cut"].setEnabled(1) self.editmenuactions["copy"].setEnabled(1) else: self.editmenuactions["cut"].setEnabled(0) self.editmenuactions["copy"].setEnabled(0) if len(get_app_singleton().clipboard().text(\ QClipboard.Clipboard)) > 0: self.editmenuactions["paste"].setEnabled(1) else: self.editmenuactions["paste"].setEnabled(0) text = self.copy_paste_target_widget.text() if len(text) > 0: self.editmenuactions["select_all"].setEnabled(1) else: self.editmenuactions["select_all"].setEnabled(0) else: self.editmenuactions["cut"].setEnabled(0) self.editmenuactions["copy"].setEnabled(0) self.editmenuactions["paste"].setEnabled(0) self.editmenuactions["select_all"].setEnabled(0) else: # ..otherwise: self.filemenuactions["save"].setEnabled(0) self.filemenuactions["rename"].setEnabled(0) self.filemenuactions["remove"].setEnabled(0) self.editmenuactions["cut"].setEnabled(0) self.editmenuactions["copy"].setEnabled(0) self.editmenuactions["paste"].setEnabled(0) self.editmenuactions["select_all"].setEnabled(0)
def do_edit_paste(self): if self.copy_paste_target_widget != None: self.copy_paste_target_widget.insert( get_app_singleton().clipboard().text(QClipboard.Clipboard))
def pop_out(self): popout = PopOutView(self.project, self.filename, self.duplicate()) popout.show() popout.resize(popout.minimumWidth(), popout.minimumHeight()); get_app_singleton().windows.append(popout)
def do_paste(self): self.insert(get_app_singleton().clipboard().text(QClipboard.Clipboard))
def do_cut(self): if not self.hasSelectedText(): return get_app_singleton().clipboard().setText(self.selectedText()) self.insert("")