diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/Main_Window.glade b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/Main_Window.glade index 5965ef4..55386e8 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/Main_Window.glade +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/Main_Window.glade @@ -604,6 +604,12 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti + + True + False + gtk-justify-center + + True False @@ -940,6 +946,29 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti + + + True + False + Debug + + + True + False + + + Show Errors + True + False + image1 + False + + + + + + + True @@ -1390,16 +1419,28 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti 320 False + True controll_box bottom - + + 600 True - False - center - - - + True + True + in + False + + + message_view + True + True + True + False + False + message_buffer + + diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/stylesheet.css b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/stylesheet.css index 9806b7c..da07ee0 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/stylesheet.css +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/resources/stylesheet.css @@ -31,6 +31,9 @@ treeview.view, color: rgba(255, 255, 255, 0.5);; } +#message_view { + font: 16px "Monospace"; +} /* Rubberband coloring */ /* .rubberband, diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller.py b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller.py index 8a2abb3..076559f 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller.py +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller.py @@ -1,5 +1,5 @@ # Python imports -import threading, subprocess, signal, inspect, os, time +import sys, traceback, threading, subprocess, signal, inspect, os, time # Gtk imports import gi @@ -21,7 +21,8 @@ def threaded(fn): class Controller(Controller_Data, ShowHideMixin, KeyboardSignalsMixin, WidgetFileActionMixin, \ PaneMixin, WindowMixin): def __init__(self, args, unknownargs, _settings): - self.settings = _settings + sys.excepthook = self.my_except_hook + self.settings = _settings self.setup_controller_data() self.window.show() @@ -63,13 +64,23 @@ class Controller(Controller_Data, ShowHideMixin, KeyboardSignalsMixin, WidgetFil print(repr(e)) + def my_except_hook(self, exctype, value, _traceback): + trace = ''.join(traceback.format_tb(_traceback)) + data = f"Exectype: {exctype} <--> Value: {value}\n\n{trace}\n\n\n\n" + start_itr = self.message_buffer.get_start_iter() + self.message_buffer.place_cursor(start_itr) + self.display_message(self.error, data) + # print "Handler code goes here" + # else: + # sys.__excepthook__(exctype, value, traceback) - - def display_message(self, type, text, seconds=3): - markup = "" + text + "" - self.message_label.set_markup(markup) + def display_message(self, type, text, seconds=None): + # markup = "" + text + "" + # self.message_label.set_markup(markup) + self.message_buffer.insert_at_cursor(text) self.message_widget.popup() - self.hide_message_timeout(seconds) + if seconds: + self.hide_message_timeout(seconds) @threaded def hide_message_timeout(self, seconds=3): diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller_Data.py b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller_Data.py index 529a11a..8220192 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller_Data.py +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/Controller_Data.py @@ -23,7 +23,8 @@ class Controller_Data: self.window3 = self.builder.get_object("window_3") self.window4 = self.builder.get_object("window_4") self.message_widget = self.builder.get_object("message_widget") - self.message_label = self.builder.get_object("message_label") + self.message_view = self.builder.get_object("message_view") + self.message_buffer = self.builder.get_object("message_buffer") self.bottom_size_label = self.builder.get_object("bottom_size_label") self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label") diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/ShowHideMixin.py b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/ShowHideMixin.py index e21a314..886aa08 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/ShowHideMixin.py +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/ShowHideMixin.py @@ -9,7 +9,10 @@ from gi.repository import Gtk class ShowHideMixin: - def show_about_page(self, widget, eve): + def show_messages_popup(self, type, text, seconds=None): + self.message_widget.popup() + + def show_about_page(self, widget=None, eve=None): about_page = self.builder.get_object("about_page") response = about_page.run() if response == -4: diff --git a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/mixins/WidgetFileActionMixin.py b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/mixins/WidgetFileActionMixin.py index f7768fb..5d9e2f7 100644 --- a/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/mixins/WidgetFileActionMixin.py +++ b/src/versions/pyfm-0.0.1/PyFM/new/pyfm/signal_classes/mixins/WidgetFileActionMixin.py @@ -248,9 +248,7 @@ class WidgetFileActionMixin: if not state: raise GObject.GError("Failed to perform requested dir/file action!") except GObject.GError as e: - if debug: - print(repr(e)) - self.display_message(self.error, f"{e.message}") + raise OSError(e) def preprocess_paths(self, paths): if not isinstance(paths, list):