[Thunar-dev] feasibility of ExoIconView feature improvements
Artem Vakhitov
artem.vakhitov at gmail.com
Sun Jul 24 10:00:08 CEST 2005
Hi,
sorry for cutting in, since I'm just a lowly user and all, but still:
shouldn't icons indeed be laid out in rows and columns? Wouldn't it look
untidy otherwise? Why exactly is such a flexibility needed?
Regards,
Artem Vakhitov
Brian J. Tarricone wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hey Benny (and all),
>
> I finished implementing most of the framework for Thunar's desktop view,
> but I'm hitting a big roadblock with the icon view itself. I was
> already aware that ExoIconView doesn't support arbitrary icon
> positioning, so I started playing with it to see what it would take to
> extend it.
>
> And it's pretty nasty.
>
> - From what I can understand, each item is eventually assigned a row and
> column, and the layout function basically just lays out the icons in a
> grid based on these row/col coordinates.
>
> I was thinking of some nonintrusive ways of changing this. My first
> thought was to add an API ("_set_allow_positioning()" or similar) which
> basically turns (row,col) into (x,y). That turned out not to be so
> useful, since then it's not so straightforward to get and set the
> positions of the individual item positions.
>
> So, I figured we could add a couple columns to the model the iconview
> uses, and then we add:
>
> exo_icon_view_set_pos_x_column()
> exo_icon_view_set_pos_y_column()
>
> And then we can define a value (say, G_MININT) that means "this icon's
> position is unset", in which case it falls back to the grid layout for
> that icon. Of course it'll also fall back to grid layout if the
> pos_x_column and/or pos_y_column are unset. This seems like it would
> work fairly ok, though exo_icon_view_layout() and
> exo_icon_view_layout_row() will need to be tweaked a bit.
>
> So, stopping at this point: is this a good idea? Implementing a totally
> new icon view widget just to allow positioning seems wasteful, and
> "breaking" ExoIconView's current behavior sounds like a bad idea as well
> (assuming we want to keep this current behavior for the normal Thunar
> icon view).
>
> Ok, moving on. ThunarListModel. In order to use
> ThunarView/ThunarIconView with ThunarDesktopView, I need to pass it a
> ThunarListModel. ThunarListModel, of course, lacks columns for the x
> and y positions, which I need. It also has a small and large icon,
> which I don't need, and functions for setting item sorting and showing
> or hiding hidden files, which again I don't need. So I make a copy of
> ThunarListModel and rename everything to ThunarDesktopModel. In order
> for ThunarView/ThunarIconView to accept it as a model, I make
> ThunarListModel subclassable and make ThunarDesktopModel a subclass.
>
> But now there's a problem. By removing the small and large icon
> columns, the columns that ThunarView/ThunarIconView expect to find at
> certain indices is broken. I suppose I could re-add the large and small
> icon columns, and that would fix that problem, but I'm starting to get
> the feeling that I'm just going about this the wrong way.
>
> Here are my basic assumptions:
>
> 1) I should reuse ThunarView and ThunarIconView because not doing so
> would require reimplementing a good amount of functionality, such as
> file metadata and context menus.
>
> 2) ExoIconView should be extended to allow arbitrary positioning of
> icons, because, again, a custom icon view just for the desktop would
> reimplement a lot of functionality.
>
> 3) ThunarListModel should maybe become an interface. The current
> ThunarListModel should perhaps be moved to ThunarListStore (or
> something), which implements ThunarListModel. Then ThunarDesktopStore
> could also implement ThunarListModel. ThunarIconView could continue
> requiring a ThunarListModel. I'm not sure what the best way is to
> define the columns in ThunarListModel to do what the regular icon view
> and desktop icon view needs.
>
> So... I'm kinda just throwing out thoughts right now. Am I going in
> the right direction? Any ideas for a better direction? Implementation
> hints? Anything?
>
> -brian
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFC4tOP6XyW6VEeAnsRAuKGAJ919vf2I8Wu7+qf0HmoY7m7i9JzpwCggcYd
> OQPtv81sQv9dqn0yZAVW+08=
> =N4oQ
> -----END PGP SIGNATURE-----
> _______________________________________________
> Thunar-dev mailing list
> Thunar-dev at xfce.org
> http://foo-projects.org/mailman/listinfo/thunar-dev
>
More information about the Thunar-dev
mailing list