Changeset a9ff025830e78b1e27a01622727ab57bbb096e2c


Ignore:
Timestamp:
05/04/10 10:36:18 (3 years ago)
Author:
Matias De la Puente <mfpuente.ar@…>
Children:
c5050d606ed30b3d49bfcd42dbbafd7d2244d408
Parents:
16031c0c0382e0dec3ff640ff27c96d69a9ff602
git-committer:
Matias De la Puente <mfpuente.ar@…> (05/04/10 10:36:18)
Message:

Projects: Add open action

Location:
libi4uc
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • libi4uc/i4ucfileslist.vala

    r16031c0 ra9ff025  
    100100        public void clear_list () 
    101101        { 
     102                _files.clear (); 
    102103                _files_store.clear (); 
    103104        } 
  • libi4uc/i4ucprojectscombo.vala

    r16031c0 ra9ff025  
    9292        public void clear_list () 
    9393        { 
     94                _projects.clear (); 
    9495                _projects_store.clear (); 
    9596        } 
  • libi4uc/i4ucprojectspresenter.vala

    r16031c0 ra9ff025  
    3030 
    3131                _projects_side_page_presenter = new ProjectsSidePagePresenter (_view.projects_side_page_view); 
     32 
     33                //Connect view signals 
     34                _view.open_clicked.connect (on_open_clicked); 
     35        } 
     36 
     37        public void open_project (string project_uri) 
     38        { 
     39                var project = new Project (); 
     40                if (project.open (project_uri)) 
     41                        _projects_side_page_presenter.add_project (project); 
     42                else 
     43                        _view.show_error_message (_("Error trying to open <<%s>>").printf (project_uri)); 
     44        } 
     45 
     46        private void on_open_clicked () 
     47        { 
     48                var folder_uri = I4uc.Settings.instance.working_folder; 
     49                Gee.List<string> projects; 
     50                _view.show_open_dialog (ref folder_uri, out projects); 
     51                I4uc.Settings.instance.working_folder = folder_uri; 
     52                foreach (var project in projects) 
     53                        open_project (project); 
    3254        } 
    3355} 
  • libi4uc/i4ucprojectsview.vala

    r16031c0 ra9ff025  
    2020 */ 
    2121using Gtk; 
     22using Gee; 
    2223 
    2324public class I4uc.ProjectsView : GLib.Object, ProjectsViewIface 
    2425{ 
    2526        private UIManager _ui_manager; 
     27        private ActionGroup _action_group; 
    2628        private SidePanel _side_panel; 
    2729        private ProjectsSidePageView _projects_side_page_view = new ProjectsSidePageView (); 
     
    3436                _side_panel = side_panel; 
    3537 
     38                _action_group = new ActionGroup ("I4ucProjectsActions"); 
     39                _action_group.add_actions (_action_entries, this); 
     40                 
     41                _ui_manager.insert_action_group (_action_group, -1); 
     42                _ui_manager.add_ui_from_string (_UI, -1); 
     43                 
    3644                _side_panel.add_page (_projects_side_page_view); 
    3745        } 
     46 
     47        public void show_error_message (string error_message) 
     48        { 
     49                var message = new MessageDialog (null, DialogFlags.MODAL, MessageType.ERROR, ButtonsType.NONE, error_message); 
     50                message.add_button (STOCK_OK, ResponseType.OK); 
     51                message.set_default_response (ResponseType.OK); 
     52                message.run (); 
     53                message.destroy (); 
     54        } 
     55 
     56        public void show_open_dialog (ref string folder_uri, out Gee.List<string> projects) 
     57        { 
     58                var dialog = new FileChooserDialog (_("Open project"), null, FileChooserAction.OPEN); 
     59                dialog.select_multiple = true; 
     60                dialog.set_current_folder_uri (folder_uri); 
     61                dialog.add_button (STOCK_CANCEL, ResponseType.CANCEL); 
     62                dialog.add_button (STOCK_OPEN, ResponseType.OK); 
     63                dialog.set_default_response (ResponseType.OK); 
     64                var filter = new FileFilter (); 
     65                filter.set_name (_("i4uc projects")); 
     66                filter.add_pattern ("*.i4uc"); 
     67                dialog.add_filter (filter); 
     68                 
     69                var uris = new ArrayList<string> (); 
     70                if (dialog.run () == ResponseType.OK) 
     71                { 
     72                        folder_uri = dialog.get_current_folder_uri (); 
     73                        foreach (var uri in dialog.get_uris ()) 
     74                                uris.add (uri); 
     75                } 
     76                projects = uris.read_only_view; 
     77                dialog.destroy (); 
     78        } 
     79         
     80        private void on_open () 
     81        { 
     82                this.open_clicked (); 
     83        } 
     84 
     85        private const ActionEntry[] _action_entries = 
     86        { 
     87                { "ProjectsMenuAction", null, N_("_Projects") }, 
     88                { "OpenProjectAction", STOCK_OPEN, null, null, N_("Open a project"), on_open } 
     89        }; 
     90         
     91        private const string _UI = """ 
     92<ui> 
     93        <menubar name="MainMenu"> 
     94                <placeholder name="MenuBarOps"> 
     95                        <menu name="ProjectsMenu" action="ProjectsMenuAction"> 
     96                                <menuitem action="OpenProjectAction"/> 
     97                        </menu> 
     98                </placeholder> 
     99        </menubar> 
     100</ui>"""; 
    38101} 
  • libi4uc/i4ucprojectsviewiface.vala

    r16031c0 ra9ff025  
    2323{ 
    2424        public abstract ProjectsSidePageViewIface projects_side_page_view { get; } 
     25 
     26        public signal void open_clicked (); 
     27 
     28        public abstract void show_error_message (string error_message); 
     29        public abstract void show_open_dialog (ref string folder_uri, out Gee.List<string> projects); 
    2530} 
Note: See TracChangeset for help on using the changeset viewer.