[Mono-docs-list] Hello, I have, finally, ended up with my Not-so-good-not-so-bad implementation of Tabs for Monodoc. I attach a patch, for browser.cs, browser.glade and hisotry.cs (I'm not sure if this is the proper way to do so).

Mario Sopena Novales masono1@teleco.upv.es
Thu, 18 Nov 2004 01:34:10 +0100


It is my first contribution (to an open source project also) so be kind, but very critic. I have learnt yet enough from Gtk (I have never played with it before) to re-implement all the Tabs code in a proper way (that anyone should point) , unless I have made it right (did I?). :)

Visually, you have a new Menu Entry in the File Menu (or Ctrl+T) to open a new Tab. The Tabs are what anyone should expect, but I have added a little icon to differenciate between Editing and Viewing modes. I couldn't add the "Click with the Middle button on a Link to open a Tab" feature. I didn't know how to get that from the HTML Widget (any help please?).

Following is and explanation of what I have made to the sources. So, heartbrokens, please abstain. In brief, I made a new class, called Tab, that manages everything that happens in a Tab . So I have moved there all the GUI elements for editing or displaying a page (deleting from the glade file and implementing in pure code. I tried to extract from the glade file, but I couldn't). This object takes care also of the events when editing a page. I have just added an addTab and ChangeTab methods to the browser class, and a variable CurrentTab that is used everywhere you need to refer a GUI element or the history from a Tab (for example, when rendering, or when a node is selected, etc.). 

In the history.cs file, I have just added a Property called Active, that prevents all the histories of all the Tabs to respond to the Back or Forward Buttons (is this a good one Miguel?). 

Multiples Tabs of pages patch
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-MOQ1100738050b334ddde1b1e40e2f4747ed1b8d41db1"
User-Agent: Internet Messaging Program (IMP) 3.2.6
X-Originating-IP: 129.13.186.1

This message is in MIME format.

---MOQ1100738050b334ddde1b1e40e2f4747ed1b8d41db1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Hello,
 I have, finally, ended up with my Not-so-good-not-so-bad implementation of Tabs
for Monodoc. I attach a patch for browser.cs, browser.glade and hisotry.cs (I'm
not sure if this is the proper way to do so).

It is my first contribution (to an open source project also) so be kind, but
very critic. I have learnt yet enough from Gtk (I have never played with it
before) to re-implement all the Tabs code in a proper way (that anyone should
point) , unless I have made it right (did I?). :)

Visually, you have a new Menu Entry in the File Menu (or Ctrl+T) to open a new
Tab. The Tabs are what anyone should expect, but I have added a little icon to
differenciate between Editing and Viewing modes. I couldn't add the "Click with
the Middle button on a Link to open a Tab" feature. I didn't know how to get
that from the HTML Widget (any help please?).

Following is and explanation of what I have made to the sources. So,
heartbrokens, please abstain. In brief, I made a new class, called Tab, that
manages everything that happens in a Tab . So I have moved there all the GUI
elements for editing or displaying a page (deleting from the glade file and
implementing in pure code. I tried to extract from the glade file, but I
couldn't). This object takes care also of the events when editing a page. I
have just added an addTab and ChangeTab methods to the browser class, and a
variable CurrentTab that is used everywhere you need to refer a GUI element or
the history from a Tab (for example, when rendering, or when a node is
selected, etc.).

In the history.cs file, I have just added a Property called Active, that
prevents all the histories of all the Tabs to respond to the Back or Forward
Buttons (is this a good one Miguel?).

And That's all folks!
Mario



---MOQ1100738050b334ddde1b1e40e2f4747ed1b8d41db1
Content-Type: application/x-gzip; name="TabsPatch.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="TabsPatch.tar.gz"

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
n/qpn/qpn/qpn2fw/B/rtRziAPAAAA==

---MOQ1100738050b334ddde1b1e40e2f4747ed1b8d41db1--