Compare commits
	
		
			2 Commits
		
	
	
		
			ca855712b1
			...
			52aa14dcb4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 52aa14dcb4 | |||
| 7534bf141e | 
| @@ -72,6 +72,34 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi | |||||||
|         self.plugins.set_message_on_plugin(type, data) |         self.plugins.set_message_on_plugin(type, data) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def save_load_session(self, action="save_session"): | ||||||
|  |         wid, tid          = self.window_controller.get_active_data() | ||||||
|  |         view              = self.get_fm_window(wid).get_view_by_id(tid) | ||||||
|  |         save_load_dialog  = self.builder.get_object("save_load_dialog") | ||||||
|  |         save_load_dialog.set_current_folder(view.get_current_directory()) | ||||||
|  |         save_load_dialog.set_current_name("session.json") | ||||||
|  |  | ||||||
|  |         if action == "save_session": | ||||||
|  |             save_load_dialog.set_action(Gtk.FileChooserAction.SAVE) | ||||||
|  |         elif action == "load_session": | ||||||
|  |             save_load_dialog.set_action(Gtk.FileChooserAction.OPEN) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         response = save_load_dialog.run() | ||||||
|  |         if response == Gtk.ResponseType.OK: | ||||||
|  |             path = f"{save_load_dialog.get_current_folder()}/{save_load_dialog.get_current_name()}" | ||||||
|  |  | ||||||
|  |             if action == "save_session": | ||||||
|  |                 self.window_controller.save_state(path) | ||||||
|  |             elif action == "load_session": | ||||||
|  |                 session_json = self.window_controller.load_state(path) | ||||||
|  |                 print(session_json) | ||||||
|  |         if (response == Gtk.ResponseType.CANCEL) or (response == Gtk.ResponseType.DELETE_EVENT): | ||||||
|  |             pass | ||||||
|  |  | ||||||
|  |         save_load_dialog.hide() | ||||||
|  |  | ||||||
|  |  | ||||||
|     def do_action_from_menu_controls(self, widget, eventbutton): |     def do_action_from_menu_controls(self, widget, eventbutton): | ||||||
|         action        = widget.get_name() |         action        = widget.get_name() | ||||||
|         self.ctrlDown = True |         self.ctrlDown = True | ||||||
| @@ -104,7 +132,7 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi | |||||||
|         if action == "trash": |         if action == "trash": | ||||||
|             self.trash_files() |             self.trash_files() | ||||||
|         if action == "go_to_trash": |         if action == "go_to_trash": | ||||||
|             self.builder.get_object("path_entry").set_text(self.trash_files_path) |             self.path_entry.set_text(self.trash_files_path) | ||||||
|         if action == "restore_from_trash": |         if action == "restore_from_trash": | ||||||
|             self.restore_trash_files() |             self.restore_trash_files() | ||||||
|         if action == "empty_trash": |         if action == "empty_trash": | ||||||
| @@ -112,5 +140,7 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi | |||||||
|  |  | ||||||
|         if action == "create": |         if action == "create": | ||||||
|             self.create_files() |             self.create_files() | ||||||
|  |         if action in ["save_session", "load_session"]: | ||||||
|  |             self.save_load_session(action) | ||||||
|  |  | ||||||
|         self.ctrlDown = False |         self.ctrlDown = False | ||||||
|   | |||||||
| @@ -36,13 +36,14 @@ class Controller_Data: | |||||||
|         self.message_buffer     = self.builder.get_object("message_buffer") |         self.message_buffer     = self.builder.get_object("message_buffer") | ||||||
|         self.arc_command_buffer = self.builder.get_object("arc_command_buffer") |         self.arc_command_buffer = self.builder.get_object("arc_command_buffer") | ||||||
|  |  | ||||||
|  |         self.exists_file_rename_bttn = self.builder.get_object("exists_file_rename_bttn") | ||||||
|         self.warning_alert      = self.builder.get_object("warning_alert") |         self.warning_alert      = self.builder.get_object("warning_alert") | ||||||
|         self.edit_file_menu     = self.builder.get_object("edit_file_menu") |         self.edit_file_menu     = self.builder.get_object("edit_file_menu") | ||||||
|         self.file_exists_dialog = self.builder.get_object("file_exists_dialog") |         self.file_exists_dialog = self.builder.get_object("file_exists_dialog") | ||||||
|         self.exists_file_label  = self.builder.get_object("exists_file_label") |         self.exists_file_label  = self.builder.get_object("exists_file_label") | ||||||
|         self.exists_file_field  = self.builder.get_object("exists_file_field") |         self.exists_file_field  = self.builder.get_object("exists_file_field") | ||||||
|         self.path_menu          = self.builder.get_object("path_menu") |         self.path_menu          = self.builder.get_object("path_menu") | ||||||
|         self.exists_file_rename_bttn = self.builder.get_object("exists_file_rename_bttn") |         self.path_entry         = self.builder.get_object("path_entry") | ||||||
|  |  | ||||||
|         self.bottom_size_label       = self.builder.get_object("bottom_size_label") |         self.bottom_size_label       = self.builder.get_object("bottom_size_label") | ||||||
|         self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label") |         self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label") | ||||||
|   | |||||||
| @@ -151,7 +151,10 @@ class WindowController: | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     def save_state(self): |     def save_state(self, session_file = None): | ||||||
|  |         if not session_file: | ||||||
|  |             session_file = self.session_file | ||||||
|  |  | ||||||
|         windows = [] |         windows = [] | ||||||
|         for window in self.windows: |         for window in self.windows: | ||||||
|             views = [] |             views = [] | ||||||
| @@ -172,10 +175,13 @@ class WindowController: | |||||||
|                 ] |                 ] | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|         with open(self.session_file, 'w') as outfile: |         with open(session_file, 'w') as outfile: | ||||||
|             json.dump(windows, outfile, separators=(',', ':'), indent=4) |             json.dump(windows, outfile, separators=(',', ':'), indent=4) | ||||||
|  |  | ||||||
|     def load_state(self): |     def load_state(self, session_file = None): | ||||||
|         if path.isfile(self.session_file): |         if not session_file: | ||||||
|             with open(self.session_file) as infile: |             session_file = self.session_file | ||||||
|  |  | ||||||
|  |         if path.isfile(session_file): | ||||||
|  |             with open(session_file) as infile: | ||||||
|                 return json.load(infile) |                 return json.load(infile) | ||||||
|   | |||||||
| @@ -1124,6 +1124,16 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe | |||||||
|       <class name="alert-border"/> |       <class name="alert-border"/> | ||||||
|     </style> |     </style> | ||||||
|   </object> |   </object> | ||||||
|  |   <object class="GtkImage" id="image1"> | ||||||
|  |     <property name="visible">True</property> | ||||||
|  |     <property name="can-focus">False</property> | ||||||
|  |     <property name="stock">gtk-save-as</property> | ||||||
|  |   </object> | ||||||
|  |   <object class="GtkImage" id="image2"> | ||||||
|  |     <property name="visible">True</property> | ||||||
|  |     <property name="can-focus">False</property> | ||||||
|  |     <property name="stock">gtk-file</property> | ||||||
|  |   </object> | ||||||
|   <object class="GtkImage" id="image3"> |   <object class="GtkImage" id="image3"> | ||||||
|     <property name="visible">True</property> |     <property name="visible">True</property> | ||||||
|     <property name="can-focus">False</property> |     <property name="can-focus">False</property> | ||||||
| @@ -1146,6 +1156,64 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe | |||||||
|     <property name="can-focus">False</property> |     <property name="can-focus">False</property> | ||||||
|     <property name="stock">gtk-edit</property> |     <property name="stock">gtk-edit</property> | ||||||
|   </object> |   </object> | ||||||
|  |   <object class="GtkFileChooserDialog" id="save_load_dialog"> | ||||||
|  |     <property name="can-focus">False</property> | ||||||
|  |     <property name="type-hint">dialog</property> | ||||||
|  |     <property name="do-overwrite-confirmation">True</property> | ||||||
|  |     <child internal-child="vbox"> | ||||||
|  |       <object class="GtkBox"> | ||||||
|  |         <property name="can-focus">False</property> | ||||||
|  |         <property name="orientation">vertical</property> | ||||||
|  |         <property name="spacing">2</property> | ||||||
|  |         <child internal-child="action_area"> | ||||||
|  |           <object class="GtkButtonBox"> | ||||||
|  |             <property name="can-focus">False</property> | ||||||
|  |             <property name="layout-style">end</property> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkButton" id="button11"> | ||||||
|  |                 <property name="label">gtk-cancel</property> | ||||||
|  |                 <property name="visible">True</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |                 <property name="use-stock">True</property> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">True</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">0</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |             <child> | ||||||
|  |               <object class="GtkButton" id="button12"> | ||||||
|  |                 <property name="label">gtk-ok</property> | ||||||
|  |                 <property name="visible">True</property> | ||||||
|  |                 <property name="can-focus">True</property> | ||||||
|  |                 <property name="receives-default">True</property> | ||||||
|  |                 <property name="use-stock">True</property> | ||||||
|  |               </object> | ||||||
|  |               <packing> | ||||||
|  |                 <property name="expand">True</property> | ||||||
|  |                 <property name="fill">True</property> | ||||||
|  |                 <property name="position">1</property> | ||||||
|  |               </packing> | ||||||
|  |             </child> | ||||||
|  |           </object> | ||||||
|  |           <packing> | ||||||
|  |             <property name="expand">False</property> | ||||||
|  |             <property name="fill">False</property> | ||||||
|  |             <property name="position">0</property> | ||||||
|  |           </packing> | ||||||
|  |         </child> | ||||||
|  |         <child> | ||||||
|  |           <placeholder/> | ||||||
|  |         </child> | ||||||
|  |       </object> | ||||||
|  |     </child> | ||||||
|  |     <action-widgets> | ||||||
|  |       <action-widget response="-6">button11</action-widget> | ||||||
|  |       <action-widget response="-5">button12</action-widget> | ||||||
|  |     </action-widgets> | ||||||
|  |   </object> | ||||||
|   <object class="GtkImage" id="skip_img"> |   <object class="GtkImage" id="skip_img"> | ||||||
|     <property name="visible">True</property> |     <property name="visible">True</property> | ||||||
|     <property name="can-focus">False</property> |     <property name="can-focus">False</property> | ||||||
| @@ -1386,6 +1454,30 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe | |||||||
|                             <property name="can-focus">False</property> |                             <property name="can-focus">False</property> | ||||||
|                           </object> |                           </object> | ||||||
|                         </child> |                         </child> | ||||||
|  |                         <child> | ||||||
|  |                           <object class="GtkImageMenuItem"> | ||||||
|  |                             <property name="label">Save Session</property> | ||||||
|  |                             <property name="name">save_session</property> | ||||||
|  |                             <property name="visible">True</property> | ||||||
|  |                             <property name="can-focus">False</property> | ||||||
|  |                             <property name="tooltip-text" translatable="yes">New File/Folder...</property> | ||||||
|  |                             <property name="image">image1</property> | ||||||
|  |                             <property name="use-stock">False</property> | ||||||
|  |                             <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/> | ||||||
|  |                           </object> | ||||||
|  |                         </child> | ||||||
|  |                         <child> | ||||||
|  |                           <object class="GtkImageMenuItem"> | ||||||
|  |                             <property name="label">Load Session</property> | ||||||
|  |                             <property name="name">load_session</property> | ||||||
|  |                             <property name="visible">True</property> | ||||||
|  |                             <property name="can-focus">False</property> | ||||||
|  |                             <property name="tooltip-text" translatable="yes">New File/Folder...</property> | ||||||
|  |                             <property name="image">image2</property> | ||||||
|  |                             <property name="use-stock">False</property> | ||||||
|  |                             <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/> | ||||||
|  |                           </object> | ||||||
|  |                         </child> | ||||||
|                         <child> |                         <child> | ||||||
|                           <object class="GtkMenuItem"> |                           <object class="GtkMenuItem"> | ||||||
|                             <property name="visible">True</property> |                             <property name="visible">True</property> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user